File: plugin.h

package info (click to toggle)
swiftlang 6.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,856,264 kB
  • sloc: cpp: 9,995,718; ansic: 2,234,019; asm: 1,092,167; python: 313,940; objc: 82,726; f90: 80,126; lisp: 38,373; pascal: 25,580; sh: 20,378; ml: 5,058; perl: 4,751; makefile: 4,725; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (473 lines) | stat: -rw-r--r-- 17,665 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
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2024 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 SWIFT_SOURCEKITD_PLUGIN_H
#define SWIFT_SOURCEKITD_PLUGIN_H

#include "sourcekitd_functions.h"


typedef void *sourcekitd_api_variant_functions_t;

typedef sourcekitd_api_variant_type_t (*sourcekitd_api_variant_functions_get_type_t)(
  sourcekitd_api_variant_t obj
);
typedef bool (*sourcekitd_api_variant_functions_array_apply_t)(
  sourcekitd_api_variant_t array,
  _Null_unspecified sourcekitd_api_variant_array_applier_f_t applier,
  void *_Null_unspecified context
);
typedef bool (*sourcekitd_api_variant_functions_array_get_bool_t)(
  sourcekitd_api_variant_t array,
  size_t index
);
typedef double (*sourcekitd_api_variant_functions_array_get_double_t)(
  sourcekitd_api_variant_t array,
  size_t index
);
typedef size_t (*sourcekitd_api_variant_functions_array_get_count_t)(
  sourcekitd_api_variant_t array
);
typedef int64_t (*sourcekitd_api_variant_functions_array_get_int64_t)(
  sourcekitd_api_variant_t array,
  size_t index
);
typedef const char *_Null_unspecified (*sourcekitd_api_variant_functions_array_get_string_t)(
  sourcekitd_api_variant_t array,
  size_t index
);
typedef _Null_unspecified sourcekitd_api_uid_t (*sourcekitd_api_variant_functions_array_get_uid_t)(
  sourcekitd_api_variant_t array,
  size_t index
);
typedef sourcekitd_api_variant_t (*sourcekitd_api_variant_functions_array_get_value_t)(
  sourcekitd_api_variant_t array,
  size_t index
);
typedef bool (*sourcekitd_api_variant_functions_bool_get_value_t)(
  sourcekitd_api_variant_t obj
);
typedef double (*sourcekitd_api_variant_functions_double_get_value_t)(
  sourcekitd_api_variant_t obj
);
typedef bool (*sourcekitd_api_variant_functions_dictionary_apply_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_variant_dictionary_applier_f_t applier,
  void *_Null_unspecified context
);
typedef bool (*sourcekitd_api_variant_functions_dictionary_get_bool_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_uid_t key
);
typedef double (*sourcekitd_api_variant_functions_dictionary_get_double_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_uid_t key
);
typedef int64_t (*sourcekitd_api_variant_functions_dictionary_get_int64_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_uid_t key
);
typedef const char *_Null_unspecified (*sourcekitd_api_variant_functions_dictionary_get_string_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_uid_t key
);
typedef sourcekitd_api_variant_t (*sourcekitd_api_variant_functions_dictionary_get_value_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_uid_t key
);
typedef _Null_unspecified sourcekitd_api_uid_t (*sourcekitd_api_variant_functions_dictionary_get_uid_t)(
  sourcekitd_api_variant_t dict,
  _Null_unspecified sourcekitd_api_uid_t key
);
typedef size_t (*sourcekitd_api_variant_functions_string_get_length_t)(
  sourcekitd_api_variant_t obj
);
typedef const char *_Null_unspecified (*sourcekitd_api_variant_functions_string_get_ptr_t)(
  sourcekitd_api_variant_t obj
);
typedef int64_t (*sourcekitd_api_variant_functions_int64_get_value_t)(
  sourcekitd_api_variant_t obj
);
typedef _Null_unspecified sourcekitd_api_uid_t (*sourcekitd_api_variant_functions_uid_get_value_t)(
  sourcekitd_api_variant_t obj
);
typedef size_t (*sourcekitd_api_variant_functions_data_get_size_t)(
  sourcekitd_api_variant_t obj
);
typedef const void *_Null_unspecified (*sourcekitd_api_variant_functions_data_get_ptr_t)(
  sourcekitd_api_variant_t obj
);

