-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathMicroStdlib.swift
91 lines (78 loc) · 2.75 KB
/
MicroStdlib.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -parse-stdlib -module-name Swift -emit-module -emit-module-path %t/Swift.swiftmodule -o %t/Swift.o %s
// RUN: ls %t/Swift.swiftmodule
// RUN: ls %t/Swift.swiftdoc
// RUN: ls %t/Swift.o
// REQUIRES: executable_test
//
// A bare-bones Swift standard library
//
public typealias IntegerLiteralType = Int
public typealias _MaxBuiltinIntegerType = Builtin.Int2048
public typealias _MaxBuiltinFloatType = Builtin.FPIEEE80
public protocol _BuiltinIntegerLiteralConvertible {
init(_builtinIntegerLiteral value: _MaxBuiltinIntegerType)
}
public protocol _BuiltinFloatLiteralConvertible {
init(_builtinFloatLiteral value: _MaxBuiltinFloatType)
}
public protocol IntegerLiteralConvertible {
typealias IntegerLiteralType : _BuiltinIntegerLiteralConvertible
init(integerLiteral value: IntegerLiteralType)
}
public protocol FloatLiteralConvertible {
typealias FloatLiteralType : _BuiltinFloatLiteralConvertible
init(floatLiteral value: FloatLiteralType)
}
public struct Int : _BuiltinIntegerLiteralConvertible, IntegerLiteralConvertible {
var value: Builtin.Word
public init() {
self = 0
}
public init(_builtinIntegerLiteral value: _MaxBuiltinIntegerType) {
let builtinValue = Builtin.truncOrBitCast_Int2048_Word(value)
self.value = builtinValue
}
public init(integerLiteral value: IntegerLiteralType) {
self = value
}
}
public struct Int32 : _BuiltinIntegerLiteralConvertible, IntegerLiteralConvertible {
var value: Builtin.Int32
public init() {
self.init(integerLiteral: 0)
}
public init(_builtinIntegerLiteral value: _MaxBuiltinIntegerType) {
let builtinValue = Builtin.truncOrBitCast_Int2048_Int32(value)
self.value = builtinValue
}
public init(integerLiteral value: IntegerLiteralType) {
let builtinValue = Builtin.truncOrBitCast_Word_Int32(value.value)
self.value = builtinValue
}
}
public struct Int8 : _BuiltinIntegerLiteralConvertible, IntegerLiteralConvertible {
var value: Builtin.Int8
public init() {
self.init(integerLiteral: 0)
}
public init(_builtinIntegerLiteral value: _MaxBuiltinIntegerType) {
let builtinValue = Builtin.truncOrBitCast_Int2048_Int8(value)
self.value = builtinValue
}
public init(integerLiteral value: IntegerLiteralType) {
let builtinValue = Builtin.truncOrBitCast_Word_Int8(value.value)
self.value = builtinValue
}
}
public struct UnsafeMutablePointer<T> {
var value: Builtin.RawPointer
public init() {
self.value = Builtin.inttoptr_Word(0.value)
}
}
public typealias CInt = Int32
public typealias CChar = Int8
//public var C_ARGC: CInt = CInt()
//public var C_ARGV: UnsafeMutablePointer<UnsafeMutablePointer<Int8>> = UnsafeMutablePointer()