123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // © 2016 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- /*
- **********************************************************************
- * Copyright (C) 1999-2011, International Business Machines
- * Corporation and others. All Rights Reserved.
- **********************************************************************
- */
- #include "unicode/chariter.h"
- U_NAMESPACE_BEGIN
- ForwardCharacterIterator::~ForwardCharacterIterator() {}
- ForwardCharacterIterator::ForwardCharacterIterator()
- : UObject()
- {}
- ForwardCharacterIterator::ForwardCharacterIterator(const ForwardCharacterIterator &other)
- : UObject(other)
- {}
- CharacterIterator::CharacterIterator()
- : textLength(0), pos(0), begin(0), end(0) {
- }
- CharacterIterator::CharacterIterator(int32_t length)
- : textLength(length), pos(0), begin(0), end(length) {
- if(textLength < 0) {
- textLength = end = 0;
- }
- }
- CharacterIterator::CharacterIterator(int32_t length, int32_t position)
- : textLength(length), pos(position), begin(0), end(length) {
- if(textLength < 0) {
- textLength = end = 0;
- }
- if(pos < 0) {
- pos = 0;
- } else if(pos > end) {
- pos = end;
- }
- }
- CharacterIterator::CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position)
- : textLength(length), pos(position), begin(textBegin), end(textEnd) {
- if(textLength < 0) {
- textLength = 0;
- }
- if(begin < 0) {
- begin = 0;
- } else if(begin > textLength) {
- begin = textLength;
- }
- if(end < begin) {
- end = begin;
- } else if(end > textLength) {
- end = textLength;
- }
- if(pos < begin) {
- pos = begin;
- } else if(pos > end) {
- pos = end;
- }
- }
- CharacterIterator::~CharacterIterator() {}
- CharacterIterator::CharacterIterator(const CharacterIterator &that) :
- ForwardCharacterIterator(that),
- textLength(that.textLength), pos(that.pos), begin(that.begin), end(that.end)
- {
- }
- CharacterIterator &
- CharacterIterator::operator=(const CharacterIterator &that) {
- ForwardCharacterIterator::operator=(that);
- textLength = that.textLength;
- pos = that.pos;
- begin = that.begin;
- end = that.end;
- return *this;
- }
- // implementing first[32]PostInc() directly in a subclass should be faster
- // but these implementations make subclassing a little easier
- char16_t
- CharacterIterator::firstPostInc() {
- setToStart();
- return nextPostInc();
- }
- UChar32
- CharacterIterator::first32PostInc() {
- setToStart();
- return next32PostInc();
- }
- U_NAMESPACE_END
|