/// Handle the request specified by the \c sourcekitd_api_object_t and keep track
/// of it using the \c sourcekitd_api_request_handle_t. If the cancellation handler
/// specified by \c sourcekitd_api_plugin_initialize_register_cancellation_handler
/// is called with the this request handle, the request should be cancelled.
typedef bool (^sourcekitd_api_cancellable_request_handler_t)(
  _Null_unspecified sourcekitd_api_object_t,
  _Null_unspecified sourcekitd_api_request_handle_t,
  void (^_Null_unspecified SWIFT_SENDABLE)(_Null_unspecified sourcekitd_api_response_t)
);
typedef void (^sourcekitd_api_cancellation_handler_t)(_Null_unspecified sourcekitd_api_request_handle_t);
typedef _Null_unspecified sourcekitd_api_uid_t (*sourcekitd_api_uid_get_from_cstr_t)(const char *_Null_unspecified string);
typedef const char *_Null_unspecified (*sourcekitd_api_uid_get_string_ptr_t)(_Null_unspecified sourcekitd_api_uid_t);

typedef void *sourcekitd_api_plugin_initialize_params_t;
typedef void (*sourcekitd_api_plugin_initialize_t)(
  _Null_unspecified sourcekitd_api_plugin_initialize_params_t
);

typedef struct {
  _Null_unspecified sourcekitd_api_variant_functions_t (*_Nonnull variant_functions_create)(void);

  void (*_Nonnull variant_functions_set_get_type)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_get_type_t f
  );
  void (*_Nonnull variant_functions_set_array_apply)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_apply_t f
  );
  void (*_Nonnull variant_functions_set_array_get_bool)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_bool_t f
  );
  void (*_Nonnull variant_functions_set_array_get_double)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_double_t f
  );
  void (*_Nonnull variant_functions_set_array_get_count)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_count_t f
  );
  void (*_Nonnull variant_functions_set_array_get_int64)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_int64_t f
  );
  void (*_Nonnull variant_functions_set_array_get_string)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_string_t f
  );
  void (*_Nonnull variant_functions_set_array_get_uid)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_uid_t f
  );
  void (*_Nonnull variant_functions_set_array_get_value)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_array_get_value_t f
  );
  void (*_Nonnull variant_functions_set_bool_get_value)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_bool_get_value_t f
  );
  void (*_Nonnull variant_functions_set_double_get_value)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_double_get_value_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_apply)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_apply_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_get_bool)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_get_bool_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_get_double)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_get_double_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_get_int64)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_get_int64_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_get_string)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_get_string_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_get_value)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_get_value_t f
  );
  void (*_Nonnull variant_functions_set_dictionary_get_uid)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_dictionary_get_uid_t f
  );
  void (*_Nonnull variant_functions_set_string_get_length)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_string_get_length_t f
  );
  void (*_Nonnull variant_functions_set_string_get_ptr)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_string_get_ptr_t f
  );
  void (*_Nonnull variant_functions_set_int64_get_value)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_int64_get_value_t f
  );
  void (*_Nonnull variant_functions_set_uid_get_value)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_uid_get_value_t f
  );
  void (*_Nonnull variant_functions_set_data_get_size)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_data_get_size_t f
  );
  void (*_Nonnull variant_functions_set_data_get_ptr)(
    _Nonnull sourcekitd_api_variant_functions_t funcs,
    _Nonnull sourcekitd_api_variant_functions_data_get_ptr_t f
  );

  bool (*_Nonnull plugin_initialize_is_client_only)(
    _Null_unspecified sourcekitd_api_plugin_initialize_params_t
  );

  uint64_t (*_Nonnull plugin_initialize_custom_buffer_start)(
    _Null_unspecified sourcekitd_api_plugin_initialize_params_t
  );

  _Null_unspecified SWIFT_SENDABLE sourcekitd_api_uid_get_from_cstr_t (*_Nonnull plugin_initialize_uid_get_from_cstr)(
    _Null_unspecified sourcekitd_api_plugin_initialize_params_t
  );

  _Null_unspecified SWIFT_SENDABLE sourcekitd_api_uid_get_string_ptr_t (*_Nonnull plugin_initialize_uid_get_string_ptr)(
    _Null_unspecified sourcekitd_api_plugin_initialize_params_t
  );

  void (*_Nonnull plugin_initialize_register_custom_buffer)(
    _Nonnull sourcekitd_api_plugin_initialize_params_t,
    uint64_t kind,
    _Nonnull sourcekitd_api_variant_functions_t funcs
  );
} sourcekitd_plugin_api_functions_t;

