@@ -1362,6 +1362,41 @@ extension _StringGuts {
1362
1362
// String API
1363
1363
//
1364
1364
1365
+ // UnicodeScalarView operations
1366
+ extension _StringGuts {
1367
+ @_inlineable // FIXME(sil-serialize-all)
1368
+ @_versioned // FIXME(sil-serialize-all)
1369
+ func _unicodeScalarWidth( startingAt offset: Int ) -> Int {
1370
+ if _slowPath ( _isOpaque) {
1371
+ return _asOpaque ( ) . _unicodeScalarWidth ( startingAt: offset)
1372
+ }
1373
+ if isASCII { return 1 }
1374
+ return _unmanagedUTF16View. _unicodeScalarWidth ( startingAt: offset)
1375
+ }
1376
+
1377
+ @_inlineable // FIXME(sil-serialize-all)
1378
+ @_versioned // FIXME(sil-serialize-all)
1379
+ func _unicodeScalarWidth( endingAt offset: Int ) -> Int {
1380
+ if _slowPath ( _isOpaque) {
1381
+ return _asOpaque ( ) . _unicodeScalarWidth ( endingAt: offset)
1382
+ }
1383
+ if isASCII { return 1 }
1384
+ return _unmanagedUTF16View. _unicodeScalarWidth ( endingAt: offset)
1385
+ }
1386
+
1387
+ @_inlineable // FIXME(sil-serialize-all)
1388
+ @_versioned // FIXME(sil-serialize-all)
1389
+ func _decodeUnicodeScalar( startingAt offset: Int ) -> UnicodeDecodingResult {
1390
+ if _slowPath ( _isOpaque) {
1391
+ return _asOpaque ( ) . _decodeUnicodeScalar ( startingAt: offset)
1392
+ }
1393
+ if isASCII {
1394
+ return _unmanagedASCIIView. _decodeUnicodeScalar ( startingAt: offset)
1395
+ }
1396
+ return _unmanagedUTF16View. _decodeUnicodeScalar ( startingAt: offset)
1397
+ }
1398
+ }
1399
+
1365
1400
// Some CharacterView operations
1366
1401
extension String {
1367
1402
/// Accesses the character at the given position.
0 commit comments