Merge pull request #139 from sgrif/sg-more-random-functions

Export another smattering of random functions/constants
This commit is contained in:
Yehuda Katz 2018-02-04 22:05:37 -06:00 committed by GitHub
commit 6265a62c8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 0 deletions

View File

@ -85,6 +85,9 @@ extern "C" {
#[link_name = "rb_cObject"]
pub static rb_cObject: VALUE;
#[link_name = "rb_cBasicObject"]
pub static rb_cBasicObject: VALUE;
#[link_name = "rb_eRuntimeError"]
pub static rb_eRuntimeError: VALUE;
@ -156,6 +159,12 @@ extern "C" {
#[link_name = "HELIX_F642NUM"]
pub fn F642NUM(num: f64) -> VALUE;
#[link_name = "HELIX_OBJ_FROZEN"]
pub fn OBJ_FROZEN(v: VALUE) -> bool;
#[link_name = "HELIX_T_OBJECT"]
pub static T_OBJECT: isize;
#[link_name = "HELIX_T_STRING"]
pub static T_STRING: isize;
@ -216,6 +225,7 @@ extern "C" {
pub fn rb_hash_foreach(hash: VALUE, f: extern "C" fn(key: VALUE, value: VALUE, farg: *mut void) -> st_retval, farg: *mut void);
pub fn rb_gc_mark(value: VALUE);
pub fn rb_funcall(value: VALUE, mid: ID, argc: libc::c_int, ...) -> VALUE;
pub fn rb_funcallv(value: VALUE, mid: ID, argc: libc::c_int, argv: *const VALUE) -> VALUE;
pub fn rb_scan_args(argc: libc::c_int, argv: *const VALUE, fmt: c_string, ...);
pub fn rb_block_given_p() -> bool;
pub fn rb_yield(value: VALUE) -> VALUE;

View File

@ -108,6 +108,10 @@ VALUE HELIX_F642NUM(RUST_F64 num) {
return DBL2NUM(num);
}
bool HELIX_OBJ_FROZEN(VALUE obj) {
return OBJ_FROZEN(obj);
}
void* HELIX_Data_Get_Struct_Value(VALUE obj) {
void* data;
Data_Get_Struct(obj, void*, data);

View File

@ -44,6 +44,8 @@ HELIX_EXTERN VALUE HELIX_I322NUM(RUST_I32);
HELIX_EXTERN RUST_F64 HELIX_NUM2F64(VALUE);
HELIX_EXTERN VALUE HELIX_F642NUM(RUST_F64);
HELIX_EXTERN bool HELIX_OBJ_FROZEN(VALUE obj);
HELIX_EXTERN VALUE HELIX_Qtrue;
HELIX_EXTERN VALUE HELIX_Qfalse;
HELIX_EXTERN VALUE HELIX_Qnil;

View File

@ -92,6 +92,11 @@ describe HelixRuntime do
expect(Dummy.RTEST(nil)).to eq(false)
end
it 'exports the OBJ_FROZEN macro' do
expect(Dummy.OBJ_FROZEN(Object.new)).to eq(false)
expect(Dummy.OBJ_FROZEN(Object.new.freeze)).to eq(true)
end
describe 'coercions' do
it "(INT2FIX)" do
expect(Dummy.INT2FIX(10)).to eq(10)

View File

@ -58,6 +58,11 @@ static VALUE TEST_RTEST(VALUE _self, VALUE val) {
return result ? Qtrue : Qfalse;
}
static VALUE TEST_OBJ_FROZEN(VALUE _self, VALUE val) {
int result = HELIX_OBJ_FROZEN(val);
return result ? Qtrue : Qfalse;
}
static VALUE TEST_TYPE(VALUE _self, VALUE val) {
return INT2FIX(HELIX_TYPE(val));
}
@ -203,6 +208,7 @@ void Init_dummy() {
EXPORT_FUNC(RHASH_SIZE, 1);
EXPORT_FUNC(RB_TYPE_P, 2);
EXPORT_FUNC(RB_NIL_P, 1);
EXPORT_FUNC(OBJ_FROZEN, 1);
EXPORT_FUNC(TYPE, 1);
EXPORT_FUNC(INT2FIX, 1);
EXPORT_FUNC(FIX2INT, 1);