Skip to content

Commit bf05f11

Browse files
committed
String: tweaks/clanup to character view
1 parent 823d486 commit bf05f11

File tree

4 files changed

+27
-72
lines changed

4 files changed

+27
-72
lines changed

Source/String.Views.swift

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,23 @@ public extension SwiftString {
4040
while te.MoveNext() {
4141
stringData.append(Character(nativeStringValue: te.Current as! NativeString))
4242
}
43-
#elseif COCOA
43+
#elseif DARWIN
4444
var i = 0
4545
while i < length(string) {
4646

47-
let sequenceLength = string.rangeOfComposedCharacterSequenceAtIndex(i).length
47+
let sequenceLength = (string as! NSString).rangeOfComposedCharacterSequenceAtIndex(i).length
4848

4949
//76192: Silver: can't use range as subscript? (SBL)
5050
let ch: NativeString = string.__substring(range: i ..< i+sequenceLength)
5151
stringData.append(Character(nativeStringValue: ch))
5252
i += sequenceLength
5353
}
54+
#elseif ISLAND
55+
#hint Not implemented yet
5456
#endif
5557

56-
/* old logic to detect surrogate pairs; not needed right now
58+
/* old logic to detect surrogate pairs; not needed right now
59+
{
5760
let c = string[i]
5861
let c2 = Int(c)
5962
/*switch Int(c) {
@@ -99,8 +102,8 @@ public extension SwiftString {
99102
addCharacter()
100103

101104
i += 1
102-
}*/
103-
//addCharacter()
105+
}
106+
//addCharacter()*/
104107
}
105108

106109
public override var count: Int { return stringData.count }
@@ -178,6 +181,13 @@ public extension SwiftString {
178181
return stringData[index]
179182
}
180183

