Lines Matching refs:buf

161 ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
172 pTarget = buf->buffer;
174 if(buf->currentPos<buf->bufLimit){
175 offset = (int32_t)(buf->bufLimit-buf->currentPos);
176 memmove(buf->buffer,buf->currentPos,offset* sizeof(UChar));
182 if(buf->isBuffered){
185 inputRead=T_FileStream_read(buf->in,cbuf,cbufSize-offset);
186 buf->remaining-=inputRead;
189 cbufSize = T_FileStream_size(buf->in);
195 inputRead= T_FileStream_read(buf->in,cbuf,cbufSize);
196 buf->remaining-=inputRead;
201 buf->remaining = 0;
205 if(buf->conv){
210 ucnv_setToUCallBack(buf->conv,
220 ucnv_toUnicode(buf->conv,&target,target+(buf->bufCapacity-offset),
222 (UBool)(buf->remaining==0),error);
235 if( buf->showWarning==TRUE){
243 ucnv_getInvalidChars(buf->conv,context,&len,&error1);
264 if(buf->showWarning ==TRUE){
272 ucnv_reset(buf->conv);
277 ucnv_setToUCallBack(buf->conv,
289 ucnv_toUnicode(buf->conv,&target,target+(buf->bufCapacity-offset),
291 (UBool)(buf->remaining==0),&error1);
308 outputWritten=((buf->remaining>cbufSize)? cbufSize:inputRead+offset);
310 buf->currentPos = pTarget;
311 buf->bufLimit=pTarget+outputWritten;
312 *buf->bufLimit=0; /*NUL terminate*/
316 return buf;
323 ucbuf_getc(UCHARBUF* buf,UErrorCode* error){
327 if(buf->currentPos>=buf->bufLimit){
328 if(buf->remaining==0){
331 buf=ucbuf_fillucbuf(buf,error);
337 return *(buf->currentPos++);
342 ucbuf_getc32(UCHARBUF* buf,UErrorCode* error){
347 if(buf->currentPos+1>=buf->bufLimit){
348 if(buf->remaining==0){
351 buf=ucbuf_fillucbuf(buf,error);
356 if(U16_IS_LEAD(*(buf->currentPos))){
357 retVal=U16_GET_SUPPLEMENTARY(buf->currentPos[0],buf->currentPos[1]);
358 buf->currentPos+=2;
360 retVal = *(buf->currentPos++);
373 ucbuf_getcx32(UCHARBUF* buf,UErrorCode* error) {
381 if (buf->currentPos >=buf->bufLimit-2) {
382 ucbuf_fillucbuf(buf,error);
386 if (buf->currentPos < buf->bufLimit) {
387 c1 = *(buf->currentPos)++;
392 c2 = *(buf->currentPos);
400 length = (int32_t)(buf->bufLimit - buf->currentPos);
407 ucbuf_fillucbuf(buf,error);
408 length = (int32_t)(buf->bufLimit - buf->buffer);
413 c32 = u_unescapeAt(_charAt, &offset, length, (void*)buf);
419 if(buf->showWarning) {
426 u_UCharsToChars( buf->currentPos, context, len);
433 buf->currentPos += offset;
467 UCHARBUF* buf =(UCHARBUF*) uprv_malloc(sizeof(UCHARBUF));
469 if(buf == NULL){
474 buf->in=in;
475 buf->conv=NULL;
476 buf->showWarning = showWarning;
477 buf->isBuffered = buffered;
478 buf->signatureLength=0;
481 ucbuf_autodetect_fs(in,cp,&buf->conv,&buf->signatureLength,error);
484 ucbuf_autodetect_fs(in,&knownCp,&buf->conv,&buf->signatureLength,error);
486 if(U_SUCCESS(*error) && buf->conv==NULL) {
487 buf->conv=ucnv_open(*cp,error);
490 ucnv_close(buf->conv);
491 uprv_free(buf);
496 if((buf->conv==NULL) && (buf->showWarning==TRUE)){
499 buf->remaining=fileSize-buf->signatureLength;
500 if(buf->isBuffered){
501 buf->bufCapacity=MAX_U_BUF;
503 buf->bufCapacity=buf->remaining+buf->signatureLength+1/*for terminating nul*/;
505 buf->buffer=(UChar*) uprv_malloc(U_SIZEOF_UCHAR * buf->bufCapacity );
506 if (buf->buffer == NULL) {
508 ucbuf_close(buf);
511 buf->currentPos=buf->buffer;
512 buf->bufLimit=buf->buffer;
515 ucbuf_close(buf);
518 ucbuf_fillucbuf(buf,error);
520 ucbuf_close(buf);
523 return buf;
537 ucbuf_ungetc(int32_t c,UCHARBUF* buf){
541 if(buf->currentPos!=buf->buffer){
542 if(*(buf->currentPos-1)==c){
543 buf->currentPos--;
554 ucbuf_closebuf(UCHARBUF* buf){
555 uprv_free(buf->buffer);
556 buf->buffer = NULL;
559 /* close the buf and release resources*/
561 ucbuf_close(UCHARBUF* buf){
562 if(buf!=NULL){
563 if(buf->conv){
564 ucnv_close(buf->conv);
566 T_FileStream_close(buf->in);
567 ucbuf_closebuf(buf);
568 uprv_free(buf);
572 /* rewind the buf and file stream */
574 ucbuf_rewind(UCHARBUF* buf,UErrorCode* error){
578 if(buf){
579 buf->currentPos=buf->buffer;
580 buf->bufLimit=buf->buffer;
581 T_FileStream_rewind(buf->in);
582 buf->remaining=T_FileStream_size(buf->in)-buf->signatureLength;
584 ucnv_resetToUnicode(buf->conv);
585 if(buf->signatureLength>0) {
593 numRead=T_FileStream_read(buf->in, start, buf->signatureLength);
598 ucnv_toUnicode(buf->conv, &pTarget, target+1, &pStart, start+numRead, NULL, FALSE, error);
604 if(U_SUCCESS(*error) && (numRead!=buf->signatureLength || pTarget!=(target+1) || target[0]!=0xfeff)) {
613 ucbuf_size(UCHARBUF* buf){
614 if(buf){
615 if(buf->isBuffered){
616 return (T_FileStream_size(buf->in)-buf->signatureLength)/ucnv_getMinCharSize(buf->conv);
618 return (int32_t)(buf->bufLimit - buf->buffer);
625 ucbuf_getBuffer(UCHARBUF* buf,int32_t* len,UErrorCode* error){
629 if(buf==NULL || len==NULL){
633 *len = (int32_t)(buf->bufLimit - buf->buffer);
634 return buf->buffer;
714 ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){
715 UChar* temp = buf->currentPos;
718 if(buf->isBuffered){
724 if(buf->remaining==0){
727 if(temp>=buf->bufLimit && buf->currentPos == buf->buffer){
731 ucbuf_fillucbuf(buf,err);
741 if(c ==0x0d && temp <= buf->bufLimit && *temp == 0x0a ){
742 *len = (int32_t)(temp++ - buf->currentPos);
743 savePos = buf->currentPos;
744 buf->currentPos = temp;
749 if (temp>=buf->bufLimit|| ucbuf_isCharNewLine(c)){ /* Unipad inserts 2028 line separators! */
750 *len = (int32_t)(temp - buf->currentPos);
751 savePos = buf->currentPos;
752 buf->currentPos = temp;
763 if(buf->currentPos==buf->bufLimit){
767 if(c ==0x0d && temp <= buf->bufLimit && *temp == 0x0a ){
768 *len = (int32_t)(temp++ - buf->currentPos);
769 savePos = buf->currentPos;
770 buf->currentPos = temp;
774 if (temp>=buf->bufLimit|| ucbuf_isCharNewLine(c)) { /* Unipad inserts 2028 line separators! */
775 *len = (int32_t)(temp - buf->currentPos);
776 savePos = buf->currentPos;
777 buf->currentPos = temp;