class FFI::Clang::Cursor
Attributes
cursor[R]
translation_unit[R]
Public Class Methods
kind_spelling(kind)
click to toggle source
this function is categorized as “Debugging facilities”
# File lib/ffi/clang/cursor.rb, line 41 def self.kind_spelling(kind) Lib.extract_string Lib.get_cursor_kind_spelling(kind) end
new(cxcursor, translation_unit)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 45 def initialize(cxcursor, translation_unit) @cursor = cxcursor @translation_unit = translation_unit end
null_cursor()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 36 def self.null_cursor Cursor.new Lib.get_null_cursor, nil end
Public Instance Methods
==(other)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 344 def ==(other) Lib.are_equal(@cursor, other.cursor) != 0 end
access_specifier()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 234 def access_specifier Lib.get_cxx_access_specifier @cursor end
argument(i)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 336 def argument(i) Cursor.new Lib.cursor_get_argument(@cursor, i), @translation_unit end
attribute?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 86 def attribute? Lib.is_attribute(kind) != 0 end
availability()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 258 def availability Lib.get_cursor_availability(@cursor) end
bitfield?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 316 def bitfield? Lib.is_bit_field(@cursor) != 0 end
bitwidth()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 320 def bitwidth Lib.get_field_decl_bit_width(@cursor) end
canonical()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 210 def canonical Cursor.new Lib.get_canonical_cursor(@cursor), @translation_unit end
comment()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 58 def comment Comment.build_from Lib.cursor_get_parsed_comment(@cursor) end
comment_range()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 62 def comment_range SourceRange.new(Lib.cursor_get_comment_range(@cursor)) end
completion()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 66 def completion CodeCompletion::String.new Lib.get_cursor_completion_string(@cursor) end
declaration?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 70 def declaration? Lib.is_declaration(kind) != 0 end
definition()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 214 def definition Cursor.new Lib.get_cursor_definition(@cursor), @translation_unit end
definition?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 178 def definition? Lib.is_definition(@cursor) != 0 end
display_name()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 126 def display_name Lib.extract_string Lib.get_cursor_display_name(@cursor) end
dynamic_call?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 170 def dynamic_call? Lib.is_dynamic_call(@cursor) != 0 end
enum_decl_integer_type()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 158 def enum_decl_integer_type Type.new Lib.get_enum_decl_integer_type(@cursor), @translation_unit end
enum_type()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 202 def enum_type Type.new Lib.get_enum_type(@cursor), @translation_unit end
enum_unsigned_value()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 198 def enum_unsigned_value Lib.get_enum_unsigned_value @cursor end
enum_value()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 194 def enum_value Lib.get_enum_value @cursor end
expression?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 78 def expression? Lib.is_expression(kind) != 0 end
extent()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 122 def extent SourceRange.new(Lib.get_cursor_extent(@cursor)) end
filter() { |child, parent| ... }
click to toggle source
# File lib/ffi/clang/cursor.rb, line 358 def filter return to_enum(:select) unless block_given? matching = [] self.visit_children do |child, parent| if yield(child, parent) matching << child end :recurse end return matching end
find_all(*kinds)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 348 def find_all(*kinds) filter do |child, parent| kinds.include?(child.kind) end end
find_first(*kinds)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 354 def find_first(*kinds) find_all(*kinds).first end
hash()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 312 def hash Lib.get_cursor_hash(@cursor) end
included_file()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 262 def included_file File.new Lib.get_included_file(@cursor), @translation_unit end
invalid?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 102 def invalid? Lib.is_invalid(kind) != 0 end
kind()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 138 def kind @cursor[:kind] end
kind_spelling()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 142 def kind_spelling Cursor.kind_spelling @cursor[:kind] end
language()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 238 def language Lib.get_language @cursor end
lexical_parent()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 226 def lexical_parent Cursor.new Lib.get_cursor_lexical_parent(@cursor), @translation_unit end
linkage()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 254 def linkage Lib.get_cursor_linkage(@cursor) end
location()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 118 def location ExpansionLocation.new(Lib.get_cursor_location(@cursor)) end
null?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 50 def null? Lib.cursor_is_null(@cursor) != 0 end
num_args()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 242 def num_args Lib.get_num_args @cursor end
num_arguments()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 340 def num_arguments Lib.cursor_get_num_arguments(@cursor) end
num_overloaded_decls()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 328 def num_overloaded_decls Lib.get_num_overloaded_decls(@cursor) end
objc_type_encoding()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 332 def objc_type_encoding Lib.extract_string Lib.get_decl_objc_type_encoding(@cursor) end
overloaded_decl(i)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 324 def overloaded_decl(i) Cursor.new Lib.get_overloaded_decl(@cursor, i), @translation_unit end
overriddens()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 296 def overriddens cursor_ptr = FFI::MemoryPointer.new :pointer num_ptr = FFI::MemoryPointer.new :uint Lib.get_overridden_cursors(@cursor, cursor_ptr, num_ptr) num = num_ptr.get_uint(0) cur_ptr = cursor_ptr.get_pointer(0) overriddens = [] num.times { overriddens << Cursor.new(cur_ptr, @translation_unit) cur_ptr += Lib::CXCursor.size } Lib.dispose_overridden_cursors(cursor_ptr.get_pointer(0)) if num != 0 overriddens end
platform_availability(max_availability_size = 4)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 266 def platform_availability(max_availability_size = 4) availability_ptr = FFI::MemoryPointer.new(Lib::CXPlatformAvailability, max_availability_size) always_deprecated_ptr = FFI::MemoryPointer.new :int always_unavailable_ptr = FFI::MemoryPointer.new :int deprecated_message_ptr = FFI::MemoryPointer.new Lib::CXString unavailable_message_ptr = FFI::MemoryPointer.new Lib::CXString actual_availability_size = Lib.get_cursor_platform_availability( @cursor, always_deprecated_ptr, deprecated_message_ptr, always_unavailable_ptr, unavailable_message_ptr, availability_ptr, max_availability_size) availability = [] cur_ptr = availability_ptr [actual_availability_size, max_availability_size].min.times { availability << PlatformAvailability.new(cur_ptr) cur_ptr += Lib::CXPlatformAvailability.size } # return as Hash { always_deprecated: always_deprecated_ptr.get_int(0), always_unavailable: always_unavailable_ptr.get_int(0), deprecated_message: Lib.extract_string(Lib::CXString.new(deprecated_message_ptr)), unavailable_message: Lib.extract_string(Lib::CXString.new(unavailable_message_ptr)), availability: availability } end
preprocessing?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 110 def preprocessing? Lib.is_preprocessing(kind) != 0 end
private?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 94 def private? Lib.cxx_get_access_specifier(@cursor) == :private end
protected?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 98 def protected? Lib.cxx_get_access_specifier(@cursor) == :protected end
public?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 90 def public? Lib.cxx_get_access_specifier(@cursor) == :public end
pure_virtual?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 190 def pure_virtual? Lib.cxx_method_is_pure_virtual(@cursor) != 0 end
raw_comment_text()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 54 def raw_comment_text Lib.extract_string Lib.cursor_get_raw_comment_text(@cursor) end
reference?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 74 def reference? Lib.is_reference(kind) != 0 end
referenced()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 218 def referenced Cursor.new Lib.get_cursor_referenced(@cursor), @translation_unit end
result_type()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 150 def result_type Type.new Lib.get_cursor_result_type(@cursor), @translation_unit end
select() { |child| ... }
click to toggle source
# File lib/ffi/clang/cursor.rb, line 374 def select filter do |child, parent| yield(child) end end
semantic_parent()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 222 def semantic_parent Cursor.new Lib.get_cursor_semantic_parent(@cursor), @translation_unit end
specialized_template()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 206 def specialized_template Cursor.new Lib.get_specialized_cursor_template(@cursor), @translation_unit end
spelling()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 130 def spelling Lib.extract_string Lib.get_cursor_spelling(@cursor) end
statement?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 82 def statement? Lib.is_statement(kind) != 0 end
static?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 182 def static? Lib.cxx_method_is_static(@cursor) != 0 end
template_kind()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 230 def template_kind Lib.get_template_cursor_kind @cursor end
to_a()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 380 def to_a filter.collect{|child, parent| child} end
translation_unit?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 106 def translation_unit? Lib.is_translation_unit(kind) != 0 end
type()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 146 def type Type.new Lib.get_cursor_type(@cursor), @translation_unit end
typedef_type()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 162 def typedef_type Type.new Lib.get_typedef_decl_unerlying_type(@cursor), @translation_unit end
underlying_type()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 154 def underlying_type Type.new Lib.get_typedef_decl_underlying_type(@cursor), @translation_unit end
unexposed?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 114 def unexposed? Lib.is_unexposed(kind) != 0 end
usr()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 134 def usr Lib.extract_string Lib.get_cursor_usr(@cursor) end
variadic?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 174 def variadic? Lib.is_variadic(@cursor) != 0 end
virtual?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 186 def virtual? Lib.cxx_method_is_virtual(@cursor) != 0 end
virtual_base?()
click to toggle source
# File lib/ffi/clang/cursor.rb, line 166 def virtual_base? Lib.is_virtual_base(@cursor) != 0 end
visit_children(&block)
click to toggle source
# File lib/ffi/clang/cursor.rb, line 246 def visit_children(&block) adapter = Proc.new do |cxcursor, parent_cursor, unused| block.call Cursor.new(cxcursor, @translation_unit), Cursor.new(parent_cursor, @translation_unit) end Lib.visit_children(@cursor, adapter, nil) end