@@ -36,6 +36,17 @@ def generate_initial_go_file(go_file_path)
36
36
GO
37
37
end
38
38
39
+ C_TYPE_TO_GO_TYPE = {
40
+ "RUBY_DATA_FUNC" => "unsafe.Pointer" ,
41
+ "long long" => "Longlong" ,
42
+ "rb_alloc_func_t" => "unsafe.Pointer" ,
43
+ "unsigned char" => "Uchar" ,
44
+ "unsigned int" => "uint" ,
45
+ "unsigned long" => "uint" ,
46
+ "unsigned long long" => "Ulonglong" ,
47
+ "unsigned short" => "Ushort" ,
48
+ } . freeze
49
+
39
50
# Convert C type to Go type. (used in wrapper function args and return type etc)
40
51
# @param typename [String]
41
52
# @param pos [Symbol,nil] :arg, :typeref, :return
@@ -45,19 +56,9 @@ def generate_initial_go_file(go_file_path)
45
56
def ruby_c_type_to_go_type ( typename , pos : nil , pointer : nil , pointer_length : 0 )
46
57
return ruby_pointer_c_type_to_go_type ( typename , pos :, pointer :, pointer_length :) if pointer
47
58
59
+ return C_TYPE_TO_GO_TYPE [ typename ] if C_TYPE_TO_GO_TYPE [ typename ]
60
+
48
61
case typename
49
- when "unsigned int" , "unsigned long"
50
- return "uint"
51
- when "unsigned short"
52
- return "Ushort"
53
- when "unsigned char"
54
- return "Uchar"
55
- when "long long"
56
- return "Longlong"
57
- when "unsigned long long"
58
- return "Ulonglong"
59
- when "RUBY_DATA_FUNC" , "rb_alloc_func_t"
60
- return "unsafe.Pointer"
61
62
when /^[A-Z]+$/ , "int"
62
63
# e.g. VALUE
63
64
return typename
0 commit comments