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 const int _maxAscii = 0x7f; | 5 const int _maxAscii = 0x7f; |
6 const int _maxLatin1 = 0xff; | 6 const int _maxLatin1 = 0xff; |
7 const int _maxUtf16 = 0xffff; | 7 const int _maxUtf16 = 0xffff; |
8 const int _maxUnicode = 0x10ffff; | 8 const int _maxUnicode = 0x10ffff; |
9 | 9 |
10 patch class String { | 10 patch class String { |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 // TODO(lrn): Create string without scanning charCodes again - all values | 223 // TODO(lrn): Create string without scanning charCodes again - all values |
224 // in the [start..end] range are uint16 values. | 224 // in the [start..end] range are uint16 values. |
225 return _createFromCodePoints(charCodes, start, end); | 225 return _createFromCodePoints(charCodes, start, end); |
226 } | 226 } |
227 | 227 |
228 static String _createFromCodePoints(List<int> codePoints, int start, int end) | 228 static String _createFromCodePoints(List<int> codePoints, int start, int end) |
229 native "StringBase_createFromCodePoints"; | 229 native "StringBase_createFromCodePoints"; |
230 | 230 |
231 String operator [](int index) native "String_charAt"; | 231 String operator [](int index) native "String_charAt"; |
232 | 232 |
233 int codeUnitAt(int index) native "String_codeUnitAt"; | 233 int codeUnitAt(int index); // Implemented in the subclasses. |
234 | 234 |
235 int get length native "String_getLength"; | 235 int get length native "String_getLength"; |
236 | 236 |
237 bool get isEmpty { | 237 bool get isEmpty { |
238 return this.length == 0; | 238 return this.length == 0; |
239 } | 239 } |
240 | 240 |
241 bool get isNotEmpty => !isEmpty; | 241 bool get isNotEmpty => !isEmpty; |
242 | 242 |
243 String operator +(String other) native "String_concat"; | 243 String operator +(String other) native "String_concat"; |
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 | 930 |
931 class _OneByteString extends _StringBase implements String { | 931 class _OneByteString extends _StringBase implements String { |
932 | 932 |
933 factory _OneByteString._uninstantiable() { | 933 factory _OneByteString._uninstantiable() { |
934 throw new UnsupportedError( | 934 throw new UnsupportedError( |
935 "_OneByteString can only be allocated by the VM"); | 935 "_OneByteString can only be allocated by the VM"); |
936 } | 936 } |
937 | 937 |
938 int get hashCode native "String_getHashCode"; | 938 int get hashCode native "String_getHashCode"; |
939 | 939 |
| 940 int codeUnitAt(int index) native "String_codeUnitAt"; |
| 941 |
940 bool _isWhitespace(int codeUnit) { | 942 bool _isWhitespace(int codeUnit) { |
941 return _StringBase._isOneByteWhitespace(codeUnit); | 943 return _StringBase._isOneByteWhitespace(codeUnit); |
942 } | 944 } |
943 | 945 |
944 bool operator ==(Object other) { | 946 bool operator ==(Object other) { |
945 return super == other; | 947 return super == other; |
946 } | 948 } |
947 | 949 |
948 String _substringUncheckedNative(int startIndex, int endIndex) | 950 String _substringUncheckedNative(int startIndex, int endIndex) |
949 native "OneByteString_substringUnchecked"; | 951 native "OneByteString_substringUnchecked"; |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1233 "_TwoByteString can only be allocated by the VM"); | 1235 "_TwoByteString can only be allocated by the VM"); |
1234 } | 1236 } |
1235 | 1237 |
1236 static String _allocateFromTwoByteList(List list, int start, int end) | 1238 static String _allocateFromTwoByteList(List list, int start, int end) |
1237 native "TwoByteString_allocateFromTwoByteList"; | 1239 native "TwoByteString_allocateFromTwoByteList"; |
1238 | 1240 |
1239 bool _isWhitespace(int codeUnit) { | 1241 bool _isWhitespace(int codeUnit) { |
1240 return _StringBase._isTwoByteWhitespace(codeUnit); | 1242 return _StringBase._isTwoByteWhitespace(codeUnit); |
1241 } | 1243 } |
1242 | 1244 |
| 1245 int codeUnitAt(int index) native "String_codeUnitAt"; |
| 1246 |
1243 bool operator ==(Object other) { | 1247 bool operator ==(Object other) { |
1244 return super == other; | 1248 return super == other; |
1245 } | 1249 } |
1246 } | 1250 } |
1247 | 1251 |
1248 | 1252 |
1249 class _ExternalOneByteString extends _StringBase implements String { | 1253 class _ExternalOneByteString extends _StringBase implements String { |
1250 factory _ExternalOneByteString._uninstantiable() { | 1254 factory _ExternalOneByteString._uninstantiable() { |
1251 throw new UnsupportedError( | 1255 throw new UnsupportedError( |
1252 "_ExternalOneByteString can only be allocated by the VM"); | 1256 "_ExternalOneByteString can only be allocated by the VM"); |
1253 } | 1257 } |
1254 | 1258 |
1255 bool _isWhitespace(int codeUnit) { | 1259 bool _isWhitespace(int codeUnit) { |
1256 return _StringBase._isOneByteWhitespace(codeUnit); | 1260 return _StringBase._isOneByteWhitespace(codeUnit); |
1257 } | 1261 } |
1258 | 1262 |
| 1263 int codeUnitAt(int index) native "String_codeUnitAt"; |
| 1264 |
1259 bool operator ==(Object other) { | 1265 bool operator ==(Object other) { |
1260 return super == other; | 1266 return super == other; |
1261 } | 1267 } |
1262 | 1268 |
1263 static int _getCid() native "ExternalOneByteString_getCid"; | 1269 static int _getCid() native "ExternalOneByteString_getCid"; |
1264 } | 1270 } |
1265 | 1271 |
1266 | 1272 |
1267 class _ExternalTwoByteString extends _StringBase implements String { | 1273 class _ExternalTwoByteString extends _StringBase implements String { |
1268 factory _ExternalTwoByteString._uninstantiable() { | 1274 factory _ExternalTwoByteString._uninstantiable() { |
1269 throw new UnsupportedError( | 1275 throw new UnsupportedError( |
1270 "_ExternalTwoByteString can only be allocated by the VM"); | 1276 "_ExternalTwoByteString can only be allocated by the VM"); |
1271 } | 1277 } |
1272 | 1278 |
1273 bool _isWhitespace(int codeUnit) { | 1279 bool _isWhitespace(int codeUnit) { |
1274 return _StringBase._isTwoByteWhitespace(codeUnit); | 1280 return _StringBase._isTwoByteWhitespace(codeUnit); |
1275 } | 1281 } |
1276 | 1282 |
| 1283 int codeUnitAt(int index) native "String_codeUnitAt"; |
| 1284 |
1277 bool operator ==(Object other) { | 1285 bool operator ==(Object other) { |
1278 return super == other; | 1286 return super == other; |
1279 } | 1287 } |
1280 } | 1288 } |
1281 | 1289 |
1282 | 1290 |
1283 class _StringMatch implements Match { | 1291 class _StringMatch implements Match { |
1284 const _StringMatch(int this.start, | 1292 const _StringMatch(int this.start, |
1285 String this.input, | 1293 String this.input, |
1286 String this.pattern); | 1294 String this.pattern); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1351 int end = index + _pattern.length; | 1359 int end = index + _pattern.length; |
1352 _current = new _StringMatch(index, _input, _pattern); | 1360 _current = new _StringMatch(index, _input, _pattern); |
1353 // Empty match, don't start at same location again. | 1361 // Empty match, don't start at same location again. |
1354 if (end == _index) end++; | 1362 if (end == _index) end++; |
1355 _index = end; | 1363 _index = end; |
1356 return true; | 1364 return true; |
1357 } | 1365 } |
1358 | 1366 |
1359 Match get current => _current; | 1367 Match get current => _current; |
1360 } | 1368 } |
OLD | NEW |