@@ -164,23 +164,35 @@ def parse_ctype(ty, tymap=nil)
164164 unless Fiddle . const_defined? ( :TYPE_LONG_LONG )
165165 raise ( RuntimeError , "unsupported type: #{ ty } " )
166166 end
167- return -TYPE_LONG_LONG
168- when /\A (?:signed\s +)?long(?:\s +int\s +)?(?:\s +\w +)?\z /
167+ return TYPE_ULONG_LONG
168+ when /\A unsigned\s +long(?:\s +int\s +)?(?:\s +\w +)?\z / ,
169+ /\A unsigned\s +int\s +long(?:\s +\w +)?\z / ,
170+ /\A long(?:\s +int)?\s +unsigned(?:\s +\w +)?\z / ,
171+ /\A int\s +unsigned\s +long(?:\s +\w +)?\z / ,
172+ /\A (?:int\s +)?long\s +unsigned(?:\s +\w +)?\z /
173+ return TYPE_ULONG
174+ when /\A (?:signed\s +)?long(?:\s +int\s +)?(?:\s +\w +)?\z / ,
175+ /\A (?:signed\s +)?int\s +long(?:\s +\w +)?\z / ,
176+ /\A long(?:\s +int)?\s +signed(?:\s +\w +)?\z /
169177 return TYPE_LONG
170- when /\A unsigned\s +long(?:\s +int\s +)?(?:\s +\w +)?\z /
171- return -TYPE_LONG
178+ when /\A unsigned\s +short(?:\s +int\s +)?(?:\s +\w +)?\z / ,
179+ /\A unsigned\s +int\s +short(?:\s +\w +)?\z / ,
180+ /\A short(?:\s +int)?\s +unsigned(?:\s +\w +)?\z / ,
181+ /\A int\s +unsigned\s +short(?:\s +\w +)?\z / ,
182+ /\A (?:int\s +)?short\s +unsigned(?:\s +\w +)?\z /
183+ return TYPE_USHORT
184+ when /\A (?:signed\s +)?short(?:\s +int\s +)?(?:\s +\w +)?\z / ,
185+ /\A (?:signed\s +)?int\s +short(?:\s +\w +)?\z / ,
186+ /\A int\s +(?:signed\s +)?short(?:\s +\w +)?\z /
187+ return TYPE_SHORT
172188 when /\A (?:signed\s +)?int(?:\s +\w +)?\z /
173189 return TYPE_INT
174190 when /\A (?:unsigned\s +int|uint)(?:\s +\w +)?\z /
175- return -TYPE_INT
176- when /\A (?:signed\s +)?short(?:\s +int\s +)?(?:\s +\w +)?\z /
177- return TYPE_SHORT
178- when /\A unsigned\s +short(?:\s +int\s +)?(?:\s +\w +)?\z /
179- return -TYPE_SHORT
191+ return TYPE_UINT
180192 when /\A (?:signed\s +)?char(?:\s +\w +)?\z /
181193 return TYPE_CHAR
182194 when /\A unsigned\s +char(?:\s +\w +)?\z /
183- return - TYPE_CHAR
195+ return TYPE_UCHAR
184196 when /\A int8_t(?:\s +\w +)?\z /
185197 unless Fiddle . const_defined? ( :TYPE_INT8_T )
186198 raise ( RuntimeError , "unsupported type: #{ ty } " )
@@ -190,7 +202,7 @@ def parse_ctype(ty, tymap=nil)
190202 unless Fiddle . const_defined? ( :TYPE_INT8_T )
191203 raise ( RuntimeError , "unsupported type: #{ ty } " )
192204 end
193- return - TYPE_INT8_T
205+ return TYPE_UINT8_T
194206 when /\A int16_t(?:\s +\w +)?\z /
195207 unless Fiddle . const_defined? ( :TYPE_INT16_T )
196208 raise ( RuntimeError , "unsupported type: #{ ty } " )
@@ -200,7 +212,7 @@ def parse_ctype(ty, tymap=nil)
200212 unless Fiddle . const_defined? ( :TYPE_INT16_T )
201213 raise ( RuntimeError , "unsupported type: #{ ty } " )
202214 end
203- return - TYPE_INT16_T
215+ return TYPE_UINT16_T
204216 when /\A int32_t(?:\s +\w +)?\z /
205217 unless Fiddle . const_defined? ( :TYPE_INT32_T )
206218 raise ( RuntimeError , "unsupported type: #{ ty } " )
@@ -210,7 +222,7 @@ def parse_ctype(ty, tymap=nil)
210222 unless Fiddle . const_defined? ( :TYPE_INT32_T )
211223 raise ( RuntimeError , "unsupported type: #{ ty } " )
212224 end
213- return - TYPE_INT32_T
225+ return TYPE_UINT32_T
214226 when /\A int64_t(?:\s +\w +)?\z /
215227 unless Fiddle . const_defined? ( :TYPE_INT64_T )
216228 raise ( RuntimeError , "unsupported type: #{ ty } " )
@@ -220,7 +232,7 @@ def parse_ctype(ty, tymap=nil)
220232 unless Fiddle . const_defined? ( :TYPE_INT64_T )
221233 raise ( RuntimeError , "unsupported type: #{ ty } " )
222234 end
223- return - TYPE_INT64_T
235+ return TYPE_UINT64_T
224236 when /\A float(?:\s +\w +)?\z /
225237 return TYPE_FLOAT
226238 when /\A double(?:\s +\w +)?\z /
@@ -235,6 +247,8 @@ def parse_ctype(ty, tymap=nil)
235247 return TYPE_INTPTR_T
236248 when /\A uintptr_t(?:\s +\w +)?\z /
237249 return TYPE_UINTPTR_T
250+ when "bool"
251+ return TYPE_BOOL
238252 when /\* / , /\[ [\s \d ]*\] /
239253 return TYPE_VOIDP
240254 when "..."
0 commit comments