@@ -297,6 +297,16 @@ private static Class<?> javaType(ThreadContext tc, ArgType target, SixModelObjec
297
297
return NativeLong .class ;
298
298
case LONGLONG :
299
299
return Long .class ;
300
+ case UCHAR :
301
+ return Byte .class ;
302
+ case USHORT :
303
+ return Short .class ;
304
+ case UINT :
305
+ return Integer .class ;
306
+ case ULONG :
307
+ return NativeLong .class ;
308
+ case ULONGLONG :
309
+ return Long .class ;
300
310
case FLOAT :
301
311
return Float .class ;
302
312
case DOUBLE :
@@ -331,6 +341,16 @@ public static Object toJNAType(ThreadContext tc, SixModelObject o, ArgType targe
331
341
return new NativeLong ((long ) o .get_int (tc ));
332
342
case LONGLONG :
333
343
return new Long ((long ) o .get_int (tc ));
344
+ case UCHAR :
345
+ return new Byte ((byte ) o .get_int (tc ));
346
+ case USHORT :
347
+ return new Short ((short ) o .get_int (tc ));
348
+ case UINT :
349
+ return new Integer ((int ) o .get_int (tc ));
350
+ case ULONG :
351
+ return new NativeLong ((long ) o .get_int (tc ));
352
+ case ULONGLONG :
353
+ return new Long ((long ) o .get_int (tc ));
334
354
case FLOAT :
335
355
return new Float ((float ) o .get_num (tc ));
336
356
case DOUBLE :
@@ -428,6 +448,44 @@ public static SixModelObject toNQPType(ThreadContext tc, ArgType target, SixMode
428
448
nqpobj .set_int (tc , val );
429
449
break ;
430
450
}
451
+ case UCHAR : {
452
+ nqpobj = type .st .REPR .allocate (tc , type .st );
453
+ long val = ((Byte ) o ).byteValue ();
454
+ if (val < 0 )
455
+ val += 0x100 ;
456
+ nqpobj .set_int (tc , val );
457
+ break ;
458
+ }
459
+ case USHORT : {
460
+ nqpobj = type .st .REPR .allocate (tc , type .st );
461
+ long val = ((Short ) o ).byteValue ();
462
+ if (val < 0 )
463
+ val += 0x10000 ;
464
+ nqpobj .set_int (tc , val );
465
+ break ;
466
+ }
467
+ case UINT : {
468
+ nqpobj = type .st .REPR .allocate (tc , type .st );
469
+ long val = ((Integer ) o ).byteValue ();
470
+ if (val < 0 )
471
+ val += 0x100000000L ;
472
+ nqpobj .set_int (tc , val );
473
+ break ;
474
+ }
475
+ case ULONG : {
476
+ /* TODO: handle unsignedness properly. */
477
+ nqpobj = type .st .REPR .allocate (tc , type .st );
478
+ long val = ((NativeLong ) o ).longValue ();
479
+ nqpobj .set_int (tc , val );
480
+ break ;
481
+ }
482
+ case ULONGLONG : {
483
+ /* TODO: handle unsignedness properly. */
484
+ nqpobj = type .st .REPR .allocate (tc , type .st );
485
+ long val = ((Long ) o ).longValue ();
486
+ nqpobj .set_int (tc , val );
487
+ break ;
488
+ }
431
489
case FLOAT : {
432
490
nqpobj = type .st .REPR .allocate (tc , type .st );
433
491
float val = ((Float ) o ).floatValue ();
0 commit comments