virtual int32_t move32(int32_t delta, CharacterIterator::EOrigin origin){ switch(origin) { case kStart: pos = begin; if(delta > 0) { UTF_FWD_N(text, pos, end, delta); } break; case kCurrent: if(delta > 0) { UTF_FWD_N(text, pos, end, delta); } else { UTF_BACK_N(text, begin, pos, -delta); } break; case kEnd: pos = end; if(delta < 0) { UTF_BACK_N(text, begin, pos, -delta); } break; default: break; } return pos; };
int32_t UCharCharacterIterator::move32(int32_t delta, CharacterIterator::EOrigin origin) { // this implementation relies on the "safe" version of the UTF macros // (or the trustworthiness of the caller) switch(origin) { case kStart: pos = begin; if(delta > 0) { UTF_FWD_N(text, pos, end, delta); } break; case kCurrent: if(delta > 0) { UTF_FWD_N(text, pos, end, delta); } else { UTF_BACK_N(text, begin, pos, -delta); } break; case kEnd: pos = end; if(delta < 0) { UTF_BACK_N(text, begin, pos, -delta); } break; default: break; } return pos; }