Skip to content

Commit fa5c235

Browse files
committed
Move crude input shims to InputStream.swift
We need to replace and flush input streaming later with genuine parsing. Swift SVN r3170
1 parent 5e485a9 commit fa5c235

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

stdlib/InputStream.swift

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//===----------------------------------------------------------------------===//
2+
// InputStream
3+
//===----------------------------------------------------------------------===//
4+
5+
// XXX FIXME -- replace and flush this out with parsing logic
6+
7+
class Keyboard {
8+
func read(buf : UInt8[]) -> Int {
9+
var r = posix_read(0, buf.base.value, buf.length)
10+
assert(r >= 0)
11+
return r
12+
}
13+
14+
func read() -> Int {
15+
var c = new UInt8[1]
16+
if read(c) != 1 {
17+
return -1
18+
}
19+
return Int(c[0])
20+
}
21+
}
22+
23+
extension Keyboard {
24+
func getline() -> String {
25+
return getline('\n')
26+
}
27+
28+
func getline(delim : Char) -> String {
29+
var r : String
30+
var i = read()
31+
while i != -1 {
32+
var c = Char(i)
33+
if c == delim {
34+
break
35+
}
36+
r = r + c
37+
i = read()
38+
}
39+
return r
40+
}
41+
}
42+
43+
var kbd : Keyboard = new Keyboard

stdlib/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ LINK_LIBS_IN_SHARED := 1
1818
SHARED_LIBRARY := 1
1919
SWIFT_SOURCES := Bool.swift FixedPoint.swift FloatingPoint.swift Misc.swift \
2020
String.swift Dictionary.swift Vector.swift Algorithm.swift \
21-
Demangle.swift OutputStream.swift \
21+
Demangle.swift InputStream.swift OutputStream.swift \
2222
POSIX/Descriptor.swift POSIX/File.swift POSIX/Misc.swift
2323
SOURCES := swift.swift
2424
NO_BUILD_ARCHIVE := 1

0 commit comments

Comments
 (0)