@@ -68,22 +68,7 @@ def generate_go_arguments(char_var_count:, chars_var_count:)
68
68
when :ref
69
69
case type
70
70
when "char"
71
- # self is string
72
- if char_var_count >= 2
73
- chars_var_name = "char#{ snake_to_camel ( go_name ) } "
74
- clean_var_name = "cleanChar#{ go_name } "
75
- else
76
- chars_var_name = "char"
77
- clean_var_name = "clean"
78
- end
79
-
80
- before_call_function_lines = [
81
- "#{ chars_var_name } , #{ clean_var_name } := string2Char(#{ go_name } )" ,
82
- "defer #{ clean_var_name } ()" ,
83
- "" ,
84
- ]
85
-
86
- return chars_var_name , before_call_function_lines , [ ]
71
+ return generate_go_arguments_for_char_pointer ( char_var_count )
87
72
88
73
when "void"
89
74
# c_arg is pointer
@@ -102,25 +87,62 @@ def generate_go_arguments(char_var_count:, chars_var_count:)
102
87
return "toCFunctionPointer(#{ go_name } )" , [ ] , [ ]
103
88
104
89
when :str_array
105
- if chars_var_count >= 2
106
- chars_var_name = "chars#{ snake_to_camel ( go_name ) } "
107
- clean_var_name = "cleanChars#{ go_name } "
108
- else
109
- chars_var_name = "chars"
110
- clean_var_name = "cleanChars"
111
- end
90
+ return generate_go_arguments_for_str_array ( chars_var_count )
112
91
113
- before_call_function_lines = [
114
- "#{ chars_var_name } , #{ clean_var_name } := strings2Chars(#{ go_name } )" ,
115
- "defer #{ clean_var_name } ()" ,
116
- "" ,
117
- ]
92
+ else
93
+ return cast_to_cgo , [ ] , [ ]
94
+ end
95
+ end
118
96
119
- return chars_var_name , before_call_function_lines , [ ]
97
+ private
120
98
99
+ # @param char_var_count [Integer]
100
+ #
101
+ # @return [Array<String, Array<String>, Array<String>>]
102
+ # - casted_go_arg [String]
103
+ # - before_call_function_lines [Array<String>]
104
+ # - after_call_function_lines [Array<String>]
105
+ def generate_go_arguments_for_char_pointer ( char_var_count )
106
+ # self is string
107
+ if char_var_count >= 2
108
+ chars_var_name = "char#{ snake_to_camel ( go_name ) } "
109
+ clean_var_name = "cleanChar#{ go_name } "
121
110
else
122
- return cast_to_cgo , [ ] , [ ]
111
+ chars_var_name = "char"
112
+ clean_var_name = "clean"
123
113
end
114
+
115
+ before_call_function_lines = [
116
+ "#{ chars_var_name } , #{ clean_var_name } := string2Char(#{ go_name } )" ,
117
+ "defer #{ clean_var_name } ()" ,
118
+ "" ,
119
+ ]
120
+
121
+ [ chars_var_name , before_call_function_lines , [ ] ]
122
+ end
123
+
124
+ # @param chars_var_count [Integer]
125
+ #
126
+ # @return [Array<String, Array<String>, Array<String>>]
127
+ # - casted_go_arg [String]
128
+ # - before_call_function_lines [Array<String>]
129
+ # - after_call_function_lines [Array<String>]
130
+ def generate_go_arguments_for_str_array ( chars_var_count )
131
+ if chars_var_count >= 2
132
+ chars_var_name = "chars#{ snake_to_camel ( go_name ) } "
133
+ clean_var_name = "cleanChars#{ go_name } "
134
+ else
135
+ chars_var_name = "chars"
136
+ clean_var_name = "cleanChars"
137
+ end
138
+
139
+ before_call_function_lines = [
140
+ "#{ chars_var_name } , #{ clean_var_name } := strings2Chars(#{ go_name } )" ,
141
+ "defer #{ clean_var_name } ()" ,
142
+ "" ,
143
+ ]
144
+
145
+ [ chars_var_name , before_call_function_lines , [ ] ]
124
146
end
125
147
end
126
148
end
0 commit comments