Home | History | Annotate | Download | only in common

Lines Matching defs:uni

68 initIndexes(UNormIterator *uni, UCharIterator *iter) {
69 /* do not pass api so that the compiler knows it's an alias pointer to uni itself */
70 UCharIterator *api=&uni->api;
75 uni->hasPrevious=FALSE;
76 uni->hasNext=iter->hasNext(iter);
79 api->start=api->index=api->limit=uni->capacity;
80 uni->hasNext=FALSE;
81 uni->hasPrevious=iter->hasPrevious(iter);
84 api->start=api->index=api->limit=uni->capacity/2;
85 uni->hasPrevious=uni->hasNext=TRUE;
90 reallocArrays(UNormIterator *uni, int32_t capacity, UBool addAtStart) {
91 /* do not pass api so that the compiler knows it's an alias pointer to uni itself */
92 UCharIterator *api=&uni->api;
104 uni->capacity=capacity;
113 delta=capacity-uni->capacity;
114 uprv_memcpy(states+delta+start, uni->states+start, (limit-start+1)*4);
115 uprv_memcpy(chars+delta+start, uni->chars+start, (limit-start)*4);
122 uprv_memcpy(states+start, uni->states+start, (limit-start+1)*4);
123 uprv_memcpy(chars+start, uni->chars+start, (limit-start)*4);
126 uni->chars=chars;
127 uni->states=states;
190 readNext(UNormIterator *uni, UCharIterator *iter) {
191 /* do not pass api so that the compiler knows it's an alias pointer to uni itself */
192 UCharIterator *api=&uni->api;
199 capacity=uni->capacity;
203 moveContentsTowardStart(api, uni->chars, uni->states, room);
205 uni->hasPrevious=TRUE;
210 if(uni->state!=uni->states[limit]) {
211 uiter_setState(iter, uni->states[limit], &errorCode);
213 uni->state=UITER_NO_STATE;
214 uni->hasNext=FALSE;
219 room=unorm_next(iter, uni->chars+limit, capacity-limit, uni->mode, 0, TRUE, NULL, &errorCode);
223 uni->states[0]=uni->states[limit];
225 uni->hasPrevious=TRUE;
228 if(!reallocArrays(uni, capacity, FALSE)) {
229 uni->state=UITER_NO_STATE;
230 uni->hasNext=FALSE;
237 uiter_setState(iter, uni->states[limit], &errorCode);
238 room=unorm_next(iter, uni->chars+limit, capacity-limit, uni->mode, 0, TRUE, NULL, &errorCode);
241 uni->state=UITER_NO_STATE;
242 uni->hasNext=FALSE;
250 uni->states[limit++]=UITER_NO_STATE;
252 uni->states[limit]=uni->state=uiter_getState(iter);
253 uni->hasNext=iter->hasNext(iter);
260 readPrevious(UNormIterator *uni, UCharIterator *iter) {
261 /* do not pass api so that the compiler knows it's an alias pointer to uni itself */
262 UCharIterator *api=&uni->api;
269 capacity=uni->capacity;
273 moveContentsTowardEnd(api, uni->chars, uni->states, room);
275 uni->hasNext=TRUE;
280 if(uni->state!=uni->states[start]) {
281 uiter_setState(iter, uni->states[start], &errorCode);
283 uni->state=UITER_NO_STATE;
284 uni->hasPrevious=FALSE;
289 room=unorm_previous(iter, uni->chars, start, uni->mode, 0, TRUE, NULL, &errorCode);
293 uni->states[capacity]=uni->states[start];
295 uni->hasNext=TRUE;
298 if(!reallocArrays(uni, capacity, TRUE)) {
299 uni->state=UITER_NO_STATE;
300 uni->hasPrevious=FALSE;
307 uiter_setState(iter, uni->states[start], &errorCode);
308 room=unorm_previous(iter, uni->chars, start, uni->mode, 0, TRUE, NULL, &errorCode);
311 uni->state=UITER_NO_STATE;
312 uni->hasPrevious=FALSE;
319 uni->chars[--start]=uni->chars[--room];
321 uni->states[start]=UITER_NO_STATE;
323 uni->states[start]=uni->state=uiter_getState(iter);
324 uni->hasPrevious=iter->hasPrevious(iter);
350 UNormIterator *uni=(UNormIterator *)api;
351 UCharIterator *iter=uni->iter;
358 if(uni->hasPrevious) {
361 uni->states[api->limit]=uni->state=uiter_getState(iter);
362 uni->hasPrevious=FALSE;
363 uni->hasNext=iter->hasNext(iter);
374 if(uni->hasNext) {
376 api->start=api->index=api->limit=uni->capacity;
377 uni->states[api->limit]=uni->state=uiter_getState(iter);
378 uni->hasPrevious=iter->hasPrevious(iter);
379 uni->hasNext=FALSE;
404 if(!uni->hasNext || !readNext(uni, iter)) {
420 if(!uni->hasPrevious || !readPrevious(uni, iter)) {
426 if(api->index==api->start && !uni->hasPrevious) {
445 UNormIterator *uni=(UNormIterator *)api;
448 (uni->hasNext && readNext(uni, uni->iter))
450 return uni->chars[api->index];
458 UNormIterator *uni=(UNormIterator *)api;
461 (uni->hasNext && readNext(uni, uni->iter))
463 return uni->chars[api->index++];
471 UNormIterator *uni=(UNormIterator *)api;
474 (uni->hasPrevious && readPrevious(uni, uni->iter))
476 return uni->chars[--api->index];
484 /* not uni->state because that may not be at api->index */
497 UNormIterator *uni=(UNormIterator *)api;
499 if(state!=uni->state) {
500 uni->state=state;
510 if(state==uni->states[api->index]) {
512 } else if(state==uni->states[api->limit]) {
520 if(state==uni->states[i]) {
529 uni->states[api->limit]=state;
551 UNormIterator *uni;
559 uni=NULL;
563 uni=(UNormIterator *)stackMem;
568 uni=(UNormIterator *)((char *)stackMem+align);
574 if(uni!=NULL) {
575 uni->isStackAllocated=TRUE;
577 uni=(UNormIterator *)uprv_malloc(sizeof(UNormIterator));
578 if(uni==NULL) {
582 uni->isStackAllocated=FALSE;
589 uni->iter=NULL;
590 uni->chars=uni->charsBuffer;
591 uni->states=uni->statesBuffer;
592 uni->capacity=INITIAL_CAPACITY;
593 uni->state=UITER_NO_STATE;
594 uni->hasPrevious=uni->hasNext=FALSE;
595 uni->mode=UNORM_NONE;
598 uiter_setString(&uni->api, NULL, 0);
599 return uni;
603 unorm_closeIter(UNormIterator *uni) {
604 if(uni!=NULL) {
605 if(uni->states!=uni->statesBuffer) {
607 uprv_free(uni->states);
609 if(!uni->isStackAllocated) {
610 uprv_free(uni);
616 unorm_setIter(UNormIterator *uni, UCharIterator *iter, UNormalizationMode mode, UErrorCode *pErrorCode) {
621 if(uni==NULL) {
629 uiter_setString(&uni->api, NULL, 0);
635 uprv_memcpy(&uni->api, &unormIterator, sizeof(unormIterator));
637 uni->iter=iter;
638 uni->mode=mode;
640 initIndexes(uni, iter);
641 uni->states[uni->api.limit]=uni->state=uiter_getState(iter);
643 return &uni->api;