|
12 | 12 | // This file provides convenient APIs to interpret a SourceKitd response.
|
13 | 13 | //===----------------------------------------------------------------------===//
|
14 | 14 |
|
| 15 | +import Foundation |
15 | 16 | import sourcekitd
|
16 | 17 |
|
17 | 18 | public class SourceKitdResponse: CustomStringConvertible {
|
@@ -60,6 +61,15 @@ public class SourceKitdResponse: CustomStringConvertible {
|
60 | 61 | return Dictionary(dict: value, context: context)
|
61 | 62 | }
|
62 | 63 |
|
| 64 | + public func getData(_ key: SourceKitdUID) -> Data { |
| 65 | + let value = sourcekitd_variant_dictionary_get_value(dict, key.uid) |
| 66 | + let size = sourcekitd_variant_data_get_size(value) |
| 67 | + guard let ptr = sourcekitd_variant_data_get_ptr(value), size > 0 else { |
| 68 | + return Data() |
| 69 | + } |
| 70 | + return Data(bytes: ptr, count: size) |
| 71 | + } |
| 72 | + |
63 | 73 | public func getOptional(_ key: SourceKitdUID) -> Variant? {
|
64 | 74 | let value = sourcekitd_variant_dictionary_get_value(dict, key.uid)
|
65 | 75 | if sourcekitd_variant_get_type(value).rawValue ==
|
@@ -188,6 +198,14 @@ public class SourceKitdResponse: CustomStringConvertible {
|
188 | 198 | return Dictionary(dict: val, context: context)
|
189 | 199 | }
|
190 | 200 |
|
| 201 | + public func getData() -> Data { |
| 202 | + let size = sourcekitd_variant_data_get_size(val) |
| 203 | + guard let ptr = sourcekitd_variant_data_get_ptr(val), size > 0 else { |
| 204 | + return Data() |
| 205 | + } |
| 206 | + return Data(bytes: ptr, count: size) |
| 207 | + } |
| 208 | + |
191 | 209 | public var description: String {
|
192 | 210 | return val.description
|
193 | 211 | }
|
|
0 commit comments