File: sourcekitd_functions.h

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (289 lines) | stat: -rw-r--r-- 9,597 bytes parent folder | download
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

#ifndef SOURCEKITDFUNCTIONS_H
#define SOURCEKITDFUNCTIONS_H

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

// Avoid including <sourcekitd/sourcekitd.h> to make sure we don't call the
// functions directly. But we need the types to form the function pointers.
// These are supposed to stay stable across toolchains.

typedef void *sourcekitd_api_object_t;
typedef struct sourcekitd_api_uid_s *sourcekitd_api_uid_t;
typedef void *sourcekitd_api_response_t;
typedef const void *sourcekitd_api_request_handle_t;

typedef struct {
  uint64_t data[3];
} sourcekitd_api_variant_t;

typedef enum {
  SOURCEKITD_API_VARIANT_TYPE_NULL = 0,
  SOURCEKITD_API_VARIANT_TYPE_DICTIONARY = 1,
  SOURCEKITD_API_VARIANT_TYPE_ARRAY = 2,
  SOURCEKITD_API_VARIANT_TYPE_INT64 = 3,
  SOURCEKITD_API_VARIANT_TYPE_STRING = 4,
  SOURCEKITD_API_VARIANT_TYPE_UID = 5,
  SOURCEKITD_API_VARIANT_TYPE_BOOL = 6,
  // Reserved for future addition
  // SOURCEKITD_VARIANT_TYPE_DOUBLE = 7,
  SOURCEKITD_API_VARIANT_TYPE_DATA = 8,
} sourcekitd_api_variant_type_t;

typedef enum {
  SOURCEKITD_API_ERROR_CONNECTION_INTERRUPTED = 1,
  SOURCEKITD_API_ERROR_REQUEST_INVALID = 2,
  SOURCEKITD_API_ERROR_REQUEST_FAILED = 3,
  SOURCEKITD_API_ERROR_REQUEST_CANCELLED = 4
} sourcekitd_api_error_t;

typedef void (^sourcekitd_api_interrupted_connection_handler_t)(void);
typedef void (^sourcekitd_api_response_receiver_t)(
  sourcekitd_api_response_t _Nullable resp
);

typedef sourcekitd_api_uid_t _Nullable (^sourcekitd_api_uid_from_str_handler_t)(
  const char *_Nullable uidStr
);
typedef const char *_Nullable (^sourcekitd_api_str_from_uid_handler_t)(
  sourcekitd_api_uid_t _Nullable uid
);

