18
18
#ifndef SWIFT_C_DEPENDENCY_SCAN_H
19
19
#define SWIFT_C_DEPENDENCY_SCAN_H
20
20
21
- #include "DSString.h"
22
21
#include "DependencyScanMacros.h"
23
22
#include <stdbool.h>
24
23
#include <stddef.h>
@@ -34,6 +33,22 @@ SWIFTSCAN_BEGIN_DECLS
34
33
35
34
//=== Public Scanner Data Types -------------------------------------------===//
36
35
36
+ /**
37
+ * A character string used to pass around dependency scan result metadata.
38
+ * Lifetime of the string is strictly tied to the object whose field it represents.
39
+ * When the owning object is released, string memory is freed. Use \c
40
+ * swiftscan_get_C_string() to retrieve the string data.
41
+ */
42
+ typedef struct {
43
+ const void * data ;
44
+ unsigned length ;
45
+ } swiftscan_string_ref_t ;
46
+
47
+ typedef struct {
48
+ swiftscan_string_ref_t * strings ;
49
+ unsigned count ;
50
+ } swiftscan_string_set_t ;
51
+
37
52
typedef enum {
38
53
SWIFTSCAN_DEPENDENCY_INFO_SWIFT_TEXTUAL = 0 ,
39
54
SWIFTSCAN_DEPENDENCY_INFO_SWIFT_BINARY = 1 ,
@@ -80,9 +95,15 @@ typedef struct {
80
95
/// scan (command line arguments, working directory, etc.)
81
96
typedef struct swiftscan_scan_invocation_s * swiftscan_scan_invocation_t ;
82
97
98
+ //=== String Functions ----------------------------------------------------===//
99
+
100
+ /// Retrieve the character data associated with the given string.
101
+ SWIFTSCAN_PUBLIC const char *
102
+ swiftscan_get_C_string (swiftscan_string_ref_t string );
103
+
83
104
//=== Dependency Result Functions -----------------------------------------===//
84
105
85
- SWIFTSCAN_PUBLIC swiftscan_string_t
106
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
86
107
swiftscan_dependency_result_get_main_module_name (
87
108
swiftscan_dependency_result_t result );
88
109
@@ -92,10 +113,10 @@ swiftscan_dependency_result_get_module_set(
92
113
93
114
//=== Dependency Module Info Functions ------------------------------------===//
94
115
95
- SWIFTSCAN_PUBLIC swiftscan_string_t
116
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
96
117
swiftscan_module_info_get_module_name (swiftscan_dependency_info_t info );
97
118
98
- SWIFTSCAN_PUBLIC swiftscan_string_t
119
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
99
120
swiftscan_module_info_get_module_path (swiftscan_dependency_info_t info );
100
121
101
122
SWIFTSCAN_PUBLIC swiftscan_string_set_t *
@@ -113,15 +134,15 @@ SWIFTSCAN_PUBLIC swiftscan_dependency_info_kind_t
113
134
swiftscan_module_detail_get_kind (swiftscan_module_details_t details );
114
135
115
136
//=== Swift Textual Module Details query APIs -----------------------------===//
116
- SWIFTSCAN_PUBLIC swiftscan_string_t
137
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
117
138
swiftscan_swift_textual_detail_get_module_interface_path (
118
139
swiftscan_module_details_t details );
119
140
120
141
SWIFTSCAN_PUBLIC swiftscan_string_set_t *
121
142
swiftscan_swift_textual_detail_get_compiled_module_candidates (
122
143
swiftscan_module_details_t details );
123
144
124
- SWIFTSCAN_PUBLIC swiftscan_string_t
145
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
125
146
swiftscan_swift_textual_detail_get_bridging_header_path (
126
147
swiftscan_module_details_t details );
127
148
@@ -141,7 +162,7 @@ SWIFTSCAN_PUBLIC swiftscan_string_set_t *
141
162
swiftscan_swift_textual_detail_get_extra_pcm_args (
142
163
swiftscan_module_details_t details );
143
164
144
- SWIFTSCAN_PUBLIC swiftscan_string_t
165
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
145
166
swiftscan_swift_textual_detail_get_context_hash (
146
167
swiftscan_module_details_t details );
147
168
@@ -150,49 +171,49 @@ SWIFTSCAN_PUBLIC bool swiftscan_swift_textual_detail_get_is_framework(
150
171
151
172
//=== Swift Binary Module Details query APIs ------------------------------===//
152
173
153
- SWIFTSCAN_PUBLIC swiftscan_string_t
174
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
154
175
swiftscan_swift_binary_detail_get_compiled_module_path (
155
176
swiftscan_module_details_t details );
156
177
157
- SWIFTSCAN_PUBLIC swiftscan_string_t
178
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
158
179
swiftscan_swift_binary_detail_get_module_doc_path (
159
180
swiftscan_module_details_t details );
160
181
161
- SWIFTSCAN_PUBLIC swiftscan_string_t
182
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
162
183
swiftscan_swift_binary_detail_get_module_source_info_path (
163
184
swiftscan_module_details_t details );
164
185
165
186
//=== Swift Placeholder Module Details query APIs -------------------------===//
166
187
167
- SWIFTSCAN_PUBLIC swiftscan_string_t
188
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
168
189
swiftscan_swift_placeholder_detail_get_compiled_module_path (
169
190
swiftscan_module_details_t details );
170
191
171
- SWIFTSCAN_PUBLIC swiftscan_string_t
192
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
172
193
swiftscan_swift_placeholder_detail_get_module_doc_path (
173
194
swiftscan_module_details_t details );
174
195
175
- SWIFTSCAN_PUBLIC swiftscan_string_t
196
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
176
197
swiftscan_swift_placeholder_detail_get_module_source_info_path (
177
198
swiftscan_module_details_t details );
178
199
179
200
//=== Clang Module Details query APIs -------------------------------------===//
180
201
181
- SWIFTSCAN_PUBLIC swiftscan_string_t
202
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
182
203
swiftscan_clang_detail_get_module_map_path (swiftscan_module_details_t details );
183
204
184
- SWIFTSCAN_PUBLIC swiftscan_string_t
205
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
185
206
swiftscan_clang_detail_get_context_hash (swiftscan_module_details_t details );
186
207
187
208
SWIFTSCAN_PUBLIC swiftscan_string_set_t *
188
209
swiftscan_clang_detail_get_command_line (swiftscan_module_details_t details );
189
210
190
211
//=== Batch Scan Entry Functions ------------------------------------------===//
191
212
192
- SWIFTSCAN_PUBLIC swiftscan_string_t
213
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
193
214
swiftscan_batch_scan_entry_get_module_name (swiftscan_batch_scan_entry_t entry );
194
215
195
- SWIFTSCAN_PUBLIC swiftscan_string_t
216
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
196
217
swiftscan_batch_scan_entry_get_arguments (swiftscan_batch_scan_entry_t entry );
197
218
198
219
SWIFTSCAN_PUBLIC bool
@@ -209,13 +230,13 @@ SWIFTSCAN_PUBLIC swiftscan_scan_invocation_t swiftscan_scan_invocation_create();
209
230
210
231
SWIFTSCAN_PUBLIC void swiftscan_scan_invocation_set_working_directory (
211
232
swiftscan_scan_invocation_t invocation ,
212
- swiftscan_string_t working_directory );
233
+ swiftscan_string_ref_t working_directory );
213
234
214
235
SWIFTSCAN_PUBLIC void
215
236
swiftscan_scan_invocation_set_argv (swiftscan_scan_invocation_t invocation ,
216
237
swiftscan_string_set_t * argv );
217
238
218
- SWIFTSCAN_PUBLIC swiftscan_string_t
239
+ SWIFTSCAN_PUBLIC swiftscan_string_ref_t
219
240
swiftscan_scan_invocation_get_working_directory (
220
241
swiftscan_scan_invocation_t invocation );
221
242
0 commit comments