typedef struct {
  void (*_Nonnull plugin_initialize_register_cancellable_request_handler)(
    _Nonnull sourcekitd_api_plugin_initialize_params_t,
    _Nonnull SWIFT_SENDABLE sourcekitd_api_cancellable_request_handler_t
  );

  /// Adds a function that will be called when a request is cancelled.
  /// The cancellation handler is called even for cancelled requests that are handled by
  /// sourcekitd itself and not the plugin. If the plugin doesn't know the request
  /// handle to be cancelled, it should ignore the cancellation request.
  void (*_Nonnull plugin_initialize_register_cancellation_handler)(
    _Nonnull sourcekitd_api_plugin_initialize_params_t,
    _Nonnull SWIFT_SENDABLE sourcekitd_api_cancellation_handler_t
  );

  void *_Null_unspecified(*_Nonnull plugin_initialize_get_swift_ide_inspection_instance)(
    _Null_unspecified sourcekitd_api_plugin_initialize_params_t
  );

  //============================================================================//
  // Request
  //============================================================================//

  sourcekitd_api_variant_type_t (*_Nonnull request_get_type)(
    _Null_unspecified sourcekitd_api_object_t obj
  );

  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_dictionary_get_value)(
    _Null_unspecified sourcekitd_api_object_t dict,
    _Nonnull sourcekitd_api_uid_t key
  );

  /// The underlying C string for the specified key. NULL if the value for the
  /// specified key is not a C string value or if there is no value for the
  /// specified key.
  const char *_Null_unspecified (*_Nonnull request_dictionary_get_string)(
    _Nonnull sourcekitd_api_object_t dict,
    _Nonnull sourcekitd_api_uid_t key
  );

  /// The underlying \c int64 value for the specified key. 0 if the
  /// value for the specified key is not an integer value or if there is no
  /// value for the specified key.
  int64_t (*_Nonnull request_dictionary_get_int64)(
    _Nonnull sourcekitd_api_object_t dict,
    _Nonnull sourcekitd_api_uid_t key
  );

  /// The underlying \c bool value for the specified key. false if the
  /// value for the specified key is not a Boolean value or if there is no
  /// value for the specified key.
  bool (*_Nonnull request_dictionary_get_bool)(
    _Nonnull sourcekitd_api_object_t dict,
    _Nonnull sourcekitd_api_uid_t key
  );

  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull request_dictionary_get_uid)(
    _Nonnull sourcekitd_api_object_t dict,
    _Nonnull sourcekitd_api_uid_t key
  );

  size_t (*_Nonnull request_array_get_count)(
    _Null_unspecified sourcekitd_api_object_t array
  );

  _Null_unspecified sourcekitd_api_object_t (*_Nonnull request_array_get_value)(
    _Null_unspecified sourcekitd_api_object_t array,
    size_t index
  );

  const char *_Null_unspecified (*_Nonnull request_array_get_string)(
    _Null_unspecified sourcekitd_api_object_t array,
    size_t index
  );

  int64_t (*_Nonnull request_array_get_int64)(
    _Null_unspecified sourcekitd_api_object_t array,
    size_t index
  );

  bool (*_Nonnull request_array_get_bool)(
    _Null_unspecified sourcekitd_api_object_t array,
    size_t index
  );

  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull request_array_get_uid)(
    _Null_unspecified sourcekitd_api_object_t array,
    size_t index
  );

  int64_t (*_Nonnull request_int64_get_value)(
    _Null_unspecified sourcekitd_api_object_t obj
  );

  bool (*_Nonnull request_bool_get_value)(
    _Null_unspecified sourcekitd_api_object_t obj
  );

  size_t (*_Nonnull request_string_get_length)(
    _Null_unspecified sourcekitd_api_object_t obj
  );

  const char *_Null_unspecified (*_Nonnull request_string_get_ptr)(
    _Null_unspecified sourcekitd_api_object_t obj
  );

  _Null_unspecified sourcekitd_api_uid_t (*_Nonnull request_uid_get_value)(
    _Null_unspecified sourcekitd_api_object_t obj
  );

  //============================================================================//
  // Response
  //============================================================================//

  _Nonnull sourcekitd_api_response_t (*_Nonnull response_retain)(
    _Nonnull sourcekitd_api_response_t object
  );

  _Null_unspecified sourcekitd_api_response_t (*_Nonnull response_error_create)(
    sourcekitd_api_error_t kind,
    const char *_Null_unspecified description
  );

  _Nonnull sourcekitd_api_response_t (*_Nonnull response_dictionary_create)(
    const _Null_unspecified sourcekitd_api_uid_t *_Null_unspecified keys,
    const _Null_unspecified sourcekitd_api_response_t *_Null_unspecified values,
    size_t count
  );

  void (*_Nonnull response_dictionary_set_value)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    _Nonnull sourcekitd_api_response_t value
  );

  void (*_Nonnull response_dictionary_set_string)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    const char *_Nonnull string
  );

  void (*_Nonnull response_dictionary_set_stringbuf)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    const char *_Nonnull buf,
    size_t length
  );

  void (*_Nonnull response_dictionary_set_int64)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    int64_t val
  );

  void (*_Nonnull response_dictionary_set_bool)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    bool val
  );

  void (*_Nonnull response_dictionary_set_double)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    double val
  );

  void (*_Nonnull response_dictionary_set_uid)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    _Nonnull sourcekitd_api_uid_t uid
  );

  _Nonnull sourcekitd_api_response_t (*_Nonnull response_array_create)(
    const _Null_unspecified sourcekitd_api_response_t *_Null_unspecified objects,
    size_t count
  );

  void (*_Nonnull response_array_set_value)(
    _Nonnull sourcekitd_api_response_t array,
    size_t index,
    _Nonnull sourcekitd_api_response_t value
  );

  void (*_Nonnull response_array_set_string)(
    _Nonnull sourcekitd_api_response_t array,
    size_t index,
    const char *_Nonnull string
  );

  void (*_Nonnull response_array_set_stringbuf)(
    _Nonnull sourcekitd_api_response_t array,
    size_t index,
    const char *_Nonnull buf,
    size_t length
  );

  void (*_Nonnull response_array_set_int64)(
    _Nonnull sourcekitd_api_response_t array,
    size_t index,
    int64_t val
  );

  void (*_Nonnull response_array_set_double)(
    _Nonnull sourcekitd_api_response_t array,
    size_t index,
    double val
  );

  void (*_Nonnull response_array_set_uid)(
    _Nonnull sourcekitd_api_response_t array,
    size_t index,
    _Nonnull sourcekitd_api_uid_t uid
  );

  void (*_Nonnull response_dictionary_set_custom_buffer)(
    _Nonnull sourcekitd_api_response_t dict,
    _Nonnull sourcekitd_api_uid_t key,
    const void *_Nonnull ptr,
    size_t size
  );
} sourcekitd_service_plugin_api_functions_t;

#endif