Skip to content

Commit 57ecf25

Browse files
committed
Implement native scalar name aliases
1 parent 495322a commit 57ecf25

File tree

7 files changed

+817
-1
lines changed

7 files changed

+817
-1
lines changed

stdlib/public/SwiftShims/UnicodeData.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ __swift_uint8_t _swift_stdlib_getNumericType(__swift_uint32_t scalar);
7373
SWIFT_RUNTIME_STDLIB_INTERNAL
7474
double _swift_stdlib_getNumericValue(__swift_uint32_t scalar);
7575

76+
SWIFT_RUNTIME_STDLIB_INTERNAL
77+
const char *_swift_stdlib_getNameAlias(__swift_uint32_t);
78+
7679
#ifdef __cplusplus
7780
} // extern "C"
7881
#endif

stdlib/public/core/UnicodeScalarProperties.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1238,7 +1238,13 @@ extension Unicode.Scalar.Properties {
12381238
/// This property corresponds to the "Name_Alias" property in the
12391239
/// [Unicode Standard](http://www.unicode.org/versions/latest/).
12401240
public var nameAlias: String? {
1241-
return _scalarName(__swift_stdlib_U_CHAR_NAME_ALIAS)
1241+
let nameAliasPtr = _swift_stdlib_getNameAlias(_scalar.value)
1242+
1243+
guard nameAliasPtr != nil else {
1244+
return nil
1245+
}
1246+
1247+
return String(cString: nameAliasPtr!)
12421248
}
12431249
}
12441250

stdlib/public/stubs/UnicodeScalarProps.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,16 @@ double _swift_stdlib_getNumericValue(__swift_uint32_t scalar) {
117117
auto valueIdx = _swift_stdlib_numeric_values_indices[scalarIdx];
118118
return _swift_stdlib_numeric_values[valueIdx];
119119
}
120+
121+
SWIFT_RUNTIME_STDLIB_INTERNAL
122+
const char *_swift_stdlib_getNameAlias(__swift_uint32_t scalar) {
123+
auto dataIdx = _swift_stdlib_getScalarBitArrayIdx(scalar,
124+
_swift_stdlib_nameAlias,
125+
_swift_stdlib_nameAlias_ranks);
126+
127+
if (dataIdx == std::numeric_limits<__swift_intptr_t>::max()) {
128+
return nullptr;
129+
}
130+
131+
return _swift_stdlib_nameAlias_data[dataIdx];
132+
}

stdlib/public/stubs/UnicodeScalarProps.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,3 +909,37 @@ static const __swift_uint8_t _swift_stdlib_numeric_values_indices[1872] = {
909909
0x42, 0xB, 0x31, 0x42, 0x1C, 0x42, 0x65, 0x1A, 0x65, 0x42, 0x42, 0x2, 0x65, 0x87, 0x87, 0x42,
910910
0x50, 0x87, 0xE, 0x38, 0xB, 0x1E, 0x87, 0x6, 0xE,
911911
};
912+
913+
static const char * const _swift_stdlib_nameAlias_data[29] = {
914+
"LATIN CAPITAL LETTER GHA", "LATIN SMALL LETTER GHA", "SYRIAC SUBLINEAR COLON SKEWED LEFT",
915+
"KANNADA LETTER LLLA", "LAO LETTER FO FON", "LAO LETTER FO FAY", "LAO LETTER RO", "LAO LETTER LO",
916+
"TIBETAN MARK BKA- SHOG GI MGO RGYAN", "HANGUL JONGSEONG YESIEUNG-KIYEOK",
917+
"HANGUL JONGSEONG YESIEUNG-SSANGKIYEOK", "HANGUL JONGSEONG SSANGYESIEUNG",
918+
"HANGUL JONGSEONG YESIEUNG-KHIEUKH", "WEIERSTRASS ELLIPTIC FUNCTION", "MICR ON US SYMBOL",
919+
"MICR DASH SYMBOL", "LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE",
920+
"RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE", "YI SYLLABLE ITERATION MARK",
921+
"MYANMAR LETTER KHAMTI LLA", "PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET",
922+
"CUNEIFORM SIGN NU11 TENU", "CUNEIFORM SIGN NU11 OVER NU11 BUR OVER BUR",
923+
"MEDEFAIDRIN CAPITAL LETTER H", "MEDEFAIDRIN CAPITAL LETTER NG", "MEDEFAIDRIN SMALL LETTER H",
924+
"MEDEFAIDRIN SMALL LETTER NG", "HENTAIGANA LETTER E-1",
925+
"BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS",
926+
};
927+
928+
static const __swift_uint16_t _swift_stdlib_nameAlias_ranks[87] = {
929+
0x0, 0x9, 0x9, 0xB, 0xC, 0xD, 0xE, 0x0, 0x0, 0x0, 0x2, 0x2, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1,
930+
0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0,
931+
0x1, 0x1, 0x1, 0x1, 0x0, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x1, 0x1,
932+
0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0,
933+
0x4, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1,
934+
};
935+
936+
static const __swift_uint64_t _swift_stdlib_nameAlias[88] = {
937+
0x7, 0x10480017042, 0x0, 0x100400000, 0x800000000000, 0x20000, 0x1000000, 0x20000000400000, 0x0,
938+
0x0, 0xC0000, 0x0, 0x0, 0x0, 0x0, 0x20000000000, 0x0, 0x20000, 0x40000000, 0x0, 0x0, 0x0, 0x30000,
939+
0x0, 0x0, 0x0, 0x28A000, 0x40000, 0x0, 0x0, 0x0, 0x1000000000000, 0x80000, 0x0, 0x0, 0x0,
940+
0xF00000000000, 0x90000, 0x10000000000, 0x0, 0x0, 0x0, 0xD0000, 0x30000000000, 0x0, 0x0, 0x0,
941+
0xE0000, 0x0, 0x0, 0x0, 0x1400000000000000, 0x100000, 0x0, 0x0, 0x20000000000000, 0x0, 0x120000,
942+
0x0, 0x400000000000, 0x0, 0x0, 0x130000, 0x10000000000, 0x0, 0x0, 0x0, 0x140000, 0x0, 0x0, 0x0,
943+
0x30, 0x150000, 0x0, 0x0, 0x0, 0xC0000000C00000, 0x170000, 0x0, 0x0, 0x200000000, 0x0, 0x1B0000,
944+
0x0, 0x20000000000000, 0x0, 0x0, 0x1C0000,
945+
};

0 commit comments

Comments
 (0)