|
2 | 2 | import cclang
|
3 | 3 | #endif
|
4 | 4 |
|
5 |
| -protocol EvalResultKind { |
| 5 | +protocol EvalResult { |
6 | 6 | var clang: CXEvalResult { get }
|
7 | 7 | }
|
8 | 8 |
|
9 |
| -public struct IntResult: EvalResultKind { |
| 9 | +public struct IntResult: EvalResult { |
10 | 10 | let clang: CXEvalResult
|
11 | 11 | public var value: Int {
|
12 | 12 | return Int(clang_EvalResult_getAsInt(clang))
|
13 | 13 | }
|
14 | 14 | }
|
15 | 15 |
|
16 |
| -public struct FloatResult: EvalResultKind { |
| 16 | +public struct FloatResult: EvalResult { |
17 | 17 | let clang: CXEvalResult
|
18 | 18 | public var value: Double {
|
19 |
| - return Double(clang_EvalResult_getAsDouble(clang)) |
| 19 | + return clang_EvalResult_getAsDouble(clang) |
20 | 20 | }
|
21 | 21 | }
|
22 | 22 |
|
23 |
| -public struct ObjCStrLiteralResult: EvalResultKind { |
| 23 | +public struct ObjCStrLiteralResult: EvalResult { |
24 | 24 | let clang: CXEvalResult
|
25 | 25 | public var value: String {
|
26 | 26 | return String(cString: clang_EvalResult_getAsStr(clang))
|
27 | 27 | }
|
28 | 28 | }
|
29 | 29 |
|
30 |
| -public struct StrLiteralResult: EvalResultKind { |
| 30 | +public struct StrLiteralResult: EvalResult { |
31 | 31 | let clang: CXEvalResult
|
32 | 32 | public var value: String {
|
33 | 33 | return String(cString: clang_EvalResult_getAsStr(clang))
|
34 | 34 | }
|
35 | 35 | }
|
36 | 36 |
|
37 |
| -public struct CFStrResult: EvalResultKind { |
| 37 | +public struct CFStrResult: EvalResult { |
38 | 38 | let clang: CXEvalResult
|
39 | 39 | public var value: String {
|
40 | 40 | return String(cString: clang_EvalResult_getAsStr(clang))
|
41 | 41 | }
|
42 | 42 | }
|
43 | 43 |
|
44 |
| -public struct OtherResult: EvalResultKind { |
| 44 | +public struct OtherResult: EvalResult { |
45 | 45 | let clang: CXEvalResult
|
46 | 46 | }
|
47 | 47 |
|
48 |
| -public struct UnExposedResult: EvalResultKind { |
| 48 | +public struct UnExposedResult: EvalResult { |
49 | 49 | let clang: CXEvalResult
|
50 | 50 | }
|
51 | 51 |
|
52 |
| -/// Converts a CXEvalResultKind to a EvalResultKind, returning `nil` if it was unsuccessful |
53 |
| -func convertEvalResultKind(_ clang: CXEvalResult) -> EvalResultKind? { |
54 |
| - switch clang_EvalResult_getKind(clang) { |
| 52 | +/// Converts a CXEvalResult to a EvalResult, returning `nil` if it was unsuccessful |
| 53 | +func convertEvalResult(_ clang: CXEvalResult) -> EvalResult? { |
| 54 | + let kind = clang_EvalResult_getKind(clang) |
| 55 | + switch kind { |
55 | 56 | case CXEval_Int: return IntResult(clang: clang)
|
56 | 57 | case CXEval_Float: return FloatResult(clang: clang)
|
57 | 58 | case CXEval_ObjCStrLiteral: return ObjCStrLiteralResult(clang: clang)
|
58 | 59 | case CXEval_StrLiteral: return StrLiteralResult(clang: clang)
|
59 | 60 | case CXEval_CFStr: return CFStrResult(clang: clang)
|
60 | 61 | case CXEval_Other: return OtherResult(clang: clang)
|
61 | 62 | case CXEval_UnExposed: return UnExposedResult(clang: clang)
|
62 |
| - default: fatalError("invalid CXEvalResultKindKind \(clang)") |
| 63 | + default: fatalError("invalid CXEvalResultKind \(clang)") |
63 | 64 | }
|
64 | 65 | }
|
0 commit comments