class Bindgen::Parser::Class

Overview

Describes a C++ class, struct, or union.

Included Modules

Defined in:

bindgen/parser/class.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(pull : JSON::PullParser) #

[View source]
def self.new(name : String, byte_size : Int32 = 0, pack_alignment : Int32 = 0, has_default_constructor : Bool = false, has_copy_constructor : Bool = false, has_user_declared_constructor : Bool = false, type_kind : Bindgen::Parser::TypeKind = TypeKind::Class, abstract __arg0 : Bool = false, final : Bool = false, polymorphic : Bool = false, trivially_copyable : Bool = true, standard_layout : Bool = true, anonymous : Bool = false, destructible : Bool = true, bases : Array(Bindgen::Parser::BaseClass) = [] of BaseClass, fields : Array(Bindgen::Parser::Field) = [] of Field, methods : Array(Bindgen::Parser::Method) = [] of Method, access : Bindgen::Parser::AccessSpecifier = AccessSpecifier::Public, doc : Nil | String = nil) #

[View source]

Instance Method Detail

def abstract? : Bool #

Is this class abstract?


[View source]

Visibility of the class. Default is public, but some generated Crystal classes may be private.


[View source]
def anonymous? : Bool #

Is this class anonymous?


[View source]
def as_type(pointer = 1, reference = false, const = false) : Type #

Returns a Type referencing this class.


[View source]
def bases : Array(BaseClass) #

Direct bases of the class.


[View source]
def binding_name : String #

The name of the class as part of binding methods.


[View source]
def byte_size : Int32 #

Size of an instance of the class in memory.


[View source]
def class?(*args, **options) #

Is this a class, struct, or C union?


[View source]
def class?(*args, **options, &) #

Is this a class, struct, or C union?


[View source]
def cpp_union?(*args, **options) #

Is this a class, struct, or C union?


[View source]
def cpp_union?(*args, **options, &) #

Is this a class, struct, or C union?


[View source]
def destructible? : Bool #

Is this class publicly destructible?


[View source]
def destructor_method : Method #

Constructs a method destroying an instance of this class.


[View source]
def destructor_name : String #

The full binding function name of the destructor.


[View source]
def doc : String | Nil #

Documentation comment from the C++ source, without comment markers.


[View source]
def each_wrappable_method(&) #

Yields each wrappable method without any further processing.

Note: This method hard-codes which methods to ignore. If you're wondering why a method doesn't even reach the graph in the first place, look in here.


[View source]
def fields : Array(Field) #

Data members defined in the class, both static and non-static.


[View source]
def final? : Bool #

Is this class final, so it can't be derived from?


[View source]
def find_parent_method(method : Method) : Method | Nil #

Assumes that method exists in a class inheriting from this class. Tries to find a method in this class which is overriden by method. The return type isn't compared, as an override may change it covariantly.


[View source]
def has_copy_constructor? : Bool #

Is the type copy-constructible?


[View source]
def has_default_constructor? : Bool #

Does the type have a default, argument-less constructor?


[View source]
def has_user_declared_constructor? : Bool #

Does the type declare any constructor itself? This includes defaulted (= default) and deleted ones, which #methods can't tell: A defaulted constructor is Method#builtin?, and a deleted one isn't listed.


[View source]
def has_virtual_methods? #

Does this class have any virtual methods?


[View source]
def methods : Array(Method) #

Methods defined in the class.


[View source]
def name : String #

Fully qualified name of the class.


[View source]
def pack_alignment : Int32 #

The alignment limit in bytes of packing that moves a member: 1 for __attribute__((packed)), or N for #pragma pack(N). 0 if the class isn't packed, or the packing doesn't change its layout.


[View source]
def packed? : Bool #

Are the members of this class packed without alignment?


[View source]
def polymorphic? : Bool #

Does the class declare or inherit a virtual method?


[View source]
def private?(*args, **options) #

[View source]
def private?(*args, **options, &) #

[View source]
def protected?(*args, **options) #

[View source]
def protected?(*args, **options, &) #

[View source]
def public?(*args, **options) #

[View source]
def public?(*args, **options, &) #

[View source]
def standard_layout? : Bool #

Is the class laid out like a C structure?


[View source]
def struct?(*args, **options) #

Is this a class, struct, or C union?


[View source]
def struct?(*args, **options, &) #

Is this a class, struct, or C union?


[View source]
def trivially_copyable? : Bool #

Can an instance be copied byte-wise, like a C structure?


[View source]
def type_kind : TypeKind #

The keyword used to declare this type (class, struct, or union).


[View source]
def wrap_methods : Array(Method) #

List of all wrappable-methods. This includes all Method#variants. Methods which use Method#move_semantics? on any type are explicitly removed.

Note: This is a memoized getter. Thus it's cheap to call it multiple times.


[View source]
def wrappable_methods #

Non-yielding version of #each_wrappable_method


[View source]