packages feed

hruby-0.3.8: cbits/shim.c

#include "shim.h"
#ifdef RUBY2
#include <ruby/encoding.h>
#endif

void ruby_initialization(void) {
	RUBY_INIT_STACK;
	ruby_init();
	ruby_init_loadpath();
#ifdef RUBY2
	VALUE encoding = rb_enc_from_encoding(rb_filesystem_encoding());
	rb_enc_set_default_internal(encoding);
	rb_enc_set_default_external(encoding);
	void rb_encdb_declare(const char *name);
	rb_encdb_declare("ASCII-8BIT");
	rb_encdb_declare("US-ASCII");
	rb_encdb_declare("UTF-8");
#endif
}

VALUE id2sym(ID i) {
	return ID2SYM(i);
}

ID sym2id(VALUE v) {
	return SYM2ID(v);
}

VALUE safeCall(VALUE args)
{
	struct s_dispatch * d = (struct s_dispatch *) args;
	return rb_funcall2(d->receiver, d->methodid, d->nbargs, d->args);
}

VALUE getRubyCObject(VALUE name)
{
	return rb_const_get(rb_cObject, rb_intern((const char*) name));
}

long arrayLength(VALUE r)
{
	return RARRAY_LEN(r);
}

VALUE newFloat(double d) {
#ifdef RUBY2
	rb_float_new_in_heap(d);
#else
	rb_float_new(d);
#endif
}

int rubyType(VALUE obj) {
	return rb_type(obj);
}

VALUE int2num(long x) {
	return INT2NUM(x);
}

long num2long(VALUE v) {
	return NUM2LONG(v);
}

double num2dbl(VALUE v) {
	NUM2DBL(v);
}