mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-09-10 12:02:53 +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_NUMBER 1
|
||||||
#define _T_POINTER 2
|
#define _T_POINTER 2
|
||||||
#define _T_INTEGER 3
|
#define _T_INTEGER 3
|
||||||
|
#define _T_BOOL 4
|
||||||
|
|
||||||
|
|
||||||
// Might need to let MiniFFI.initialize set calling convention
|
// Might need to let MiniFFI.initialize set calling convention
|
||||||
|
@ -126,6 +127,10 @@ RB_METHOD(MiniFFI_initialize)
|
||||||
case 'I': case 'i':
|
case 'I': case 'i':
|
||||||
rb_ary_push(ary_imports, INT2FIX(_T_INTEGER));
|
rb_ary_push(ary_imports, INT2FIX(_T_INTEGER));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'B': case 'b':
|
||||||
|
rb_ary_push(ary_imports, INT2FIX(_T_BOOL));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -147,6 +152,10 @@ RB_METHOD(MiniFFI_initialize)
|
||||||
case 'I': case 'i':
|
case 'I': case 'i':
|
||||||
rb_ary_push(ary_imports, INT2FIX(_T_INTEGER));
|
rb_ary_push(ary_imports, INT2FIX(_T_INTEGER));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'B': case 'b':
|
||||||
|
rb_ary_push(ary_imports, INT2FIX(_T_BOOL));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -181,6 +190,10 @@ RB_METHOD(MiniFFI_initialize)
|
||||||
case 'I': case 'i':
|
case 'I': case 'i':
|
||||||
ex = _T_INTEGER;
|
ex = _T_INTEGER;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'B': case 'b':
|
||||||
|
ex = _T_BOOL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rb_iv_set(self, "_exports", INT2FIX(ex));
|
rb_iv_set(self, "_exports", INT2FIX(ex));
|
||||||
|
@ -227,6 +240,10 @@ RB_METHOD(MiniFFI_call)
|
||||||
lParam = (unsigned long)RSTRING_PTR(str);
|
lParam = (unsigned long)RSTRING_PTR(str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case _T_BOOL:
|
||||||
|
lParam = (rb_ary_entry(args, i) == Qtrue);
|
||||||
|
break;
|
||||||
|
|
||||||
case _T_NUMBER: case _T_INTEGER: default:
|
case _T_NUMBER: case _T_INTEGER: default:
|
||||||
lParam = NUM2OFFT(rb_ary_entry(args, i));
|
lParam = NUM2OFFT(rb_ary_entry(args, i));
|
||||||
|
@ -247,6 +264,9 @@ RB_METHOD(MiniFFI_call)
|
||||||
|
|
||||||
case _T_POINTER:
|
case _T_POINTER:
|
||||||
return rb_str_new2((char*)ret);
|
return rb_str_new2((char*)ret);
|
||||||
|
|
||||||
|
case _T_BOOL:
|
||||||
|
return rb_bool_new(ret);
|
||||||
|
|
||||||
case _T_VOID: default:
|
case _T_VOID: default:
|
||||||
return OFFT2NUM(0);
|
return OFFT2NUM(0);
|
||||||
|
|
Loading…
Add table
Reference in a new issue