Module: MilkTea::Bindgen

Defined in:
lib/milk_tea/bindings/bindgen.rb,
lib/milk_tea/bindings/bindgen/emitter.rb,
lib/milk_tea/bindings/bindgen/overrides.rb,
lib/milk_tea/bindings/bindgen/ast_parser.rb,
lib/milk_tea/bindings/bindgen/declaration.rb,
lib/milk_tea/bindings/bindgen/type_mapper.rb

Defined Under Namespace

Classes: Generator

Constant Summary collapse

MACRO_CONST_PREFIX =
"__mt_bindgen_macro_"
QUALIFIERS =
%w[const volatile restrict].freeze
NULLABILITY_QUALIFIERS =
%w[_Nullable _Nonnull _Null_unspecified _Nullable_result].freeze
NON_VALUE_MACRO_TOKENS =
%w[
  extern static inline typedef struct union enum do if else for while return sizeof
  __attribute__ __attribute __declspec
].freeze
PRIMITIVE_TYPE_MAP =
{
  "_Bool" => "bool",
  "bool" => "bool",
  "void" => "void",
  "char" => "char",
  "signed char" => "byte",
  "unsigned char" => "ubyte",
  "short" => "short",
  "short int" => "short",
  "signed short" => "short",
  "signed short int" => "short",
  "unsigned short" => "ushort",
  "unsigned short int" => "ushort",
  "int" => "int",
  "signed" => "int",
  "signed int" => "int",
  "unsigned" => "uint",
  "unsigned int" => "uint",
  "long" => "ptr_int",
  "long int" => "ptr_int",
  "signed long" => "ptr_int",
  "signed long int" => "ptr_int",
  "unsigned long" => "ptr_uint",
  "unsigned long int" => "ptr_uint",
  "long long" => "long",
  "long long int" => "long",
  "signed long long" => "long",
  "signed long long int" => "long",
  "unsigned long long" => "ulong",
  "unsigned long long int" => "ulong",
  "float" => "float",
  "double" => "double",
}.freeze

Class Method Summary collapse

Class Method Details

.generate(module_name:, header_path:, tracked_header_paths: [], tracked_header_prefixes: [], declaration_name_prefixes: [], excluded_declaration_names: [], link_libraries: [], include_directives: nil, bindgen_defines: [], bindgen_include_directives: [], module_imports: [], clang: ENV.fetch("CLANG", "clang"), clang_args: [], type_name_overrides: {}, type_overrides: {}, function_param_type_overrides: {}, function_return_type_overrides: {}, field_type_overrides: {}, allow_static_inline_functions: false, strip_leading_underscores: false) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/milk_tea/bindings/bindgen.rb', line 58

def self.generate(module_name:, header_path:, tracked_header_paths: [], tracked_header_prefixes: [], declaration_name_prefixes: [], excluded_declaration_names: [], link_libraries: [], include_directives: nil, bindgen_defines: [], bindgen_include_directives: [], module_imports: [], clang: ENV.fetch("CLANG", "clang"), clang_args: [], type_name_overrides: {}, type_overrides: {}, function_param_type_overrides: {}, function_return_type_overrides: {}, field_type_overrides: {}, allow_static_inline_functions: false, strip_leading_underscores: false)
  generate_with_report(
    module_name:,
    header_path:,
    tracked_header_paths:,
    tracked_header_prefixes:,
    declaration_name_prefixes:,
    excluded_declaration_names:,
    link_libraries:,
    include_directives:,
    bindgen_defines:,
    bindgen_include_directives:,
    module_imports:,
    clang:,
    clang_args:,
    type_name_overrides:,
    type_overrides:,
    function_param_type_overrides:,
    function_return_type_overrides:,
    field_type_overrides:,
    allow_static_inline_functions:,
    strip_leading_underscores:,
  ).fetch(:source)
end

.generate_with_report(module_name:, header_path:, tracked_header_paths: [], tracked_header_prefixes: [], declaration_name_prefixes: [], excluded_declaration_names: [], link_libraries: [], include_directives: nil, bindgen_defines: [], bindgen_include_directives: [], module_imports: [], clang: ENV.fetch("CLANG", "clang"), clang_args: [], type_name_overrides: {}, type_overrides: {}, function_param_type_overrides: {}, function_return_type_overrides: {}, field_type_overrides: {}, allow_static_inline_functions: false, strip_leading_underscores: false) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/milk_tea/bindings/bindgen.rb', line 83

def self.generate_with_report(module_name:, header_path:, tracked_header_paths: [], tracked_header_prefixes: [], declaration_name_prefixes: [], excluded_declaration_names: [], link_libraries: [], include_directives: nil, bindgen_defines: [], bindgen_include_directives: [], module_imports: [], clang: ENV.fetch("CLANG", "clang"), clang_args: [], type_name_overrides: {}, type_overrides: {}, function_param_type_overrides: {}, function_return_type_overrides: {}, field_type_overrides: {}, allow_static_inline_functions: false, strip_leading_underscores: false)
  Generator.new(
    module_name:,
    header_path:,
    tracked_header_paths:,
    tracked_header_prefixes:,
    declaration_name_prefixes:,
    excluded_declaration_names:,
    link_libraries:,
    include_directives:,
    bindgen_defines:,
    bindgen_include_directives:,
    module_imports:,
    clang:,
    clang_args:,
    type_name_overrides:,
    type_overrides:,
    function_param_type_overrides:,
    function_return_type_overrides:,
    field_type_overrides:,
    allow_static_inline_functions:,
    strip_leading_underscores:,
  ).generate_with_report
end