Lines Matching refs:iter

37 noopGetIndex(UCharIterator * /*iter*/, UCharIteratorOrigin /*origin*/) {
42 noopMove(UCharIterator * /*iter*/, int32_t /*delta*/, UCharIteratorOrigin /*origin*/) {
47 noopHasNext(UCharIterator * /*iter*/) {
52 noopCurrent(UCharIterator * /*iter*/) {
57 noopGetState(const UCharIterator * /*iter*/) {
62 noopSetState(UCharIterator * /*iter*/, uint32_t /*state*/, UErrorCode *pErrorCode) {
90 stringIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
95 return iter->start;
97 return iter->index;
99 return iter->limit;
101 return iter->length;
110 stringIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
118 pos=iter->start+delta;
121 pos=iter->index+delta;
124 pos=iter->limit+delta;
127 pos=iter->length+delta;
133 if(pos<iter->start) {
134 pos=iter->start;
135 } else if(pos>iter->limit) {
136 pos=iter->limit;
139 return iter->index=pos;
143 stringIteratorHasNext(UCharIterator *iter) {
144 return iter->index<iter->limit;
148 stringIteratorHasPrevious(UCharIterator *iter) {
149 return iter->index>iter->start;
153 stringIteratorCurrent(UCharIterator *iter) {
154 if(iter->index<iter->limit) {
155 return ((const UChar *)(iter->context))[iter->index];
162 stringIteratorNext(UCharIterator *iter) {
163 if(iter->index<iter->limit) {
164 return ((const UChar *)(iter->context))[iter->index++];
171 stringIteratorPrevious(UCharIterator *iter) {
172 if(iter->index>iter->start) {
173 return ((const UChar *)(iter->context))[--iter->index];
180 stringIteratorGetState(const UCharIterator *iter) {
181 return (uint32_t)iter->index;
185 stringIteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
188 } else if(iter==NULL) {
190 } else if((int32_t)state<iter->start || iter->limit<(int32_t)state) {
193 iter->index=(int32_t)state;
212 uiter_setString(UCharIterator *iter, const UChar *s, int32_t length) {
213 if(iter!=0) {
215 *iter=stringIterator;
216 iter->context=s;
218 iter->length=length;
220 iter->length=u_strlen(s);
222 iter->limit=iter->length;
224 *iter=noopIterator;
243 utf16BEIteratorGet(UCharIterator *iter, int32_t index) {
244 const uint8_t *p=(const uint8_t *)iter->context;
249 utf16BEIteratorCurrent(UCharIterator *iter) {
252 if((index=iter->index)<iter->limit) {
253 return utf16BEIteratorGet(iter, index);
260 utf16BEIteratorNext(UCharIterator *iter) {
263 if((index=iter->index)<iter->limit) {
264 iter->index=index+1;
265 return utf16BEIteratorGet(iter, index);
272 utf16BEIteratorPrevious(UCharIterator *iter) {
275 if((index=iter->index)>iter->start) {
276 iter->index=--index;
277 return utf16BEIteratorGet(iter, index);
323 uiter_setUTF16BE(UCharIterator *iter, const char *s, int32_t length) {
324 if(iter!=NULL) {
332 uiter_setString(iter, (const UChar *)s, length);
336 *iter=utf16BEIterator;
337 iter->context=s;
339 iter->length=length;
341 iter->length=utf16BE_strlen(s);
343 iter->limit=iter->length;
345 *iter=noopIterator;
360 characterIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
365 return ((CharacterIterator *)(iter->context))->startIndex();
367 return ((CharacterIterator *)(iter->context))->getIndex();
369 return ((CharacterIterator *)(iter->context))->endIndex();
371 return ((CharacterIterator *)(iter->context))->getLength();
380 characterIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
383 ((CharacterIterator *)(iter->context))->setIndex(delta);
384 return ((CharacterIterator *)(iter->context))->getIndex();
388 return ((CharacterIterator *)(iter->context))->move(delta, (CharacterIterator::EOrigin)origin);
390 ((CharacterIterator *)(iter->context))->setIndex(((CharacterIterator *)(iter->context))->getLength()+delta);
391 return ((CharacterIterator *)(iter->context))->getIndex();
400 characterIteratorHasNext(UCharIterator *iter) {
401 return ((CharacterIterator *)(iter->context))->hasNext();
405 characterIteratorHasPrevious(UCharIterator *iter) {
406 return ((CharacterIterator *)(iter->context))->hasPrevious();
410 characterIteratorCurrent(UCharIterator *iter) {
413 c=((CharacterIterator *)(iter->context))->current();
414 if(c!=0xffff || ((CharacterIterator *)(iter->context))->hasNext()) {
422 characterIteratorNext(UCharIterator *iter) {
423 if(((CharacterIterator *)(iter->context))->hasNext()) {
424 return ((CharacterIterator *)(iter->context))->nextPostInc();
431 characterIteratorPrevious(UCharIterator *iter) {
432 if(((CharacterIterator *)(iter->context))->hasPrevious()) {
433 return ((CharacterIterator *)(iter->context))->previous();
440 characterIteratorGetState(const UCharIterator *iter) {
441 return ((CharacterIterator *)(iter->context))->getIndex();
445 characterIteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
448 } else if(iter==NULL || iter->context==NULL) {
450 } else if((int32_t)state<((CharacterIterator *)(iter->context))->startIndex() || ((CharacterIterator *)(iter->context))->endIndex()<(int32_t)state) {
453 ((CharacterIterator *)(iter->context))->setIndex((int32_t)state);
472 uiter_setCharacterIterator(UCharIterator *iter, CharacterIterator *charIter) {
473 if(iter!=0) {
475 *iter=characterIteratorWrapper;
476 iter->context=charIter;
478 *iter=noopIterator;
495 replaceableIteratorCurrent(UCharIterator *iter) {
496 if(iter->index<iter->limit) {
497 return ((Replaceable *)(iter->context))->charAt(iter->index);
504 replaceableIteratorNext(UCharIterator *iter) {
505 if(iter->index<iter->limit) {
506 return ((Replaceable *)(iter->context))->charAt(iter->index++);
513 replaceableIteratorPrevious(UCharIterator *iter) {
514 if(iter->index>iter->start) {
515 return ((Replaceable *)(iter->context))->charAt(--iter->index);
536 uiter_setReplaceable(UCharIterator *iter, const Replaceable *rep) {
537 if(iter!=0) {
539 *iter=replaceableIterator;
540 iter->context=rep;
541 iter->limit=iter->length=rep->length();
543 *iter=noopIterator;
555 * to introduce a uiter_close(iter).
587 utf8IteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
593 if(iter->index<0) {
599 s=(const uint8_t *)iter->context;
601 limit=iter->start; /* count up to the UTF-8 index */
607 iter->start=i; /* just in case setState() did not get us to a code point boundary */
608 if(i==iter->limit) {
609 iter->length=index; /* in case it was <0 or wrong */
611 if(iter->reservedField!=0) {
614 iter->index=index;
616 return iter->index;
619 if(iter->length<0) {
624 s=(const uint8_t *)iter->context;
625 if(iter->index<0) {
631 limit=iter->start;
639 /* assume i==limit==iter->start, set the UTF-16 index */
640 iter->start=i; /* just in case setState() did not get us to a code point boundary */
641 iter->index= iter->reservedField!=0 ? length-1 : length;
643 i=iter->start;
644 length=iter->index;
645 if(iter->reservedField!=0) {
651 limit=iter->limit;
656 iter->length=length;
658 return iter->length;
667 utf8IteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
680 /* iter->index<0 (unknown) is possible */
683 if(iter->index>=0) {
684 pos=iter->index+delta;
694 if(iter->length>=0) {
695 pos=iter->length+delta;
699 iter->index=-1;
700 iter->start=iter->limit;
701 iter->reservedField=0;
718 iter->index=iter->start=iter->reservedField=0;
720 } else if(iter->length>=0 && pos>=iter->length) {
721 iter->index=iter->length;
722 iter->start=iter->limit;
723 iter->reservedField=0;
724 return iter->index;
728 if(iter->index<0 || pos<iter->index/2) {
730 iter->index=iter->start=iter->reservedField=0;
731 } else if(iter->length>=0 && (iter->length-pos)<(pos-iter->index)) {
737 iter->index=iter->length;
738 iter->start=iter->limit;
739 iter->reservedField=0;
742 delta=pos-iter->index;
744 return iter->index; /* nothing to do */
750 } else if(-delta>=iter->start) {
752 iter->index=iter->start=iter->reservedField=0;
754 } else if(delta>=(iter->limit-iter->start)) {
756 iter->index=iter->length; /* may or may not be <0 (unknown) */
757 iter->start=iter->limit;
758 iter->reservedField=0;
759 return iter->index>=0 ? iter->index : (int32_t)UITER_UNKNOWN_INDEX;
766 s=(const uint8_t *)iter->context;
767 pos=iter->index; /* could be <0 (unknown) */
768 i=iter->start;
771 int32_t limit=iter->limit;
772 if(iter->reservedField!=0) {
773 iter->reservedField=0;
787 iter->reservedField=c;
793 if(iter->length<0 && iter->index>=0) {
794 iter->length= iter->reservedField==0 ? pos : pos+1;
795 } else if(iter->index<0 && iter->length>=0) {
796 iter->index= iter->reservedField==0 ? iter->length : iter->length-1;
801 if(iter->reservedField!=0) {
802 iter->reservedField=0;
818 iter->reservedField=c;
825 iter->start=i;
826 if(iter->index>=0) {
827 return iter->index=pos;
831 return iter->index=i; /* reached the beginning */
840 utf8IteratorHasNext(UCharIterator *iter) {
841 return iter->start<iter->limit || iter->reservedField!=0;
845 utf8IteratorHasPrevious(UCharIterator *iter) {
846 return iter->start>0;
850 utf8IteratorCurrent(UCharIterator *iter) {
851 if(iter->reservedField!=0) {
852 return U16_TRAIL(iter->reservedField);
853 } else if(iter->start<iter->limit) {
854 const uint8_t *s=(const uint8_t *)iter->context;
856 int32_t i=iter->start;
858 U8_NEXT_OR_FFFD(s, i, iter->limit, c);
870 utf8IteratorNext(UCharIterator *iter) {
873 if(iter->reservedField!=0) {
874 UChar trail=U16_TRAIL(iter->reservedField);
875 iter->reservedField=0;
876 if((index=iter->index)>=0) {
877 iter->index=index+1;
880 } else if(iter->start<iter->limit) {
881 const uint8_t *s=(const uint8_t *)iter->context;
884 U8_NEXT_OR_FFFD(s, iter->start, iter->limit, c);
885 if((index=iter->index)>=0) {
886 iter->index=++index;
887 if(iter->length<0 && iter->start==iter->limit) {
888 iter->length= c<=0xffff ? index : index+1;
890 } else if(iter->start==iter->limit && iter->length>=0) {
891 iter->index= c<=0xffff ? iter->length : iter->length-1;
896 iter->reservedField=c;
905 utf8IteratorPrevious(UCharIterator *iter) {
908 if(iter->reservedField!=0) {
909 UChar lead=U16_LEAD(iter->reservedField);
910 iter->reservedField=0;
911 iter->start-=4; /* we stayed behind the supplementary code point; go before it now */
912 if((index=iter->index)>0) {
913 iter->index=index-1;
916 } else if(iter->start>0) {
917 const uint8_t *s=(const uint8_t *)iter->context;
920 U8_PREV_OR_FFFD(s, 0, iter->start, c);
921 if((index=iter->index)>0) {
922 iter->index=index-1;
923 } else if(iter->start<=1) {
924 iter->index= c<=0xffff ? iter->start : iter->start+1;
929 iter->start+=4; /* back to behind this supplementary code point for consistent state */
930 iter->reservedField=c;
939 utf8IteratorGetState(const UCharIterator *iter) {
940 uint32_t state=(uint32_t)(iter->start<<1);
941 if(iter->reservedField!=0) {
948 utf8IteratorSetState(UCharIterator *iter,
954 } else if(iter==NULL) {
956 } else if(state==utf8IteratorGetState(iter)) {
962 if((state==0 ? index<0 : index<4) || iter->limit<index) {
965 iter->start=index; /* restore UTF-8 byte index */
967 iter->index=index;
969 iter->index=-1; /* unknown UTF-16 index */
972 iter->reservedField=0;
976 U8_PREV_OR_FFFD((const uint8_t *)iter->context, 0, index, c);
980 iter->reservedField=c;
1002 uiter_setUTF8(UCharIterator *iter, const char *s, int32_t length) {
1003 if(iter!=0) {
1005 *iter=utf8Iterator;
1006 iter->context=s;
1008 iter->limit=length;
1010 iter->limit=(int32_t)uprv_strlen(s);
1012 iter->length= iter->limit<=1 ? iter->limit : -1;
1014 *iter=noopIterator;
1022 uiter_current32(UCharIterator *iter) {
1025 c=iter->current(iter);
1032 iter->move(iter, 1, UITER_CURRENT);
1033 if(U16_IS_TRAIL(c2=iter->current(iter))) {
1038 iter->move(iter, -1, UITER_CURRENT);
1040 if(U16_IS_LEAD(c2=iter->previous(iter))) {
1045 iter->move(iter, 1, UITER_CURRENT);
1053 uiter_next32(UCharIterator *iter) {
1056 c=iter->next(iter);
1058 if(U16_IS_TRAIL(c2=iter->next(iter))) {
1062 iter->move(iter, -1, UITER_CURRENT);
1069 uiter_previous32(UCharIterator *iter) {
1072 c=iter->previous(iter);
1074 if(U16_IS_LEAD(c2=iter->previous(iter))) {
1078 iter->move(iter, 1, UITER_CURRENT);
1085 uiter_getState(const UCharIterator *iter) {
1086 if(iter==NULL || iter->getState==NULL) {
1089 return iter->getState(iter);
1094 uiter_setState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
1097 } else if(iter==NULL) {
1099 } else if(iter->setState==NULL) {
1102 iter->setState(iter, state, pErrorCode);