| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart.utf; | 5 part of dart.utf; |
| 6 | 6 |
| 7 const int _UTF8_ONE_BYTE_MAX = 0x7f; | 7 const int _UTF8_ONE_BYTE_MAX = 0x7f; |
| 8 const int _UTF8_TWO_BYTE_MAX = 0x7ff; | 8 const int _UTF8_TWO_BYTE_MAX = 0x7ff; |
| 9 const int _UTF8_THREE_BYTE_MAX = 0xffff; | 9 const int _UTF8_THREE_BYTE_MAX = 0xffff; |
| 10 | 10 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 encodedLength += 3; | 83 encodedLength += 3; |
| 84 } else if (value <= UNICODE_VALID_RANGE_MAX) { | 84 } else if (value <= UNICODE_VALID_RANGE_MAX) { |
| 85 encodedLength += 4; | 85 encodedLength += 4; |
| 86 } | 86 } |
| 87 } | 87 } |
| 88 | 88 |
| 89 List<int> encoded = new List<int>(encodedLength); | 89 List<int> encoded = new List<int>(encodedLength); |
| 90 int insertAt = 0; | 90 int insertAt = 0; |
| 91 for (int value in source) { | 91 for (int value in source) { |
| 92 if (value < 0 || value > UNICODE_VALID_RANGE_MAX) { | 92 if (value < 0 || value > UNICODE_VALID_RANGE_MAX) { |
| 93 encoded.setRange(insertAt, 3, [0xef, 0xbf, 0xbd]); | 93 encoded.setRange(insertAt, insertAt + 3, [0xef, 0xbf, 0xbd]); |
| 94 insertAt += 3; | 94 insertAt += 3; |
| 95 } else if (value <= _UTF8_ONE_BYTE_MAX) { | 95 } else if (value <= _UTF8_ONE_BYTE_MAX) { |
| 96 encoded[insertAt] = value; | 96 encoded[insertAt] = value; |
| 97 insertAt++; | 97 insertAt++; |
| 98 } else if (value <= _UTF8_TWO_BYTE_MAX) { | 98 } else if (value <= _UTF8_TWO_BYTE_MAX) { |
| 99 encoded[insertAt] = _UTF8_FIRST_BYTE_OF_TWO_BASE | ( | 99 encoded[insertAt] = _UTF8_FIRST_BYTE_OF_TWO_BASE | ( |
| 100 _UTF8_FIRST_BYTE_OF_TWO_MASK & | 100 _UTF8_FIRST_BYTE_OF_TWO_MASK & |
| 101 _addToEncoding(insertAt, 1, value, encoded)); | 101 _addToEncoding(insertAt, 1, value, encoded)); |
| 102 insertAt += 2; | 102 insertAt += 2; |
| 103 } else if (value <= _UTF8_THREE_BYTE_MAX) { | 103 } else if (value <= _UTF8_THREE_BYTE_MAX) { |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 return true; | 266 return true; |
| 267 } else if (replacementCodepoint != null) { | 267 } else if (replacementCodepoint != null) { |
| 268 _current = replacementCodepoint; | 268 _current = replacementCodepoint; |
| 269 return true; | 269 return true; |
| 270 } else { | 270 } else { |
| 271 throw new ArgumentError( | 271 throw new ArgumentError( |
| 272 "Invalid UTF8 at ${utf8EncodedBytesIterator.position - j}"); | 272 "Invalid UTF8 at ${utf8EncodedBytesIterator.position - j}"); |
| 273 } | 273 } |
| 274 } | 274 } |
| 275 } | 275 } |
| OLD | NEW |