ffi_gen 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +39 -36
- data/lib/ffi_gen.rb +486 -214
- data/lib/ffi_gen/clang.rb +2564 -342
- data/lib/ffi_gen/java_output.rb +163 -125
- data/lib/ffi_gen/ruby_output.rb +190 -139
- metadata +17 -20
data/lib/ffi_gen/clang.rb
CHANGED
@@ -4,7 +4,80 @@ require 'ffi'
|
|
4
4
|
|
5
5
|
module FFIGen::Clang
|
6
6
|
extend FFI::Library
|
7
|
-
ffi_lib
|
7
|
+
ffi_lib ["libclang-3.5.so.1", "libclang.so.1", "clang"]
|
8
|
+
|
9
|
+
def self.attach_function(name, *_)
|
10
|
+
begin; super; rescue FFI::NotFoundError => e
|
11
|
+
(class << self; self; end).class_eval { define_method(name) { |*_| raise e } }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
CINDEX_VERSION_MAJOR = 0
|
16
|
+
|
17
|
+
CINDEX_VERSION_MINOR = 27
|
18
|
+
|
19
|
+
def cindex_version_stringize(major, minor)
|
20
|
+
cindex_version_stringize(major, minor)
|
21
|
+
end
|
22
|
+
|
23
|
+
# (Not documented)
|
24
|
+
#
|
25
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:error_code).</em>
|
26
|
+
#
|
27
|
+
# === Options:
|
28
|
+
# :success ::
|
29
|
+
# No error.
|
30
|
+
# :failure ::
|
31
|
+
# A generic error code, no further details are available.
|
32
|
+
#
|
33
|
+
# Errors of this kind can get their own specific error codes in future
|
34
|
+
# libclang versions.
|
35
|
+
# :crashed ::
|
36
|
+
# libclang crashed while performing the requested operation.
|
37
|
+
# :invalid_arguments ::
|
38
|
+
# The function detected that the arguments violate the function
|
39
|
+
# contract.
|
40
|
+
# :ast_read_error ::
|
41
|
+
# An AST deserialization error has occurred.
|
42
|
+
#
|
43
|
+
# @method _enum_error_code_
|
44
|
+
# @return [Symbol]
|
45
|
+
# @scope class
|
46
|
+
enum :error_code, [
|
47
|
+
:success, 0,
|
48
|
+
:failure, 1,
|
49
|
+
:crashed, 2,
|
50
|
+
:invalid_arguments, 3,
|
51
|
+
:ast_read_error, 4
|
52
|
+
]
|
53
|
+
|
54
|
+
# (Not documented)
|
55
|
+
#
|
56
|
+
# = Fields:
|
57
|
+
# :data ::
|
58
|
+
# (FFI::Pointer(*Void))
|
59
|
+
# :private_flags ::
|
60
|
+
# (Integer)
|
61
|
+
class String < FFI::Struct
|
62
|
+
layout :data, :pointer,
|
63
|
+
:private_flags, :uint
|
64
|
+
end
|
65
|
+
|
66
|
+
# Retrieve the character data associated with the given string.
|
67
|
+
#
|
68
|
+
# @method get_c_string(string)
|
69
|
+
# @param [String] string
|
70
|
+
# @return [String]
|
71
|
+
# @scope class
|
72
|
+
attach_function :get_c_string, :clang_getCString, [String.by_value], :string
|
73
|
+
|
74
|
+
# Free the given string.
|
75
|
+
#
|
76
|
+
# @method dispose_string(string)
|
77
|
+
# @param [String] string
|
78
|
+
# @return [nil]
|
79
|
+
# @scope class
|
80
|
+
attach_function :dispose_string, :clang_disposeString, [String.by_value], :void
|
8
81
|
|
9
82
|
# A single translation unit, which resides in an index.
|
10
83
|
class TranslationUnitImpl < FFI::Struct
|
@@ -54,47 +127,35 @@ module FFIGen::Clang
|
|
54
127
|
# @return [Symbol]
|
55
128
|
# @scope class
|
56
129
|
enum :availability_kind, [
|
57
|
-
:available,
|
58
|
-
:deprecated,
|
59
|
-
:not_available,
|
60
|
-
:not_accessible
|
130
|
+
:available, 0,
|
131
|
+
:deprecated, 1,
|
132
|
+
:not_available, 2,
|
133
|
+
:not_accessible, 3
|
61
134
|
]
|
62
135
|
|
63
|
-
#
|
64
|
-
#
|
65
|
-
# The \c CXString type is used to return strings from the interface when
|
66
|
-
# the ownership of that string might different from one call to the next.
|
67
|
-
# Use \c clang_getCString() to retrieve the string data and, once finished
|
68
|
-
# with the string data, call \c clang_disposeString() to free the string.
|
136
|
+
# Describes a version number of the form major.minor.subminor.
|
69
137
|
#
|
70
138
|
# = Fields:
|
71
|
-
# :
|
72
|
-
# (
|
73
|
-
#
|
74
|
-
#
|
75
|
-
|
76
|
-
|
77
|
-
|
139
|
+
# :major ::
|
140
|
+
# (Integer) The major version number, e.g., the '10' in '10.7.3'. A negative
|
141
|
+
# value indicates that there is no version number at all.
|
142
|
+
# :minor ::
|
143
|
+
# (Integer) The minor version number, e.g., the '7' in '10.7.3'. This value
|
144
|
+
# will be negative if no minor version number was provided, e.g., for
|
145
|
+
# version '10'.
|
146
|
+
# :subminor ::
|
147
|
+
# (Integer) The subminor version number, e.g., the '3' in '10.7.3'. This value
|
148
|
+
# will be negative if no minor or subminor version number was provided,
|
149
|
+
# e.g., in version '10' or '10.7'.
|
150
|
+
class Version < FFI::Struct
|
151
|
+
layout :major, :int,
|
152
|
+
:minor, :int,
|
153
|
+
:subminor, :int
|
78
154
|
end
|
79
155
|
|
80
|
-
#
|
81
|
-
#
|
82
|
-
# @method get_c_string(string)
|
83
|
-
# @param [String] string
|
84
|
-
# @return [String]
|
85
|
-
# @scope class
|
86
|
-
attach_function :get_c_string, :clang_getCString, [String.by_value], :string
|
87
|
-
|
88
|
-
# Free the given string,
|
156
|
+
# Provides a shared context for creating translation units.
|
89
157
|
#
|
90
|
-
#
|
91
|
-
# @param [String] string
|
92
|
-
# @return [nil]
|
93
|
-
# @scope class
|
94
|
-
attach_function :dispose_string, :clang_disposeString, [String.by_value], :void
|
95
|
-
|
96
|
-
# clang_createIndex() provides a shared context for creating
|
97
|
-
# translation units. It provides two options:
|
158
|
+
# It provides two options:
|
98
159
|
#
|
99
160
|
# - excludeDeclarationsFromPCH: When non-zero, allows enumeration of "local"
|
100
161
|
# declarations (when loading any new translation units). A "local" declaration
|
@@ -104,6 +165,7 @@ module FFIGen::Clang
|
|
104
165
|
#
|
105
166
|
# Here is an example:
|
106
167
|
#
|
168
|
+
# \code
|
107
169
|
# // excludeDeclsFromPCH = 1, displayDiagnostics=1
|
108
170
|
# Idx = clang_createIndex(1, 1);
|
109
171
|
#
|
@@ -124,6 +186,7 @@ module FFIGen::Clang
|
|
124
186
|
# clang_visitChildren(clang_getTranslationUnitCursor(TU),
|
125
187
|
# TranslationUnitVisitor, 0);
|
126
188
|
# clang_disposeTranslationUnit(TU);
|
189
|
+
# \endcode
|
127
190
|
#
|
128
191
|
# This process of creating the 'pch', loading it separately, and using it (via
|
129
192
|
# -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
|
@@ -147,6 +210,61 @@ module FFIGen::Clang
|
|
147
210
|
# @scope class
|
148
211
|
attach_function :dispose_index, :clang_disposeIndex, [:pointer], :void
|
149
212
|
|
213
|
+
# (Not documented)
|
214
|
+
#
|
215
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:global_opt_flags).</em>
|
216
|
+
#
|
217
|
+
# === Options:
|
218
|
+
# :none ::
|
219
|
+
# Used to indicate that no special CXIndex options are needed.
|
220
|
+
# :thread_background_priority_for_indexing ::
|
221
|
+
# Used to indicate that threads that libclang creates for indexing
|
222
|
+
# purposes should use background priority.
|
223
|
+
#
|
224
|
+
# Affects #clang_indexSourceFile, #clang_indexTranslationUnit,
|
225
|
+
# #clang_parseTranslationUnit, #clang_saveTranslationUnit.
|
226
|
+
# :thread_background_priority_for_editing ::
|
227
|
+
# Used to indicate that threads that libclang creates for editing
|
228
|
+
# purposes should use background priority.
|
229
|
+
#
|
230
|
+
# Affects #clang_reparseTranslationUnit, #clang_codeCompleteAt,
|
231
|
+
# #clang_annotateTokens
|
232
|
+
#
|
233
|
+
# @method _enum_global_opt_flags_
|
234
|
+
# @return [Symbol]
|
235
|
+
# @scope class
|
236
|
+
enum :global_opt_flags, [
|
237
|
+
:none, 0,
|
238
|
+
:thread_background_priority_for_indexing, 1,
|
239
|
+
:thread_background_priority_for_editing, 2
|
240
|
+
]
|
241
|
+
|
242
|
+
# Sets general options associated with a CXIndex.
|
243
|
+
#
|
244
|
+
# For example:
|
245
|
+
# \code
|
246
|
+
# CXIndex idx = ...;
|
247
|
+
# clang_CXIndex_setGlobalOptions(idx,
|
248
|
+
# clang_CXIndex_getGlobalOptions(idx) |
|
249
|
+
# CXGlobalOpt_ThreadBackgroundPriorityForIndexing);
|
250
|
+
# \endcode
|
251
|
+
#
|
252
|
+
# @method cx_index_set_global_options(index, options)
|
253
|
+
# @param [FFI::Pointer(Index)] index
|
254
|
+
# @param [Integer] options A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags.
|
255
|
+
# @return [nil]
|
256
|
+
# @scope class
|
257
|
+
attach_function :cx_index_set_global_options, :clang_CXIndex_setGlobalOptions, [:pointer, :uint], :void
|
258
|
+
|
259
|
+
# Gets the general options associated with a CXIndex.
|
260
|
+
#
|
261
|
+
# @method cx_index_get_global_options(index)
|
262
|
+
# @param [FFI::Pointer(Index)] index
|
263
|
+
# @return [Integer] A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that
|
264
|
+
# are associated with the given CXIndex object.
|
265
|
+
# @scope class
|
266
|
+
attach_function :cx_index_get_global_options, :clang_CXIndex_getGlobalOptions, [:pointer], :uint
|
267
|
+
|
150
268
|
# Retrieve the complete file and path name of the given file.
|
151
269
|
#
|
152
270
|
# @method get_file_name(s_file)
|
@@ -163,9 +281,29 @@ module FFIGen::Clang
|
|
163
281
|
# @scope class
|
164
282
|
attach_function :get_file_time, :clang_getFileTime, [:pointer], :long
|
165
283
|
|
284
|
+
# Uniquely identifies a CXFile, that refers to the same underlying file,
|
285
|
+
# across an indexing session.
|
286
|
+
#
|
287
|
+
# = Fields:
|
288
|
+
# :data ::
|
289
|
+
# (Array<Integer>)
|
290
|
+
class FileUniqueID < FFI::Struct
|
291
|
+
layout :data, [:ulong_long, 3]
|
292
|
+
end
|
293
|
+
|
294
|
+
# Retrieve the unique ID for the given \c file.
|
295
|
+
#
|
296
|
+
# @method get_file_unique_id(file, out_id)
|
297
|
+
# @param [FFI::Pointer(File)] file the file to get the ID for.
|
298
|
+
# @param [FileUniqueID] out_id stores the returned CXFileUniqueID.
|
299
|
+
# @return [Integer] If there was a failure getting the unique ID, returns non-zero,
|
300
|
+
# otherwise returns 0.
|
301
|
+
# @scope class
|
302
|
+
attach_function :get_file_unique_id, :clang_getFileUniqueID, [:pointer, FileUniqueID], :int
|
303
|
+
|
166
304
|
# Determine whether the given header is guarded against
|
167
305
|
# multiple inclusions, either with the conventional
|
168
|
-
#
|
306
|
+
# \#ifndef/\#define/\#endif macro guards or with \#pragma once.
|
169
307
|
#
|
170
308
|
# @method is_file_multiple_include_guarded(tu, file)
|
171
309
|
# @param [TranslationUnitImpl] tu
|
@@ -260,6 +398,23 @@ module FFIGen::Clang
|
|
260
398
|
# @scope class
|
261
399
|
attach_function :get_location_for_offset, :clang_getLocationForOffset, [TranslationUnitImpl, :pointer, :uint], SourceLocation.by_value
|
262
400
|
|
401
|
+
# Returns non-zero if the given source location is in a system header.
|
402
|
+
#
|
403
|
+
# @method location_is_in_system_header(location)
|
404
|
+
# @param [SourceLocation] location
|
405
|
+
# @return [Integer]
|
406
|
+
# @scope class
|
407
|
+
attach_function :location_is_in_system_header, :clang_Location_isInSystemHeader, [SourceLocation.by_value], :int
|
408
|
+
|
409
|
+
# Returns non-zero if the given source location is in the main file of
|
410
|
+
# the corresponding translation unit.
|
411
|
+
#
|
412
|
+
# @method location_is_from_main_file(location)
|
413
|
+
# @param [SourceLocation] location
|
414
|
+
# @return [Integer]
|
415
|
+
# @scope class
|
416
|
+
attach_function :location_is_from_main_file, :clang_Location_isFromMainFile, [SourceLocation.by_value], :int
|
417
|
+
|
263
418
|
# Retrieve a NULL (invalid) source range.
|
264
419
|
#
|
265
420
|
# @method get_null_range()
|
@@ -270,9 +425,9 @@ module FFIGen::Clang
|
|
270
425
|
# Retrieve a source range given the beginning and ending source
|
271
426
|
# locations.
|
272
427
|
#
|
273
|
-
# @method get_range(
|
274
|
-
# @param [SourceLocation]
|
275
|
-
# @param [SourceLocation]
|
428
|
+
# @method get_range(begin_, end_)
|
429
|
+
# @param [SourceLocation] begin_
|
430
|
+
# @param [SourceLocation] end_
|
276
431
|
# @return [SourceRange]
|
277
432
|
# @scope class
|
278
433
|
attach_function :get_range, :clang_getRange, [SourceLocation.by_value, SourceLocation.by_value], SourceRange.by_value
|
@@ -286,7 +441,7 @@ module FFIGen::Clang
|
|
286
441
|
# @scope class
|
287
442
|
attach_function :equal_ranges, :clang_equalRanges, [SourceRange.by_value, SourceRange.by_value], :uint
|
288
443
|
|
289
|
-
# Returns non-zero if \
|
444
|
+
# Returns non-zero if \p range is null.
|
290
445
|
#
|
291
446
|
# @method range_is_null(range)
|
292
447
|
# @param [SourceRange] range
|
@@ -294,17 +449,40 @@ module FFIGen::Clang
|
|
294
449
|
# @scope class
|
295
450
|
attach_function :range_is_null, :clang_Range_isNull, [SourceRange.by_value], :int
|
296
451
|
|
452
|
+
# Retrieve the file, line, column, and offset represented by
|
453
|
+
# the given source location.
|
454
|
+
#
|
455
|
+
# If the location refers into a macro expansion, retrieves the
|
456
|
+
# location of the macro expansion.
|
457
|
+
#
|
458
|
+
# @method get_expansion_location(location, file, line, column, offset)
|
459
|
+
# @param [SourceLocation] location the location within a source file that will be decomposed
|
460
|
+
# into its parts.
|
461
|
+
# @param [FFI::Pointer(*File)] file (out) if non-NULL, will be set to the file to which the given
|
462
|
+
# source location points.
|
463
|
+
# @param [FFI::Pointer(*UInt)] line (out) if non-NULL, will be set to the line to which the given
|
464
|
+
# source location points.
|
465
|
+
# @param [FFI::Pointer(*UInt)] column (out) if non-NULL, will be set to the column to which the given
|
466
|
+
# source location points.
|
467
|
+
# @param [FFI::Pointer(*UInt)] offset (out) if non-NULL, will be set to the offset into the
|
468
|
+
# buffer to which the given source location points.
|
469
|
+
# @return [nil]
|
470
|
+
# @scope class
|
471
|
+
attach_function :get_expansion_location, :clang_getExpansionLocation, [SourceLocation.by_value, :pointer, :pointer, :pointer, :pointer], :void
|
472
|
+
|
297
473
|
# Retrieve the file, line, column, and offset represented by
|
298
474
|
# the given source location, as specified in a # line directive.
|
299
475
|
#
|
300
476
|
# Example: given the following source code in a file somefile.c
|
301
477
|
#
|
478
|
+
# \code
|
302
479
|
# #123 "dummy.c" 1
|
303
480
|
#
|
304
481
|
# static int func(void)
|
305
482
|
# {
|
306
483
|
# return 0;
|
307
484
|
# }
|
485
|
+
# \endcode
|
308
486
|
#
|
309
487
|
# the location information returned by this function would be
|
310
488
|
#
|
@@ -336,7 +514,7 @@ module FFIGen::Clang
|
|
336
514
|
# by the given source location.
|
337
515
|
#
|
338
516
|
# This interface has been replaced by the newer interface
|
339
|
-
#
|
517
|
+
# #clang_getExpansionLocation(). See that interface's documentation for
|
340
518
|
# details.
|
341
519
|
#
|
342
520
|
# @method get_instantiation_location(location, file, line, column, offset)
|
@@ -370,6 +548,28 @@ module FFIGen::Clang
|
|
370
548
|
# @scope class
|
371
549
|
attach_function :get_spelling_location, :clang_getSpellingLocation, [SourceLocation.by_value, :pointer, :pointer, :pointer, :pointer], :void
|
372
550
|
|
551
|
+
# Retrieve the file, line, column, and offset represented by
|
552
|
+
# the given source location.
|
553
|
+
#
|
554
|
+
# If the location refers into a macro expansion, return where the macro was
|
555
|
+
# expanded or where the macro argument was written, if the location points at
|
556
|
+
# a macro argument.
|
557
|
+
#
|
558
|
+
# @method get_file_location(location, file, line, column, offset)
|
559
|
+
# @param [SourceLocation] location the location within a source file that will be decomposed
|
560
|
+
# into its parts.
|
561
|
+
# @param [FFI::Pointer(*File)] file (out) if non-NULL, will be set to the file to which the given
|
562
|
+
# source location points.
|
563
|
+
# @param [FFI::Pointer(*UInt)] line (out) if non-NULL, will be set to the line to which the given
|
564
|
+
# source location points.
|
565
|
+
# @param [FFI::Pointer(*UInt)] column (out) if non-NULL, will be set to the column to which the given
|
566
|
+
# source location points.
|
567
|
+
# @param [FFI::Pointer(*UInt)] offset (out) if non-NULL, will be set to the offset into the
|
568
|
+
# buffer to which the given source location points.
|
569
|
+
# @return [nil]
|
570
|
+
# @scope class
|
571
|
+
attach_function :get_file_location, :clang_getFileLocation, [SourceLocation.by_value, :pointer, :pointer, :pointer, :pointer], :void
|
572
|
+
|
373
573
|
# Retrieve a source location representing the first character within a
|
374
574
|
# source range.
|
375
575
|
#
|
@@ -388,6 +588,38 @@ module FFIGen::Clang
|
|
388
588
|
# @scope class
|
389
589
|
attach_function :get_range_end, :clang_getRangeEnd, [SourceRange.by_value], SourceLocation.by_value
|
390
590
|
|
591
|
+
# Identifies an array of ranges.
|
592
|
+
#
|
593
|
+
# = Fields:
|
594
|
+
# :count ::
|
595
|
+
# (Integer) The number of ranges in the \c ranges array.
|
596
|
+
# :ranges ::
|
597
|
+
# (SourceRange) An array of \c CXSourceRanges.
|
598
|
+
class SourceRangeList < FFI::Struct
|
599
|
+
layout :count, :uint,
|
600
|
+
:ranges, SourceRange
|
601
|
+
end
|
602
|
+
|
603
|
+
# Retrieve all ranges that were skipped by the preprocessor.
|
604
|
+
#
|
605
|
+
# The preprocessor will skip lines when they are surrounded by an
|
606
|
+
# if/ifdef/ifndef directive whose condition does not evaluate to true.
|
607
|
+
#
|
608
|
+
# @method get_skipped_ranges(tu, file)
|
609
|
+
# @param [TranslationUnitImpl] tu
|
610
|
+
# @param [FFI::Pointer(File)] file
|
611
|
+
# @return [SourceRangeList]
|
612
|
+
# @scope class
|
613
|
+
attach_function :get_skipped_ranges, :clang_getSkippedRanges, [TranslationUnitImpl, :pointer], SourceRangeList
|
614
|
+
|
615
|
+
# Destroy the given \c CXSourceRangeList.
|
616
|
+
#
|
617
|
+
# @method dispose_source_range_list(ranges)
|
618
|
+
# @param [SourceRangeList] ranges
|
619
|
+
# @return [nil]
|
620
|
+
# @scope class
|
621
|
+
attach_function :dispose_source_range_list, :clang_disposeSourceRangeList, [SourceRangeList], :void
|
622
|
+
|
391
623
|
# Describes the severity of a particular diagnostic.
|
392
624
|
#
|
393
625
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:diagnostic_severity).</em>
|
@@ -420,6 +652,85 @@ module FFIGen::Clang
|
|
420
652
|
:fatal, 4
|
421
653
|
]
|
422
654
|
|
655
|
+
# Determine the number of diagnostics in a CXDiagnosticSet.
|
656
|
+
#
|
657
|
+
# @method get_num_diagnostics_in_set(diags)
|
658
|
+
# @param [FFI::Pointer(DiagnosticSet)] diags
|
659
|
+
# @return [Integer]
|
660
|
+
# @scope class
|
661
|
+
attach_function :get_num_diagnostics_in_set, :clang_getNumDiagnosticsInSet, [:pointer], :uint
|
662
|
+
|
663
|
+
# Retrieve a diagnostic associated with the given CXDiagnosticSet.
|
664
|
+
#
|
665
|
+
# @method get_diagnostic_in_set(diags, index)
|
666
|
+
# @param [FFI::Pointer(DiagnosticSet)] diags the CXDiagnosticSet to query.
|
667
|
+
# @param [Integer] index the zero-based diagnostic number to retrieve.
|
668
|
+
# @return [FFI::Pointer(Diagnostic)] the requested diagnostic. This diagnostic must be freed
|
669
|
+
# via a call to \c clang_disposeDiagnostic().
|
670
|
+
# @scope class
|
671
|
+
attach_function :get_diagnostic_in_set, :clang_getDiagnosticInSet, [:pointer, :uint], :pointer
|
672
|
+
|
673
|
+
# Describes the kind of error that occurred (if any) in a call to
|
674
|
+
# \c clang_loadDiagnostics.
|
675
|
+
#
|
676
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:load_diag_error).</em>
|
677
|
+
#
|
678
|
+
# === Options:
|
679
|
+
# :none ::
|
680
|
+
# Indicates that no error occurred.
|
681
|
+
# :unknown ::
|
682
|
+
# Indicates that an unknown error occurred while attempting to
|
683
|
+
# deserialize diagnostics.
|
684
|
+
# :cannot_load ::
|
685
|
+
# Indicates that the file containing the serialized diagnostics
|
686
|
+
# could not be opened.
|
687
|
+
# :invalid_file ::
|
688
|
+
# Indicates that the serialized diagnostics file is invalid or
|
689
|
+
# corrupt.
|
690
|
+
#
|
691
|
+
# @method _enum_load_diag_error_
|
692
|
+
# @return [Symbol]
|
693
|
+
# @scope class
|
694
|
+
enum :load_diag_error, [
|
695
|
+
:none, 0,
|
696
|
+
:unknown, 1,
|
697
|
+
:cannot_load, 2,
|
698
|
+
:invalid_file, 3
|
699
|
+
]
|
700
|
+
|
701
|
+
# Deserialize a set of diagnostics from a Clang diagnostics bitcode
|
702
|
+
# file.
|
703
|
+
#
|
704
|
+
# @method load_diagnostics(file, error, error_string)
|
705
|
+
# @param [String] file The name of the file to deserialize.
|
706
|
+
# @param [FFI::Pointer(*LoadDiagError)] error A pointer to a enum value recording if there was a problem
|
707
|
+
# deserializing the diagnostics.
|
708
|
+
# @param [String] error_string A pointer to a CXString for recording the error string
|
709
|
+
# if the file was not successfully loaded.
|
710
|
+
# @return [FFI::Pointer(DiagnosticSet)] A loaded CXDiagnosticSet if successful, and NULL otherwise. These
|
711
|
+
# diagnostics should be released using clang_disposeDiagnosticSet().
|
712
|
+
# @scope class
|
713
|
+
attach_function :load_diagnostics, :clang_loadDiagnostics, [:string, :pointer, String], :pointer
|
714
|
+
|
715
|
+
# Release a CXDiagnosticSet and all of its contained diagnostics.
|
716
|
+
#
|
717
|
+
# @method dispose_diagnostic_set(diags)
|
718
|
+
# @param [FFI::Pointer(DiagnosticSet)] diags
|
719
|
+
# @return [nil]
|
720
|
+
# @scope class
|
721
|
+
attach_function :dispose_diagnostic_set, :clang_disposeDiagnosticSet, [:pointer], :void
|
722
|
+
|
723
|
+
# Retrieve the child diagnostics of a CXDiagnostic.
|
724
|
+
#
|
725
|
+
# This CXDiagnosticSet does not need to be released by
|
726
|
+
# clang_disposeDiagnosticSet.
|
727
|
+
#
|
728
|
+
# @method get_child_diagnostics(d)
|
729
|
+
# @param [FFI::Pointer(Diagnostic)] d
|
730
|
+
# @return [FFI::Pointer(DiagnosticSet)]
|
731
|
+
# @scope class
|
732
|
+
attach_function :get_child_diagnostics, :clang_getChildDiagnostics, [:pointer], :pointer
|
733
|
+
|
423
734
|
# Determine the number of diagnostics produced for the given
|
424
735
|
# translation unit.
|
425
736
|
#
|
@@ -439,6 +750,15 @@ module FFIGen::Clang
|
|
439
750
|
# @scope class
|
440
751
|
attach_function :get_diagnostic, :clang_getDiagnostic, [TranslationUnitImpl, :uint], :pointer
|
441
752
|
|
753
|
+
# Retrieve the complete set of diagnostics associated with a
|
754
|
+
# translation unit.
|
755
|
+
#
|
756
|
+
# @method get_diagnostic_set_from_tu(unit)
|
757
|
+
# @param [TranslationUnitImpl] unit the translation unit to query.
|
758
|
+
# @return [FFI::Pointer(DiagnosticSet)]
|
759
|
+
# @scope class
|
760
|
+
attach_function :get_diagnostic_set_from_tu, :clang_getDiagnosticSetFromTU, [TranslationUnitImpl], :pointer
|
761
|
+
|
442
762
|
# Destroy a diagnostic.
|
443
763
|
#
|
444
764
|
# @method dispose_diagnostic(diagnostic)
|
@@ -450,12 +770,12 @@ module FFIGen::Clang
|
|
450
770
|
# Options to control the display of diagnostics.
|
451
771
|
#
|
452
772
|
# The values in this enum are meant to be combined to customize the
|
453
|
-
# behavior of \c
|
773
|
+
# behavior of \c clang_formatDiagnostic().
|
454
774
|
#
|
455
775
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:diagnostic_display_options).</em>
|
456
776
|
#
|
457
777
|
# === Options:
|
458
|
-
# :
|
778
|
+
# :source_location ::
|
459
779
|
# Display the source-location information where the
|
460
780
|
# diagnostic was located.
|
461
781
|
#
|
@@ -467,31 +787,31 @@ module FFIGen::Clang
|
|
467
787
|
# \endcode
|
468
788
|
#
|
469
789
|
# This option corresponds to the clang flag \c -fshow-source-location.
|
470
|
-
# :
|
790
|
+
# :column ::
|
471
791
|
# If displaying the source-location information of the
|
472
792
|
# diagnostic, also include the column number.
|
473
793
|
#
|
474
794
|
# This option corresponds to the clang flag \c -fshow-column.
|
475
|
-
# :
|
795
|
+
# :source_ranges ::
|
476
796
|
# If displaying the source-location information of the
|
477
797
|
# diagnostic, also include information about source ranges in a
|
478
798
|
# machine-parsable format.
|
479
799
|
#
|
480
800
|
# This option corresponds to the clang flag
|
481
801
|
# \c -fdiagnostics-print-source-range-info.
|
482
|
-
# :
|
802
|
+
# :option ::
|
483
803
|
# Display the option name associated with this diagnostic, if any.
|
484
804
|
#
|
485
805
|
# The option name displayed (e.g., -Wconversion) will be placed in brackets
|
486
806
|
# after the diagnostic text. This option corresponds to the clang flag
|
487
807
|
# \c -fdiagnostics-show-option.
|
488
|
-
# :
|
808
|
+
# :category_id ::
|
489
809
|
# Display the category number associated with this diagnostic, if any.
|
490
810
|
#
|
491
811
|
# The category number is displayed within brackets after the diagnostic text.
|
492
812
|
# This option corresponds to the clang flag
|
493
813
|
# \c -fdiagnostics-show-category=id.
|
494
|
-
# :
|
814
|
+
# :category_name ::
|
495
815
|
# Display the category name associated with this diagnostic, if any.
|
496
816
|
#
|
497
817
|
# The category name is displayed within brackets after the diagnostic text.
|
@@ -502,12 +822,12 @@ module FFIGen::Clang
|
|
502
822
|
# @return [Symbol]
|
503
823
|
# @scope class
|
504
824
|
enum :diagnostic_display_options, [
|
505
|
-
:
|
506
|
-
:
|
507
|
-
:
|
508
|
-
:
|
509
|
-
:
|
510
|
-
:
|
825
|
+
:source_location, 1,
|
826
|
+
:column, 2,
|
827
|
+
:source_ranges, 4,
|
828
|
+
:option, 8,
|
829
|
+
:category_id, 16,
|
830
|
+
:category_name, 32
|
511
831
|
]
|
512
832
|
|
513
833
|
# Format the given diagnostic in a manner that is suitable for display.
|
@@ -530,7 +850,7 @@ module FFIGen::Clang
|
|
530
850
|
#
|
531
851
|
# @method default_diagnostic_display_options()
|
532
852
|
# @return [Integer] A set of display options suitable for use with \c
|
533
|
-
#
|
853
|
+
# clang_formatDiagnostic().
|
534
854
|
# @scope class
|
535
855
|
attach_function :default_diagnostic_display_options, :clang_defaultDiagnosticDisplayOptions, [], :uint
|
536
856
|
|
@@ -586,7 +906,9 @@ module FFIGen::Clang
|
|
586
906
|
# @scope class
|
587
907
|
attach_function :get_diagnostic_category, :clang_getDiagnosticCategory, [:pointer], :uint
|
588
908
|
|
589
|
-
# Retrieve the name of a particular diagnostic category.
|
909
|
+
# Retrieve the name of a particular diagnostic category. This
|
910
|
+
# is now deprecated. Use clang_getDiagnosticCategoryText()
|
911
|
+
# instead.
|
590
912
|
#
|
591
913
|
# @method get_diagnostic_category_name(category)
|
592
914
|
# @param [Integer] category A diagnostic category number, as returned by
|
@@ -595,6 +917,14 @@ module FFIGen::Clang
|
|
595
917
|
# @scope class
|
596
918
|
attach_function :get_diagnostic_category_name, :clang_getDiagnosticCategoryName, [:uint], String.by_value
|
597
919
|
|
920
|
+
# Retrieve the diagnostic category text for a given diagnostic.
|
921
|
+
#
|
922
|
+
# @method get_diagnostic_category_text(diagnostic)
|
923
|
+
# @param [FFI::Pointer(Diagnostic)] diagnostic
|
924
|
+
# @return [String] The text of the given diagnostic category.
|
925
|
+
# @scope class
|
926
|
+
attach_function :get_diagnostic_category_text, :clang_getDiagnosticCategoryText, [:pointer], String.by_value
|
927
|
+
|
598
928
|
# Determine the number of source ranges associated with the given
|
599
929
|
# diagnostic.
|
600
930
|
#
|
@@ -671,20 +1001,20 @@ module FFIGen::Clang
|
|
671
1001
|
# '-c'
|
672
1002
|
# '-emit-ast'
|
673
1003
|
# '-fsyntax-only'
|
674
|
-
# '-o
|
1004
|
+
# '-o \<output file>' (both '-o' and '\<output file>' are ignored)
|
675
1005
|
#
|
676
1006
|
# @method create_translation_unit_from_source_file(c_idx, source_filename, num_clang_command_line_args, command_line_args, num_unsaved_files, unsaved_files)
|
677
1007
|
# @param [FFI::Pointer(Index)] c_idx The index object with which the translation unit will be
|
678
1008
|
# associated.
|
679
|
-
# @param [String] source_filename
|
1009
|
+
# @param [String] source_filename The name of the source file to load, or NULL if the
|
680
1010
|
# source file is included in \p clang_command_line_args.
|
681
1011
|
# @param [Integer] num_clang_command_line_args The number of command-line arguments in
|
682
1012
|
# \p clang_command_line_args.
|
683
|
-
# @param [FFI::Pointer(**
|
1013
|
+
# @param [FFI::Pointer(**CharS)] command_line_args The command-line arguments that would be
|
684
1014
|
# passed to the \c clang executable if it were being invoked out-of-process.
|
685
1015
|
# These command-line options will be parsed and will affect how the translation
|
686
1016
|
# unit is parsed. Note that the following options are ignored: '-c',
|
687
|
-
# '-emit-ast', '-
|
1017
|
+
# '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
|
688
1018
|
# @param [Integer] num_unsaved_files the number of unsaved file entries in \p
|
689
1019
|
# unsaved_files.
|
690
1020
|
# @param [UnsavedFile] unsaved_files the files that have not yet been saved to disk
|
@@ -696,15 +1026,31 @@ module FFIGen::Clang
|
|
696
1026
|
# @scope class
|
697
1027
|
attach_function :create_translation_unit_from_source_file, :clang_createTranslationUnitFromSourceFile, [:pointer, :string, :int, :pointer, :uint, UnsavedFile], TranslationUnitImpl
|
698
1028
|
|
699
|
-
#
|
1029
|
+
# Same as \c clang_createTranslationUnit2, but returns
|
1030
|
+
# the \c CXTranslationUnit instead of an error code. In case of an error this
|
1031
|
+
# routine returns a \c NULL \c CXTranslationUnit, without further detailed
|
1032
|
+
# error codes.
|
700
1033
|
#
|
701
|
-
# @method create_translation_unit(
|
702
|
-
# @param [FFI::Pointer(Index)]
|
1034
|
+
# @method create_translation_unit(c_idx, ast_filename)
|
1035
|
+
# @param [FFI::Pointer(Index)] c_idx
|
703
1036
|
# @param [String] ast_filename
|
704
1037
|
# @return [TranslationUnitImpl]
|
705
1038
|
# @scope class
|
706
1039
|
attach_function :create_translation_unit, :clang_createTranslationUnit, [:pointer, :string], TranslationUnitImpl
|
707
1040
|
|
1041
|
+
# Create a translation unit from an AST file (\c -emit-ast).
|
1042
|
+
#
|
1043
|
+
# \param(out) out_TU A non-NULL pointer to store the created
|
1044
|
+
# \c CXTranslationUnit.
|
1045
|
+
#
|
1046
|
+
# @method create_translation_unit2(c_idx, ast_filename, out_tu)
|
1047
|
+
# @param [FFI::Pointer(Index)] c_idx
|
1048
|
+
# @param [String] ast_filename
|
1049
|
+
# @param [FFI::Pointer(*TranslationUnit)] out_tu
|
1050
|
+
# @return [Symbol from _enum_error_code_] Zero on success, otherwise returns an error code.
|
1051
|
+
# @scope class
|
1052
|
+
attach_function :create_translation_unit2, :clang_createTranslationUnit2, [:pointer, :string, :pointer], :error_code
|
1053
|
+
|
708
1054
|
# Flags that control the creation of translation units.
|
709
1055
|
#
|
710
1056
|
# The enumerators in this enumeration type are meant to be bitwise
|
@@ -756,37 +1102,41 @@ module FFIGen::Clang
|
|
756
1102
|
# Caching of code-completion results is a performance optimization that
|
757
1103
|
# introduces some overhead to reparsing but improves the performance of
|
758
1104
|
# code-completion operations.
|
759
|
-
# :
|
760
|
-
#
|
1105
|
+
# :for_serialization ::
|
1106
|
+
# Used to indicate that the translation unit will be serialized with
|
1107
|
+
# \c clang_saveTranslationUnit.
|
761
1108
|
#
|
762
|
-
#
|
763
|
-
#
|
764
|
-
# :
|
1109
|
+
# This option is typically used when parsing a header with the intent of
|
1110
|
+
# producing a precompiled header.
|
1111
|
+
# :cxx_chained_pch ::
|
765
1112
|
# DEPRECATED: Enabled chained precompiled preambles in C++.
|
766
1113
|
#
|
767
1114
|
# Note: this is a *temporary* option that is available only while
|
768
1115
|
# we are testing C++ precompiled preamble support. It is deprecated.
|
769
|
-
# :
|
770
|
-
# Used to indicate that
|
771
|
-
#
|
1116
|
+
# :skip_function_bodies ::
|
1117
|
+
# Used to indicate that function/method bodies should be skipped while
|
1118
|
+
# parsing.
|
772
1119
|
#
|
773
|
-
#
|
774
|
-
#
|
775
|
-
#
|
776
|
-
#
|
1120
|
+
# This option can be used to search for declarations/definitions while
|
1121
|
+
# ignoring the usages.
|
1122
|
+
# :include_brief_comments_in_code_completion ::
|
1123
|
+
# Used to indicate that brief documentation comments should be
|
1124
|
+
# included into the set of code completions returned from this translation
|
1125
|
+
# unit.
|
777
1126
|
#
|
778
1127
|
# @method _enum_translation_unit_flags_
|
779
1128
|
# @return [Symbol]
|
780
1129
|
# @scope class
|
781
1130
|
enum :translation_unit_flags, [
|
782
|
-
:none,
|
783
|
-
:detailed_preprocessing_record,
|
784
|
-
:incomplete,
|
785
|
-
:precompiled_preamble,
|
786
|
-
:cache_completion_results,
|
787
|
-
:
|
788
|
-
:
|
789
|
-
:
|
1131
|
+
:none, 0,
|
1132
|
+
:detailed_preprocessing_record, 1,
|
1133
|
+
:incomplete, 2,
|
1134
|
+
:precompiled_preamble, 4,
|
1135
|
+
:cache_completion_results, 8,
|
1136
|
+
:for_serialization, 16,
|
1137
|
+
:cxx_chained_pch, 32,
|
1138
|
+
:skip_function_bodies, 64,
|
1139
|
+
:include_brief_comments_in_code_completion, 128
|
790
1140
|
]
|
791
1141
|
|
792
1142
|
# Returns the set of flags that is suitable for parsing a translation
|
@@ -805,6 +1155,23 @@ module FFIGen::Clang
|
|
805
1155
|
# @scope class
|
806
1156
|
attach_function :default_editing_translation_unit_options, :clang_defaultEditingTranslationUnitOptions, [], :uint
|
807
1157
|
|
1158
|
+
# Same as \c clang_parseTranslationUnit2, but returns
|
1159
|
+
# the \c CXTranslationUnit instead of an error code. In case of an error this
|
1160
|
+
# routine returns a \c NULL \c CXTranslationUnit, without further detailed
|
1161
|
+
# error codes.
|
1162
|
+
#
|
1163
|
+
# @method parse_translation_unit(c_idx, source_filename, command_line_args, num_command_line_args, unsaved_files, num_unsaved_files, options)
|
1164
|
+
# @param [FFI::Pointer(Index)] c_idx
|
1165
|
+
# @param [String] source_filename
|
1166
|
+
# @param [FFI::Pointer(**CharS)] command_line_args
|
1167
|
+
# @param [Integer] num_command_line_args
|
1168
|
+
# @param [UnsavedFile] unsaved_files
|
1169
|
+
# @param [Integer] num_unsaved_files
|
1170
|
+
# @param [Integer] options
|
1171
|
+
# @return [TranslationUnitImpl]
|
1172
|
+
# @scope class
|
1173
|
+
attach_function :parse_translation_unit, :clang_parseTranslationUnit, [:pointer, :string, :pointer, :int, UnsavedFile, :uint, :uint], TranslationUnitImpl
|
1174
|
+
|
808
1175
|
# Parse the given source file and the translation unit corresponding
|
809
1176
|
# to that file.
|
810
1177
|
#
|
@@ -814,18 +1181,18 @@ module FFIGen::Clang
|
|
814
1181
|
# command-line arguments so that the compilation can be configured in the same
|
815
1182
|
# way that the compiler is configured on the command line.
|
816
1183
|
#
|
817
|
-
# @method
|
1184
|
+
# @method parse_translation_unit2(c_idx, source_filename, command_line_args, num_command_line_args, unsaved_files, num_unsaved_files, options, out_tu)
|
818
1185
|
# @param [FFI::Pointer(Index)] c_idx The index object with which the translation unit will be
|
819
1186
|
# associated.
|
820
1187
|
# @param [String] source_filename The name of the source file to load, or NULL if the
|
821
|
-
# source file is included in \
|
822
|
-
# @param [FFI::Pointer(**
|
1188
|
+
# source file is included in \c command_line_args.
|
1189
|
+
# @param [FFI::Pointer(**CharS)] command_line_args The command-line arguments that would be
|
823
1190
|
# passed to the \c clang executable if it were being invoked out-of-process.
|
824
1191
|
# These command-line options will be parsed and will affect how the translation
|
825
1192
|
# unit is parsed. Note that the following options are ignored: '-c',
|
826
|
-
# '-emit-ast', '-
|
1193
|
+
# '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
|
827
1194
|
# @param [Integer] num_command_line_args The number of command-line arguments in
|
828
|
-
# \
|
1195
|
+
# \c command_line_args.
|
829
1196
|
# @param [UnsavedFile] unsaved_files the files that have not yet been saved to disk
|
830
1197
|
# but may be required for parsing, including the contents of
|
831
1198
|
# those files. The contents and name of these files (as specified by
|
@@ -836,11 +1203,14 @@ module FFIGen::Clang
|
|
836
1203
|
# @param [Integer] options A bitmask of options that affects how the translation unit
|
837
1204
|
# is managed but not its compilation. This should be a bitwise OR of the
|
838
1205
|
# CXTranslationUnit_XXX flags.
|
839
|
-
#
|
840
|
-
#
|
841
|
-
# the
|
1206
|
+
#
|
1207
|
+
# \param(out) out_TU A non-NULL pointer to store the created
|
1208
|
+
# \c CXTranslationUnit, describing the parsed code and containing any
|
1209
|
+
# diagnostics produced by the compiler.
|
1210
|
+
# @param [FFI::Pointer(*TranslationUnit)] out_tu
|
1211
|
+
# @return [Symbol from _enum_error_code_] Zero on success, otherwise returns an error code.
|
842
1212
|
# @scope class
|
843
|
-
attach_function :
|
1213
|
+
attach_function :parse_translation_unit2, :clang_parseTranslationUnit2, [:pointer, :string, :pointer, :int, UnsavedFile, :uint, :uint, :pointer], :error_code
|
844
1214
|
|
845
1215
|
# Flags that control how translation units are saved.
|
846
1216
|
#
|
@@ -858,7 +1228,7 @@ module FFIGen::Clang
|
|
858
1228
|
# @return [Symbol]
|
859
1229
|
# @scope class
|
860
1230
|
enum :save_translation_unit_flags, [
|
861
|
-
:save_translation_unit_none,
|
1231
|
+
:save_translation_unit_none, 0
|
862
1232
|
]
|
863
1233
|
|
864
1234
|
# Returns the set of flags that is suitable for saving a translation
|
@@ -955,7 +1325,7 @@ module FFIGen::Clang
|
|
955
1325
|
# @return [Symbol]
|
956
1326
|
# @scope class
|
957
1327
|
enum :reparse_flags, [
|
958
|
-
:reparse_none,
|
1328
|
+
:reparse_none, 0
|
959
1329
|
]
|
960
1330
|
|
961
1331
|
# Returns the set of flags that is suitable for reparsing a translation
|
@@ -1002,10 +1372,11 @@ module FFIGen::Clang
|
|
1002
1372
|
# @param [Integer] options A bitset of options composed of the flags in CXReparse_Flags.
|
1003
1373
|
# The function \c clang_defaultReparseOptions() produces a default set of
|
1004
1374
|
# options recommended for most uses, based on the translation unit.
|
1005
|
-
# @return [Integer] 0 if the sources could be reparsed.
|
1375
|
+
# @return [Integer] 0 if the sources could be reparsed. A non-zero error code will be
|
1006
1376
|
# returned if reparsing was impossible, such that the translation unit is
|
1007
|
-
# invalid. In such cases, the only valid call for \
|
1008
|
-
# \c clang_disposeTranslationUnit(TU).
|
1377
|
+
# invalid. In such cases, the only valid call for \c TU is
|
1378
|
+
# \c clang_disposeTranslationUnit(TU). The error codes returned by this
|
1379
|
+
# routine are described by the \c CXErrorCode enum.
|
1009
1380
|
# @scope class
|
1010
1381
|
attach_function :reparse_translation_unit, :clang_reparseTranslationUnit, [TranslationUnitImpl, :uint, UnsavedFile, :uint], :int
|
1011
1382
|
|
@@ -1151,13 +1522,13 @@ module FFIGen::Clang
|
|
1151
1522
|
# :parm_decl ::
|
1152
1523
|
# A function or method parameter.
|
1153
1524
|
# :obj_c_interface_decl ::
|
1154
|
-
# An Objective-C
|
1525
|
+
# An Objective-C \@interface.
|
1155
1526
|
# :obj_c_category_decl ::
|
1156
|
-
# An Objective-C
|
1527
|
+
# An Objective-C \@interface for a category.
|
1157
1528
|
# :obj_c_protocol_decl ::
|
1158
|
-
# An Objective-C
|
1529
|
+
# An Objective-C \@protocol declaration.
|
1159
1530
|
# :obj_c_property_decl ::
|
1160
|
-
# An Objective-C
|
1531
|
+
# An Objective-C \@property declaration.
|
1161
1532
|
# :obj_c_ivar_decl ::
|
1162
1533
|
# An Objective-C instance variable.
|
1163
1534
|
# :obj_c_instance_method_decl ::
|
@@ -1165,12 +1536,12 @@ module FFIGen::Clang
|
|
1165
1536
|
# :obj_c_class_method_decl ::
|
1166
1537
|
# An Objective-C class method.
|
1167
1538
|
# :obj_c_implementation_decl ::
|
1168
|
-
# An Objective-C
|
1539
|
+
# An Objective-C \@implementation.
|
1169
1540
|
# :obj_c_category_impl_decl ::
|
1170
|
-
# An Objective-C
|
1541
|
+
# An Objective-C \@implementation for a category.
|
1171
1542
|
# :typedef_decl ::
|
1172
1543
|
# A typedef
|
1173
|
-
# :
|
1544
|
+
# :cxx_method ::
|
1174
1545
|
# A C++ class method.
|
1175
1546
|
# :namespace ::
|
1176
1547
|
# A C++ namespace.
|
@@ -1203,10 +1574,10 @@ module FFIGen::Clang
|
|
1203
1574
|
# :type_alias_decl ::
|
1204
1575
|
# A C++ alias declaration
|
1205
1576
|
# :obj_c_synthesize_decl ::
|
1206
|
-
# An Objective-C
|
1577
|
+
# An Objective-C \@synthesize definition.
|
1207
1578
|
# :obj_c_dynamic_decl ::
|
1208
|
-
# An Objective-C
|
1209
|
-
# :
|
1579
|
+
# An Objective-C \@dynamic definition.
|
1580
|
+
# :cxx_access_specifier ::
|
1210
1581
|
# An access specifier.
|
1211
1582
|
# :first_ref ::
|
1212
1583
|
# References
|
@@ -1230,7 +1601,7 @@ module FFIGen::Clang
|
|
1230
1601
|
# The typedef is a declaration of size_type (CXCursor_TypedefDecl),
|
1231
1602
|
# while the type of the variable "size" is referenced. The cursor
|
1232
1603
|
# referenced by the type of size is the typedef for size_type.
|
1233
|
-
# :
|
1604
|
+
# :cxx_base_specifier ::
|
1234
1605
|
#
|
1235
1606
|
# :template_ref ::
|
1236
1607
|
# A reference to a class template, function template, template
|
@@ -1289,6 +1660,9 @@ module FFIGen::Clang
|
|
1289
1660
|
# The functions \c clang_getNumOverloadedDecls() and
|
1290
1661
|
# \c clang_getOverloadedDecl() can be used to retrieve the definitions
|
1291
1662
|
# referenced by this cursor.
|
1663
|
+
# :variable_ref ::
|
1664
|
+
# A reference to a variable that occurs in some non-expression
|
1665
|
+
# context, e.g., a C++ lambda capture list.
|
1292
1666
|
# :first_invalid ::
|
1293
1667
|
# Error conditions
|
1294
1668
|
# :invalid_file ::
|
@@ -1311,7 +1685,7 @@ module FFIGen::Clang
|
|
1311
1685
|
# expression is not reported.
|
1312
1686
|
# :decl_ref_expr ::
|
1313
1687
|
# An expression that refers to some value declaration, such
|
1314
|
-
# as a function,
|
1688
|
+
# as a function, variable, or enumerator.
|
1315
1689
|
# :member_ref_expr ::
|
1316
1690
|
# An expression that refers to a member of a struct, union,
|
1317
1691
|
# class, Objective-C class, etc.
|
@@ -1362,7 +1736,7 @@ module FFIGen::Clang
|
|
1362
1736
|
# :stmt_expr ::
|
1363
1737
|
# This is the GNU Statement Expression extension: ({int X=4; X;})
|
1364
1738
|
# :generic_selection_expr ::
|
1365
|
-
# Represents a
|
1739
|
+
# Represents a C11 generic selection.
|
1366
1740
|
# :gnu_null_expr ::
|
1367
1741
|
# Implements the GNU __null extension, which is a name for a null
|
1368
1742
|
# pointer constant that has integral type (e.g., int or long) and is the same
|
@@ -1371,15 +1745,15 @@ module FFIGen::Clang
|
|
1371
1745
|
# The __null extension is typically only used by system headers, which define
|
1372
1746
|
# NULL as __null in C++ rather than using 0 (which is an integer that may not
|
1373
1747
|
# match the size of a pointer).
|
1374
|
-
# :
|
1748
|
+
# :cxx_static_cast_expr ::
|
1375
1749
|
# C++'s static_cast<> expression.
|
1376
|
-
# :
|
1750
|
+
# :cxx_dynamic_cast_expr ::
|
1377
1751
|
# C++'s dynamic_cast<> expression.
|
1378
|
-
# :
|
1752
|
+
# :cxx_reinterpret_cast_expr ::
|
1379
1753
|
# C++'s reinterpret_cast<> expression.
|
1380
|
-
# :
|
1754
|
+
# :cxx_const_cast_expr ::
|
1381
1755
|
# C++'s const_cast<> expression.
|
1382
|
-
# :
|
1756
|
+
# :cxx_functional_cast_expr ::
|
1383
1757
|
# Represents an explicit C++ type conversion that uses "functional"
|
1384
1758
|
# notion (C++ (expr.type.conv)).
|
1385
1759
|
#
|
@@ -1387,35 +1761,35 @@ module FFIGen::Clang
|
|
1387
1761
|
# \code
|
1388
1762
|
# x = int(0.5);
|
1389
1763
|
# \endcode
|
1390
|
-
# :
|
1764
|
+
# :cxx_typeid_expr ::
|
1391
1765
|
# A C++ typeid expression (C++ (expr.typeid)).
|
1392
|
-
# :
|
1766
|
+
# :cxx_bool_literal_expr ::
|
1393
1767
|
# (C++ 2.13.5) C++ Boolean Literal.
|
1394
|
-
# :
|
1768
|
+
# :cxx_null_ptr_literal_expr ::
|
1395
1769
|
# (C++0x 2.14.7) C++ Pointer Literal.
|
1396
|
-
# :
|
1770
|
+
# :cxx_this_expr ::
|
1397
1771
|
# Represents the "this" expression in C++
|
1398
|
-
# :
|
1772
|
+
# :cxx_throw_expr ::
|
1399
1773
|
# (C++ 15) C++ Throw Expression.
|
1400
1774
|
#
|
1401
1775
|
# This handles 'throw' and 'throw' assignment-expression. When
|
1402
1776
|
# assignment-expression isn't present, Op will be null.
|
1403
|
-
# :
|
1777
|
+
# :cxx_new_expr ::
|
1404
1778
|
# A new expression for memory allocation and constructor calls, e.g:
|
1405
1779
|
# "new CXXNewExpr(foo)".
|
1406
|
-
# :
|
1780
|
+
# :cxx_delete_expr ::
|
1407
1781
|
# A delete expression for memory deallocation and destructor calls,
|
1408
1782
|
# e.g. "delete() pArray".
|
1409
1783
|
# :unary_expr ::
|
1410
1784
|
# A unary expression.
|
1411
1785
|
# :obj_c_string_literal ::
|
1412
|
-
#
|
1786
|
+
# An Objective-C string literal i.e. @"foo".
|
1413
1787
|
# :obj_c_encode_expr ::
|
1414
|
-
#
|
1788
|
+
# An Objective-C \@encode expression.
|
1415
1789
|
# :obj_c_selector_expr ::
|
1416
|
-
#
|
1790
|
+
# An Objective-C \@selector expression.
|
1417
1791
|
# :obj_c_protocol_expr ::
|
1418
|
-
# Objective-C
|
1792
|
+
# An Objective-C \@protocol expression.
|
1419
1793
|
# :obj_c_bridged_cast_expr ::
|
1420
1794
|
# An Objective-C "bridged" cast expression, which casts between
|
1421
1795
|
# Objective-C pointers and C pointers, transferring ownership in the process.
|
@@ -1446,6 +1820,22 @@ module FFIGen::Clang
|
|
1446
1820
|
# static const unsigned value = sizeof...(Types);
|
1447
1821
|
# };
|
1448
1822
|
# \endcode
|
1823
|
+
# :lambda_expr ::
|
1824
|
+
# Represents a C++ lambda expression that produces a local function
|
1825
|
+
# object.
|
1826
|
+
#
|
1827
|
+
# \code
|
1828
|
+
# void abssort(float *x, unsigned N) {
|
1829
|
+
# std::sort(x, x + N,
|
1830
|
+
# ()(float a, float b) {
|
1831
|
+
# return std::abs(a) < std::abs(b);
|
1832
|
+
# });
|
1833
|
+
# }
|
1834
|
+
# \endcode
|
1835
|
+
# :obj_c_bool_literal_expr ::
|
1836
|
+
# Objective-c Boolean Literal.
|
1837
|
+
# :obj_c_self_expr ::
|
1838
|
+
# Represents the "self" expression in an Objective-C method.
|
1449
1839
|
# :first_stmt ::
|
1450
1840
|
# Statements
|
1451
1841
|
# :unexposed_stmt ::
|
@@ -1472,7 +1862,7 @@ module FFIGen::Clang
|
|
1472
1862
|
# This cursor kind is used to describe compound statements, e.g. function
|
1473
1863
|
# bodies.
|
1474
1864
|
# :case_stmt ::
|
1475
|
-
# A case
|
1865
|
+
# A case statement.
|
1476
1866
|
# :default_stmt ::
|
1477
1867
|
# A default statement.
|
1478
1868
|
# :if_stmt ::
|
@@ -1495,27 +1885,27 @@ module FFIGen::Clang
|
|
1495
1885
|
# A break statement.
|
1496
1886
|
# :return_stmt ::
|
1497
1887
|
# A return statement.
|
1498
|
-
# :
|
1499
|
-
# A
|
1888
|
+
# :gcc_asm_stmt ::
|
1889
|
+
# A GCC inline assembly statement extension.
|
1500
1890
|
# :obj_c_at_try_stmt ::
|
1501
|
-
# Objective-C's overall
|
1891
|
+
# Objective-C's overall \@try-\@catch-\@finally statement.
|
1502
1892
|
# :obj_c_at_catch_stmt ::
|
1503
|
-
# Objective-C's
|
1893
|
+
# Objective-C's \@catch statement.
|
1504
1894
|
# :obj_c_at_finally_stmt ::
|
1505
|
-
# Objective-C's
|
1895
|
+
# Objective-C's \@finally statement.
|
1506
1896
|
# :obj_c_at_throw_stmt ::
|
1507
|
-
# Objective-C's
|
1897
|
+
# Objective-C's \@throw statement.
|
1508
1898
|
# :obj_c_at_synchronized_stmt ::
|
1509
|
-
# Objective-C's
|
1899
|
+
# Objective-C's \@synchronized statement.
|
1510
1900
|
# :obj_c_autorelease_pool_stmt ::
|
1511
1901
|
# Objective-C's autorelease pool statement.
|
1512
1902
|
# :obj_c_for_collection_stmt ::
|
1513
1903
|
# Objective-C's collection statement.
|
1514
|
-
# :
|
1904
|
+
# :cxx_catch_stmt ::
|
1515
1905
|
# C++'s catch statement.
|
1516
|
-
# :
|
1906
|
+
# :cxx_try_stmt ::
|
1517
1907
|
# C++'s try statement.
|
1518
|
-
# :
|
1908
|
+
# :cxx_for_range_stmt ::
|
1519
1909
|
# C++'s for (* : *) statement.
|
1520
1910
|
# :seh_try_stmt ::
|
1521
1911
|
# Windows Structured Exception Handling's try statement.
|
@@ -1523,6 +1913,8 @@ module FFIGen::Clang
|
|
1523
1913
|
# Windows Structured Exception Handling's except statement.
|
1524
1914
|
# :seh_finally_stmt ::
|
1525
1915
|
# Windows Structured Exception Handling's finally statement.
|
1916
|
+
# :ms_asm_stmt ::
|
1917
|
+
# A MS inline assembly statement extension.
|
1526
1918
|
# :null_stmt ::
|
1527
1919
|
# The null satement ";": C99 6.8.3p3.
|
1528
1920
|
#
|
@@ -1530,6 +1922,38 @@ module FFIGen::Clang
|
|
1530
1922
|
# :decl_stmt ::
|
1531
1923
|
# Adaptor class for mixing declarations with statements and
|
1532
1924
|
# expressions.
|
1925
|
+
# :omp_parallel_directive ::
|
1926
|
+
# OpenMP parallel directive.
|
1927
|
+
# :omp_simd_directive ::
|
1928
|
+
# OpenMP simd directive.
|
1929
|
+
# :omp_for_directive ::
|
1930
|
+
# OpenMP for directive.
|
1931
|
+
# :omp_sections_directive ::
|
1932
|
+
# OpenMP sections directive.
|
1933
|
+
# :omp_section_directive ::
|
1934
|
+
# OpenMP section directive.
|
1935
|
+
# :omp_single_directive ::
|
1936
|
+
# OpenMP single directive.
|
1937
|
+
# :omp_parallel_for_directive ::
|
1938
|
+
# OpenMP parallel for directive.
|
1939
|
+
# :omp_parallel_sections_directive ::
|
1940
|
+
# OpenMP parallel sections directive.
|
1941
|
+
# :omp_task_directive ::
|
1942
|
+
# OpenMP task directive.
|
1943
|
+
# :omp_master_directive ::
|
1944
|
+
# OpenMP master directive.
|
1945
|
+
# :omp_critical_directive ::
|
1946
|
+
# OpenMP critical directive.
|
1947
|
+
# :omp_taskyield_directive ::
|
1948
|
+
# OpenMP taskyield directive.
|
1949
|
+
# :omp_barrier_directive ::
|
1950
|
+
# OpenMP barrier directive.
|
1951
|
+
# :omp_taskwait_directive ::
|
1952
|
+
# OpenMP taskwait directive.
|
1953
|
+
# :omp_flush_directive ::
|
1954
|
+
# OpenMP flush directive.
|
1955
|
+
# :seh_leave_stmt ::
|
1956
|
+
# Windows Structured Exception Handling's leave statement.
|
1533
1957
|
# :translation_unit ::
|
1534
1958
|
# Cursor that represents the translation unit itself.
|
1535
1959
|
#
|
@@ -1546,12 +1970,30 @@ module FFIGen::Clang
|
|
1546
1970
|
#
|
1547
1971
|
# :ib_outlet_collection_attr ::
|
1548
1972
|
#
|
1549
|
-
# :
|
1973
|
+
# :cxx_final_attr ::
|
1550
1974
|
#
|
1551
|
-
# :
|
1975
|
+
# :cxx_override_attr ::
|
1552
1976
|
#
|
1553
1977
|
# :annotate_attr ::
|
1554
1978
|
#
|
1979
|
+
# :asm_label_attr ::
|
1980
|
+
#
|
1981
|
+
# :packed_attr ::
|
1982
|
+
#
|
1983
|
+
# :pure_attr ::
|
1984
|
+
#
|
1985
|
+
# :const_attr ::
|
1986
|
+
#
|
1987
|
+
# :no_duplicate_attr ::
|
1988
|
+
#
|
1989
|
+
# :cuda_constant_attr ::
|
1990
|
+
#
|
1991
|
+
# :cuda_device_attr ::
|
1992
|
+
#
|
1993
|
+
# :cuda_global_attr ::
|
1994
|
+
#
|
1995
|
+
# :cuda_host_attr ::
|
1996
|
+
#
|
1555
1997
|
# :preprocessing_directive ::
|
1556
1998
|
# Preprocessing
|
1557
1999
|
# :macro_definition ::
|
@@ -1560,6 +2002,8 @@ module FFIGen::Clang
|
|
1560
2002
|
#
|
1561
2003
|
# :inclusion_directive ::
|
1562
2004
|
#
|
2005
|
+
# :module_import_decl ::
|
2006
|
+
# A module import declaration.
|
1563
2007
|
#
|
1564
2008
|
# @method _enum_cursor_kind_
|
1565
2009
|
# @return [Symbol]
|
@@ -1585,7 +2029,7 @@ module FFIGen::Clang
|
|
1585
2029
|
:obj_c_implementation_decl, 18,
|
1586
2030
|
:obj_c_category_impl_decl, 19,
|
1587
2031
|
:typedef_decl, 20,
|
1588
|
-
:
|
2032
|
+
:cxx_method, 21,
|
1589
2033
|
:namespace, 22,
|
1590
2034
|
:linkage_spec, 23,
|
1591
2035
|
:constructor, 24,
|
@@ -1603,18 +2047,19 @@ module FFIGen::Clang
|
|
1603
2047
|
:type_alias_decl, 36,
|
1604
2048
|
:obj_c_synthesize_decl, 37,
|
1605
2049
|
:obj_c_dynamic_decl, 38,
|
1606
|
-
:
|
2050
|
+
:cxx_access_specifier, 39,
|
1607
2051
|
:first_ref, 40,
|
1608
2052
|
:obj_c_super_class_ref, 40,
|
1609
2053
|
:obj_c_protocol_ref, 41,
|
1610
2054
|
:obj_c_class_ref, 42,
|
1611
2055
|
:type_ref, 43,
|
1612
|
-
:
|
2056
|
+
:cxx_base_specifier, 44,
|
1613
2057
|
:template_ref, 45,
|
1614
2058
|
:namespace_ref, 46,
|
1615
2059
|
:member_ref, 47,
|
1616
2060
|
:label_ref, 48,
|
1617
2061
|
:overloaded_decl_ref, 49,
|
2062
|
+
:variable_ref, 50,
|
1618
2063
|
:first_invalid, 70,
|
1619
2064
|
:invalid_file, 70,
|
1620
2065
|
:no_decl_found, 71,
|
@@ -1645,18 +2090,18 @@ module FFIGen::Clang
|
|
1645
2090
|
:stmt_expr, 121,
|
1646
2091
|
:generic_selection_expr, 122,
|
1647
2092
|
:gnu_null_expr, 123,
|
1648
|
-
:
|
1649
|
-
:
|
1650
|
-
:
|
1651
|
-
:
|
1652
|
-
:
|
1653
|
-
:
|
1654
|
-
:
|
1655
|
-
:
|
1656
|
-
:
|
1657
|
-
:
|
1658
|
-
:
|
1659
|
-
:
|
2093
|
+
:cxx_static_cast_expr, 124,
|
2094
|
+
:cxx_dynamic_cast_expr, 125,
|
2095
|
+
:cxx_reinterpret_cast_expr, 126,
|
2096
|
+
:cxx_const_cast_expr, 127,
|
2097
|
+
:cxx_functional_cast_expr, 128,
|
2098
|
+
:cxx_typeid_expr, 129,
|
2099
|
+
:cxx_bool_literal_expr, 130,
|
2100
|
+
:cxx_null_ptr_literal_expr, 131,
|
2101
|
+
:cxx_this_expr, 132,
|
2102
|
+
:cxx_throw_expr, 133,
|
2103
|
+
:cxx_new_expr, 134,
|
2104
|
+
:cxx_delete_expr, 135,
|
1660
2105
|
:unary_expr, 136,
|
1661
2106
|
:obj_c_string_literal, 137,
|
1662
2107
|
:obj_c_encode_expr, 138,
|
@@ -1665,6 +2110,9 @@ module FFIGen::Clang
|
|
1665
2110
|
:obj_c_bridged_cast_expr, 141,
|
1666
2111
|
:pack_expansion_expr, 142,
|
1667
2112
|
:size_of_pack_expr, 143,
|
2113
|
+
:lambda_expr, 144,
|
2114
|
+
:obj_c_bool_literal_expr, 145,
|
2115
|
+
:obj_c_self_expr, 146,
|
1668
2116
|
:first_stmt, 200,
|
1669
2117
|
:unexposed_stmt, 200,
|
1670
2118
|
:label_stmt, 201,
|
@@ -1681,7 +2129,7 @@ module FFIGen::Clang
|
|
1681
2129
|
:continue_stmt, 212,
|
1682
2130
|
:break_stmt, 213,
|
1683
2131
|
:return_stmt, 214,
|
1684
|
-
:
|
2132
|
+
:gcc_asm_stmt, 215,
|
1685
2133
|
:obj_c_at_try_stmt, 216,
|
1686
2134
|
:obj_c_at_catch_stmt, 217,
|
1687
2135
|
:obj_c_at_finally_stmt, 218,
|
@@ -1689,27 +2137,54 @@ module FFIGen::Clang
|
|
1689
2137
|
:obj_c_at_synchronized_stmt, 220,
|
1690
2138
|
:obj_c_autorelease_pool_stmt, 221,
|
1691
2139
|
:obj_c_for_collection_stmt, 222,
|
1692
|
-
:
|
1693
|
-
:
|
1694
|
-
:
|
2140
|
+
:cxx_catch_stmt, 223,
|
2141
|
+
:cxx_try_stmt, 224,
|
2142
|
+
:cxx_for_range_stmt, 225,
|
1695
2143
|
:seh_try_stmt, 226,
|
1696
2144
|
:seh_except_stmt, 227,
|
1697
2145
|
:seh_finally_stmt, 228,
|
2146
|
+
:ms_asm_stmt, 229,
|
1698
2147
|
:null_stmt, 230,
|
1699
2148
|
:decl_stmt, 231,
|
2149
|
+
:omp_parallel_directive, 232,
|
2150
|
+
:omp_simd_directive, 233,
|
2151
|
+
:omp_for_directive, 234,
|
2152
|
+
:omp_sections_directive, 235,
|
2153
|
+
:omp_section_directive, 236,
|
2154
|
+
:omp_single_directive, 237,
|
2155
|
+
:omp_parallel_for_directive, 238,
|
2156
|
+
:omp_parallel_sections_directive, 239,
|
2157
|
+
:omp_task_directive, 240,
|
2158
|
+
:omp_master_directive, 241,
|
2159
|
+
:omp_critical_directive, 242,
|
2160
|
+
:omp_taskyield_directive, 243,
|
2161
|
+
:omp_barrier_directive, 244,
|
2162
|
+
:omp_taskwait_directive, 245,
|
2163
|
+
:omp_flush_directive, 246,
|
2164
|
+
:seh_leave_stmt, 247,
|
1700
2165
|
:translation_unit, 300,
|
1701
2166
|
:first_attr, 400,
|
1702
2167
|
:unexposed_attr, 400,
|
1703
2168
|
:ib_action_attr, 401,
|
1704
2169
|
:ib_outlet_attr, 402,
|
1705
2170
|
:ib_outlet_collection_attr, 403,
|
1706
|
-
:
|
1707
|
-
:
|
2171
|
+
:cxx_final_attr, 404,
|
2172
|
+
:cxx_override_attr, 405,
|
1708
2173
|
:annotate_attr, 406,
|
2174
|
+
:asm_label_attr, 407,
|
2175
|
+
:packed_attr, 408,
|
2176
|
+
:pure_attr, 409,
|
2177
|
+
:const_attr, 410,
|
2178
|
+
:no_duplicate_attr, 411,
|
2179
|
+
:cuda_constant_attr, 412,
|
2180
|
+
:cuda_device_attr, 413,
|
2181
|
+
:cuda_global_attr, 414,
|
2182
|
+
:cuda_host_attr, 415,
|
1709
2183
|
:preprocessing_directive, 500,
|
1710
2184
|
:macro_definition, 501,
|
1711
2185
|
:macro_expansion, 502,
|
1712
|
-
:inclusion_directive, 503
|
2186
|
+
:inclusion_directive, 503,
|
2187
|
+
:module_import_decl, 600
|
1713
2188
|
]
|
1714
2189
|
|
1715
2190
|
# A cursor representing some element in the abstract syntax tree for
|
@@ -1769,7 +2244,7 @@ module FFIGen::Clang
|
|
1769
2244
|
# @scope class
|
1770
2245
|
attach_function :equal_cursors, :clang_equalCursors, [Cursor.by_value, Cursor.by_value], :uint
|
1771
2246
|
|
1772
|
-
# Returns non-zero if \
|
2247
|
+
# Returns non-zero if \p cursor is null.
|
1773
2248
|
#
|
1774
2249
|
# @method cursor_is_null(cursor)
|
1775
2250
|
# @param [Cursor] cursor
|
@@ -1897,11 +2372,11 @@ module FFIGen::Clang
|
|
1897
2372
|
# @return [Symbol]
|
1898
2373
|
# @scope class
|
1899
2374
|
enum :linkage_kind, [
|
1900
|
-
:invalid,
|
1901
|
-
:no_linkage,
|
1902
|
-
:internal,
|
1903
|
-
:unique_external,
|
1904
|
-
:external
|
2375
|
+
:invalid, 0,
|
2376
|
+
:no_linkage, 1,
|
2377
|
+
:internal, 2,
|
2378
|
+
:unique_external, 3,
|
2379
|
+
:external, 4
|
1905
2380
|
]
|
1906
2381
|
|
1907
2382
|
# Determine the linkage of the entity referred to by a given cursor.
|
@@ -1912,7 +2387,8 @@ module FFIGen::Clang
|
|
1912
2387
|
# @scope class
|
1913
2388
|
attach_function :get_cursor_linkage, :clang_getCursorLinkage, [Cursor.by_value], :linkage_kind
|
1914
2389
|
|
1915
|
-
# Determine the availability of the entity that this cursor refers to
|
2390
|
+
# Determine the availability of the entity that this cursor refers to,
|
2391
|
+
# taking the current target platform into account.
|
1916
2392
|
#
|
1917
2393
|
# @method get_cursor_availability(cursor)
|
1918
2394
|
# @param [Cursor] cursor The cursor to query.
|
@@ -1920,6 +2396,76 @@ module FFIGen::Clang
|
|
1920
2396
|
# @scope class
|
1921
2397
|
attach_function :get_cursor_availability, :clang_getCursorAvailability, [Cursor.by_value], :availability_kind
|
1922
2398
|
|
2399
|
+
# Describes the availability of a given entity on a particular platform, e.g.,
|
2400
|
+
# a particular class might only be available on Mac OS 10.7 or newer.
|
2401
|
+
#
|
2402
|
+
# = Fields:
|
2403
|
+
# :platform ::
|
2404
|
+
# (String) A string that describes the platform for which this structure
|
2405
|
+
# provides availability information.
|
2406
|
+
#
|
2407
|
+
# Possible values are "ios" or "macosx".
|
2408
|
+
# :introduced ::
|
2409
|
+
# (Version) The version number in which this entity was introduced.
|
2410
|
+
# :deprecated ::
|
2411
|
+
# (Version) The version number in which this entity was deprecated (but is
|
2412
|
+
# still available).
|
2413
|
+
# :obsoleted ::
|
2414
|
+
# (Version) The version number in which this entity was obsoleted, and therefore
|
2415
|
+
# is no longer available.
|
2416
|
+
# :unavailable ::
|
2417
|
+
# (Integer) Whether the entity is unconditionally unavailable on this platform.
|
2418
|
+
# :message ::
|
2419
|
+
# (String) An optional message to provide to a user of this API, e.g., to
|
2420
|
+
# suggest replacement APIs.
|
2421
|
+
class PlatformAvailability < FFI::Struct
|
2422
|
+
layout :platform, String.by_value,
|
2423
|
+
:introduced, Version.by_value,
|
2424
|
+
:deprecated, Version.by_value,
|
2425
|
+
:obsoleted, Version.by_value,
|
2426
|
+
:unavailable, :int,
|
2427
|
+
:message, String.by_value
|
2428
|
+
end
|
2429
|
+
|
2430
|
+
# Determine the availability of the entity that this cursor refers to
|
2431
|
+
# on any platforms for which availability information is known.
|
2432
|
+
#
|
2433
|
+
# @method get_cursor_platform_availability(cursor, always_deprecated, deprecated_message, always_unavailable, unavailable_message, availability, availability_size)
|
2434
|
+
# @param [Cursor] cursor The cursor to query.
|
2435
|
+
# @param [FFI::Pointer(*Int)] always_deprecated If non-NULL, will be set to indicate whether the
|
2436
|
+
# entity is deprecated on all platforms.
|
2437
|
+
# @param [String] deprecated_message If non-NULL, will be set to the message text
|
2438
|
+
# provided along with the unconditional deprecation of this entity. The client
|
2439
|
+
# is responsible for deallocating this string.
|
2440
|
+
# @param [FFI::Pointer(*Int)] always_unavailable If non-NULL, will be set to indicate whether the
|
2441
|
+
# entity is unavailable on all platforms.
|
2442
|
+
# @param [String] unavailable_message If non-NULL, will be set to the message text
|
2443
|
+
# provided along with the unconditional unavailability of this entity. The
|
2444
|
+
# client is responsible for deallocating this string.
|
2445
|
+
# @param [PlatformAvailability] availability If non-NULL, an array of CXPlatformAvailability instances
|
2446
|
+
# that will be populated with platform availability information, up to either
|
2447
|
+
# the number of platforms for which availability information is available (as
|
2448
|
+
# returned by this function) or \c availability_size, whichever is smaller.
|
2449
|
+
# @param [Integer] availability_size The number of elements available in the
|
2450
|
+
# \c availability array.
|
2451
|
+
# @return [Integer] The number of platforms (N) for which availability information is
|
2452
|
+
# available (which is unrelated to \c availability_size).
|
2453
|
+
#
|
2454
|
+
# Note that the client is responsible for calling
|
2455
|
+
# \c clang_disposeCXPlatformAvailability to free each of the
|
2456
|
+
# platform-availability structures returned. There are
|
2457
|
+
# \c min(N, availability_size) such structures.
|
2458
|
+
# @scope class
|
2459
|
+
attach_function :get_cursor_platform_availability, :clang_getCursorPlatformAvailability, [Cursor.by_value, :pointer, String, :pointer, String, PlatformAvailability, :int], :int
|
2460
|
+
|
2461
|
+
# Free the memory associated with a \c CXPlatformAvailability structure.
|
2462
|
+
#
|
2463
|
+
# @method dispose_cx_platform_availability(availability)
|
2464
|
+
# @param [PlatformAvailability] availability
|
2465
|
+
# @return [nil]
|
2466
|
+
# @scope class
|
2467
|
+
attach_function :dispose_cx_platform_availability, :clang_disposeCXPlatformAvailability, [PlatformAvailability], :void
|
2468
|
+
|
1923
2469
|
# Describe the "language" of the entity referred to by a cursor.
|
1924
2470
|
#
|
1925
2471
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:language_kind).</em>
|
@@ -1939,9 +2485,9 @@ module FFIGen::Clang
|
|
1939
2485
|
# @scope class
|
1940
2486
|
enum :language_kind, [
|
1941
2487
|
:invalid, 0,
|
1942
|
-
:c,
|
1943
|
-
:obj_c,
|
1944
|
-
:c_plus_plus
|
2488
|
+
:c, 1,
|
2489
|
+
:obj_c, 2,
|
2490
|
+
:c_plus_plus, 3
|
1945
2491
|
]
|
1946
2492
|
|
1947
2493
|
# Determine the "language" of the entity referred to by a given cursor.
|
@@ -2014,10 +2560,10 @@ module FFIGen::Clang
|
|
2014
2560
|
# void C::f() { }
|
2015
2561
|
# \endcode
|
2016
2562
|
#
|
2017
|
-
# In the out-of-line definition of \c C::f, the semantic parent is
|
2563
|
+
# In the out-of-line definition of \c C::f, the semantic parent is
|
2018
2564
|
# the class \c C, of which this function is a member. The lexical parent is
|
2019
2565
|
# the place where the declaration actually occurs in the source code; in this
|
2020
|
-
# case, the definition occurs in the translation unit. In general, the
|
2566
|
+
# case, the definition occurs in the translation unit. In general, the
|
2021
2567
|
# lexical parent for a given entity can change without affecting the semantics
|
2022
2568
|
# of the program, and the lexical parent of different declarations of the
|
2023
2569
|
# same entity may be different. Changing the semantic parent of a declaration,
|
@@ -2052,10 +2598,10 @@ module FFIGen::Clang
|
|
2052
2598
|
# void C::f() { }
|
2053
2599
|
# \endcode
|
2054
2600
|
#
|
2055
|
-
# In the out-of-line definition of \c C::f, the semantic parent is
|
2601
|
+
# In the out-of-line definition of \c C::f, the semantic parent is
|
2056
2602
|
# the class \c C, of which this function is a member. The lexical parent is
|
2057
2603
|
# the place where the declaration actually occurs in the source code; in this
|
2058
|
-
# case, the definition occurs in the translation unit. In general, the
|
2604
|
+
# case, the definition occurs in the translation unit. In general, the
|
2059
2605
|
# lexical parent for a given entity can change without affecting the semantics
|
2060
2606
|
# of the program, and the lexical parent of different declarations of the
|
2061
2607
|
# same entity may be different. Changing the semantic parent of a declaration,
|
@@ -2081,11 +2627,12 @@ module FFIGen::Clang
|
|
2081
2627
|
# In both Objective-C and C++, a method (aka virtual member function,
|
2082
2628
|
# in C++) can override a virtual method in a base class. For
|
2083
2629
|
# Objective-C, a method is said to override any method in the class's
|
2084
|
-
#
|
2085
|
-
#
|
2086
|
-
#
|
2087
|
-
#
|
2088
|
-
#
|
2630
|
+
# base class, its protocols, or its categories' protocols, that has the same
|
2631
|
+
# selector and is of the same kind (class or instance).
|
2632
|
+
# If no such method exists, the search continues to the class's superclass,
|
2633
|
+
# its protocols, and its categories, and so on. A method from an Objective-C
|
2634
|
+
# implementation is considered to override the same methods as its
|
2635
|
+
# corresponding method in the interface.
|
2089
2636
|
#
|
2090
2637
|
# For C++, a virtual member function overrides any virtual member
|
2091
2638
|
# function with the same signature that occurs in its base
|
@@ -2175,7 +2722,7 @@ module FFIGen::Clang
|
|
2175
2722
|
#
|
2176
2723
|
# The extent of a cursor starts with the file/line/column pointing at the
|
2177
2724
|
# first character within the source construct that the cursor refers to and
|
2178
|
-
# ends with the last character
|
2725
|
+
# ends with the last character within that source construct. For a
|
2179
2726
|
# declaration, the extent covers the declaration itself. For a reference,
|
2180
2727
|
# the extent covers the location of the reference (e.g., where the referenced
|
2181
2728
|
# entity was actually used).
|
@@ -2192,7 +2739,7 @@ module FFIGen::Clang
|
|
2192
2739
|
#
|
2193
2740
|
# === Options:
|
2194
2741
|
# :invalid ::
|
2195
|
-
#
|
2742
|
+
# Represents an invalid type (e.g., where no type is available).
|
2196
2743
|
# :unexposed ::
|
2197
2744
|
# A type whose specific kind is not exposed via this
|
2198
2745
|
# interface.
|
@@ -2278,6 +2825,16 @@ module FFIGen::Clang
|
|
2278
2825
|
#
|
2279
2826
|
# :constant_array ::
|
2280
2827
|
#
|
2828
|
+
# :vector ::
|
2829
|
+
#
|
2830
|
+
# :incomplete_array ::
|
2831
|
+
#
|
2832
|
+
# :variable_array ::
|
2833
|
+
#
|
2834
|
+
# :dependent_sized_array ::
|
2835
|
+
#
|
2836
|
+
# :member_pointer ::
|
2837
|
+
#
|
2281
2838
|
#
|
2282
2839
|
# @method _enum_type_kind_
|
2283
2840
|
# @return [Symbol]
|
@@ -2325,15 +2882,74 @@ module FFIGen::Clang
|
|
2325
2882
|
:obj_c_object_pointer, 109,
|
2326
2883
|
:function_no_proto, 110,
|
2327
2884
|
:function_proto, 111,
|
2328
|
-
:constant_array, 112
|
2885
|
+
:constant_array, 112,
|
2886
|
+
:vector, 113,
|
2887
|
+
:incomplete_array, 114,
|
2888
|
+
:variable_array, 115,
|
2889
|
+
:dependent_sized_array, 116,
|
2890
|
+
:member_pointer, 117
|
2329
2891
|
]
|
2330
2892
|
|
2331
|
-
#
|
2893
|
+
# Describes the calling convention of a function type
|
2332
2894
|
#
|
2333
|
-
#
|
2334
|
-
#
|
2335
|
-
#
|
2336
|
-
# :
|
2895
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:calling_conv).</em>
|
2896
|
+
#
|
2897
|
+
# === Options:
|
2898
|
+
# :default ::
|
2899
|
+
#
|
2900
|
+
# :c ::
|
2901
|
+
#
|
2902
|
+
# :x86_std_call ::
|
2903
|
+
#
|
2904
|
+
# :x86_fast_call ::
|
2905
|
+
#
|
2906
|
+
# :x86_this_call ::
|
2907
|
+
#
|
2908
|
+
# :x86_pascal ::
|
2909
|
+
#
|
2910
|
+
# :aapcs ::
|
2911
|
+
#
|
2912
|
+
# :aapcs_vfp ::
|
2913
|
+
#
|
2914
|
+
# :pnacl_call ::
|
2915
|
+
#
|
2916
|
+
# :intel_ocl_bicc ::
|
2917
|
+
#
|
2918
|
+
# :x86_64_win64 ::
|
2919
|
+
#
|
2920
|
+
# :x86_64_sys_v ::
|
2921
|
+
#
|
2922
|
+
# :invalid ::
|
2923
|
+
#
|
2924
|
+
# :unexposed ::
|
2925
|
+
#
|
2926
|
+
#
|
2927
|
+
# @method _enum_calling_conv_
|
2928
|
+
# @return [Symbol]
|
2929
|
+
# @scope class
|
2930
|
+
enum :calling_conv, [
|
2931
|
+
:default, 0,
|
2932
|
+
:c, 1,
|
2933
|
+
:x86_std_call, 2,
|
2934
|
+
:x86_fast_call, 3,
|
2935
|
+
:x86_this_call, 4,
|
2936
|
+
:x86_pascal, 5,
|
2937
|
+
:aapcs, 6,
|
2938
|
+
:aapcs_vfp, 7,
|
2939
|
+
:pnacl_call, 8,
|
2940
|
+
:intel_ocl_bicc, 9,
|
2941
|
+
:x86_64_win64, 10,
|
2942
|
+
:x86_64_sys_v, 11,
|
2943
|
+
:invalid, 100,
|
2944
|
+
:unexposed, 200
|
2945
|
+
]
|
2946
|
+
|
2947
|
+
# The type of an element in the abstract syntax tree.
|
2948
|
+
#
|
2949
|
+
# = Fields:
|
2950
|
+
# :kind ::
|
2951
|
+
# (Symbol from _enum_type_kind_)
|
2952
|
+
# :data ::
|
2337
2953
|
# (Array<FFI::Pointer(*Void)>)
|
2338
2954
|
class Type < FFI::Struct
|
2339
2955
|
layout :kind, :type_kind,
|
@@ -2348,13 +2964,107 @@ module FFIGen::Clang
|
|
2348
2964
|
# @scope class
|
2349
2965
|
attach_function :get_cursor_type, :clang_getCursorType, [Cursor.by_value], Type.by_value
|
2350
2966
|
|
2967
|
+
# Pretty-print the underlying type using the rules of the
|
2968
|
+
# language of the translation unit from which it came.
|
2969
|
+
#
|
2970
|
+
# If the type is invalid, an empty string is returned.
|
2971
|
+
#
|
2972
|
+
# @method get_type_spelling(ct)
|
2973
|
+
# @param [Type] ct
|
2974
|
+
# @return [String]
|
2975
|
+
# @scope class
|
2976
|
+
attach_function :get_type_spelling, :clang_getTypeSpelling, [Type.by_value], String.by_value
|
2977
|
+
|
2978
|
+
# Retrieve the underlying type of a typedef declaration.
|
2979
|
+
#
|
2980
|
+
# If the cursor does not reference a typedef declaration, an invalid type is
|
2981
|
+
# returned.
|
2982
|
+
#
|
2983
|
+
# @method get_typedef_decl_underlying_type(c)
|
2984
|
+
# @param [Cursor] c
|
2985
|
+
# @return [Type]
|
2986
|
+
# @scope class
|
2987
|
+
attach_function :get_typedef_decl_underlying_type, :clang_getTypedefDeclUnderlyingType, [Cursor.by_value], Type.by_value
|
2988
|
+
|
2989
|
+
# Retrieve the integer type of an enum declaration.
|
2990
|
+
#
|
2991
|
+
# If the cursor does not reference an enum declaration, an invalid type is
|
2992
|
+
# returned.
|
2993
|
+
#
|
2994
|
+
# @method get_enum_decl_integer_type(c)
|
2995
|
+
# @param [Cursor] c
|
2996
|
+
# @return [Type]
|
2997
|
+
# @scope class
|
2998
|
+
attach_function :get_enum_decl_integer_type, :clang_getEnumDeclIntegerType, [Cursor.by_value], Type.by_value
|
2999
|
+
|
3000
|
+
# Retrieve the integer value of an enum constant declaration as a signed
|
3001
|
+
# long long.
|
3002
|
+
#
|
3003
|
+
# If the cursor does not reference an enum constant declaration, LLONG_MIN is returned.
|
3004
|
+
# Since this is also potentially a valid constant value, the kind of the cursor
|
3005
|
+
# must be verified before calling this function.
|
3006
|
+
#
|
3007
|
+
# @method get_enum_constant_decl_value(c)
|
3008
|
+
# @param [Cursor] c
|
3009
|
+
# @return [Integer]
|
3010
|
+
# @scope class
|
3011
|
+
attach_function :get_enum_constant_decl_value, :clang_getEnumConstantDeclValue, [Cursor.by_value], :long_long
|
3012
|
+
|
3013
|
+
# Retrieve the integer value of an enum constant declaration as an unsigned
|
3014
|
+
# long long.
|
3015
|
+
#
|
3016
|
+
# If the cursor does not reference an enum constant declaration, ULLONG_MAX is returned.
|
3017
|
+
# Since this is also potentially a valid constant value, the kind of the cursor
|
3018
|
+
# must be verified before calling this function.
|
3019
|
+
#
|
3020
|
+
# @method get_enum_constant_decl_unsigned_value(c)
|
3021
|
+
# @param [Cursor] c
|
3022
|
+
# @return [Integer]
|
3023
|
+
# @scope class
|
3024
|
+
attach_function :get_enum_constant_decl_unsigned_value, :clang_getEnumConstantDeclUnsignedValue, [Cursor.by_value], :ulong_long
|
3025
|
+
|
3026
|
+
# Retrieve the bit width of a bit field declaration as an integer.
|
3027
|
+
#
|
3028
|
+
# If a cursor that is not a bit field declaration is passed in, -1 is returned.
|
3029
|
+
#
|
3030
|
+
# @method get_field_decl_bit_width(c)
|
3031
|
+
# @param [Cursor] c
|
3032
|
+
# @return [Integer]
|
3033
|
+
# @scope class
|
3034
|
+
attach_function :get_field_decl_bit_width, :clang_getFieldDeclBitWidth, [Cursor.by_value], :int
|
3035
|
+
|
3036
|
+
# Retrieve the number of non-variadic arguments associated with a given
|
3037
|
+
# cursor.
|
3038
|
+
#
|
3039
|
+
# The number of arguments can be determined for calls as well as for
|
3040
|
+
# declarations of functions or methods. For other cursors -1 is returned.
|
3041
|
+
#
|
3042
|
+
# @method cursor_get_num_arguments(c)
|
3043
|
+
# @param [Cursor] c
|
3044
|
+
# @return [Integer]
|
3045
|
+
# @scope class
|
3046
|
+
attach_function :cursor_get_num_arguments, :clang_Cursor_getNumArguments, [Cursor.by_value], :int
|
3047
|
+
|
3048
|
+
# Retrieve the argument cursor of a function or method.
|
3049
|
+
#
|
3050
|
+
# The argument cursor can be determined for calls as well as for declarations
|
3051
|
+
# of functions or methods. For other cursors and for invalid indices, an
|
3052
|
+
# invalid cursor is returned.
|
3053
|
+
#
|
3054
|
+
# @method cursor_get_argument(c, i)
|
3055
|
+
# @param [Cursor] c
|
3056
|
+
# @param [Integer] i
|
3057
|
+
# @return [Cursor]
|
3058
|
+
# @scope class
|
3059
|
+
attach_function :cursor_get_argument, :clang_Cursor_getArgument, [Cursor.by_value, :uint], Cursor.by_value
|
3060
|
+
|
2351
3061
|
# Determine whether two CXTypes represent the same type.
|
2352
3062
|
#
|
2353
3063
|
# @method equal_types(a, b)
|
2354
3064
|
# @param [Type] a
|
2355
3065
|
# @param [Type] b
|
2356
|
-
# @return [Integer] non-zero if the CXTypes represent the same type and
|
2357
|
-
#
|
3066
|
+
# @return [Integer] non-zero if the CXTypes represent the same type and
|
3067
|
+
# zero otherwise.
|
2358
3068
|
# @scope class
|
2359
3069
|
attach_function :equal_types, :clang_equalTypes, [Type.by_value, Type.by_value], :uint
|
2360
3070
|
|
@@ -2371,8 +3081,9 @@ module FFIGen::Clang
|
|
2371
3081
|
# @scope class
|
2372
3082
|
attach_function :get_canonical_type, :clang_getCanonicalType, [Type.by_value], Type.by_value
|
2373
3083
|
|
2374
|
-
#
|
2375
|
-
#
|
3084
|
+
# Determine whether a CXType has the "const" qualifier set,
|
3085
|
+
# without looking through typedefs that may have added "const" at a
|
3086
|
+
# different level.
|
2376
3087
|
#
|
2377
3088
|
# @method is_const_qualified_type(t)
|
2378
3089
|
# @param [Type] t
|
@@ -2380,8 +3091,9 @@ module FFIGen::Clang
|
|
2380
3091
|
# @scope class
|
2381
3092
|
attach_function :is_const_qualified_type, :clang_isConstQualifiedType, [Type.by_value], :uint
|
2382
3093
|
|
2383
|
-
#
|
2384
|
-
#
|
3094
|
+
# Determine whether a CXType has the "volatile" qualifier set,
|
3095
|
+
# without looking through typedefs that may have added "volatile" at
|
3096
|
+
# a different level.
|
2385
3097
|
#
|
2386
3098
|
# @method is_volatile_qualified_type(t)
|
2387
3099
|
# @param [Type] t
|
@@ -2389,8 +3101,9 @@ module FFIGen::Clang
|
|
2389
3101
|
# @scope class
|
2390
3102
|
attach_function :is_volatile_qualified_type, :clang_isVolatileQualifiedType, [Type.by_value], :uint
|
2391
3103
|
|
2392
|
-
#
|
2393
|
-
#
|
3104
|
+
# Determine whether a CXType has the "restrict" qualifier set,
|
3105
|
+
# without looking through typedefs that may have added "restrict" at a
|
3106
|
+
# different level.
|
2394
3107
|
#
|
2395
3108
|
# @method is_restrict_qualified_type(t)
|
2396
3109
|
# @param [Type] t
|
@@ -2430,7 +3143,19 @@ module FFIGen::Clang
|
|
2430
3143
|
# @scope class
|
2431
3144
|
attach_function :get_type_kind_spelling, :clang_getTypeKindSpelling, [:type_kind], String.by_value
|
2432
3145
|
|
2433
|
-
# Retrieve the
|
3146
|
+
# Retrieve the calling convention associated with a function type.
|
3147
|
+
#
|
3148
|
+
# If a non-function type is passed in, CXCallingConv_Invalid is returned.
|
3149
|
+
#
|
3150
|
+
# @method get_function_type_calling_conv(t)
|
3151
|
+
# @param [Type] t
|
3152
|
+
# @return [Symbol from _enum_calling_conv_]
|
3153
|
+
# @scope class
|
3154
|
+
attach_function :get_function_type_calling_conv, :clang_getFunctionTypeCallingConv, [Type.by_value], :calling_conv
|
3155
|
+
|
3156
|
+
# Retrieve the return type associated with a function type.
|
3157
|
+
#
|
3158
|
+
# If a non-function type is passed in, an invalid type is returned.
|
2434
3159
|
#
|
2435
3160
|
# @method get_result_type(t)
|
2436
3161
|
# @param [Type] t
|
@@ -2438,8 +3163,40 @@ module FFIGen::Clang
|
|
2438
3163
|
# @scope class
|
2439
3164
|
attach_function :get_result_type, :clang_getResultType, [Type.by_value], Type.by_value
|
2440
3165
|
|
2441
|
-
# Retrieve the
|
2442
|
-
#
|
3166
|
+
# Retrieve the number of non-variadic parameters associated with a
|
3167
|
+
# function type.
|
3168
|
+
#
|
3169
|
+
# If a non-function type is passed in, -1 is returned.
|
3170
|
+
#
|
3171
|
+
# @method get_num_arg_types(t)
|
3172
|
+
# @param [Type] t
|
3173
|
+
# @return [Integer]
|
3174
|
+
# @scope class
|
3175
|
+
attach_function :get_num_arg_types, :clang_getNumArgTypes, [Type.by_value], :int
|
3176
|
+
|
3177
|
+
# Retrieve the type of a parameter of a function type.
|
3178
|
+
#
|
3179
|
+
# If a non-function type is passed in or the function does not have enough
|
3180
|
+
# parameters, an invalid type is returned.
|
3181
|
+
#
|
3182
|
+
# @method get_arg_type(t, i)
|
3183
|
+
# @param [Type] t
|
3184
|
+
# @param [Integer] i
|
3185
|
+
# @return [Type]
|
3186
|
+
# @scope class
|
3187
|
+
attach_function :get_arg_type, :clang_getArgType, [Type.by_value, :uint], Type.by_value
|
3188
|
+
|
3189
|
+
# Return 1 if the CXType is a variadic function type, and 0 otherwise.
|
3190
|
+
#
|
3191
|
+
# @method is_function_type_variadic(t)
|
3192
|
+
# @param [Type] t
|
3193
|
+
# @return [Integer]
|
3194
|
+
# @scope class
|
3195
|
+
attach_function :is_function_type_variadic, :clang_isFunctionTypeVariadic, [Type.by_value], :uint
|
3196
|
+
|
3197
|
+
# Retrieve the return type associated with a given cursor.
|
3198
|
+
#
|
3199
|
+
# This only returns a valid type if the cursor refers to a function or method.
|
2443
3200
|
#
|
2444
3201
|
# @method get_cursor_result_type(c)
|
2445
3202
|
# @param [Cursor] c
|
@@ -2456,6 +3213,28 @@ module FFIGen::Clang
|
|
2456
3213
|
# @scope class
|
2457
3214
|
attach_function :is_pod_type, :clang_isPODType, [Type.by_value], :uint
|
2458
3215
|
|
3216
|
+
# Return the element type of an array, complex, or vector type.
|
3217
|
+
#
|
3218
|
+
# If a type is passed in that is not an array, complex, or vector type,
|
3219
|
+
# an invalid type is returned.
|
3220
|
+
#
|
3221
|
+
# @method get_element_type(t)
|
3222
|
+
# @param [Type] t
|
3223
|
+
# @return [Type]
|
3224
|
+
# @scope class
|
3225
|
+
attach_function :get_element_type, :clang_getElementType, [Type.by_value], Type.by_value
|
3226
|
+
|
3227
|
+
# Return the number of elements of an array or vector type.
|
3228
|
+
#
|
3229
|
+
# If a type is passed in that is not an array or vector type,
|
3230
|
+
# -1 is returned.
|
3231
|
+
#
|
3232
|
+
# @method get_num_elements(t)
|
3233
|
+
# @param [Type] t
|
3234
|
+
# @return [Integer]
|
3235
|
+
# @scope class
|
3236
|
+
attach_function :get_num_elements, :clang_getNumElements, [Type.by_value], :long_long
|
3237
|
+
|
2459
3238
|
# Return the element type of an array type.
|
2460
3239
|
#
|
2461
3240
|
# If a non-array type is passed in, an invalid type is returned.
|
@@ -2466,7 +3245,7 @@ module FFIGen::Clang
|
|
2466
3245
|
# @scope class
|
2467
3246
|
attach_function :get_array_element_type, :clang_getArrayElementType, [Type.by_value], Type.by_value
|
2468
3247
|
|
2469
|
-
# Return the
|
3248
|
+
# Return the array size of a constant array.
|
2470
3249
|
#
|
2471
3250
|
# If a non-array type is passed in, -1 is returned.
|
2472
3251
|
#
|
@@ -2476,6 +3255,164 @@ module FFIGen::Clang
|
|
2476
3255
|
# @scope class
|
2477
3256
|
attach_function :get_array_size, :clang_getArraySize, [Type.by_value], :long_long
|
2478
3257
|
|
3258
|
+
# List the possible error codes for \c clang_Type_getSizeOf,
|
3259
|
+
# \c clang_Type_getAlignOf, \c clang_Type_getOffsetOf and
|
3260
|
+
# \c clang_Cursor_getOffsetOf.
|
3261
|
+
#
|
3262
|
+
# A value of this enumeration type can be returned if the target type is not
|
3263
|
+
# a valid argument to sizeof, alignof or offsetof.
|
3264
|
+
#
|
3265
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:type_layout_error).</em>
|
3266
|
+
#
|
3267
|
+
# === Options:
|
3268
|
+
# :invalid ::
|
3269
|
+
# Type is of kind CXType_Invalid.
|
3270
|
+
# :incomplete ::
|
3271
|
+
# The type is an incomplete Type.
|
3272
|
+
# :dependent ::
|
3273
|
+
# The type is a dependent Type.
|
3274
|
+
# :not_constant_size ::
|
3275
|
+
# The type is not a constant size type.
|
3276
|
+
# :invalid_field_name ::
|
3277
|
+
# The Field name is not valid for this record.
|
3278
|
+
#
|
3279
|
+
# @method _enum_type_layout_error_
|
3280
|
+
# @return [Symbol]
|
3281
|
+
# @scope class
|
3282
|
+
enum :type_layout_error, [
|
3283
|
+
:invalid, -1,
|
3284
|
+
:incomplete, -2,
|
3285
|
+
:dependent, -3,
|
3286
|
+
:not_constant_size, -4,
|
3287
|
+
:invalid_field_name, -5
|
3288
|
+
]
|
3289
|
+
|
3290
|
+
# Return the alignment of a type in bytes as per C++(expr.alignof)
|
3291
|
+
# standard.
|
3292
|
+
#
|
3293
|
+
# If the type declaration is invalid, CXTypeLayoutError_Invalid is returned.
|
3294
|
+
# If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete
|
3295
|
+
# is returned.
|
3296
|
+
# If the type declaration is a dependent type, CXTypeLayoutError_Dependent is
|
3297
|
+
# returned.
|
3298
|
+
# If the type declaration is not a constant size type,
|
3299
|
+
# CXTypeLayoutError_NotConstantSize is returned.
|
3300
|
+
#
|
3301
|
+
# @method type_get_align_of(t)
|
3302
|
+
# @param [Type] t
|
3303
|
+
# @return [Integer]
|
3304
|
+
# @scope class
|
3305
|
+
attach_function :type_get_align_of, :clang_Type_getAlignOf, [Type.by_value], :long_long
|
3306
|
+
|
3307
|
+
# Return the class type of an member pointer type.
|
3308
|
+
#
|
3309
|
+
# If a non-member-pointer type is passed in, an invalid type is returned.
|
3310
|
+
#
|
3311
|
+
# @method type_get_class_type(t)
|
3312
|
+
# @param [Type] t
|
3313
|
+
# @return [Type]
|
3314
|
+
# @scope class
|
3315
|
+
attach_function :type_get_class_type, :clang_Type_getClassType, [Type.by_value], Type.by_value
|
3316
|
+
|
3317
|
+
# Return the size of a type in bytes as per C++(expr.sizeof) standard.
|
3318
|
+
#
|
3319
|
+
# If the type declaration is invalid, CXTypeLayoutError_Invalid is returned.
|
3320
|
+
# If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete
|
3321
|
+
# is returned.
|
3322
|
+
# If the type declaration is a dependent type, CXTypeLayoutError_Dependent is
|
3323
|
+
# returned.
|
3324
|
+
#
|
3325
|
+
# @method type_get_size_of(t)
|
3326
|
+
# @param [Type] t
|
3327
|
+
# @return [Integer]
|
3328
|
+
# @scope class
|
3329
|
+
attach_function :type_get_size_of, :clang_Type_getSizeOf, [Type.by_value], :long_long
|
3330
|
+
|
3331
|
+
# Return the offset of a field named S in a record of type T in bits
|
3332
|
+
# as it would be returned by __offsetof__ as per C++11(18.2p4)
|
3333
|
+
#
|
3334
|
+
# If the cursor is not a record field declaration, CXTypeLayoutError_Invalid
|
3335
|
+
# is returned.
|
3336
|
+
# If the field's type declaration is an incomplete type,
|
3337
|
+
# CXTypeLayoutError_Incomplete is returned.
|
3338
|
+
# If the field's type declaration is a dependent type,
|
3339
|
+
# CXTypeLayoutError_Dependent is returned.
|
3340
|
+
# If the field's name S is not found,
|
3341
|
+
# CXTypeLayoutError_InvalidFieldName is returned.
|
3342
|
+
#
|
3343
|
+
# @method type_get_offset_of(t, s)
|
3344
|
+
# @param [Type] t
|
3345
|
+
# @param [String] s
|
3346
|
+
# @return [Integer]
|
3347
|
+
# @scope class
|
3348
|
+
attach_function :type_get_offset_of, :clang_Type_getOffsetOf, [Type.by_value, :string], :long_long
|
3349
|
+
|
3350
|
+
# (Not documented)
|
3351
|
+
#
|
3352
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:ref_qualifier_kind).</em>
|
3353
|
+
#
|
3354
|
+
# === Options:
|
3355
|
+
# :none ::
|
3356
|
+
# No ref-qualifier was provided.
|
3357
|
+
# :l_value ::
|
3358
|
+
# An lvalue ref-qualifier was provided (\c &).
|
3359
|
+
# :r_value ::
|
3360
|
+
# An rvalue ref-qualifier was provided (\c &&).
|
3361
|
+
#
|
3362
|
+
# @method _enum_ref_qualifier_kind_
|
3363
|
+
# @return [Symbol]
|
3364
|
+
# @scope class
|
3365
|
+
enum :ref_qualifier_kind, [
|
3366
|
+
:none, 0,
|
3367
|
+
:l_value, 1,
|
3368
|
+
:r_value, 2
|
3369
|
+
]
|
3370
|
+
|
3371
|
+
# Returns the number of template arguments for given class template
|
3372
|
+
# specialization, or -1 if type \c T is not a class template specialization.
|
3373
|
+
#
|
3374
|
+
# Variadic argument packs count as only one argument, and can not be inspected
|
3375
|
+
# further.
|
3376
|
+
#
|
3377
|
+
# @method type_get_num_template_arguments(t)
|
3378
|
+
# @param [Type] t
|
3379
|
+
# @return [Integer]
|
3380
|
+
# @scope class
|
3381
|
+
attach_function :type_get_num_template_arguments, :clang_Type_getNumTemplateArguments, [Type.by_value], :int
|
3382
|
+
|
3383
|
+
# Returns the type template argument of a template class specialization
|
3384
|
+
# at given index.
|
3385
|
+
#
|
3386
|
+
# This function only returns template type arguments and does not handle
|
3387
|
+
# template template arguments or variadic packs.
|
3388
|
+
#
|
3389
|
+
# @method type_get_template_argument_as_type(t, i)
|
3390
|
+
# @param [Type] t
|
3391
|
+
# @param [Integer] i
|
3392
|
+
# @return [Type]
|
3393
|
+
# @scope class
|
3394
|
+
attach_function :type_get_template_argument_as_type, :clang_Type_getTemplateArgumentAsType, [Type.by_value, :uint], Type.by_value
|
3395
|
+
|
3396
|
+
# Retrieve the ref-qualifier kind of a function or method.
|
3397
|
+
#
|
3398
|
+
# The ref-qualifier is returned for C++ functions or methods. For other types
|
3399
|
+
# or non-C++ declarations, CXRefQualifier_None is returned.
|
3400
|
+
#
|
3401
|
+
# @method type_get_cxx_ref_qualifier(t)
|
3402
|
+
# @param [Type] t
|
3403
|
+
# @return [Symbol from _enum_ref_qualifier_kind_]
|
3404
|
+
# @scope class
|
3405
|
+
attach_function :type_get_cxx_ref_qualifier, :clang_Type_getCXXRefQualifier, [Type.by_value], :ref_qualifier_kind
|
3406
|
+
|
3407
|
+
# Returns non-zero if the cursor specifies a Record member that is a
|
3408
|
+
# bitfield.
|
3409
|
+
#
|
3410
|
+
# @method cursor_is_bit_field(c)
|
3411
|
+
# @param [Cursor] c
|
3412
|
+
# @return [Integer]
|
3413
|
+
# @scope class
|
3414
|
+
attach_function :cursor_is_bit_field, :clang_Cursor_isBitField, [Cursor.by_value], :uint
|
3415
|
+
|
2479
3416
|
# Returns 1 if the base class specified by the cursor with kind
|
2480
3417
|
# CX_CXXBaseSpecifier is virtual.
|
2481
3418
|
#
|
@@ -2491,28 +3428,30 @@ module FFIGen::Clang
|
|
2491
3428
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:cxx_access_specifier).</em>
|
2492
3429
|
#
|
2493
3430
|
# === Options:
|
2494
|
-
# :
|
3431
|
+
# :invalid_access_specifier ::
|
2495
3432
|
#
|
2496
|
-
# :
|
3433
|
+
# :public ::
|
2497
3434
|
#
|
2498
|
-
# :
|
3435
|
+
# :protected ::
|
2499
3436
|
#
|
2500
|
-
# :
|
3437
|
+
# :private ::
|
2501
3438
|
#
|
2502
3439
|
#
|
2503
3440
|
# @method _enum_cxx_access_specifier_
|
2504
3441
|
# @return [Symbol]
|
2505
3442
|
# @scope class
|
2506
3443
|
enum :cxx_access_specifier, [
|
2507
|
-
:
|
2508
|
-
:
|
2509
|
-
:
|
2510
|
-
:
|
3444
|
+
:invalid_access_specifier, 0,
|
3445
|
+
:public, 1,
|
3446
|
+
:protected, 2,
|
3447
|
+
:private, 3
|
2511
3448
|
]
|
2512
3449
|
|
2513
|
-
# Returns the access control level for the
|
2514
|
-
#
|
2515
|
-
#
|
3450
|
+
# Returns the access control level for the referenced object.
|
3451
|
+
#
|
3452
|
+
# If the cursor refers to a C++ declaration, its access control level within its
|
3453
|
+
# parent scope is returned. Otherwise, if the cursor refers to a base specifier or
|
3454
|
+
# access specifier, the specifier itself is returned.
|
2516
3455
|
#
|
2517
3456
|
# @method get_cxx_access_specifier(cursor)
|
2518
3457
|
# @param [Cursor] cursor
|
@@ -2562,7 +3501,7 @@ module FFIGen::Clang
|
|
2562
3501
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:child_visit_result).</em>
|
2563
3502
|
#
|
2564
3503
|
# === Options:
|
2565
|
-
# :
|
3504
|
+
# :break_ ::
|
2566
3505
|
# Terminates the cursor traversal.
|
2567
3506
|
# :continue ::
|
2568
3507
|
# Continues the cursor traversal with the next sibling of
|
@@ -2575,9 +3514,9 @@ module FFIGen::Clang
|
|
2575
3514
|
# @return [Symbol]
|
2576
3515
|
# @scope class
|
2577
3516
|
enum :child_visit_result, [
|
2578
|
-
:
|
2579
|
-
:continue,
|
2580
|
-
:recurse
|
3517
|
+
:break_, 0,
|
3518
|
+
:continue, 1,
|
3519
|
+
:recurse, 2
|
2581
3520
|
]
|
2582
3521
|
|
2583
3522
|
# Visitor invoked for each cursor found by a traversal.
|
@@ -2593,13 +3532,14 @@ module FFIGen::Clang
|
|
2593
3532
|
#
|
2594
3533
|
# <em>This entry is only for documentation and no real method.</em>
|
2595
3534
|
#
|
2596
|
-
# @method _callback_cursor_visitor_(cursor, parent, client_data)
|
3535
|
+
# @method _callback_cursor_visitor_(enum cx_child_visit_result, cursor, parent, client_data)
|
3536
|
+
# @param [Symbol from _enum_child_visit_result_] enum cx_child_visit_result
|
2597
3537
|
# @param [Cursor] cursor
|
2598
3538
|
# @param [Cursor] parent
|
2599
3539
|
# @param [FFI::Pointer(ClientData)] client_data
|
2600
3540
|
# @return [Symbol from _enum_child_visit_result_]
|
2601
3541
|
# @scope class
|
2602
|
-
callback :cursor_visitor, [Cursor.by_value, Cursor.by_value, :pointer], :child_visit_result
|
3542
|
+
callback :cursor_visitor, [:child_visit_result, Cursor.by_value, Cursor.by_value, :pointer], :child_visit_result
|
2603
3543
|
|
2604
3544
|
# Visit the children of a particular cursor.
|
2605
3545
|
#
|
@@ -2700,6 +3640,20 @@ module FFIGen::Clang
|
|
2700
3640
|
# @scope class
|
2701
3641
|
attach_function :get_cursor_spelling, :clang_getCursorSpelling, [Cursor.by_value], String.by_value
|
2702
3642
|
|
3643
|
+
# Retrieve a range for a piece that forms the cursors spelling name.
|
3644
|
+
# Most of the times there is only one range for the complete spelling but for
|
3645
|
+
# Objective-C methods and Objective-C message expressions, there are multiple
|
3646
|
+
# pieces for each selector identifier.
|
3647
|
+
#
|
3648
|
+
# @method cursor_get_spelling_name_range(cursor, piece_index, options)
|
3649
|
+
# @param [Cursor] cursor
|
3650
|
+
# @param [Integer] piece_index the index of the spelling name piece. If this is greater
|
3651
|
+
# than the actual number of pieces, it will return a NULL (invalid) range.
|
3652
|
+
# @param [Integer] options Reserved.
|
3653
|
+
# @return [SourceRange]
|
3654
|
+
# @scope class
|
3655
|
+
attach_function :cursor_get_spelling_name_range, :clang_Cursor_getSpellingNameRange, [Cursor.by_value, :uint, :uint], SourceRange.by_value
|
3656
|
+
|
2703
3657
|
# Retrieve the display name for the entity referenced by this cursor.
|
2704
3658
|
#
|
2705
3659
|
# The display name contains extra information that helps identify the cursor,
|
@@ -2728,32 +3682,32 @@ module FFIGen::Clang
|
|
2728
3682
|
# @scope class
|
2729
3683
|
attach_function :get_cursor_referenced, :clang_getCursorReferenced, [Cursor.by_value], Cursor.by_value
|
2730
3684
|
|
2731
|
-
#
|
2732
|
-
#
|
2733
|
-
#
|
2734
|
-
#
|
2735
|
-
#
|
2736
|
-
#
|
2737
|
-
#
|
2738
|
-
#
|
2739
|
-
#
|
2740
|
-
#
|
2741
|
-
#
|
2742
|
-
#
|
2743
|
-
#
|
2744
|
-
#
|
2745
|
-
#
|
2746
|
-
#
|
2747
|
-
#
|
2748
|
-
#
|
2749
|
-
#
|
2750
|
-
#
|
2751
|
-
#
|
2752
|
-
#
|
2753
|
-
#
|
2754
|
-
#
|
2755
|
-
#
|
2756
|
-
#
|
3685
|
+
# For a cursor that is either a reference to or a declaration
|
3686
|
+
# of some entity, retrieve a cursor that describes the definition of
|
3687
|
+
# that entity.
|
3688
|
+
#
|
3689
|
+
# Some entities can be declared multiple times within a translation
|
3690
|
+
# unit, but only one of those declarations can also be a
|
3691
|
+
# definition. For example, given:
|
3692
|
+
#
|
3693
|
+
# \code
|
3694
|
+
# int f(int, int);
|
3695
|
+
# int g(int x, int y) { return f(x, y); }
|
3696
|
+
# int f(int a, int b) { return a + b; }
|
3697
|
+
# int f(int, int);
|
3698
|
+
# \endcode
|
3699
|
+
#
|
3700
|
+
# there are three declarations of the function "f", but only the
|
3701
|
+
# second one is a definition. The clang_getCursorDefinition()
|
3702
|
+
# function will take any cursor pointing to a declaration of "f"
|
3703
|
+
# (the first or fourth lines of the example) or a cursor referenced
|
3704
|
+
# that uses "f" (the call to "f' inside "g") and will return a
|
3705
|
+
# declaration cursor pointing to the definition (the second "f"
|
3706
|
+
# declaration).
|
3707
|
+
#
|
3708
|
+
# If given a cursor for which there is no corresponding definition,
|
3709
|
+
# e.g., because there is no definition of that entity within this
|
3710
|
+
# translation unit, returns a NULL cursor.
|
2757
3711
|
#
|
2758
3712
|
# @method get_cursor_definition(cursor)
|
2759
3713
|
# @param [Cursor] cursor
|
@@ -2797,56 +3751,346 @@ module FFIGen::Clang
|
|
2797
3751
|
# @scope class
|
2798
3752
|
attach_function :get_canonical_cursor, :clang_getCanonicalCursor, [Cursor.by_value], Cursor.by_value
|
2799
3753
|
|
2800
|
-
#
|
2801
|
-
#
|
3754
|
+
# If the cursor points to a selector identifier in an Objective-C
|
3755
|
+
# method or message expression, this returns the selector index.
|
2802
3756
|
#
|
2803
|
-
#
|
3757
|
+
# After getting a cursor with #clang_getCursor, this can be called to
|
3758
|
+
# determine if the location points to a selector identifier.
|
3759
|
+
#
|
3760
|
+
# @method cursor_get_obj_c_selector_index(cursor)
|
3761
|
+
# @param [Cursor] cursor
|
3762
|
+
# @return [Integer] The selector index if the cursor is an Objective-C method or message
|
3763
|
+
# expression and the cursor is pointing to a selector identifier, or -1
|
3764
|
+
# otherwise.
|
3765
|
+
# @scope class
|
3766
|
+
attach_function :cursor_get_obj_c_selector_index, :clang_Cursor_getObjCSelectorIndex, [Cursor.by_value], :int
|
3767
|
+
|
3768
|
+
# Given a cursor pointing to a C++ method call or an Objective-C
|
3769
|
+
# message, returns non-zero if the method/message is "dynamic", meaning:
|
3770
|
+
#
|
3771
|
+
# For a C++ method: the call is virtual.
|
3772
|
+
# For an Objective-C message: the receiver is an object instance, not 'super'
|
3773
|
+
# or a specific class.
|
3774
|
+
#
|
3775
|
+
# If the method/message is "static" or the cursor does not point to a
|
3776
|
+
# method/message, it will return zero.
|
3777
|
+
#
|
3778
|
+
# @method cursor_is_dynamic_call(c)
|
2804
3779
|
# @param [Cursor] c
|
2805
3780
|
# @return [Integer]
|
2806
3781
|
# @scope class
|
2807
|
-
attach_function :
|
3782
|
+
attach_function :cursor_is_dynamic_call, :clang_Cursor_isDynamicCall, [Cursor.by_value], :int
|
2808
3783
|
|
2809
|
-
#
|
2810
|
-
#
|
2811
|
-
# one of the base classes.
|
3784
|
+
# Given a cursor pointing to an Objective-C message, returns the CXType
|
3785
|
+
# of the receiver.
|
2812
3786
|
#
|
2813
|
-
# @method
|
3787
|
+
# @method cursor_get_receiver_type(c)
|
2814
3788
|
# @param [Cursor] c
|
2815
|
-
# @return [
|
3789
|
+
# @return [Type]
|
2816
3790
|
# @scope class
|
2817
|
-
attach_function :
|
3791
|
+
attach_function :cursor_get_receiver_type, :clang_Cursor_getReceiverType, [Cursor.by_value], Type.by_value
|
2818
3792
|
|
2819
|
-
#
|
2820
|
-
# the cursor kind of the specializations would be generated by instantiating
|
2821
|
-
# the template.
|
3793
|
+
# Property attributes for a \c CXCursor_ObjCPropertyDecl.
|
2822
3794
|
#
|
2823
|
-
# This
|
2824
|
-
# class template, or class template partial specialization is stored in the
|
2825
|
-
# cursor. For example, it can describe whether a class template cursor is
|
2826
|
-
# declared with "struct", "class" or "union".
|
3795
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:obj_c_property_attr_kind).</em>
|
2827
3796
|
#
|
2828
|
-
#
|
2829
|
-
#
|
2830
|
-
#
|
2831
|
-
#
|
2832
|
-
#
|
2833
|
-
#
|
3797
|
+
# === Options:
|
3798
|
+
# :noattr ::
|
3799
|
+
#
|
3800
|
+
# :readonly ::
|
3801
|
+
#
|
3802
|
+
# :getter ::
|
3803
|
+
#
|
3804
|
+
# :assign ::
|
3805
|
+
#
|
3806
|
+
# :readwrite ::
|
3807
|
+
#
|
3808
|
+
# :retain ::
|
3809
|
+
#
|
3810
|
+
# :copy ::
|
3811
|
+
#
|
3812
|
+
# :nonatomic ::
|
3813
|
+
#
|
3814
|
+
# :setter ::
|
3815
|
+
#
|
3816
|
+
# :atomic ::
|
3817
|
+
#
|
3818
|
+
# :weak ::
|
3819
|
+
#
|
3820
|
+
# :strong ::
|
3821
|
+
#
|
3822
|
+
# :unsafe_unretained ::
|
3823
|
+
#
|
3824
|
+
#
|
3825
|
+
# @method _enum_obj_c_property_attr_kind_
|
3826
|
+
# @return [Symbol]
|
2834
3827
|
# @scope class
|
2835
|
-
|
3828
|
+
enum :obj_c_property_attr_kind, [
|
3829
|
+
:noattr, 0,
|
3830
|
+
:readonly, 1,
|
3831
|
+
:getter, 2,
|
3832
|
+
:assign, 4,
|
3833
|
+
:readwrite, 8,
|
3834
|
+
:retain, 16,
|
3835
|
+
:copy, 32,
|
3836
|
+
:nonatomic, 64,
|
3837
|
+
:setter, 128,
|
3838
|
+
:atomic, 256,
|
3839
|
+
:weak, 512,
|
3840
|
+
:strong, 1024,
|
3841
|
+
:unsafe_unretained, 2048
|
3842
|
+
]
|
2836
3843
|
|
2837
|
-
# Given a cursor that
|
2838
|
-
#
|
2839
|
-
#
|
3844
|
+
# Given a cursor that represents a property declaration, return the
|
3845
|
+
# associated property attributes. The bits are formed from
|
3846
|
+
# \c CXObjCPropertyAttrKind.
|
2840
3847
|
#
|
2841
|
-
#
|
2842
|
-
#
|
2843
|
-
#
|
2844
|
-
#
|
2845
|
-
#
|
2846
|
-
|
2847
|
-
|
2848
|
-
#
|
2849
|
-
#
|
3848
|
+
# @method cursor_get_obj_c_property_attributes(c, reserved)
|
3849
|
+
# @param [Cursor] c
|
3850
|
+
# @param [Integer] reserved Reserved for future use, pass 0.
|
3851
|
+
# @return [Integer]
|
3852
|
+
# @scope class
|
3853
|
+
attach_function :cursor_get_obj_c_property_attributes, :clang_Cursor_getObjCPropertyAttributes, [Cursor.by_value, :uint], :uint
|
3854
|
+
|
3855
|
+
# 'Qualifiers' written next to the return and parameter types in
|
3856
|
+
# Objective-C method declarations.
|
3857
|
+
#
|
3858
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:obj_c_decl_qualifier_kind).</em>
|
3859
|
+
#
|
3860
|
+
# === Options:
|
3861
|
+
# :none ::
|
3862
|
+
#
|
3863
|
+
# :in_ ::
|
3864
|
+
#
|
3865
|
+
# :inout ::
|
3866
|
+
#
|
3867
|
+
# :out ::
|
3868
|
+
#
|
3869
|
+
# :bycopy ::
|
3870
|
+
#
|
3871
|
+
# :byref ::
|
3872
|
+
#
|
3873
|
+
# :oneway ::
|
3874
|
+
#
|
3875
|
+
#
|
3876
|
+
# @method _enum_obj_c_decl_qualifier_kind_
|
3877
|
+
# @return [Symbol]
|
3878
|
+
# @scope class
|
3879
|
+
enum :obj_c_decl_qualifier_kind, [
|
3880
|
+
:none, 0,
|
3881
|
+
:in_, 1,
|
3882
|
+
:inout, 2,
|
3883
|
+
:out, 4,
|
3884
|
+
:bycopy, 8,
|
3885
|
+
:byref, 16,
|
3886
|
+
:oneway, 32
|
3887
|
+
]
|
3888
|
+
|
3889
|
+
# Given a cursor that represents an Objective-C method or parameter
|
3890
|
+
# declaration, return the associated Objective-C qualifiers for the return
|
3891
|
+
# type or the parameter respectively. The bits are formed from
|
3892
|
+
# CXObjCDeclQualifierKind.
|
3893
|
+
#
|
3894
|
+
# @method cursor_get_obj_c_decl_qualifiers(c)
|
3895
|
+
# @param [Cursor] c
|
3896
|
+
# @return [Integer]
|
3897
|
+
# @scope class
|
3898
|
+
attach_function :cursor_get_obj_c_decl_qualifiers, :clang_Cursor_getObjCDeclQualifiers, [Cursor.by_value], :uint
|
3899
|
+
|
3900
|
+
# Given a cursor that represents an Objective-C method or property
|
3901
|
+
# declaration, return non-zero if the declaration was affected by "@optional".
|
3902
|
+
# Returns zero if the cursor is not such a declaration or it is "@required".
|
3903
|
+
#
|
3904
|
+
# @method cursor_is_obj_c_optional(c)
|
3905
|
+
# @param [Cursor] c
|
3906
|
+
# @return [Integer]
|
3907
|
+
# @scope class
|
3908
|
+
attach_function :cursor_is_obj_c_optional, :clang_Cursor_isObjCOptional, [Cursor.by_value], :uint
|
3909
|
+
|
3910
|
+
# Returns non-zero if the given cursor is a variadic function or method.
|
3911
|
+
#
|
3912
|
+
# @method cursor_is_variadic(c)
|
3913
|
+
# @param [Cursor] c
|
3914
|
+
# @return [Integer]
|
3915
|
+
# @scope class
|
3916
|
+
attach_function :cursor_is_variadic, :clang_Cursor_isVariadic, [Cursor.by_value], :uint
|
3917
|
+
|
3918
|
+
# Given a cursor that represents a declaration, return the associated
|
3919
|
+
# comment's source range. The range may include multiple consecutive comments
|
3920
|
+
# with whitespace in between.
|
3921
|
+
#
|
3922
|
+
# @method cursor_get_comment_range(c)
|
3923
|
+
# @param [Cursor] c
|
3924
|
+
# @return [SourceRange]
|
3925
|
+
# @scope class
|
3926
|
+
attach_function :cursor_get_comment_range, :clang_Cursor_getCommentRange, [Cursor.by_value], SourceRange.by_value
|
3927
|
+
|
3928
|
+
# Given a cursor that represents a declaration, return the associated
|
3929
|
+
# comment text, including comment markers.
|
3930
|
+
#
|
3931
|
+
# @method cursor_get_raw_comment_text(c)
|
3932
|
+
# @param [Cursor] c
|
3933
|
+
# @return [String]
|
3934
|
+
# @scope class
|
3935
|
+
attach_function :cursor_get_raw_comment_text, :clang_Cursor_getRawCommentText, [Cursor.by_value], String.by_value
|
3936
|
+
|
3937
|
+
# Given a cursor that represents a documentable entity (e.g.,
|
3938
|
+
# declaration), return the associated \paragraph; otherwise return the
|
3939
|
+
# first paragraph.
|
3940
|
+
#
|
3941
|
+
# @method cursor_get_brief_comment_text(c)
|
3942
|
+
# @param [Cursor] c
|
3943
|
+
# @return [String]
|
3944
|
+
# @scope class
|
3945
|
+
attach_function :cursor_get_brief_comment_text, :clang_Cursor_getBriefCommentText, [Cursor.by_value], String.by_value
|
3946
|
+
|
3947
|
+
# Given a CXCursor_ModuleImportDecl cursor, return the associated module.
|
3948
|
+
#
|
3949
|
+
# @method cursor_get_module(c)
|
3950
|
+
# @param [Cursor] c
|
3951
|
+
# @return [FFI::Pointer(Module)]
|
3952
|
+
# @scope class
|
3953
|
+
attach_function :cursor_get_module, :clang_Cursor_getModule, [Cursor.by_value], :pointer
|
3954
|
+
|
3955
|
+
# Given a CXFile header file, return the module that contains it, if one
|
3956
|
+
# exists.
|
3957
|
+
#
|
3958
|
+
# @method get_module_for_file(translation_unit_impl, file)
|
3959
|
+
# @param [TranslationUnitImpl] translation_unit_impl
|
3960
|
+
# @param [FFI::Pointer(File)] file
|
3961
|
+
# @return [FFI::Pointer(Module)]
|
3962
|
+
# @scope class
|
3963
|
+
attach_function :get_module_for_file, :clang_getModuleForFile, [TranslationUnitImpl, :pointer], :pointer
|
3964
|
+
|
3965
|
+
# (Not documented)
|
3966
|
+
#
|
3967
|
+
# @method module_get_ast_file(module_)
|
3968
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
3969
|
+
# @return [FFI::Pointer(File)] the module file where the provided module object came from.
|
3970
|
+
# @scope class
|
3971
|
+
attach_function :module_get_ast_file, :clang_Module_getASTFile, [:pointer], :pointer
|
3972
|
+
|
3973
|
+
# (Not documented)
|
3974
|
+
#
|
3975
|
+
# @method module_get_parent(module_)
|
3976
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
3977
|
+
# @return [FFI::Pointer(Module)] the parent of a sub-module or NULL if the given module is top-level,
|
3978
|
+
# e.g. for 'std.vector' it will return the 'std' module.
|
3979
|
+
# @scope class
|
3980
|
+
attach_function :module_get_parent, :clang_Module_getParent, [:pointer], :pointer
|
3981
|
+
|
3982
|
+
# (Not documented)
|
3983
|
+
#
|
3984
|
+
# @method module_get_name(module_)
|
3985
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
3986
|
+
# @return [String] the name of the module, e.g. for the 'std.vector' sub-module it
|
3987
|
+
# will return "vector".
|
3988
|
+
# @scope class
|
3989
|
+
attach_function :module_get_name, :clang_Module_getName, [:pointer], String.by_value
|
3990
|
+
|
3991
|
+
# (Not documented)
|
3992
|
+
#
|
3993
|
+
# @method module_get_full_name(module_)
|
3994
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
3995
|
+
# @return [String] the full name of the module, e.g. "std.vector".
|
3996
|
+
# @scope class
|
3997
|
+
attach_function :module_get_full_name, :clang_Module_getFullName, [:pointer], String.by_value
|
3998
|
+
|
3999
|
+
# (Not documented)
|
4000
|
+
#
|
4001
|
+
# @method module_is_system(module_)
|
4002
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
4003
|
+
# @return [Integer] non-zero if the module is a system one.
|
4004
|
+
# @scope class
|
4005
|
+
attach_function :module_is_system, :clang_Module_isSystem, [:pointer], :int
|
4006
|
+
|
4007
|
+
# (Not documented)
|
4008
|
+
#
|
4009
|
+
# @method module_get_num_top_level_headers(translation_unit_impl, module_)
|
4010
|
+
# @param [TranslationUnitImpl] translation_unit_impl
|
4011
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
4012
|
+
# @return [Integer] the number of top level headers associated with this module.
|
4013
|
+
# @scope class
|
4014
|
+
attach_function :module_get_num_top_level_headers, :clang_Module_getNumTopLevelHeaders, [TranslationUnitImpl, :pointer], :uint
|
4015
|
+
|
4016
|
+
# (Not documented)
|
4017
|
+
#
|
4018
|
+
# @method module_get_top_level_header(translation_unit_impl, module_, index)
|
4019
|
+
# @param [TranslationUnitImpl] translation_unit_impl
|
4020
|
+
# @param [FFI::Pointer(Module)] module_ a module object.
|
4021
|
+
# @param [Integer] index top level header index (zero-based).
|
4022
|
+
# @return [FFI::Pointer(File)] the specified top level header associated with the module.
|
4023
|
+
# @scope class
|
4024
|
+
attach_function :module_get_top_level_header, :clang_Module_getTopLevelHeader, [TranslationUnitImpl, :pointer, :uint], :pointer
|
4025
|
+
|
4026
|
+
# Determine if a C++ member function or member function template is
|
4027
|
+
# pure virtual.
|
4028
|
+
#
|
4029
|
+
# @method cxx_method_is_pure_virtual(c)
|
4030
|
+
# @param [Cursor] c
|
4031
|
+
# @return [Integer]
|
4032
|
+
# @scope class
|
4033
|
+
attach_function :cxx_method_is_pure_virtual, :clang_CXXMethod_isPureVirtual, [Cursor.by_value], :uint
|
4034
|
+
|
4035
|
+
# Determine if a C++ member function or member function template is
|
4036
|
+
# declared 'static'.
|
4037
|
+
#
|
4038
|
+
# @method cxx_method_is_static(c)
|
4039
|
+
# @param [Cursor] c
|
4040
|
+
# @return [Integer]
|
4041
|
+
# @scope class
|
4042
|
+
attach_function :cxx_method_is_static, :clang_CXXMethod_isStatic, [Cursor.by_value], :uint
|
4043
|
+
|
4044
|
+
# Determine if a C++ member function or member function template is
|
4045
|
+
# explicitly declared 'virtual' or if it overrides a virtual method from
|
4046
|
+
# one of the base classes.
|
4047
|
+
#
|
4048
|
+
# @method cxx_method_is_virtual(c)
|
4049
|
+
# @param [Cursor] c
|
4050
|
+
# @return [Integer]
|
4051
|
+
# @scope class
|
4052
|
+
attach_function :cxx_method_is_virtual, :clang_CXXMethod_isVirtual, [Cursor.by_value], :uint
|
4053
|
+
|
4054
|
+
# Determine if a C++ member function or member function template is
|
4055
|
+
# declared 'const'.
|
4056
|
+
#
|
4057
|
+
# @method cxx_method_is_const(c)
|
4058
|
+
# @param [Cursor] c
|
4059
|
+
# @return [Integer]
|
4060
|
+
# @scope class
|
4061
|
+
attach_function :cxx_method_is_const, :clang_CXXMethod_isConst, [Cursor.by_value], :uint
|
4062
|
+
|
4063
|
+
# Given a cursor that represents a template, determine
|
4064
|
+
# the cursor kind of the specializations would be generated by instantiating
|
4065
|
+
# the template.
|
4066
|
+
#
|
4067
|
+
# This routine can be used to determine what flavor of function template,
|
4068
|
+
# class template, or class template partial specialization is stored in the
|
4069
|
+
# cursor. For example, it can describe whether a class template cursor is
|
4070
|
+
# declared with "struct", "class" or "union".
|
4071
|
+
#
|
4072
|
+
# @method get_template_cursor_kind(c)
|
4073
|
+
# @param [Cursor] c The cursor to query. This cursor should represent a template
|
4074
|
+
# declaration.
|
4075
|
+
# @return [Symbol from _enum_cursor_kind_] The cursor kind of the specializations that would be generated
|
4076
|
+
# by instantiating the template \p C. If \p C is not a template, returns
|
4077
|
+
# \c CXCursor_NoDeclFound.
|
4078
|
+
# @scope class
|
4079
|
+
attach_function :get_template_cursor_kind, :clang_getTemplateCursorKind, [Cursor.by_value], :cursor_kind
|
4080
|
+
|
4081
|
+
# Given a cursor that may represent a specialization or instantiation
|
4082
|
+
# of a template, retrieve the cursor that represents the template that it
|
4083
|
+
# specializes or from which it was instantiated.
|
4084
|
+
#
|
4085
|
+
# This routine determines the template involved both for explicit
|
4086
|
+
# specializations of templates and for implicit instantiations of the template,
|
4087
|
+
# both of which are referred to as "specializations". For a class template
|
4088
|
+
# specialization (e.g., \c std::vector<bool>), this routine will return
|
4089
|
+
# either the primary template (\c std::vector) or, if the specialization was
|
4090
|
+
# instantiated from a class template partial specialization, the class template
|
4091
|
+
# partial specialization. For a class template partial specialization and a
|
4092
|
+
# function template specialization (including instantiations), this
|
4093
|
+
# this routine will return the specialized template.
|
2850
4094
|
#
|
2851
4095
|
# For members of a class template (e.g., member functions, member classes, or
|
2852
4096
|
# static data members), returns the specialized or instantiated member.
|
@@ -2875,7 +4119,7 @@ module FFIGen::Clang
|
|
2875
4119
|
# @param [Integer] piece_index For contiguous names or when passing the flag
|
2876
4120
|
# CXNameRange_WantSinglePiece, only one piece with index 0 is
|
2877
4121
|
# available. When the CXNameRange_WantSinglePiece flag is not passed for a
|
2878
|
-
# non-contiguous names, this index can be used to
|
4122
|
+
# non-contiguous names, this index can be used to retrieve the individual
|
2879
4123
|
# pieces of the name. See also CXNameRange_WantSinglePiece.
|
2880
4124
|
# @return [SourceRange] The piece of the name pointed to by the given cursor. If there is no
|
2881
4125
|
# name, or if the PieceIndex is out-of-range, a null-cursor will be returned.
|
@@ -2887,19 +4131,19 @@ module FFIGen::Clang
|
|
2887
4131
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:name_ref_flags).</em>
|
2888
4132
|
#
|
2889
4133
|
# === Options:
|
2890
|
-
# :
|
4134
|
+
# :range_want_qualifier ::
|
2891
4135
|
# Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the
|
2892
4136
|
# range.
|
2893
|
-
# :
|
2894
|
-
# Include the explicit template arguments, e.g.
|
2895
|
-
# the range.
|
2896
|
-
# :
|
4137
|
+
# :range_want_template_args ::
|
4138
|
+
# Include the explicit template arguments, e.g. \<int> in x.f<int>,
|
4139
|
+
# in the range.
|
4140
|
+
# :range_want_single_piece ::
|
2897
4141
|
# If the name is non-contiguous, return the full spanning range.
|
2898
4142
|
#
|
2899
4143
|
# Non-contiguous names occur in Objective-C when a selector with two or more
|
2900
4144
|
# parameters is used, or in C++ when using an operator:
|
2901
4145
|
# \code
|
2902
|
-
# (object doSomething:here withValue:there); //
|
4146
|
+
# (object doSomething:here withValue:there); // Objective-C
|
2903
4147
|
# return some_vector(1); // C++
|
2904
4148
|
# \endcode
|
2905
4149
|
#
|
@@ -2907,9 +4151,9 @@ module FFIGen::Clang
|
|
2907
4151
|
# @return [Symbol]
|
2908
4152
|
# @scope class
|
2909
4153
|
enum :name_ref_flags, [
|
2910
|
-
:
|
2911
|
-
:
|
2912
|
-
:
|
4154
|
+
:range_want_qualifier, 1,
|
4155
|
+
:range_want_template_args, 2,
|
4156
|
+
:range_want_single_piece, 4
|
2913
4157
|
]
|
2914
4158
|
|
2915
4159
|
# Describes a kind of token.
|
@@ -2932,11 +4176,11 @@ module FFIGen::Clang
|
|
2932
4176
|
# @return [Symbol]
|
2933
4177
|
# @scope class
|
2934
4178
|
enum :token_kind, [
|
2935
|
-
:punctuation,
|
2936
|
-
:keyword,
|
2937
|
-
:identifier,
|
2938
|
-
:literal,
|
2939
|
-
:comment
|
4179
|
+
:punctuation, 0,
|
4180
|
+
:keyword, 1,
|
4181
|
+
:identifier, 2,
|
4182
|
+
:literal, 3,
|
4183
|
+
:comment, 4
|
2940
4184
|
]
|
2941
4185
|
|
2942
4186
|
# Describes a single preprocessing token.
|
@@ -3057,8 +4301,8 @@ module FFIGen::Clang
|
|
3057
4301
|
#
|
3058
4302
|
# @method get_definition_spelling_and_extent(cursor, start_buf, end_buf, start_line, start_column, end_line, end_column)
|
3059
4303
|
# @param [Cursor] cursor
|
3060
|
-
# @param [FFI::Pointer(**
|
3061
|
-
# @param [FFI::Pointer(**
|
4304
|
+
# @param [FFI::Pointer(**CharS)] start_buf
|
4305
|
+
# @param [FFI::Pointer(**CharS)] end_buf
|
3062
4306
|
# @param [FFI::Pointer(*UInt)] start_line
|
3063
4307
|
# @param [FFI::Pointer(*UInt)] start_column
|
3064
4308
|
# @param [FFI::Pointer(*UInt)] end_line
|
@@ -3237,27 +4481,27 @@ module FFIGen::Clang
|
|
3237
4481
|
# @return [Symbol]
|
3238
4482
|
# @scope class
|
3239
4483
|
enum :completion_chunk_kind, [
|
3240
|
-
:optional,
|
3241
|
-
:typed_text,
|
3242
|
-
:text,
|
3243
|
-
:placeholder,
|
3244
|
-
:informative,
|
3245
|
-
:current_parameter,
|
3246
|
-
:left_paren,
|
3247
|
-
:right_paren,
|
3248
|
-
:left_bracket,
|
3249
|
-
:right_bracket,
|
3250
|
-
:left_brace,
|
3251
|
-
:right_brace,
|
3252
|
-
:left_angle,
|
3253
|
-
:right_angle,
|
3254
|
-
:comma,
|
3255
|
-
:result_type,
|
3256
|
-
:colon,
|
3257
|
-
:semi_colon,
|
3258
|
-
:equal,
|
3259
|
-
:horizontal_space,
|
3260
|
-
:vertical_space
|
4484
|
+
:optional, 0,
|
4485
|
+
:typed_text, 1,
|
4486
|
+
:text, 2,
|
4487
|
+
:placeholder, 3,
|
4488
|
+
:informative, 4,
|
4489
|
+
:current_parameter, 5,
|
4490
|
+
:left_paren, 6,
|
4491
|
+
:right_paren, 7,
|
4492
|
+
:left_bracket, 8,
|
4493
|
+
:right_bracket, 9,
|
4494
|
+
:left_brace, 10,
|
4495
|
+
:right_brace, 11,
|
4496
|
+
:left_angle, 12,
|
4497
|
+
:right_angle, 13,
|
4498
|
+
:comma, 14,
|
4499
|
+
:result_type, 15,
|
4500
|
+
:colon, 16,
|
4501
|
+
:semi_colon, 17,
|
4502
|
+
:equal, 18,
|
4503
|
+
:horizontal_space, 19,
|
4504
|
+
:vertical_space, 20
|
3261
4505
|
]
|
3262
4506
|
|
3263
4507
|
# Determine the kind of a particular chunk within a completion string.
|
@@ -3341,6 +4585,31 @@ module FFIGen::Clang
|
|
3341
4585
|
# @scope class
|
3342
4586
|
attach_function :get_completion_annotation, :clang_getCompletionAnnotation, [:pointer, :uint], String.by_value
|
3343
4587
|
|
4588
|
+
# Retrieve the parent context of the given completion string.
|
4589
|
+
#
|
4590
|
+
# The parent context of a completion string is the semantic parent of
|
4591
|
+
# the declaration (if any) that the code completion represents. For example,
|
4592
|
+
# a code completion for an Objective-C method would have the method's class
|
4593
|
+
# or protocol as its context.
|
4594
|
+
#
|
4595
|
+
# @method get_completion_parent(completion_string, kind)
|
4596
|
+
# @param [FFI::Pointer(CompletionString)] completion_string The code completion string whose parent is
|
4597
|
+
# being queried.
|
4598
|
+
# @param [FFI::Pointer(*CursorKind)] kind DEPRECATED: always set to CXCursor_NotImplemented if non-NULL.
|
4599
|
+
# @return [String] The name of the completion parent, e.g., "NSObject" if
|
4600
|
+
# the completion string represents a method in the NSObject class.
|
4601
|
+
# @scope class
|
4602
|
+
attach_function :get_completion_parent, :clang_getCompletionParent, [:pointer, :pointer], String.by_value
|
4603
|
+
|
4604
|
+
# Retrieve the brief documentation comment attached to the declaration
|
4605
|
+
# that corresponds to the given completion string.
|
4606
|
+
#
|
4607
|
+
# @method get_completion_brief_comment(completion_string)
|
4608
|
+
# @param [FFI::Pointer(CompletionString)] completion_string
|
4609
|
+
# @return [String]
|
4610
|
+
# @scope class
|
4611
|
+
attach_function :get_completion_brief_comment, :clang_getCompletionBriefComment, [:pointer], String.by_value
|
4612
|
+
|
3344
4613
|
# Retrieve a completion string for an arbitrary declaration or macro
|
3345
4614
|
# definition cursor.
|
3346
4615
|
#
|
@@ -3383,13 +4652,17 @@ module FFIGen::Clang
|
|
3383
4652
|
# :include_code_patterns ::
|
3384
4653
|
# Whether to include code patterns for language constructs
|
3385
4654
|
# within the set of code completions, e.g., for loops.
|
4655
|
+
# :include_brief_comments ::
|
4656
|
+
# Whether to include brief documentation within the set of code
|
4657
|
+
# completions returned.
|
3386
4658
|
#
|
3387
4659
|
# @method _enum_code_complete_flags_
|
3388
4660
|
# @return [Symbol]
|
3389
4661
|
# @scope class
|
3390
4662
|
enum :code_complete_flags, [
|
3391
|
-
:include_macros,
|
3392
|
-
:include_code_patterns,
|
4663
|
+
:include_macros, 1,
|
4664
|
+
:include_code_patterns, 2,
|
4665
|
+
:include_brief_comments, 4
|
3393
4666
|
]
|
3394
4667
|
|
3395
4668
|
# Bits that represent the context under which completion is occurring.
|
@@ -3400,15 +4673,100 @@ module FFIGen::Clang
|
|
3400
4673
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:completion_context).</em>
|
3401
4674
|
#
|
3402
4675
|
# === Options:
|
3403
|
-
# :
|
4676
|
+
# :unexposed ::
|
3404
4677
|
# The context for completions is unexposed, as only Clang results
|
3405
4678
|
# should be included. (This is equivalent to having no context bits set.)
|
4679
|
+
# :any_type ::
|
4680
|
+
# Completions for any possible type should be included in the results.
|
4681
|
+
# :any_value ::
|
4682
|
+
# Completions for any possible value (variables, function calls, etc.)
|
4683
|
+
# should be included in the results.
|
4684
|
+
# :obj_c_object_value ::
|
4685
|
+
# Completions for values that resolve to an Objective-C object should
|
4686
|
+
# be included in the results.
|
4687
|
+
# :obj_c_selector_value ::
|
4688
|
+
# Completions for values that resolve to an Objective-C selector
|
4689
|
+
# should be included in the results.
|
4690
|
+
# :cxx_class_type_value ::
|
4691
|
+
# Completions for values that resolve to a C++ class type should be
|
4692
|
+
# included in the results.
|
4693
|
+
# :dot_member_access ::
|
4694
|
+
# Completions for fields of the member being accessed using the dot
|
4695
|
+
# operator should be included in the results.
|
4696
|
+
# :arrow_member_access ::
|
4697
|
+
# Completions for fields of the member being accessed using the arrow
|
4698
|
+
# operator should be included in the results.
|
4699
|
+
# :obj_c_property_access ::
|
4700
|
+
# Completions for properties of the Objective-C object being accessed
|
4701
|
+
# using the dot operator should be included in the results.
|
4702
|
+
# :enum_tag ::
|
4703
|
+
# Completions for enum tags should be included in the results.
|
4704
|
+
# :union_tag ::
|
4705
|
+
# Completions for union tags should be included in the results.
|
4706
|
+
# :struct_tag ::
|
4707
|
+
# Completions for struct tags should be included in the results.
|
4708
|
+
# :class_tag ::
|
4709
|
+
# Completions for C++ class names should be included in the results.
|
4710
|
+
# :namespace ::
|
4711
|
+
# Completions for C++ namespaces and namespace aliases should be
|
4712
|
+
# included in the results.
|
4713
|
+
# :nested_name_specifier ::
|
4714
|
+
# Completions for C++ nested name specifiers should be included in
|
4715
|
+
# the results.
|
4716
|
+
# :obj_c_interface ::
|
4717
|
+
# Completions for Objective-C interfaces (classes) should be included
|
4718
|
+
# in the results.
|
4719
|
+
# :obj_c_protocol ::
|
4720
|
+
# Completions for Objective-C protocols should be included in
|
4721
|
+
# the results.
|
4722
|
+
# :obj_c_category ::
|
4723
|
+
# Completions for Objective-C categories should be included in
|
4724
|
+
# the results.
|
4725
|
+
# :obj_c_instance_message ::
|
4726
|
+
# Completions for Objective-C instance messages should be included
|
4727
|
+
# in the results.
|
4728
|
+
# :obj_c_class_message ::
|
4729
|
+
# Completions for Objective-C class messages should be included in
|
4730
|
+
# the results.
|
4731
|
+
# :obj_c_selector_name ::
|
4732
|
+
# Completions for Objective-C selector names should be included in
|
4733
|
+
# the results.
|
4734
|
+
# :macro_name ::
|
4735
|
+
# Completions for preprocessor macro names should be included in
|
4736
|
+
# the results.
|
4737
|
+
# :natural_language ::
|
4738
|
+
# Natural language completions should be included in the results.
|
4739
|
+
# :unknown ::
|
4740
|
+
# The current context is unknown, so set all contexts.
|
3406
4741
|
#
|
3407
4742
|
# @method _enum_completion_context_
|
3408
4743
|
# @return [Symbol]
|
3409
4744
|
# @scope class
|
3410
4745
|
enum :completion_context, [
|
3411
|
-
:
|
4746
|
+
:unexposed, 0,
|
4747
|
+
:any_type, 1,
|
4748
|
+
:any_value, 2,
|
4749
|
+
:obj_c_object_value, 4,
|
4750
|
+
:obj_c_selector_value, 8,
|
4751
|
+
:cxx_class_type_value, 16,
|
4752
|
+
:dot_member_access, 32,
|
4753
|
+
:arrow_member_access, 64,
|
4754
|
+
:obj_c_property_access, 128,
|
4755
|
+
:enum_tag, 256,
|
4756
|
+
:union_tag, 512,
|
4757
|
+
:struct_tag, 1024,
|
4758
|
+
:class_tag, 2048,
|
4759
|
+
:namespace, 4096,
|
4760
|
+
:nested_name_specifier, 8192,
|
4761
|
+
:obj_c_interface, 16384,
|
4762
|
+
:obj_c_protocol, 32768,
|
4763
|
+
:obj_c_category, 65536,
|
4764
|
+
:obj_c_instance_message, 131072,
|
4765
|
+
:obj_c_class_message, 262144,
|
4766
|
+
:obj_c_selector_name, 524288,
|
4767
|
+
:macro_name, 1048576,
|
4768
|
+
:natural_language, 2097152,
|
4769
|
+
:unknown, 4194303
|
3412
4770
|
]
|
3413
4771
|
|
3414
4772
|
# Returns a default set of code-completion options that can be
|
@@ -3511,18 +4869,15 @@ module FFIGen::Clang
|
|
3511
4869
|
|
3512
4870
|
# Retrieve a diagnostic associated with the given code completion.
|
3513
4871
|
#
|
3514
|
-
# Result:
|
3515
|
-
# the code completion results to query.
|
3516
|
-
#
|
3517
4872
|
# @method code_complete_get_diagnostic(results, index)
|
3518
|
-
# @param [CodeCompleteResults] results
|
4873
|
+
# @param [CodeCompleteResults] results the code completion results to query.
|
3519
4874
|
# @param [Integer] index the zero-based diagnostic number to retrieve.
|
3520
4875
|
# @return [FFI::Pointer(Diagnostic)] the requested diagnostic. This diagnostic must be freed
|
3521
4876
|
# via a call to \c clang_disposeDiagnostic().
|
3522
4877
|
# @scope class
|
3523
4878
|
attach_function :code_complete_get_diagnostic, :clang_codeCompleteGetDiagnostic, [CodeCompleteResults, :uint], :pointer
|
3524
4879
|
|
3525
|
-
# Determines what
|
4880
|
+
# Determines what completions are appropriate for the context
|
3526
4881
|
# the given code completion.
|
3527
4882
|
#
|
3528
4883
|
# @method code_complete_get_contexts(results)
|
@@ -3580,12 +4935,9 @@ module FFIGen::Clang
|
|
3580
4935
|
|
3581
4936
|
# Enable/disable crash recovery.
|
3582
4937
|
#
|
3583
|
-
# Flag:
|
3584
|
-
# to indicate if crash recovery is enabled. A non-zero value
|
3585
|
-
# enables crash recovery, while 0 disables it.
|
3586
|
-
#
|
3587
4938
|
# @method toggle_crash_recovery(is_enabled)
|
3588
|
-
# @param [Integer] is_enabled
|
4939
|
+
# @param [Integer] is_enabled Flag to indicate if crash recovery is enabled. A non-zero
|
4940
|
+
# value enables crash recovery, while 0 disables it.
|
3589
4941
|
# @return [nil]
|
3590
4942
|
# @scope class
|
3591
4943
|
attach_function :toggle_crash_recovery, :clang_toggleCrashRecovery, [:uint], :void
|
@@ -3594,7 +4946,7 @@ module FFIGen::Clang
|
|
3594
4946
|
# (used with clang_getInclusions()).
|
3595
4947
|
#
|
3596
4948
|
# This visitor function will be invoked by clang_getInclusions() for each
|
3597
|
-
# file included (either at the top-level or by
|
4949
|
+
# file included (either at the top-level or by \#include directives) within
|
3598
4950
|
# a translation unit. The first argument is the file being included, and
|
3599
4951
|
# the second and third arguments provide the inclusion stack. The
|
3600
4952
|
# array is sorted in order of immediate inclusion. For example,
|
@@ -3602,13 +4954,14 @@ module FFIGen::Clang
|
|
3602
4954
|
#
|
3603
4955
|
# <em>This entry is only for documentation and no real method.</em>
|
3604
4956
|
#
|
3605
|
-
# @method _callback_inclusion_visitor_(inclusion_stack, include_len, client_data)
|
4957
|
+
# @method _callback_inclusion_visitor_(included_file, inclusion_stack, include_len, client_data)
|
4958
|
+
# @param [FFI::Pointer(File)] included_file
|
3606
4959
|
# @param [SourceLocation] inclusion_stack
|
3607
4960
|
# @param [Integer] include_len
|
3608
4961
|
# @param [FFI::Pointer(ClientData)] client_data
|
3609
4962
|
# @return [FFI::Pointer(File)]
|
3610
4963
|
# @scope class
|
3611
|
-
callback :inclusion_visitor, [SourceLocation, :uint, :pointer], :pointer
|
4964
|
+
callback :inclusion_visitor, [:pointer, SourceLocation, :uint, :pointer], :pointer
|
3612
4965
|
|
3613
4966
|
# Visit the set of preprocessor inclusions in a translation unit.
|
3614
4967
|
# The visitor function is called with the provided data for every included
|
@@ -3632,6 +4985,16 @@ module FFIGen::Clang
|
|
3632
4985
|
# @scope class
|
3633
4986
|
attach_function :get_remappings, :clang_getRemappings, [:string], :pointer
|
3634
4987
|
|
4988
|
+
# Retrieve a remapping.
|
4989
|
+
#
|
4990
|
+
# @method get_remappings_from_file_list(file_paths, num_files)
|
4991
|
+
# @param [FFI::Pointer(**CharS)] file_paths pointer to an array of file paths containing remapping info.
|
4992
|
+
# @param [Integer] num_files number of file paths.
|
4993
|
+
# @return [FFI::Pointer(Remapping)] the requested remapping. This remapping must be freed
|
4994
|
+
# via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
|
4995
|
+
# @scope class
|
4996
|
+
attach_function :get_remappings_from_file_list, :clang_getRemappingsFromFileList, [:pointer, :uint], :pointer
|
4997
|
+
|
3635
4998
|
# Determine the number of remappings.
|
3636
4999
|
#
|
3637
5000
|
# @method remap_get_num_files(remapping)
|
@@ -3667,22 +5030,20 @@ module FFIGen::Clang
|
|
3667
5030
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:visitor_result).</em>
|
3668
5031
|
#
|
3669
5032
|
# === Options:
|
3670
|
-
# :
|
5033
|
+
# :visit_break ::
|
3671
5034
|
#
|
3672
|
-
# :
|
5035
|
+
# :visit_continue ::
|
3673
5036
|
#
|
3674
5037
|
#
|
3675
5038
|
# @method _enum_visitor_result_
|
3676
5039
|
# @return [Symbol]
|
3677
5040
|
# @scope class
|
3678
5041
|
enum :visitor_result, [
|
3679
|
-
:
|
3680
|
-
:
|
5042
|
+
:visit_break, 0,
|
5043
|
+
:visit_continue, 1
|
3681
5044
|
]
|
3682
5045
|
|
3683
|
-
#
|
3684
|
-
#
|
3685
|
-
# @{
|
5046
|
+
# (Not documented)
|
3686
5047
|
#
|
3687
5048
|
# = Fields:
|
3688
5049
|
# :context ::
|
@@ -3694,6 +5055,28 @@ module FFIGen::Clang
|
|
3694
5055
|
:visit, :pointer
|
3695
5056
|
end
|
3696
5057
|
|
5058
|
+
# (Not documented)
|
5059
|
+
#
|
5060
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:result).</em>
|
5061
|
+
#
|
5062
|
+
# === Options:
|
5063
|
+
# :success ::
|
5064
|
+
# Function returned successfully.
|
5065
|
+
# :invalid ::
|
5066
|
+
# One of the parameters was invalid for the function.
|
5067
|
+
# :visit_break ::
|
5068
|
+
# The function was terminated by a callback (e.g. it returned
|
5069
|
+
# CXVisit_Break)
|
5070
|
+
#
|
5071
|
+
# @method _enum_result_
|
5072
|
+
# @return [Symbol]
|
5073
|
+
# @scope class
|
5074
|
+
enum :result, [
|
5075
|
+
:success, 0,
|
5076
|
+
:invalid, 1,
|
5077
|
+
:visit_break, 2
|
5078
|
+
]
|
5079
|
+
|
3697
5080
|
# Find references of a declaration in a specific file.
|
3698
5081
|
#
|
3699
5082
|
# @method find_references_in_file(cursor, file, visitor)
|
@@ -3703,8 +5086,847 @@ module FFIGen::Clang
|
|
3703
5086
|
# each reference found.
|
3704
5087
|
# The CXSourceRange will point inside the file; if the reference is inside
|
3705
5088
|
# a macro (and not a macro argument) the CXSourceRange will be invalid.
|
5089
|
+
# @return [Symbol from _enum_result_] one of the CXResult enumerators.
|
5090
|
+
# @scope class
|
5091
|
+
attach_function :find_references_in_file, :clang_findReferencesInFile, [Cursor.by_value, :pointer, CursorAndRangeVisitor.by_value], :result
|
5092
|
+
|
5093
|
+
# Find #import/#include directives in a specific file.
|
5094
|
+
#
|
5095
|
+
# @method find_includes_in_file(tu, file, visitor)
|
5096
|
+
# @param [TranslationUnitImpl] tu translation unit containing the file to query.
|
5097
|
+
# @param [FFI::Pointer(File)] file to search for #import/#include directives.
|
5098
|
+
# @param [CursorAndRangeVisitor] visitor callback that will receive pairs of CXCursor/CXSourceRange for
|
5099
|
+
# each directive found.
|
5100
|
+
# @return [Symbol from _enum_result_] one of the CXResult enumerators.
|
5101
|
+
# @scope class
|
5102
|
+
attach_function :find_includes_in_file, :clang_findIncludesInFile, [TranslationUnitImpl, :pointer, CursorAndRangeVisitor.by_value], :result
|
5103
|
+
|
5104
|
+
# Source location passed to index callbacks.
|
5105
|
+
#
|
5106
|
+
# = Fields:
|
5107
|
+
# :ptr_data ::
|
5108
|
+
# (Array<FFI::Pointer(*Void)>)
|
5109
|
+
# :int_data ::
|
5110
|
+
# (Integer)
|
5111
|
+
class IdxLoc < FFI::Struct
|
5112
|
+
layout :ptr_data, [:pointer, 2],
|
5113
|
+
:int_data, :uint
|
5114
|
+
end
|
5115
|
+
|
5116
|
+
# Data for ppIncludedFile callback.
|
5117
|
+
#
|
5118
|
+
# = Fields:
|
5119
|
+
# :hash_loc ::
|
5120
|
+
# (IdxLoc) Location of '#' in the \#include/\#import directive.
|
5121
|
+
# :filename ::
|
5122
|
+
# (String) Filename as written in the \#include/\#import directive.
|
5123
|
+
# :file ::
|
5124
|
+
# (FFI::Pointer(File)) The actual file that the \#include/\#import directive resolved to.
|
5125
|
+
# :is_import ::
|
5126
|
+
# (Integer)
|
5127
|
+
# :is_angled ::
|
5128
|
+
# (Integer)
|
5129
|
+
# :is_module_import ::
|
5130
|
+
# (Integer) Non-zero if the directive was automatically turned into a module
|
5131
|
+
# import.
|
5132
|
+
class IdxIncludedFileInfo < FFI::Struct
|
5133
|
+
layout :hash_loc, IdxLoc.by_value,
|
5134
|
+
:filename, :string,
|
5135
|
+
:file, :pointer,
|
5136
|
+
:is_import, :int,
|
5137
|
+
:is_angled, :int,
|
5138
|
+
:is_module_import, :int
|
5139
|
+
end
|
5140
|
+
|
5141
|
+
# Data for IndexerCallbacks#importedASTFile.
|
5142
|
+
#
|
5143
|
+
# = Fields:
|
5144
|
+
# :file ::
|
5145
|
+
# (FFI::Pointer(File)) Top level AST file containing the imported PCH, module or submodule.
|
5146
|
+
# :module_ ::
|
5147
|
+
# (FFI::Pointer(Module)) The imported module or NULL if the AST file is a PCH.
|
5148
|
+
# :loc ::
|
5149
|
+
# (IdxLoc) Location where the file is imported. Applicable only for modules.
|
5150
|
+
# :is_implicit ::
|
5151
|
+
# (Integer) Non-zero if an inclusion directive was automatically turned into
|
5152
|
+
# a module import. Applicable only for modules.
|
5153
|
+
class IdxImportedASTFileInfo < FFI::Struct
|
5154
|
+
layout :file, :pointer,
|
5155
|
+
:module_, :pointer,
|
5156
|
+
:loc, IdxLoc.by_value,
|
5157
|
+
:is_implicit, :int
|
5158
|
+
end
|
5159
|
+
|
5160
|
+
# (Not documented)
|
5161
|
+
#
|
5162
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_entity_kind).</em>
|
5163
|
+
#
|
5164
|
+
# === Options:
|
5165
|
+
# :unexposed ::
|
5166
|
+
#
|
5167
|
+
# :typedef ::
|
5168
|
+
#
|
5169
|
+
# :function ::
|
5170
|
+
#
|
5171
|
+
# :variable ::
|
5172
|
+
#
|
5173
|
+
# :field ::
|
5174
|
+
#
|
5175
|
+
# :enum_constant ::
|
5176
|
+
#
|
5177
|
+
# :obj_c_class ::
|
5178
|
+
#
|
5179
|
+
# :obj_c_protocol ::
|
5180
|
+
#
|
5181
|
+
# :obj_c_category ::
|
5182
|
+
#
|
5183
|
+
# :obj_c_instance_method ::
|
5184
|
+
#
|
5185
|
+
# :obj_c_class_method ::
|
5186
|
+
#
|
5187
|
+
# :obj_c_property ::
|
5188
|
+
#
|
5189
|
+
# :obj_c_ivar ::
|
5190
|
+
#
|
5191
|
+
# :enum ::
|
5192
|
+
#
|
5193
|
+
# :struct ::
|
5194
|
+
#
|
5195
|
+
# :union ::
|
5196
|
+
#
|
5197
|
+
# :cxx_class ::
|
5198
|
+
#
|
5199
|
+
# :cxx_namespace ::
|
5200
|
+
#
|
5201
|
+
# :cxx_namespace_alias ::
|
5202
|
+
#
|
5203
|
+
# :cxx_static_variable ::
|
5204
|
+
#
|
5205
|
+
# :cxx_static_method ::
|
5206
|
+
#
|
5207
|
+
# :cxx_instance_method ::
|
5208
|
+
#
|
5209
|
+
# :cxx_constructor ::
|
5210
|
+
#
|
5211
|
+
# :cxx_destructor ::
|
5212
|
+
#
|
5213
|
+
# :cxx_conversion_function ::
|
5214
|
+
#
|
5215
|
+
# :cxx_type_alias ::
|
5216
|
+
#
|
5217
|
+
# :cxx_interface ::
|
5218
|
+
#
|
5219
|
+
#
|
5220
|
+
# @method _enum_idx_entity_kind_
|
5221
|
+
# @return [Symbol]
|
5222
|
+
# @scope class
|
5223
|
+
enum :idx_entity_kind, [
|
5224
|
+
:unexposed, 0,
|
5225
|
+
:typedef, 1,
|
5226
|
+
:function, 2,
|
5227
|
+
:variable, 3,
|
5228
|
+
:field, 4,
|
5229
|
+
:enum_constant, 5,
|
5230
|
+
:obj_c_class, 6,
|
5231
|
+
:obj_c_protocol, 7,
|
5232
|
+
:obj_c_category, 8,
|
5233
|
+
:obj_c_instance_method, 9,
|
5234
|
+
:obj_c_class_method, 10,
|
5235
|
+
:obj_c_property, 11,
|
5236
|
+
:obj_c_ivar, 12,
|
5237
|
+
:enum, 13,
|
5238
|
+
:struct, 14,
|
5239
|
+
:union, 15,
|
5240
|
+
:cxx_class, 16,
|
5241
|
+
:cxx_namespace, 17,
|
5242
|
+
:cxx_namespace_alias, 18,
|
5243
|
+
:cxx_static_variable, 19,
|
5244
|
+
:cxx_static_method, 20,
|
5245
|
+
:cxx_instance_method, 21,
|
5246
|
+
:cxx_constructor, 22,
|
5247
|
+
:cxx_destructor, 23,
|
5248
|
+
:cxx_conversion_function, 24,
|
5249
|
+
:cxx_type_alias, 25,
|
5250
|
+
:cxx_interface, 26
|
5251
|
+
]
|
5252
|
+
|
5253
|
+
# (Not documented)
|
5254
|
+
#
|
5255
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_entity_language).</em>
|
5256
|
+
#
|
5257
|
+
# === Options:
|
5258
|
+
# :lang_none ::
|
5259
|
+
#
|
5260
|
+
# :lang_c ::
|
5261
|
+
#
|
5262
|
+
# :lang_obj_c ::
|
5263
|
+
#
|
5264
|
+
# :lang_cxx ::
|
5265
|
+
#
|
5266
|
+
#
|
5267
|
+
# @method _enum_idx_entity_language_
|
5268
|
+
# @return [Symbol]
|
5269
|
+
# @scope class
|
5270
|
+
enum :idx_entity_language, [
|
5271
|
+
:lang_none, 0,
|
5272
|
+
:lang_c, 1,
|
5273
|
+
:lang_obj_c, 2,
|
5274
|
+
:lang_cxx, 3
|
5275
|
+
]
|
5276
|
+
|
5277
|
+
# Extra C++ template information for an entity. This can apply to:
|
5278
|
+
# CXIdxEntity_Function
|
5279
|
+
# CXIdxEntity_CXXClass
|
5280
|
+
# CXIdxEntity_CXXStaticMethod
|
5281
|
+
# CXIdxEntity_CXXInstanceMethod
|
5282
|
+
# CXIdxEntity_CXXConstructor
|
5283
|
+
# CXIdxEntity_CXXConversionFunction
|
5284
|
+
# CXIdxEntity_CXXTypeAlias
|
5285
|
+
#
|
5286
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_entity_cxx_template_kind).</em>
|
5287
|
+
#
|
5288
|
+
# === Options:
|
5289
|
+
# :non_template ::
|
5290
|
+
#
|
5291
|
+
# :template ::
|
5292
|
+
#
|
5293
|
+
# :template_partial_specialization ::
|
5294
|
+
#
|
5295
|
+
# :template_specialization ::
|
5296
|
+
#
|
5297
|
+
#
|
5298
|
+
# @method _enum_idx_entity_cxx_template_kind_
|
5299
|
+
# @return [Symbol]
|
5300
|
+
# @scope class
|
5301
|
+
enum :idx_entity_cxx_template_kind, [
|
5302
|
+
:non_template, 0,
|
5303
|
+
:template, 1,
|
5304
|
+
:template_partial_specialization, 2,
|
5305
|
+
:template_specialization, 3
|
5306
|
+
]
|
5307
|
+
|
5308
|
+
# (Not documented)
|
5309
|
+
#
|
5310
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_attr_kind).</em>
|
5311
|
+
#
|
5312
|
+
# === Options:
|
5313
|
+
# :unexposed ::
|
5314
|
+
#
|
5315
|
+
# :ib_action ::
|
5316
|
+
#
|
5317
|
+
# :ib_outlet ::
|
5318
|
+
#
|
5319
|
+
# :ib_outlet_collection ::
|
5320
|
+
#
|
5321
|
+
#
|
5322
|
+
# @method _enum_idx_attr_kind_
|
5323
|
+
# @return [Symbol]
|
5324
|
+
# @scope class
|
5325
|
+
enum :idx_attr_kind, [
|
5326
|
+
:unexposed, 0,
|
5327
|
+
:ib_action, 1,
|
5328
|
+
:ib_outlet, 2,
|
5329
|
+
:ib_outlet_collection, 3
|
5330
|
+
]
|
5331
|
+
|
5332
|
+
# (Not documented)
|
5333
|
+
#
|
5334
|
+
# = Fields:
|
5335
|
+
# :kind ::
|
5336
|
+
# (Symbol from _enum_idx_attr_kind_)
|
5337
|
+
# :cursor ::
|
5338
|
+
# (Cursor)
|
5339
|
+
# :loc ::
|
5340
|
+
# (IdxLoc)
|
5341
|
+
class IdxAttrInfo < FFI::Struct
|
5342
|
+
layout :kind, :idx_attr_kind,
|
5343
|
+
:cursor, Cursor.by_value,
|
5344
|
+
:loc, IdxLoc.by_value
|
5345
|
+
end
|
5346
|
+
|
5347
|
+
# (Not documented)
|
5348
|
+
#
|
5349
|
+
# = Fields:
|
5350
|
+
# :kind ::
|
5351
|
+
# (Symbol from _enum_idx_entity_kind_)
|
5352
|
+
# :template_kind ::
|
5353
|
+
# (Symbol from _enum_idx_entity_cxx_template_kind_)
|
5354
|
+
# :lang ::
|
5355
|
+
# (Symbol from _enum_idx_entity_language_)
|
5356
|
+
# :name ::
|
5357
|
+
# (String)
|
5358
|
+
# :usr ::
|
5359
|
+
# (String)
|
5360
|
+
# :cursor ::
|
5361
|
+
# (Cursor)
|
5362
|
+
# :attributes ::
|
5363
|
+
# (FFI::Pointer(**IdxAttrInfo))
|
5364
|
+
# :num_attributes ::
|
5365
|
+
# (Integer)
|
5366
|
+
class IdxEntityInfo < FFI::Struct
|
5367
|
+
layout :kind, :idx_entity_kind,
|
5368
|
+
:template_kind, :idx_entity_cxx_template_kind,
|
5369
|
+
:lang, :idx_entity_language,
|
5370
|
+
:name, :string,
|
5371
|
+
:usr, :string,
|
5372
|
+
:cursor, Cursor.by_value,
|
5373
|
+
:attributes, :pointer,
|
5374
|
+
:num_attributes, :uint
|
5375
|
+
end
|
5376
|
+
|
5377
|
+
# (Not documented)
|
5378
|
+
#
|
5379
|
+
# = Fields:
|
5380
|
+
# :cursor ::
|
5381
|
+
# (Cursor)
|
5382
|
+
class IdxContainerInfo < FFI::Struct
|
5383
|
+
layout :cursor, Cursor.by_value
|
5384
|
+
end
|
5385
|
+
|
5386
|
+
# (Not documented)
|
5387
|
+
#
|
5388
|
+
# = Fields:
|
5389
|
+
# :attr_info ::
|
5390
|
+
# (IdxAttrInfo)
|
5391
|
+
# :objc_class ::
|
5392
|
+
# (IdxEntityInfo)
|
5393
|
+
# :class_cursor ::
|
5394
|
+
# (Cursor)
|
5395
|
+
# :class_loc ::
|
5396
|
+
# (IdxLoc)
|
5397
|
+
class IdxIBOutletCollectionAttrInfo < FFI::Struct
|
5398
|
+
layout :attr_info, IdxAttrInfo,
|
5399
|
+
:objc_class, IdxEntityInfo,
|
5400
|
+
:class_cursor, Cursor.by_value,
|
5401
|
+
:class_loc, IdxLoc.by_value
|
5402
|
+
end
|
5403
|
+
|
5404
|
+
# (Not documented)
|
5405
|
+
#
|
5406
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_decl_info_flags).</em>
|
5407
|
+
#
|
5408
|
+
# === Options:
|
5409
|
+
# :idx_decl_flag_skipped ::
|
5410
|
+
#
|
5411
|
+
#
|
5412
|
+
# @method _enum_idx_decl_info_flags_
|
5413
|
+
# @return [Symbol]
|
5414
|
+
# @scope class
|
5415
|
+
enum :idx_decl_info_flags, [
|
5416
|
+
:idx_decl_flag_skipped, 1
|
5417
|
+
]
|
5418
|
+
|
5419
|
+
# (Not documented)
|
5420
|
+
#
|
5421
|
+
# = Fields:
|
5422
|
+
# :entity_info ::
|
5423
|
+
# (IdxEntityInfo)
|
5424
|
+
# :cursor ::
|
5425
|
+
# (Cursor)
|
5426
|
+
# :loc ::
|
5427
|
+
# (IdxLoc)
|
5428
|
+
# :semantic_container ::
|
5429
|
+
# (IdxContainerInfo)
|
5430
|
+
# :lexical_container ::
|
5431
|
+
# (IdxContainerInfo) Generally same as #semanticContainer but can be different in
|
5432
|
+
# cases like out-of-line C++ member functions.
|
5433
|
+
# :is_redeclaration ::
|
5434
|
+
# (Integer)
|
5435
|
+
# :is_definition ::
|
5436
|
+
# (Integer)
|
5437
|
+
# :is_container ::
|
5438
|
+
# (Integer)
|
5439
|
+
# :decl_as_container ::
|
5440
|
+
# (IdxContainerInfo)
|
5441
|
+
# :is_implicit ::
|
5442
|
+
# (Integer) Whether the declaration exists in code or was created implicitly
|
5443
|
+
# by the compiler, e.g. implicit Objective-C methods for properties.
|
5444
|
+
# :attributes ::
|
5445
|
+
# (FFI::Pointer(**IdxAttrInfo))
|
5446
|
+
# :num_attributes ::
|
5447
|
+
# (Integer)
|
5448
|
+
# :flags ::
|
5449
|
+
# (Integer)
|
5450
|
+
class IdxDeclInfo < FFI::Struct
|
5451
|
+
layout :entity_info, IdxEntityInfo,
|
5452
|
+
:cursor, Cursor.by_value,
|
5453
|
+
:loc, IdxLoc.by_value,
|
5454
|
+
:semantic_container, IdxContainerInfo,
|
5455
|
+
:lexical_container, IdxContainerInfo,
|
5456
|
+
:is_redeclaration, :int,
|
5457
|
+
:is_definition, :int,
|
5458
|
+
:is_container, :int,
|
5459
|
+
:decl_as_container, IdxContainerInfo,
|
5460
|
+
:is_implicit, :int,
|
5461
|
+
:attributes, :pointer,
|
5462
|
+
:num_attributes, :uint,
|
5463
|
+
:flags, :uint
|
5464
|
+
end
|
5465
|
+
|
5466
|
+
# (Not documented)
|
5467
|
+
#
|
5468
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_obj_c_container_kind).</em>
|
5469
|
+
#
|
5470
|
+
# === Options:
|
5471
|
+
# :forward_ref ::
|
5472
|
+
#
|
5473
|
+
# :interface ::
|
5474
|
+
#
|
5475
|
+
# :implementation ::
|
5476
|
+
#
|
5477
|
+
#
|
5478
|
+
# @method _enum_idx_obj_c_container_kind_
|
5479
|
+
# @return [Symbol]
|
5480
|
+
# @scope class
|
5481
|
+
enum :idx_obj_c_container_kind, [
|
5482
|
+
:forward_ref, 0,
|
5483
|
+
:interface, 1,
|
5484
|
+
:implementation, 2
|
5485
|
+
]
|
5486
|
+
|
5487
|
+
# (Not documented)
|
5488
|
+
#
|
5489
|
+
# = Fields:
|
5490
|
+
# :decl_info ::
|
5491
|
+
# (IdxDeclInfo)
|
5492
|
+
# :kind ::
|
5493
|
+
# (Symbol from _enum_idx_obj_c_container_kind_)
|
5494
|
+
class IdxObjCContainerDeclInfo < FFI::Struct
|
5495
|
+
layout :decl_info, IdxDeclInfo,
|
5496
|
+
:kind, :idx_obj_c_container_kind
|
5497
|
+
end
|
5498
|
+
|
5499
|
+
# (Not documented)
|
5500
|
+
#
|
5501
|
+
# = Fields:
|
5502
|
+
# :base ::
|
5503
|
+
# (IdxEntityInfo)
|
5504
|
+
# :cursor ::
|
5505
|
+
# (Cursor)
|
5506
|
+
# :loc ::
|
5507
|
+
# (IdxLoc)
|
5508
|
+
class IdxBaseClassInfo < FFI::Struct
|
5509
|
+
layout :base, IdxEntityInfo,
|
5510
|
+
:cursor, Cursor.by_value,
|
5511
|
+
:loc, IdxLoc.by_value
|
5512
|
+
end
|
5513
|
+
|
5514
|
+
# (Not documented)
|
5515
|
+
#
|
5516
|
+
# = Fields:
|
5517
|
+
# :protocol ::
|
5518
|
+
# (IdxEntityInfo)
|
5519
|
+
# :cursor ::
|
5520
|
+
# (Cursor)
|
5521
|
+
# :loc ::
|
5522
|
+
# (IdxLoc)
|
5523
|
+
class IdxObjCProtocolRefInfo < FFI::Struct
|
5524
|
+
layout :protocol, IdxEntityInfo,
|
5525
|
+
:cursor, Cursor.by_value,
|
5526
|
+
:loc, IdxLoc.by_value
|
5527
|
+
end
|
5528
|
+
|
5529
|
+
# (Not documented)
|
5530
|
+
#
|
5531
|
+
# = Fields:
|
5532
|
+
# :protocols ::
|
5533
|
+
# (FFI::Pointer(**IdxObjCProtocolRefInfo))
|
5534
|
+
# :num_protocols ::
|
5535
|
+
# (Integer)
|
5536
|
+
class IdxObjCProtocolRefListInfo < FFI::Struct
|
5537
|
+
layout :protocols, :pointer,
|
5538
|
+
:num_protocols, :uint
|
5539
|
+
end
|
5540
|
+
|
5541
|
+
# (Not documented)
|
5542
|
+
#
|
5543
|
+
# = Fields:
|
5544
|
+
# :container_info ::
|
5545
|
+
# (IdxObjCContainerDeclInfo)
|
5546
|
+
# :super_info ::
|
5547
|
+
# (IdxBaseClassInfo)
|
5548
|
+
# :protocols ::
|
5549
|
+
# (IdxObjCProtocolRefListInfo)
|
5550
|
+
class IdxObjCInterfaceDeclInfo < FFI::Struct
|
5551
|
+
layout :container_info, IdxObjCContainerDeclInfo,
|
5552
|
+
:super_info, IdxBaseClassInfo,
|
5553
|
+
:protocols, IdxObjCProtocolRefListInfo
|
5554
|
+
end
|
5555
|
+
|
5556
|
+
# (Not documented)
|
5557
|
+
#
|
5558
|
+
# = Fields:
|
5559
|
+
# :container_info ::
|
5560
|
+
# (IdxObjCContainerDeclInfo)
|
5561
|
+
# :objc_class ::
|
5562
|
+
# (IdxEntityInfo)
|
5563
|
+
# :class_cursor ::
|
5564
|
+
# (Cursor)
|
5565
|
+
# :class_loc ::
|
5566
|
+
# (IdxLoc)
|
5567
|
+
# :protocols ::
|
5568
|
+
# (IdxObjCProtocolRefListInfo)
|
5569
|
+
class IdxObjCCategoryDeclInfo < FFI::Struct
|
5570
|
+
layout :container_info, IdxObjCContainerDeclInfo,
|
5571
|
+
:objc_class, IdxEntityInfo,
|
5572
|
+
:class_cursor, Cursor.by_value,
|
5573
|
+
:class_loc, IdxLoc.by_value,
|
5574
|
+
:protocols, IdxObjCProtocolRefListInfo
|
5575
|
+
end
|
5576
|
+
|
5577
|
+
# (Not documented)
|
5578
|
+
#
|
5579
|
+
# = Fields:
|
5580
|
+
# :decl_info ::
|
5581
|
+
# (IdxDeclInfo)
|
5582
|
+
# :getter ::
|
5583
|
+
# (IdxEntityInfo)
|
5584
|
+
# :setter ::
|
5585
|
+
# (IdxEntityInfo)
|
5586
|
+
class IdxObjCPropertyDeclInfo < FFI::Struct
|
5587
|
+
layout :decl_info, IdxDeclInfo,
|
5588
|
+
:getter, IdxEntityInfo,
|
5589
|
+
:setter, IdxEntityInfo
|
5590
|
+
end
|
5591
|
+
|
5592
|
+
# (Not documented)
|
5593
|
+
#
|
5594
|
+
# = Fields:
|
5595
|
+
# :decl_info ::
|
5596
|
+
# (IdxDeclInfo)
|
5597
|
+
# :bases ::
|
5598
|
+
# (FFI::Pointer(**IdxBaseClassInfo))
|
5599
|
+
# :num_bases ::
|
5600
|
+
# (Integer)
|
5601
|
+
class IdxCXXClassDeclInfo < FFI::Struct
|
5602
|
+
layout :decl_info, IdxDeclInfo,
|
5603
|
+
:bases, :pointer,
|
5604
|
+
:num_bases, :uint
|
5605
|
+
end
|
5606
|
+
|
5607
|
+
# Data for IndexerCallbacks#indexEntityReference.
|
5608
|
+
#
|
5609
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:idx_entity_ref_kind).</em>
|
5610
|
+
#
|
5611
|
+
# === Options:
|
5612
|
+
# :direct ::
|
5613
|
+
# The entity is referenced directly in user's code.
|
5614
|
+
# :implicit ::
|
5615
|
+
# An implicit reference, e.g. a reference of an Objective-C method
|
5616
|
+
# via the dot syntax.
|
5617
|
+
#
|
5618
|
+
# @method _enum_idx_entity_ref_kind_
|
5619
|
+
# @return [Symbol]
|
5620
|
+
# @scope class
|
5621
|
+
enum :idx_entity_ref_kind, [
|
5622
|
+
:direct, 1,
|
5623
|
+
:implicit, 2
|
5624
|
+
]
|
5625
|
+
|
5626
|
+
# Data for IndexerCallbacks#indexEntityReference.
|
5627
|
+
#
|
5628
|
+
# = Fields:
|
5629
|
+
# :kind ::
|
5630
|
+
# (Symbol from _enum_idx_entity_ref_kind_)
|
5631
|
+
# :cursor ::
|
5632
|
+
# (Cursor) Reference cursor.
|
5633
|
+
# :loc ::
|
5634
|
+
# (IdxLoc)
|
5635
|
+
# :referenced_entity ::
|
5636
|
+
# (IdxEntityInfo) The entity that gets referenced.
|
5637
|
+
# :parent_entity ::
|
5638
|
+
# (IdxEntityInfo) Immediate "parent" of the reference. For example:
|
5639
|
+
#
|
5640
|
+
# \code
|
5641
|
+
# Foo *var;
|
5642
|
+
# \endcode
|
5643
|
+
#
|
5644
|
+
# The parent of reference of type 'Foo' is the variable 'var'.
|
5645
|
+
# For references inside statement bodies of functions/methods,
|
5646
|
+
# the parentEntity will be the function/method.
|
5647
|
+
# :container ::
|
5648
|
+
# (IdxContainerInfo) Lexical container context of the reference.
|
5649
|
+
class IdxEntityRefInfo < FFI::Struct
|
5650
|
+
layout :kind, :idx_entity_ref_kind,
|
5651
|
+
:cursor, Cursor.by_value,
|
5652
|
+
:loc, IdxLoc.by_value,
|
5653
|
+
:referenced_entity, IdxEntityInfo,
|
5654
|
+
:parent_entity, IdxEntityInfo,
|
5655
|
+
:container, IdxContainerInfo
|
5656
|
+
end
|
5657
|
+
|
5658
|
+
# A group of callbacks used by #clang_indexSourceFile and
|
5659
|
+
# #clang_indexTranslationUnit.
|
5660
|
+
#
|
5661
|
+
# = Fields:
|
5662
|
+
# :abort_query ::
|
5663
|
+
# (FFI::Pointer(*)) Called periodically to check whether indexing should be aborted.
|
5664
|
+
# Should return 0 to continue, and non-zero to abort.
|
5665
|
+
# :diagnostic ::
|
5666
|
+
# (FFI::Pointer(*)) Called at the end of indexing; passes the complete diagnostic set.
|
5667
|
+
# :entered_main_file ::
|
5668
|
+
# (FFI::Pointer(*))
|
5669
|
+
# :pp_included_file ::
|
5670
|
+
# (FFI::Pointer(*)) Called when a file gets \#included/\#imported.
|
5671
|
+
# :imported_ast_file ::
|
5672
|
+
# (FFI::Pointer(*)) Called when a AST file (PCH or module) gets imported.
|
5673
|
+
#
|
5674
|
+
# AST files will not get indexed (there will not be callbacks to index all
|
5675
|
+
# the entities in an AST file). The recommended action is that, if the AST
|
5676
|
+
# file is not already indexed, to initiate a new indexing job specific to
|
5677
|
+
# the AST file.
|
5678
|
+
# :started_translation_unit ::
|
5679
|
+
# (FFI::Pointer(*)) Called at the beginning of indexing a translation unit.
|
5680
|
+
# :index_declaration ::
|
5681
|
+
# (FFI::Pointer(*))
|
5682
|
+
# :index_entity_reference ::
|
5683
|
+
# (FFI::Pointer(*)) Called to index a reference of an entity.
|
5684
|
+
class IndexerCallbacks < FFI::Struct
|
5685
|
+
layout :abort_query, :pointer,
|
5686
|
+
:diagnostic, :pointer,
|
5687
|
+
:entered_main_file, :pointer,
|
5688
|
+
:pp_included_file, :pointer,
|
5689
|
+
:imported_ast_file, :pointer,
|
5690
|
+
:started_translation_unit, :pointer,
|
5691
|
+
:index_declaration, :pointer,
|
5692
|
+
:index_entity_reference, :pointer
|
5693
|
+
end
|
5694
|
+
|
5695
|
+
# (Not documented)
|
5696
|
+
#
|
5697
|
+
# @method index_is_entity_obj_c_container_kind(idx_entity_kind)
|
5698
|
+
# @param [Symbol from _enum_idx_entity_kind_] idx_entity_kind
|
5699
|
+
# @return [Integer]
|
5700
|
+
# @scope class
|
5701
|
+
attach_function :index_is_entity_obj_c_container_kind, :clang_index_isEntityObjCContainerKind, [:idx_entity_kind], :int
|
5702
|
+
|
5703
|
+
# (Not documented)
|
5704
|
+
#
|
5705
|
+
# @method index_get_obj_c_container_decl_info(idx_decl_info)
|
5706
|
+
# @param [IdxDeclInfo] idx_decl_info
|
5707
|
+
# @return [IdxObjCContainerDeclInfo]
|
5708
|
+
# @scope class
|
5709
|
+
attach_function :index_get_obj_c_container_decl_info, :clang_index_getObjCContainerDeclInfo, [IdxDeclInfo], IdxObjCContainerDeclInfo
|
5710
|
+
|
5711
|
+
# (Not documented)
|
5712
|
+
#
|
5713
|
+
# @method index_get_obj_c_interface_decl_info(idx_decl_info)
|
5714
|
+
# @param [IdxDeclInfo] idx_decl_info
|
5715
|
+
# @return [IdxObjCInterfaceDeclInfo]
|
5716
|
+
# @scope class
|
5717
|
+
attach_function :index_get_obj_c_interface_decl_info, :clang_index_getObjCInterfaceDeclInfo, [IdxDeclInfo], IdxObjCInterfaceDeclInfo
|
5718
|
+
|
5719
|
+
# (Not documented)
|
5720
|
+
#
|
5721
|
+
# @method index_get_obj_c_category_decl_info(idx_decl_info)
|
5722
|
+
# @param [IdxDeclInfo] idx_decl_info
|
5723
|
+
# @return [IdxObjCCategoryDeclInfo]
|
5724
|
+
# @scope class
|
5725
|
+
attach_function :index_get_obj_c_category_decl_info, :clang_index_getObjCCategoryDeclInfo, [IdxDeclInfo], IdxObjCCategoryDeclInfo
|
5726
|
+
|
5727
|
+
# (Not documented)
|
5728
|
+
#
|
5729
|
+
# @method index_get_obj_c_protocol_ref_list_info(idx_decl_info)
|
5730
|
+
# @param [IdxDeclInfo] idx_decl_info
|
5731
|
+
# @return [IdxObjCProtocolRefListInfo]
|
5732
|
+
# @scope class
|
5733
|
+
attach_function :index_get_obj_c_protocol_ref_list_info, :clang_index_getObjCProtocolRefListInfo, [IdxDeclInfo], IdxObjCProtocolRefListInfo
|
5734
|
+
|
5735
|
+
# (Not documented)
|
5736
|
+
#
|
5737
|
+
# @method index_get_obj_c_property_decl_info(idx_decl_info)
|
5738
|
+
# @param [IdxDeclInfo] idx_decl_info
|
5739
|
+
# @return [IdxObjCPropertyDeclInfo]
|
5740
|
+
# @scope class
|
5741
|
+
attach_function :index_get_obj_c_property_decl_info, :clang_index_getObjCPropertyDeclInfo, [IdxDeclInfo], IdxObjCPropertyDeclInfo
|
5742
|
+
|
5743
|
+
# (Not documented)
|
5744
|
+
#
|
5745
|
+
# @method index_get_ib_outlet_collection_attr_info(idx_attr_info)
|
5746
|
+
# @param [IdxAttrInfo] idx_attr_info
|
5747
|
+
# @return [IdxIBOutletCollectionAttrInfo]
|
5748
|
+
# @scope class
|
5749
|
+
attach_function :index_get_ib_outlet_collection_attr_info, :clang_index_getIBOutletCollectionAttrInfo, [IdxAttrInfo], IdxIBOutletCollectionAttrInfo
|
5750
|
+
|
5751
|
+
# (Not documented)
|
5752
|
+
#
|
5753
|
+
# @method index_get_cxx_class_decl_info(idx_decl_info)
|
5754
|
+
# @param [IdxDeclInfo] idx_decl_info
|
5755
|
+
# @return [IdxCXXClassDeclInfo]
|
5756
|
+
# @scope class
|
5757
|
+
attach_function :index_get_cxx_class_decl_info, :clang_index_getCXXClassDeclInfo, [IdxDeclInfo], IdxCXXClassDeclInfo
|
5758
|
+
|
5759
|
+
# For retrieving a custom CXIdxClientContainer attached to a
|
5760
|
+
# container.
|
5761
|
+
#
|
5762
|
+
# @method index_get_client_container(idx_container_info)
|
5763
|
+
# @param [IdxContainerInfo] idx_container_info
|
5764
|
+
# @return [FFI::Pointer(IdxClientContainer)]
|
5765
|
+
# @scope class
|
5766
|
+
attach_function :index_get_client_container, :clang_index_getClientContainer, [IdxContainerInfo], :pointer
|
5767
|
+
|
5768
|
+
# For setting a custom CXIdxClientContainer attached to a
|
5769
|
+
# container.
|
5770
|
+
#
|
5771
|
+
# @method index_set_client_container(idx_container_info, idx_client_container)
|
5772
|
+
# @param [IdxContainerInfo] idx_container_info
|
5773
|
+
# @param [FFI::Pointer(IdxClientContainer)] idx_client_container
|
5774
|
+
# @return [nil]
|
5775
|
+
# @scope class
|
5776
|
+
attach_function :index_set_client_container, :clang_index_setClientContainer, [IdxContainerInfo, :pointer], :void
|
5777
|
+
|
5778
|
+
# For retrieving a custom CXIdxClientEntity attached to an entity.
|
5779
|
+
#
|
5780
|
+
# @method index_get_client_entity(idx_entity_info)
|
5781
|
+
# @param [IdxEntityInfo] idx_entity_info
|
5782
|
+
# @return [FFI::Pointer(IdxClientEntity)]
|
5783
|
+
# @scope class
|
5784
|
+
attach_function :index_get_client_entity, :clang_index_getClientEntity, [IdxEntityInfo], :pointer
|
5785
|
+
|
5786
|
+
# For setting a custom CXIdxClientEntity attached to an entity.
|
5787
|
+
#
|
5788
|
+
# @method index_set_client_entity(idx_entity_info, idx_client_entity)
|
5789
|
+
# @param [IdxEntityInfo] idx_entity_info
|
5790
|
+
# @param [FFI::Pointer(IdxClientEntity)] idx_client_entity
|
5791
|
+
# @return [nil]
|
5792
|
+
# @scope class
|
5793
|
+
attach_function :index_set_client_entity, :clang_index_setClientEntity, [IdxEntityInfo, :pointer], :void
|
5794
|
+
|
5795
|
+
# An indexing action/session, to be applied to one or multiple
|
5796
|
+
# translation units.
|
5797
|
+
#
|
5798
|
+
# @method index_action_create(c_idx)
|
5799
|
+
# @param [FFI::Pointer(Index)] c_idx The index object with which the index action will be associated.
|
5800
|
+
# @return [FFI::Pointer(IndexAction)]
|
5801
|
+
# @scope class
|
5802
|
+
attach_function :index_action_create, :clang_IndexAction_create, [:pointer], :pointer
|
5803
|
+
|
5804
|
+
# Destroy the given index action.
|
5805
|
+
#
|
5806
|
+
# The index action must not be destroyed until all of the translation units
|
5807
|
+
# created within that index action have been destroyed.
|
5808
|
+
#
|
5809
|
+
# @method index_action_dispose(index_action)
|
5810
|
+
# @param [FFI::Pointer(IndexAction)] index_action
|
3706
5811
|
# @return [nil]
|
3707
5812
|
# @scope class
|
3708
|
-
attach_function :
|
5813
|
+
attach_function :index_action_dispose, :clang_IndexAction_dispose, [:pointer], :void
|
5814
|
+
|
5815
|
+
# (Not documented)
|
5816
|
+
#
|
5817
|
+
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:index_opt_flags).</em>
|
5818
|
+
#
|
5819
|
+
# === Options:
|
5820
|
+
# :none ::
|
5821
|
+
# Used to indicate that no special indexing options are needed.
|
5822
|
+
# :suppress_redundant_refs ::
|
5823
|
+
# Used to indicate that IndexerCallbacks#indexEntityReference should
|
5824
|
+
# be invoked for only one reference of an entity per source file that does
|
5825
|
+
# not also include a declaration/definition of the entity.
|
5826
|
+
# :index_function_local_symbols ::
|
5827
|
+
# Function-local symbols should be indexed. If this is not set
|
5828
|
+
# function-local symbols will be ignored.
|
5829
|
+
# :index_implicit_template_instantiations ::
|
5830
|
+
# Implicit function/class template instantiations should be indexed.
|
5831
|
+
# If this is not set, implicit instantiations will be ignored.
|
5832
|
+
# :suppress_warnings ::
|
5833
|
+
# Suppress all compiler warnings when parsing for indexing.
|
5834
|
+
# :skip_parsed_bodies_in_session ::
|
5835
|
+
# Skip a function/method body that was already parsed during an
|
5836
|
+
# indexing session associated with a \c CXIndexAction object.
|
5837
|
+
# Bodies in system headers are always skipped.
|
5838
|
+
#
|
5839
|
+
# @method _enum_index_opt_flags_
|
5840
|
+
# @return [Symbol]
|
5841
|
+
# @scope class
|
5842
|
+
enum :index_opt_flags, [
|
5843
|
+
:none, 0,
|
5844
|
+
:suppress_redundant_refs, 1,
|
5845
|
+
:index_function_local_symbols, 2,
|
5846
|
+
:index_implicit_template_instantiations, 4,
|
5847
|
+
:suppress_warnings, 8,
|
5848
|
+
:skip_parsed_bodies_in_session, 16
|
5849
|
+
]
|
5850
|
+
|
5851
|
+
# Index the given source file and the translation unit corresponding
|
5852
|
+
# to that file via callbacks implemented through #IndexerCallbacks.
|
5853
|
+
#
|
5854
|
+
# @method index_source_file(index_action, client_data, index_callbacks, index_callbacks_size, index_options, source_filename, command_line_args, num_command_line_args, unsaved_files, num_unsaved_files, out_tu, tu_options)
|
5855
|
+
# @param [FFI::Pointer(IndexAction)] index_action
|
5856
|
+
# @param [FFI::Pointer(ClientData)] client_data pointer data supplied by the client, which will
|
5857
|
+
# be passed to the invoked callbacks.
|
5858
|
+
# @param [IndexerCallbacks] index_callbacks Pointer to indexing callbacks that the client
|
5859
|
+
# implements.
|
5860
|
+
# @param [Integer] index_callbacks_size Size of #IndexerCallbacks structure that gets
|
5861
|
+
# passed in index_callbacks.
|
5862
|
+
# @param [Integer] index_options A bitmask of options that affects how indexing is
|
5863
|
+
# performed. This should be a bitwise OR of the CXIndexOpt_XXX flags.
|
5864
|
+
#
|
5865
|
+
# \param(out) out_TU pointer to store a \c CXTranslationUnit that can be
|
5866
|
+
# reused after indexing is finished. Set to \c NULL if you do not require it.
|
5867
|
+
# @param [String] source_filename
|
5868
|
+
# @param [FFI::Pointer(**CharS)] command_line_args
|
5869
|
+
# @param [Integer] num_command_line_args
|
5870
|
+
# @param [UnsavedFile] unsaved_files
|
5871
|
+
# @param [Integer] num_unsaved_files
|
5872
|
+
# @param [FFI::Pointer(*TranslationUnit)] out_tu
|
5873
|
+
# @param [Integer] tu_options
|
5874
|
+
# @return [Integer] 0 on success or if there were errors from which the compiler could
|
5875
|
+
# recover. If there is a failure from which the there is no recovery, returns
|
5876
|
+
# a non-zero \c CXErrorCode.
|
5877
|
+
#
|
5878
|
+
# The rest of the parameters are the same as #clang_parseTranslationUnit.
|
5879
|
+
# @scope class
|
5880
|
+
attach_function :index_source_file, :clang_indexSourceFile, [:pointer, :pointer, IndexerCallbacks, :uint, :uint, :string, :pointer, :int, UnsavedFile, :uint, :pointer, :uint], :int
|
5881
|
+
|
5882
|
+
# Index the given translation unit via callbacks implemented through
|
5883
|
+
# #IndexerCallbacks.
|
5884
|
+
#
|
5885
|
+
# The order of callback invocations is not guaranteed to be the same as
|
5886
|
+
# when indexing a source file. The high level order will be:
|
5887
|
+
#
|
5888
|
+
# -Preprocessor callbacks invocations
|
5889
|
+
# -Declaration/reference callbacks invocations
|
5890
|
+
# -Diagnostic callback invocations
|
5891
|
+
#
|
5892
|
+
# The parameters are the same as #clang_indexSourceFile.
|
5893
|
+
#
|
5894
|
+
# @method index_translation_unit(index_action, client_data, index_callbacks, index_callbacks_size, index_options, translation_unit_impl)
|
5895
|
+
# @param [FFI::Pointer(IndexAction)] index_action
|
5896
|
+
# @param [FFI::Pointer(ClientData)] client_data
|
5897
|
+
# @param [IndexerCallbacks] index_callbacks
|
5898
|
+
# @param [Integer] index_callbacks_size
|
5899
|
+
# @param [Integer] index_options
|
5900
|
+
# @param [TranslationUnitImpl] translation_unit_impl
|
5901
|
+
# @return [Integer] If there is a failure from which the there is no recovery, returns
|
5902
|
+
# non-zero, otherwise returns 0.
|
5903
|
+
# @scope class
|
5904
|
+
attach_function :index_translation_unit, :clang_indexTranslationUnit, [:pointer, :pointer, IndexerCallbacks, :uint, :uint, TranslationUnitImpl], :int
|
5905
|
+
|
5906
|
+
# Retrieve the CXIdxFile, file, line, column, and offset represented by
|
5907
|
+
# the given CXIdxLoc.
|
5908
|
+
#
|
5909
|
+
# If the location refers into a macro expansion, retrieves the
|
5910
|
+
# location of the macro expansion and if it refers into a macro argument
|
5911
|
+
# retrieves the location of the argument.
|
5912
|
+
#
|
5913
|
+
# @method index_loc_get_file_location(loc, index_file, file, line, column, offset)
|
5914
|
+
# @param [IdxLoc] loc
|
5915
|
+
# @param [FFI::Pointer(*IdxClientFile)] index_file
|
5916
|
+
# @param [FFI::Pointer(*File)] file
|
5917
|
+
# @param [FFI::Pointer(*UInt)] line
|
5918
|
+
# @param [FFI::Pointer(*UInt)] column
|
5919
|
+
# @param [FFI::Pointer(*UInt)] offset
|
5920
|
+
# @return [nil]
|
5921
|
+
# @scope class
|
5922
|
+
attach_function :index_loc_get_file_location, :clang_indexLoc_getFileLocation, [IdxLoc.by_value, :pointer, :pointer, :pointer, :pointer, :pointer], :void
|
5923
|
+
|
5924
|
+
# Retrieve the CXSourceLocation represented by the given CXIdxLoc.
|
5925
|
+
#
|
5926
|
+
# @method index_loc_get_cx_source_location(loc)
|
5927
|
+
# @param [IdxLoc] loc
|
5928
|
+
# @return [SourceLocation]
|
5929
|
+
# @scope class
|
5930
|
+
attach_function :index_loc_get_cx_source_location, :clang_indexLoc_getCXSourceLocation, [IdxLoc.by_value], SourceLocation.by_value
|
3709
5931
|
|
3710
5932
|
end
|