Skip to content

Commit 2bef0f1

Browse files
tenderlovekou
andauthored
Add constants for unsigned values (#111)
This commit adds constants for unsigned values. Currently we can use `-` to mean "unsigned", but I think having a specific name makes Fiddle more user friendly. This commit continues to support `-`, but introduces negative constants with "unsigned" names I think this will help to eliminate [this code](https://github.com/ruby/ruby/blob/3a56bf0bcc66e14ffe5ec89efc32ecfceed180f4/lib/mjit/c_type.rb#L31-L38) Co-authored-by: Sutou Kouhei <kou@clear-code.com>
1 parent 1343ac7 commit 2bef0f1

File tree

7 files changed

+183
-44
lines changed

7 files changed

+183
-44
lines changed

ext/fiddle/closure.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ with_gvl_callback(void *ptr)
9292
case TYPE_INT:
9393
rb_ary_push(params, INT2NUM(*(int *)x->args[i]));
9494
break;
95-
case -TYPE_INT:
95+
case TYPE_UINT:
9696
rb_ary_push(params, UINT2NUM(*(unsigned int *)x->args[i]));
9797
break;
9898
case TYPE_VOIDP:
@@ -103,19 +103,19 @@ with_gvl_callback(void *ptr)
103103
case TYPE_LONG:
104104
rb_ary_push(params, LONG2NUM(*(long *)x->args[i]));
105105
break;
106-
case -TYPE_LONG:
106+
case TYPE_ULONG:
107107
rb_ary_push(params, ULONG2NUM(*(unsigned long *)x->args[i]));
108108
break;
109109
case TYPE_CHAR:
110110
rb_ary_push(params, INT2NUM(*(signed char *)x->args[i]));
111111
break;
112-
case -TYPE_CHAR:
112+
case TYPE_UCHAR:
113113
rb_ary_push(params, UINT2NUM(*(unsigned char *)x->args[i]));
114114
break;
115115
case TYPE_SHORT:
116116
rb_ary_push(params, INT2NUM(*(signed short *)x->args[i]));
117117
break;
118-
case -TYPE_SHORT:
118+
case TYPE_USHORT:
119119
rb_ary_push(params, UINT2NUM(*(unsigned short *)x->args[i]));
120120
break;
121121
case TYPE_DOUBLE:
@@ -128,7 +128,7 @@ with_gvl_callback(void *ptr)
128128
case TYPE_LONG_LONG:
129129
rb_ary_push(params, LL2NUM(*(LONG_LONG *)x->args[i]));
130130
break;
131-
case -TYPE_LONG_LONG:
131+
case TYPE_ULONG_LONG:
132132
rb_ary_push(params, ULL2NUM(*(unsigned LONG_LONG *)x->args[i]));
133133
break;
134134
#endif
@@ -151,17 +151,17 @@ with_gvl_callback(void *ptr)
151151
case TYPE_LONG:
152152
*(long *)x->resp = NUM2LONG(ret);
153153
break;
154-
case -TYPE_LONG:
154+
case TYPE_ULONG:
155155
*(unsigned long *)x->resp = NUM2ULONG(ret);
156156
break;
157157
case TYPE_CHAR:
158158
case TYPE_SHORT:
159159
case TYPE_INT:
160160
*(ffi_sarg *)x->resp = NUM2INT(ret);
161161
break;
162-
case -TYPE_CHAR:
163-
case -TYPE_SHORT:
164-
case -TYPE_INT:
162+
case TYPE_UCHAR:
163+
case TYPE_USHORT:
164+
case TYPE_UINT:
165165
*(ffi_arg *)x->resp = NUM2UINT(ret);
166166
break;
167167
case TYPE_VOIDP:
@@ -177,7 +177,7 @@ with_gvl_callback(void *ptr)
177177
case TYPE_LONG_LONG:
178178
*(LONG_LONG *)x->resp = NUM2LL(ret);
179179
break;
180-
case -TYPE_LONG_LONG:
180+
case TYPE_ULONG_LONG:
181181
*(unsigned LONG_LONG *)x->resp = NUM2ULL(ret);
182182
break;
183183
#endif

ext/fiddle/conversions.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -211,32 +211,32 @@ rb_fiddle_value_to_generic(int type, VALUE *src, fiddle_generic *dst)
211211
case TYPE_CHAR:
212212
dst->schar = (signed char)NUM2INT(*src);
213213
break;
214-
case -TYPE_CHAR:
214+
case TYPE_UCHAR:
215215
dst->uchar = (unsigned char)NUM2UINT(*src);
216216
break;
217217
case TYPE_SHORT:
218218
dst->sshort = (unsigned short)NUM2INT(*src);
219219
break;
220-
case -TYPE_SHORT:
220+
case TYPE_USHORT:
221221
dst->sshort = (signed short)NUM2UINT(*src);
222222
break;
223223
case TYPE_INT:
224224
dst->sint = NUM2INT(*src);
225225
break;
226-
case -TYPE_INT:
226+
case TYPE_UINT:
227227
dst->uint = NUM2UINT(*src);
228228
break;
229229
case TYPE_LONG:
230230
dst->slong = NUM2LONG(*src);
231231
break;
232-
case -TYPE_LONG:
232+
case TYPE_ULONG:
233233
dst->ulong = NUM2ULONG(*src);
234234
break;
235235
#if HAVE_LONG_LONG
236236
case TYPE_LONG_LONG:
237237
dst->slong_long = NUM2LL(*src);
238238
break;
239-
case -TYPE_LONG_LONG:
239+
case TYPE_ULONG_LONG:
240240
dst->ulong_long = NUM2ULL(*src);
241241
break;
242242
#endif
@@ -283,24 +283,24 @@ rb_fiddle_generic_to_value(VALUE rettype, fiddle_generic retval)
283283
PTR2NUM((void *)retval.pointer));
284284
case TYPE_CHAR:
285285
return INT2NUM((signed char)retval.fffi_sarg);
286-
case -TYPE_CHAR:
286+
case TYPE_UCHAR:
287287
return INT2NUM((unsigned char)retval.fffi_arg);
288288
case TYPE_SHORT:
289289
return INT2NUM((signed short)retval.fffi_sarg);
290-
case -TYPE_SHORT:
290+
case TYPE_USHORT:
291291
return INT2NUM((unsigned short)retval.fffi_arg);
292292
case TYPE_INT:
293293
return INT2NUM((signed int)retval.fffi_sarg);
294-
case -TYPE_INT:
294+
case TYPE_UINT:
295295
return UINT2NUM((unsigned int)retval.fffi_arg);
296296
case TYPE_LONG:
297297
return LONG2NUM(retval.slong);
298-
case -TYPE_LONG:
298+
case TYPE_ULONG:
299299
return ULONG2NUM(retval.ulong);
300300
#if HAVE_LONG_LONG
301301
case TYPE_LONG_LONG:
302302
return LL2NUM(retval.slong_long);
303-
case -TYPE_LONG_LONG:
303+
case TYPE_ULONG_LONG:
304304
return ULL2NUM(retval.ulong_long);
305305
#endif
306306
case TYPE_FLOAT:

ext/fiddle/fiddle.c

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,30 +182,60 @@ Init_fiddle(void)
182182
*/
183183
rb_define_const(mFiddle, "TYPE_CHAR", INT2NUM(TYPE_CHAR));
184184

185+
/* Document-const: TYPE_UCHAR
186+
*
187+
* C type - unsigned char
188+
*/
189+
rb_define_const(mFiddle, "TYPE_UCHAR", INT2NUM(TYPE_UCHAR));
190+
185191
/* Document-const: TYPE_SHORT
186192
*
187193
* C type - short
188194
*/
189195
rb_define_const(mFiddle, "TYPE_SHORT", INT2NUM(TYPE_SHORT));
190196

197+
/* Document-const: TYPE_USHORT
198+
*
199+
* C type - unsigned short
200+
*/
201+
rb_define_const(mFiddle, "TYPE_USHORT", INT2NUM(TYPE_USHORT));
202+
191203
/* Document-const: TYPE_INT
192204
*
193205
* C type - int
194206
*/
195207
rb_define_const(mFiddle, "TYPE_INT", INT2NUM(TYPE_INT));
196208

209+
/* Document-const: TYPE_UINT
210+
*
211+
* C type - unsigned int
212+
*/
213+
rb_define_const(mFiddle, "TYPE_UINT", INT2NUM(TYPE_UINT));
214+
197215
/* Document-const: TYPE_LONG
198216
*
199217
* C type - long
200218
*/
201219
rb_define_const(mFiddle, "TYPE_LONG", INT2NUM(TYPE_LONG));
202220

221+
/* Document-const: TYPE_ULONG
222+
*
223+
* C type - long
224+
*/
225+
rb_define_const(mFiddle, "TYPE_ULONG", INT2NUM(TYPE_ULONG));
226+
203227
#if HAVE_LONG_LONG
204228
/* Document-const: TYPE_LONG_LONG
205229
*
206230
* C type - long long
207231
*/
208232
rb_define_const(mFiddle, "TYPE_LONG_LONG", INT2NUM(TYPE_LONG_LONG));
233+
234+
/* Document-const: TYPE_ULONG_LONG
235+
*
236+
* C type - long long
237+
*/
238+
rb_define_const(mFiddle, "TYPE_ULONG_LONG", INT2NUM(TYPE_ULONG_LONG));
209239
#endif
210240

211241
#ifdef TYPE_INT8_T
@@ -214,6 +244,12 @@ Init_fiddle(void)
214244
* C type - int8_t
215245
*/
216246
rb_define_const(mFiddle, "TYPE_INT8_T", INT2NUM(TYPE_INT8_T));
247+
248+
/* Document-const: TYPE_UINT8_T
249+
*
250+
* C type - uint8_t
251+
*/
252+
rb_define_const(mFiddle, "TYPE_UINT8_T", INT2NUM(TYPE_UINT8_T));
217253
#endif
218254

219255
#ifdef TYPE_INT16_T
@@ -222,6 +258,12 @@ Init_fiddle(void)
222258
* C type - int16_t
223259
*/
224260
rb_define_const(mFiddle, "TYPE_INT16_T", INT2NUM(TYPE_INT16_T));
261+
262+
/* Document-const: TYPE_UINT16_T
263+
*
264+
* C type - uint16_t
265+
*/
266+
rb_define_const(mFiddle, "TYPE_UINT16_T", INT2NUM(TYPE_UINT16_T));
225267
#endif
226268

227269
#ifdef TYPE_INT32_T
@@ -230,6 +272,12 @@ Init_fiddle(void)
230272
* C type - int32_t
231273
*/
232274
rb_define_const(mFiddle, "TYPE_INT32_T", INT2NUM(TYPE_INT32_T));
275+
276+
/* Document-const: TYPE_UINT32_T
277+
*
278+
* C type - uint32_t
279+
*/
280+
rb_define_const(mFiddle, "TYPE_UINT32_T", INT2NUM(TYPE_UINT32_T));
233281
#endif
234282

235283
#ifdef TYPE_INT64_T
@@ -238,6 +286,12 @@ Init_fiddle(void)
238286
* C type - int64_t
239287
*/
240288
rb_define_const(mFiddle, "TYPE_INT64_T", INT2NUM(TYPE_INT64_T));
289+
290+
/* Document-const: TYPE_UINT64_T
291+
*
292+
* C type - uint64_t
293+
*/
294+
rb_define_const(mFiddle, "TYPE_UINT64_T", INT2NUM(TYPE_UINT64_T));
241295
#endif
242296

243297
/* Document-const: TYPE_FLOAT
@@ -422,30 +476,60 @@ Init_fiddle(void)
422476
*/
423477
rb_define_const(mFiddle, "SIZEOF_CHAR", INT2NUM(sizeof(char)));
424478

479+
/* Document-const: SIZEOF_UCHAR
480+
*
481+
* size of a unsigned char
482+
*/
483+
rb_define_const(mFiddle, "SIZEOF_UCHAR", INT2NUM(sizeof(unsigned char)));
484+
425485
/* Document-const: SIZEOF_SHORT
426486
*
427487
* size of a short
428488
*/
429489
rb_define_const(mFiddle, "SIZEOF_SHORT", INT2NUM(sizeof(short)));
430490

491+
/* Document-const: SIZEOF_USHORT
492+
*
493+
* size of a unsigned short
494+
*/
495+
rb_define_const(mFiddle, "SIZEOF_USHORT", INT2NUM(sizeof(unsigned short)));
496+
431497
/* Document-const: SIZEOF_INT
432498
*
433499
* size of an int
434500
*/
435501
rb_define_const(mFiddle, "SIZEOF_INT", INT2NUM(sizeof(int)));
436502

503+
/* Document-const: SIZEOF_UINT
504+
*
505+
* size of an unsigned int
506+
*/
507+
rb_define_const(mFiddle, "SIZEOF_UINT", INT2NUM(sizeof(unsigned int)));
508+
437509
/* Document-const: SIZEOF_LONG
438510
*
439511
* size of a long
440512
*/
441513
rb_define_const(mFiddle, "SIZEOF_LONG", INT2NUM(sizeof(long)));
442514

515+
/* Document-const: SIZEOF_ULONG
516+
*
517+
* size of a unsigned long
518+
*/
519+
rb_define_const(mFiddle, "SIZEOF_ULONG", INT2NUM(sizeof(unsigned long)));
520+
443521
#if HAVE_LONG_LONG
444522
/* Document-const: SIZEOF_LONG_LONG
445523
*
446524
* size of a long long
447525
*/
448526
rb_define_const(mFiddle, "SIZEOF_LONG_LONG", INT2NUM(sizeof(LONG_LONG)));
527+
528+
/* Document-const: SIZEOF_ULONG_LONG
529+
*
530+
* size of a unsigned long long
531+
*/
532+
rb_define_const(mFiddle, "SIZEOF_ULONG_LONG", INT2NUM(sizeof(unsigned LONG_LONG)));
449533
#endif
450534

451535
/* Document-const: SIZEOF_INT8_T
@@ -454,24 +538,48 @@ Init_fiddle(void)
454538
*/
455539
rb_define_const(mFiddle, "SIZEOF_INT8_T", INT2NUM(sizeof(int8_t)));
456540

541+
/* Document-const: SIZEOF_UINT8_T
542+
*
543+
* size of a uint8_t
544+
*/
545+
rb_define_const(mFiddle, "SIZEOF_UINT8_T", INT2NUM(sizeof(uint8_t)));
546+
457547
/* Document-const: SIZEOF_INT16_T
458548
*
459549
* size of a int16_t
460550
*/
461551
rb_define_const(mFiddle, "SIZEOF_INT16_T", INT2NUM(sizeof(int16_t)));
462552

553+
/* Document-const: SIZEOF_UINT16_T
554+
*
555+
* size of a uint16_t
556+
*/
557+
rb_define_const(mFiddle, "SIZEOF_UINT16_T", INT2NUM(sizeof(uint16_t)));
558+
463559
/* Document-const: SIZEOF_INT32_T
464560
*
465561
* size of a int32_t
466562
*/
467563
rb_define_const(mFiddle, "SIZEOF_INT32_T", INT2NUM(sizeof(int32_t)));
468564

565+
/* Document-const: SIZEOF_UINT32_T
566+
*
567+
* size of a uint32_t
568+
*/
569+
rb_define_const(mFiddle, "SIZEOF_UINT32_T", INT2NUM(sizeof(uint32_t)));
570+
469571
/* Document-const: SIZEOF_INT64_T
470572
*
471573
* size of a int64_t
472574
*/
473575
rb_define_const(mFiddle, "SIZEOF_INT64_T", INT2NUM(sizeof(int64_t)));
474576

577+
/* Document-const: SIZEOF_UINT64_T
578+
*
579+
* size of a uint64_t
580+
*/
581+
rb_define_const(mFiddle, "SIZEOF_UINT64_T", INT2NUM(sizeof(uint64_t)));
582+
475583
/* Document-const: SIZEOF_FLOAT
476584
*
477585
* size of a float

0 commit comments

Comments
 (0)