Skip to content

Commit 88fb124

Browse files
authored
Merge pull request #17835 from milseman/nfc
[stdlib] Some stubs and trivial refactorings; NFC
2 parents 8d9345b + 5358401 commit 88fb124

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

stdlib/public/SwiftShims/UnicodeShims.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ typedef enum __swift_stdlib_UBreakIteratorType {
374374
} __swift_stdlib_UBreakIteratorType;
375375

376376
typedef struct __swift_stdlib_UBreakIterator __swift_stdlib_UBreakIterator;
377+
typedef struct __swift_stdlib_UText __swift_stdlib_UText;
377378
typedef struct __swift_stdlib_UNormalizer2 __swift_stdlib_UNormalizer2;
378379
typedef __swift_int8_t __swift_stdlib_UBool;
379380
typedef __swift_int32_t __swift_stdlib_UChar32;
@@ -398,12 +399,28 @@ __swift_stdlib_ubrk_open(__swift_stdlib_UBreakIteratorType type,
398399
__swift_int32_t textLength,
399400
__swift_stdlib_UErrorCode *status);
400401

402+
SWIFT_RUNTIME_STDLIB_INTERFACE
403+
void __swift_stdlib_ubrk_setUText(__swift_stdlib_UBreakIterator *bi,
404+
__swift_stdlib_UText *text,
405+
__swift_stdlib_UErrorCode *status);
406+
401407
SWIFT_RUNTIME_STDLIB_INTERFACE
402408
void __swift_stdlib_ubrk_setText(__swift_stdlib_UBreakIterator *bi,
403409
const __swift_stdlib_UChar *text,
404410
__swift_int32_t textLength,
405411
__swift_stdlib_UErrorCode *status);
406412

413+
SWIFT_RUNTIME_STDLIB_INTERFACE
414+
__swift_stdlib_UText *
415+
__swift_stdlib_utext_openUTF8(__swift_stdlib_UText * _Nullable, const char *,
416+
__swift_int64_t, __swift_stdlib_UErrorCode*);
417+
418+
SWIFT_RUNTIME_STDLIB_INTERFACE
419+
__swift_stdlib_UText *
420+
__swift_stdlib_utext_openUChars(__swift_stdlib_UText * _Nullable,
421+
const __swift_stdlib_UChar *,
422+
__swift_int64_t, __swift_stdlib_UErrorCode*);
423+
407424
SWIFT_RUNTIME_STDLIB_INTERFACE
408425
__swift_int32_t __swift_stdlib_ubrk_preceding(__swift_stdlib_UBreakIterator *bi,
409426
__swift_int32_t offset);

stdlib/public/core/BidirectionalCollection.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ extension BidirectionalCollection {
139139

140140
@inlinable // protocol-only
141141
public func index(_ i: Index, offsetBy n: Int) -> Index {
142+
return _index(i, offsetBy: n)
143+
}
144+
145+
@inlinable // protocol-only
146+
internal func _index(_ i: Index, offsetBy n: Int) -> Index {
142147
if n >= 0 {
143148
return _advanceForward(i, by: n)
144149
}
@@ -152,6 +157,13 @@ extension BidirectionalCollection {
152157
@inlinable // protocol-only
153158
public func index(
154159
_ i: Index, offsetBy n: Int, limitedBy limit: Index
160+
) -> Index? {
161+
return _index(i, offsetBy: n, limitedBy: limit)
162+
}
163+
164+
@inlinable // protocol-only
165+
internal func _index(
166+
_ i: Index, offsetBy n: Int, limitedBy limit: Index
155167
) -> Index? {
156168
if n >= 0 {
157169
return _advanceForward(i, by: n, limitedBy: limit)
@@ -168,6 +180,11 @@ extension BidirectionalCollection {
168180

169181
@inlinable // protocol-only
170182
public func distance(from start: Index, to end: Index) -> Int {
183+
return _distance(from: start, to: end)
184+
}
185+
186+
@inlinable // protocol-only
187+
internal func _distance(from start: Index, to end: Index) -> Int {
171188
var start = start
172189
var count = 0
173190

stdlib/public/stubs/UnicodeNormalization.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ extern "C" {
2525

2626
// Types
2727
typedef struct UBreakIterator UBreakIterator;
28+
typedef struct UText UText;
2829
typedef struct UBreakIterator UNormalizer2;
2930
typedef enum UBreakIteratorType {} UBreakIteratorType;
3031
typedef enum UErrorCode {} UErrorCode;
@@ -40,6 +41,10 @@ UBreakIterator *ubrk_open(UBreakIteratorType, const char *, const UChar *,
4041
int32_t ubrk_preceding(UBreakIterator *, int32_t);
4142
int32_t ubrk_following(UBreakIterator *, int32_t);
4243
void ubrk_setText(UBreakIterator *, const UChar *, int32_t, UErrorCode *);
44+
void ubrk_setUText(UBreakIterator *, UText *, UErrorCode *);
45+
46+
UText *utext_openUTF8(UText *, const char *, int64_t, UErrorCode *);
47+
UText *utext_openUChars(UText *, const UChar *, int64_t, UErrorCode *);
4348

4449
// Comparison, normalization, and character property APIs
4550
int32_t unorm2_spanQuickCheckYes(const UNormalizer2 *, const UChar *, int32_t,
@@ -164,6 +169,32 @@ void swift::__swift_stdlib_ubrk_setText(
164169
textLength, ptr_cast<UErrorCode>(status));
165170
}
166171

172+
void swift::__swift_stdlib_ubrk_setUText(
173+
swift::__swift_stdlib_UBreakIterator *bi, __swift_stdlib_UText *text,
174+
__swift_stdlib_UErrorCode *status) {
175+
return ubrk_setUText(ptr_cast<UBreakIterator>(bi), ptr_cast<UText>(text),
176+
ptr_cast<UErrorCode>(status));
177+
}
178+
179+
SWIFT_RUNTIME_STDLIB_INTERFACE swift::__swift_stdlib_UText *
180+
swift::__swift_stdlib_utext_openUTF8(__swift_stdlib_UText *ut,
181+
const char *s, int64_t len,
182+
__swift_stdlib_UErrorCode *status) {
183+
return ptr_cast<__swift_stdlib_UText>(
184+
utext_openUTF8(ptr_cast<UText>(ut), s, len,
185+
ptr_cast<UErrorCode>(status)));
186+
}
187+
188+
SWIFT_RUNTIME_STDLIB_INTERFACE swift::__swift_stdlib_UText *
189+
swift::__swift_stdlib_utext_openUChars(__swift_stdlib_UText *ut,
190+
const __swift_stdlib_UChar *s,
191+
int64_t len,
192+
__swift_stdlib_UErrorCode *status) {
193+
return ptr_cast<__swift_stdlib_UText>(
194+
utext_openUChars(ptr_cast<UText>(ut), ptr_cast<UChar>(s), len,
195+
ptr_cast<UErrorCode>(status)));
196+
}
197+
167198
swift::__swift_stdlib_UBool swift::__swift_stdlib_unorm2_hasBoundaryBefore(
168199
const __swift_stdlib_UNormalizer2 *ptr, __swift_stdlib_UChar32 char32) {
169200
return unorm2_hasBoundaryBefore(ptr_cast<UNormalizer2>(ptr), char32);

0 commit comments

Comments
 (0)