|
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