diff --git a/config/default.yml b/config/default.yml index 9306b2f..f73da7b 100644 --- a/config/default.yml +++ b/config/default.yml @@ -110,6 +110,10 @@ function: 4: array rb_funcallv_public: 4: array + rb_gc_register_address: + 1: in_ref + rb_gc_unregister_address: + 1: in_ref rb_get_values_at: 5: function rb_glob: diff --git a/spec/ruby_header_parser/parser_spec.rb b/spec/ruby_header_parser/parser_spec.rb index ccc2938..b829cdc 100644 --- a/spec/ruby_header_parser/parser_spec.rb +++ b/spec/ruby_header_parser/parser_spec.rb @@ -201,6 +201,36 @@ its(:typeref) { should eq typeref(type: "void") } its(:args) { should eq args } end + + context "rb_gc_register_address" do + subject { definitions.find { |d| d.name == "rb_gc_register_address" } } + + let(:args) do + [ + argument(type: "VALUE", name: "valptr", pointer: :in_ref), + ] + end + + its(:name) { should eq "rb_gc_register_address" } + its(:definition) { should eq "void rb_gc_register_address(VALUE *valptr)" } + its(:typeref) { should eq typeref(type: "void") } + its(:args) { should eq args } + end + + context "rb_gc_unregister_address" do + subject { definitions.find { |d| d.name == "rb_gc_unregister_address" } } + + let(:args) do + [ + argument(type: "VALUE", name: "valptr", pointer: :in_ref), + ] + end + + its(:name) { should eq "rb_gc_unregister_address" } + its(:definition) { should eq "void rb_gc_unregister_address(VALUE *valptr)" } + its(:typeref) { should eq typeref(type: "void") } + its(:args) { should eq args } + end end describe "#extract_static_inline_function_definitions" do