Index: utf/lib/src/utf_16_code_unit_decoder.dart |
diff --git a/utf/lib/src/utf_16_code_unit_decoder.dart b/utf/lib/src/utf_16_code_unit_decoder.dart |
deleted file mode 100644 |
index a0a4b3c386c99fa7f1f703729d92664e7240291b..0000000000000000000000000000000000000000 |
--- a/utf/lib/src/utf_16_code_unit_decoder.dart |
+++ /dev/null |
@@ -1,83 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library utf.utf_16_code_unit_decoder; |
- |
-import 'constants.dart'; |
-import 'list_range.dart'; |
- |
-/** |
- * An Iterator<int> of codepoints built on an Iterator of UTF-16 code units. |
- * The parameters can override the default Unicode replacement character. Set |
- * the replacementCharacter to null to throw an ArgumentError |
- * rather than replace the bad value. |
- */ |
-class Utf16CodeUnitDecoder implements Iterator<int> { |
- // TODO(kevmoo): should this field be private? |
- final ListRangeIterator utf16CodeUnitIterator; |
- final int replacementCodepoint; |
- int _current = null; |
- |
- Utf16CodeUnitDecoder(List<int> utf16CodeUnits, [int offset = 0, int length, |
- int this.replacementCodepoint = |
- UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) : |
- utf16CodeUnitIterator = |
- (new ListRange(utf16CodeUnits, offset, length)).iterator; |
- |
- Utf16CodeUnitDecoder.fromListRangeIterator( |
- ListRangeIterator this.utf16CodeUnitIterator, |
- int this.replacementCodepoint); |
- |
- Iterator<int> get iterator => this; |
- |
- int get current => _current; |
- |
- bool moveNext() { |
- _current = null; |
- if (!utf16CodeUnitIterator.moveNext()) return false; |
- |
- int value = utf16CodeUnitIterator.current; |
- if (value < 0) { |
- if (replacementCodepoint != null) { |
- _current = replacementCodepoint; |
- } else { |
- throw new ArgumentError( |
- "Invalid UTF16 at ${utf16CodeUnitIterator.position}"); |
- } |
- } else if (value < UNICODE_UTF16_RESERVED_LO || |
- (value > UNICODE_UTF16_RESERVED_HI && value <= UNICODE_PLANE_ONE_MAX)) { |
- // transfer directly |
- _current = value; |
- } else if (value < UNICODE_UTF16_SURROGATE_UNIT_1_BASE && |
- utf16CodeUnitIterator.moveNext()) { |
- // merge surrogate pair |
- int nextValue = utf16CodeUnitIterator.current; |
- if (nextValue >= UNICODE_UTF16_SURROGATE_UNIT_1_BASE && |
- nextValue <= UNICODE_UTF16_RESERVED_HI) { |
- value = (value - UNICODE_UTF16_SURROGATE_UNIT_0_BASE) << 10; |
- value += UNICODE_UTF16_OFFSET + |
- (nextValue - UNICODE_UTF16_SURROGATE_UNIT_1_BASE); |
- _current = value; |
- } else { |
- if (nextValue >= UNICODE_UTF16_SURROGATE_UNIT_0_BASE && |
- nextValue < UNICODE_UTF16_SURROGATE_UNIT_1_BASE) { |
- utf16CodeUnitIterator.backup(); |
- } |
- if (replacementCodepoint != null) { |
- _current = replacementCodepoint; |
- } else { |
- throw new ArgumentError( |
- "Invalid UTF16 at ${utf16CodeUnitIterator.position}"); |
- } |
- } |
- } else if (replacementCodepoint != null) { |
- _current = replacementCodepoint; |
- } else { |
- throw new ArgumentError( |
- "Invalid UTF16 at ${utf16CodeUnitIterator.position}"); |
- } |
- return true; |
- } |
-} |
- |