mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-09-10 03:52:55 +02:00
Support Boolean in MiniFFI
This commit is contained in:
parent
b844c3dea2
commit
ffa5784ec0
1 changed files with 20 additions and 0 deletions
|
@ -12,6 +12,7 @@
|
|||
#define _T_NUMBER 1
|
||||
#define _T_POINTER 2
|
||||
#define _T_INTEGER 3
|
||||
#define _T_BOOL 4
|
||||
|
||||
|
||||
// Might need to let MiniFFI.initialize set calling convention
|
||||
|
@ -126,6 +127,10 @@ RB_METHOD(MiniFFI_initialize)
|
|||
case 'I': case 'i':
|
||||
rb_ary_push(ary_imports, INT2FIX(_T_INTEGER));
|
||||
break;
|
||||
|
||||
case 'B': case 'b':
|
||||
rb_ary_push(ary_imports, INT2FIX(_T_BOOL));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -147,6 +152,10 @@ RB_METHOD(MiniFFI_initialize)
|
|||
case 'I': case 'i':
|
||||
rb_ary_push(ary_imports, INT2FIX(_T_INTEGER));
|
||||
break;
|
||||
|
||||
case 'B': case 'b':
|
||||
rb_ary_push(ary_imports, INT2FIX(_T_BOOL));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -181,6 +190,10 @@ RB_METHOD(MiniFFI_initialize)
|
|||
case 'I': case 'i':
|
||||
ex = _T_INTEGER;
|
||||
break;
|
||||
|
||||
case 'B': case 'b':
|
||||
ex = _T_BOOL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
rb_iv_set(self, "_exports", INT2FIX(ex));
|
||||
|
@ -227,6 +240,10 @@ RB_METHOD(MiniFFI_call)
|
|||
lParam = (unsigned long)RSTRING_PTR(str);
|
||||
}
|
||||
break;
|
||||
|
||||
case _T_BOOL:
|
||||
lParam = (rb_ary_entry(args, i) == Qtrue);
|
||||
break;
|
||||
|
||||
case _T_NUMBER: case _T_INTEGER: default:
|
||||
lParam = NUM2OFFT(rb_ary_entry(args, i));
|
||||
|
@ -247,6 +264,9 @@ RB_METHOD(MiniFFI_call)
|
|||
|
||||
case _T_POINTER:
|
||||
return rb_str_new2((char*)ret);
|
||||
|
||||
case _T_BOOL:
|
||||
return rb_bool_new(ret);
|
||||
|
||||
case _T_VOID: default:
|
||||
return OFFT2NUM(0);
|
||||
|
|
Loading…
Add table
Reference in a new issue