From 091b449a54d126194616806aa727d00ecae12c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= Date: Mon, 2 Feb 2026 19:05:57 +0200 Subject: [PATCH] Fix function array argument calling convention --- lib/ffi_generator/generators/from_c_generator/array_type.rb | 4 ++-- .../generators/from_c_generator/by_value_type.rb | 2 +- lib/ffi_generator/generators/from_c_generator/enum.rb | 2 +- .../generators/from_c_generator/function_or_callback.rb | 4 ++-- lib/ffi_generator/generators/from_c_generator/pointer_type.rb | 2 +- .../generators/from_c_generator/primitive_type.rb | 2 +- lib/ffi_generator/generators/from_c_generator/string_type.rb | 2 +- .../generators/from_c_generator/struct_or_union.rb | 2 +- lib/ffi_generator/generators/from_c_generator/unknown_type.rb | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/ffi_generator/generators/from_c_generator/array_type.rb b/lib/ffi_generator/generators/from_c_generator/array_type.rb index f4b4955..01b2fc0 100644 --- a/lib/ffi_generator/generators/from_c_generator/array_type.rb +++ b/lib/ffi_generator/generators/from_c_generator/array_type.rb @@ -15,8 +15,8 @@ def ruby_name "array" end - def ruby_ffi_type - if @constant_size + def ruby_ffi_type(usecase = nil) + if @constant_size && usecase != :function_argument "[#{@element_type.ruby_ffi_type}, #{@constant_size}]" else ":pointer" diff --git a/lib/ffi_generator/generators/from_c_generator/by_value_type.rb b/lib/ffi_generator/generators/from_c_generator/by_value_type.rb index 394ee80..e2593d1 100644 --- a/lib/ffi_generator/generators/from_c_generator/by_value_type.rb +++ b/lib/ffi_generator/generators/from_c_generator/by_value_type.rb @@ -14,7 +14,7 @@ def ruby_name @inner_type.ruby_name end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) "#{@inner_type.ruby_ffi_type}.by_value" end diff --git a/lib/ffi_generator/generators/from_c_generator/enum.rb b/lib/ffi_generator/generators/from_c_generator/enum.rb index ab3581d..922278d 100644 --- a/lib/ffi_generator/generators/from_c_generator/enum.rb +++ b/lib/ffi_generator/generators/from_c_generator/enum.rb @@ -51,7 +51,7 @@ def ruby_name @ruby_name ||= @name.to_ruby_downcase end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) ":#{ruby_name}" end diff --git a/lib/ffi_generator/generators/from_c_generator/function_or_callback.rb b/lib/ffi_generator/generators/from_c_generator/function_or_callback.rb index 47a2da1..f46ebcc 100644 --- a/lib/ffi_generator/generators/from_c_generator/function_or_callback.rb +++ b/lib/ffi_generator/generators/from_c_generator/function_or_callback.rb @@ -32,7 +32,7 @@ def write_ruby writer.puts "@scope class" end - ffi_signature = "[#{@parameters.map{ |parameter| parameter[:type].ruby_ffi_type }.join(', ')}], #{@return_type.ruby_ffi_type}" + ffi_signature = "[#{@parameters.map{ |parameter| parameter[:type].ruby_ffi_type(:function_argument) }.join(', ')}], #{@return_type.ruby_ffi_type}" if @is_callback write_callback(ruby_name, ffi_signature) @@ -69,7 +69,7 @@ def ruby_name @ruby_name ||= @name.to_ruby_downcase end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) ":#{ruby_name}" end diff --git a/lib/ffi_generator/generators/from_c_generator/pointer_type.rb b/lib/ffi_generator/generators/from_c_generator/pointer_type.rb index eae0cf7..888b615 100644 --- a/lib/ffi_generator/generators/from_c_generator/pointer_type.rb +++ b/lib/ffi_generator/generators/from_c_generator/pointer_type.rb @@ -17,7 +17,7 @@ def ruby_name @pointee_name.to_ruby_downcase end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) ":pointer" end diff --git a/lib/ffi_generator/generators/from_c_generator/primitive_type.rb b/lib/ffi_generator/generators/from_c_generator/primitive_type.rb index 708769a..bb9c251 100644 --- a/lib/ffi_generator/generators/from_c_generator/primitive_type.rb +++ b/lib/ffi_generator/generators/from_c_generator/primitive_type.rb @@ -23,7 +23,7 @@ def ruby_name end end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) case @clang_type when :void then ":void" when :bool then ":bool" diff --git a/lib/ffi_generator/generators/from_c_generator/string_type.rb b/lib/ffi_generator/generators/from_c_generator/string_type.rb index 79d0cbd..eeb9170 100644 --- a/lib/ffi_generator/generators/from_c_generator/string_type.rb +++ b/lib/ffi_generator/generators/from_c_generator/string_type.rb @@ -10,7 +10,7 @@ def ruby_name "String" end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) ":string" end diff --git a/lib/ffi_generator/generators/from_c_generator/struct_or_union.rb b/lib/ffi_generator/generators/from_c_generator/struct_or_union.rb index 74cc46f..211981a 100644 --- a/lib/ffi_generator/generators/from_c_generator/struct_or_union.rb +++ b/lib/ffi_generator/generators/from_c_generator/struct_or_union.rb @@ -70,7 +70,7 @@ def ruby_name @ruby_name ||= @name.to_ruby_classname end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) @written ? ruby_name : ":pointer" end diff --git a/lib/ffi_generator/generators/from_c_generator/unknown_type.rb b/lib/ffi_generator/generators/from_c_generator/unknown_type.rb index 60e05d2..a19361b 100644 --- a/lib/ffi_generator/generators/from_c_generator/unknown_type.rb +++ b/lib/ffi_generator/generators/from_c_generator/unknown_type.rb @@ -10,7 +10,7 @@ def ruby_name "error_unknown" end - def ruby_ffi_type + def ruby_ffi_type(usecase = nil) ":char" end