184+
@Sequence
185+
public func GetSequence() -> ISequence<Char> {
186+
for i in startIndex ..< endIndex {
187+
__yield self[i]
188+
}
189+
}
190+
181191
@ToString public func description() -> NativeString {
182192
var result = "UTF16CharacterView("
183193
for i in startIndex..<endIndex {
@@ -191,10 +201,9 @@ public extension SwiftString {
191201
}
192202
}
193203

194-
#if !ISLAND
195204
public typealias UnicodeScalarView = UTF32View
196205

197-
public class UTF32View: BaseCharacterView/*, ISequence<UTF32Char>*/ {
206+
public class UTF32View: BaseCharacterView {
198207
private let stringData: Byte[]
199208

200209
private init(stringData: Byte[]) {
@@ -207,7 +216,7 @@ public extension SwiftString {
207216
#elseif CLR
208217
stringData = System.Text.UTF32Encoding(/*bigendian:*/false, /*BOM:*/false).GetBytes(string) // todo check order
209218
#elseif ISLAND
210-
stringData = Encoding.UTF32LE.GetBytes(aValue, /*BOM:*/false) // todo check order
219+
stringData = System.Encoding.UTF32LE.GetBytes(string, /*BOM:*/false) // todo check order
211220
#elseif COCOA
212221
if let utf32 = string.dataUsingEncoding(.NSUTF32LittleEndianStringEncoding) { // todo check order
213222
stringData = Byte[](capacity: utf32.length);
@@ -263,9 +272,7 @@ public extension SwiftString {
263272
return result
264273
}
265274
}
266-
#endif
267275

268-
#if !ISLAND
269276
public class UTF8View: BaseCharacterView {
270277
internal let stringData: UTF8Char[]
271278

@@ -279,7 +286,7 @@ public extension SwiftString {
279286
#elseif CLR
280287
stringData = System.Text.UTF8Encoding(/*BOM:*/false).GetBytes(string)
281288
#elseif ISLAND
282-
stringData = Encoding.UTF8.GetBytes(aValue, /*BOM:*/false)
289+
stringData = System.Encoding.UTF8.GetBytes(string, /*BOM:*/false) as! UTF8Char[]
283290
#elseif COCOA
284291
if let utf8 = string.dataUsingEncoding(.NSUTF8StringEncoding) {
285292
stringData = UTF8Char[](capacity: utf8.length);
@@ -316,6 +323,11 @@ public extension SwiftString {
316323
return stringData[index]
317324
}
318325

326+
@Sequence
327+
public func GetSequence() -> ISequence<UTF8Char> {
328+
return stringData
329+
}
330+
319331
@ToString public func description() -> NativeString {
320332
var result = "UTF8CharacterView("
321333
for i in startIndex..<endIndex {
@@ -328,6 +340,4 @@ public extension SwiftString {
328340
return result
329341
}
330342
}
331-
#endif
332-
333343
}

Source/String.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,11 @@ public struct SwiftString /*: Streamable*/ {
168168
// Properties
169169
//
170170

171+
#if DARWIN || !ISLAND
171172
public var characters: SwiftString.CharacterView {
172173
return SwiftString.CharacterView(string: nativeStringValue)
173174
}
175+
#endif
174176

175177
@ToString public func description() -> NativeString {
176178
return nativeStringValue
@@ -226,11 +228,9 @@ public struct SwiftString /*: Streamable*/ {
226228
#endif
227229
}
228230

229-
#if !ISLAND
230231
public var utf8: SwiftString.UTF8View {
231232
return SwiftString.UTF8View(string: nativeStringValue)
232233
}
233-
#endif
234234

235235
#if COCOA
236236
public var utf8CString: UTF8Char[] {
@@ -246,11 +246,9 @@ public struct SwiftString /*: Streamable*/ {
246246
return SwiftString.UTF16View(string: nativeStringValue)
247247
}
248248

249-
#if !ISLAND
250249
public var unicodeScalars: SwiftString.UnicodeScalarView {
251250
return SwiftString.UnicodeScalarView(string: nativeStringValue)
252251
}
253-
#endif
254252

255253
//
256254
// Methods
@@ -432,5 +430,4 @@ public struct SwiftString /*: Streamable*/ {
432430
return nil
433431
#endif
434432
}
435-
436433
}

Source/String_Extensions.swift

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,11 @@
7676
// Properties
7777
//
7878

79+
#if DARWIN || !ISLAND
7980
public var characters: SwiftString.CharacterView {
8081
return SwiftString.CharacterView(string: self)
8182
}
83+
#endif
8284

8385
#if !COCOA
8486
public var debugDescription: NativeString {
@@ -184,21 +186,17 @@
184186
#endif
185187
}
186188

187-
#if !ISLAND
188189
public var utf8: SwiftString.UTF8View {
189190
return SwiftString.UTF8View(string: self)
190191
}
191-
#endif
192192

193193
public var utf16: SwiftString.UTF16View {
194194
return SwiftString.UTF16View(string: self)
195195
}
196196

197-
#if !ISLAND
198197
public var unicodeScalars: SwiftString.UnicodeScalarView {
199198
return SwiftString.UnicodeScalarView(string: self)
200199
}
201-
#endif
202200

203201
//
204202
// Methods
@@ -335,54 +333,4 @@
335333
return nil
336334
#endif
337335
}
338-
339-
public __abstract class CharacterView {
340-
/*fileprivate*/internal init(string: NativeString) {
341-
}
342-
343-
public var startIndex: NativeString.Index { return 0 }
344-
public __abstract var endIndex: NativeString.Index { get }
345-
346-
}
347-
348-
public class UTF16CharacterView: CharacterView, ICustomDebugStringConvertible {
349-
private let string: NativeString
350-
351-
/*fileprivate*/internal init(string: NativeString) {
352-
self.string = string
353-
}
354-
355-
public override var endIndex: NativeString.Index { return length(string) }
356-
357-
public subscript(index: Int) -> UTF16Char {
358-
return string[index]
359-
}
360-
361-
#if COCOA
362-
override var debugDescription: NativeString! {
363-
var result = "UTF16CharacterView("
364-
for i in startIndex..<endIndex {
365-
if i > startIndex {
366-
result += " "
367-
}
368-
result += UInt64(self[i]).toHexString(length: 4)
369-
}
370-
result += ")"
371-
return result
372-
}
373-
#else
374-
public var debugDescription: NativeString {
375-
var result = "UTF16CharacterView("
376-
for i in startIndex..<endIndex {
377-
if i > startIndex {
378-
result += " "
379-
}
380-
result += UInt64(self[i]).toHexString(length: 4)
381-
}
382-
result += ")"
383-
return result
384-
}
385-
#endif
386-
}
387-
388336
}

0 commit comments

Comments
 (0)