typedef struct {
  void (*_Nonnull initialize)(void);
  void (*_Nonnull shutdown)(void);
  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull uid_get_from_cstr)(
    const char *_Nonnull string
  );
  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull uid_get_from_buf)(
    const char *_Nonnull buf,
    size_t length
  );
  size_t (*_Nonnull uid_get_length)(
    sourcekitd_api_uid_t _Nonnull obj
  );
  const char *_Null_unspecified (*_Nonnull uid_get_string_ptr)(
    sourcekitd_api_uid_t _Nonnull obj
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_retain)(
    sourcekitd_api_object_t _Nonnull object
  );
  void (*_Nonnull request_release)(
    sourcekitd_api_object_t _Nonnull object
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_dictionary_create)(
    const _Nullable sourcekitd_api_uid_t *_Nullable keys,
    const _Nullable sourcekitd_api_object_t *_Nullable values,
    size_t count
  );
  void (*_Nonnull request_dictionary_set_value)(
    sourcekitd_api_object_t _Nonnull dict,
    sourcekitd_api_uid_t _Nonnull key,
    sourcekitd_api_object_t _Nonnull value
  );
  void (*_Nonnull request_dictionary_set_string)(
    sourcekitd_api_object_t _Nonnull dict,
    sourcekitd_api_uid_t _Nonnull key,
    const char *_Nonnull string
  );
  void (*_Nonnull request_dictionary_set_stringbuf)(
    sourcekitd_api_object_t _Nonnull dict,
    sourcekitd_api_uid_t _Nonnull key,
    const char *_Nonnull buf,
    size_t length
  );
  void (*_Nonnull request_dictionary_set_int64)(
    sourcekitd_api_object_t _Nonnull dict,
    sourcekitd_api_uid_t _Nonnull key,
    int64_t val
  );
  void (*_Nonnull request_dictionary_set_uid)(
    sourcekitd_api_object_t _Nonnull dict,
    sourcekitd_api_uid_t _Nonnull key,
    sourcekitd_api_uid_t _Nonnull uid
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_array_create)(
    const _Nullable sourcekitd_api_object_t *_Nullable objects,
    size_t count
  );
  void (*_Nonnull request_array_set_value)(
    sourcekitd_api_object_t _Nonnull array,
    size_t index,
    sourcekitd_api_object_t _Nonnull value
  );
  void (*_Nonnull request_array_set_string)(
    sourcekitd_api_object_t _Nonnull array,
    size_t index,
    const char *_Nonnull string
  );
  void (*_Nonnull request_array_set_stringbuf)(
    sourcekitd_api_object_t _Nonnull array,
    size_t index,
    const char *_Nonnull buf,
    size_t length
  );
  void (*_Nonnull request_array_set_int64)(
    sourcekitd_api_object_t _Nonnull array,
    size_t index,
    int64_t val
  );
  void (*_Nonnull request_array_set_uid)(
    sourcekitd_api_object_t _Nonnull array,
    size_t index,
    sourcekitd_api_uid_t _Nonnull uid
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_int64_create)(
    int64_t val
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_string_create)(
    const char *_Nonnull string
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_uid_create)(
    sourcekitd_api_uid_t _Nonnull uid
  );
  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_create_from_yaml)(
    const char *_Nonnull yaml,
    char *_Nullable *_Nullable error
  );
  void (*_Nonnull request_description_dump)(
    sourcekitd_api_object_t _Nonnull obj
  );
  char *_Null_unspecified (*_Nonnull request_description_copy)(
    sourcekitd_api_object_t _Nonnull obj
  );
  void (*_Nonnull response_dispose)(
    sourcekitd_api_response_t _Nonnull obj
  );
  bool (*_Nonnull response_is_error)(
    sourcekitd_api_response_t _Nonnull obj
  );
  sourcekitd_api_error_t (*_Nonnull response_error_get_kind)(
    sourcekitd_api_response_t _Nonnull err
  );
  const char *_Null_unspecified (*_Nonnull response_error_get_description)(
    sourcekitd_api_response_t _Nonnull err
  );
  sourcekitd_api_variant_t (*_Nonnull response_get_value)(
    sourcekitd_api_response_t _Nonnull resp
  );
  sourcekitd_api_variant_type_t (*_Nonnull variant_get_type)(
    sourcekitd_api_variant_t obj
  );
  sourcekitd_api_variant_t (*_Nonnull variant_dictionary_get_value)(
    sourcekitd_api_variant_t dict,
    sourcekitd_api_uid_t _Nonnull key
  );
  const char *_Null_unspecified (*_Nonnull variant_dictionary_get_string)(
    sourcekitd_api_variant_t dict,
    sourcekitd_api_uid_t _Nonnull key
  );
  int64_t (*_Nonnull variant_dictionary_get_int64)(
    sourcekitd_api_variant_t dict,
    sourcekitd_api_uid_t _Nonnull key
  );
  bool (*_Nonnull variant_dictionary_get_bool)(
    sourcekitd_api_variant_t dict,
    sourcekitd_api_uid_t _Nonnull key
  );
  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull variant_dictionary_get_uid)(
    sourcekitd_api_variant_t dict,
    sourcekitd_api_uid_t _Nonnull key
  );
  size_t (*_Nonnull variant_array_get_count)(
    sourcekitd_api_variant_t array
  );
  sourcekitd_api_variant_t (*_Nonnull variant_array_get_value)(
    sourcekitd_api_variant_t array,
    size_t index
  );
  const char *_Null_unspecified (*_Nonnull variant_array_get_string)(
    sourcekitd_api_variant_t array,
    size_t index
  );
  int64_t (*_Nonnull variant_array_get_int64)(
    sourcekitd_api_variant_t array,
    size_t index
  );
  bool (*_Nonnull variant_array_get_bool)(
    sourcekitd_api_variant_t array,
    size_t index
  );
  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull variant_array_get_uid)(
    sourcekitd_api_variant_t array,
    size_t index
  );
  int64_t (*_Nonnull variant_int64_get_value)(
    sourcekitd_api_variant_t obj
  );
  bool (*_Nonnull variant_bool_get_value)(
    sourcekitd_api_variant_t obj
  );
  size_t (*_Nonnull variant_string_get_length)(
    sourcekitd_api_variant_t obj
  );
  const char *_Null_unspecified (*_Nonnull variant_string_get_ptr)(
    sourcekitd_api_variant_t obj
  );
  size_t (*_Nullable variant_data_get_size)(
    sourcekitd_api_variant_t obj
  );
  const void *_Null_unspecified (*_Nullable variant_data_get_ptr)(
    sourcekitd_api_variant_t obj
  );
  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull variant_uid_get_value)(
    sourcekitd_api_variant_t obj
  );
  void (*_Nonnull response_description_dump)(
    sourcekitd_api_response_t _Nonnull resp
  );
  void (*_Nonnull response_description_dump_filedesc)(
    sourcekitd_api_response_t _Nonnull resp,
    int fd
  );
  char *_Null_unspecified (*_Nonnull response_description_copy)(
    sourcekitd_api_response_t _Nonnull resp
  );
  void (*_Nonnull variant_description_dump)(
    sourcekitd_api_variant_t obj
  );
  void (*_Nonnull variant_description_dump_filedesc)(
    sourcekitd_api_variant_t obj,
    int fd
  );
  char *_Null_unspecified (*_Nonnull variant_description_copy)(
    sourcekitd_api_variant_t obj
  );
  _Null_unspecified sourcekitd_api_response_t (*_Nonnull send_request_sync)(
    _Nonnull sourcekitd_api_object_t req
  );
  void (*_Nonnull send_request)(
    sourcekitd_api_object_t _Nonnull req,
    _Nullable sourcekitd_api_request_handle_t *_Nullable out_handle,
    _Nullable sourcekitd_api_response_receiver_t receiver
  );
  void (*_Nonnull cancel_request)(
    _Nullable sourcekitd_api_request_handle_t handle
  );
  void (*_Nonnull set_notification_handler)(
    _Nullable sourcekitd_api_response_receiver_t receiver
  );
  void (*_Nonnull set_uid_handlers)(
    _Nullable sourcekitd_api_uid_from_str_handler_t uid_from_str,
    _Nullable sourcekitd_api_str_from_uid_handler_t str_from_uid
  );
} sourcekitd_api_functions_t;

#endif