VALUE counts_size(VALUE self) { Counts *counts; Data_Get_Struct(self, Counts, counts); return rb_int2inum(counts->size); }
VALUE data_size(VALUE self) { Data *data; Data_Get_Struct(self, Data, data); return rb_int2inum(data->size); }
VALUE rb_Fonts_get_default_size(VALUE self, VALUE id) { long lid = rb_num2long(id); if(lid >= rb_Fonts_Size_Tbl.size()) { return LONG2FIX(16); } return rb_int2inum(static_cast<long>(rb_Fonts_Size_Tbl[lid])); }
static VALUE rb_sigar_new_intlist(int *data, int number) { int i; VALUE av = rb_ary_new2(number); for (i=0; i<number; i++) { rb_ary_push(av, rb_int2inum(data[i])); } return av; }
/* * call-seq: * dir.pos => integer * dir.tell => integer * * Returns the current position in <em>dir</em>. See also * <code>Dir#seek</code>. * * d = Dir.new("testdir") * d.tell #=> 0 * d.read #=> "." * d.tell #=> 12 */ static VALUE dir_tell(VALUE dir) { #ifdef HAVE_TELLDIR struct dir_data *dirp; long pos; GetDIR(dir, dirp); pos = telldir(dirp->dir); return rb_int2inum(pos); #else rb_notimplement(); #endif }
static VALUE variant2rubyobj(otama_variant_t *var) { switch (otama_variant_type(var)) { case OTAMA_VARIANT_TYPE_NULL: return Qnil; case OTAMA_VARIANT_TYPE_INT: return rb_int2inum(otama_variant_to_int(var)); case OTAMA_VARIANT_TYPE_FLOAT: return rb_float_new((double)otama_variant_to_float(var)); case OTAMA_VARIANT_TYPE_STRING: return rb_str_new2(otama_variant_to_string(var)); case OTAMA_VARIANT_TYPE_ARRAY: { long count = otama_variant_array_count(var); long i; VALUE ary = rb_ary_new2(count); for (i = 0; i < count; ++i) { rb_ary_store(ary, i, variant2rubyobj(otama_variant_array_at(var, i))); } return ary; } case OTAMA_VARIANT_TYPE_HASH: { otama_variant_t *keys = otama_variant_hash_keys(var); long count = otama_variant_array_count(keys); long i; VALUE hash = rb_hash_new(); for (i = 0; i < count; ++i) { rb_hash_aset(hash, ID2SYM(rb_intern(otama_variant_to_string(otama_variant_array_at(keys, i)))), variant2rubyobj(otama_variant_hash_at2(var, otama_variant_array_at(keys, i)))); } return hash; } default: break; } return Qnil; }
static VALUE counts_initialize(int argc, VALUE* argv, VALUE self) { Counts *counts; Data_Get_Struct(self, Counts, counts); VALUE rb_page_size; rb_scan_args(argc, argv, "01", &rb_page_size); if (NIL_P(rb_page_size)) rb_page_size = rb_int2inum(DEFAULT_PAGE_SIZE); long page_size = rb_fix2int(rb_page_size); long *values = (long*)malloc(sizeof(long)*page_size); if (values == NULL) { rb_raise(rb_eNoMemError, "allocation of values failed"); } counts->max_size = page_size; counts->size = 0; counts->values = values; return self; }
static VALUE numeric_spec_rb_int2inum_14(VALUE self) { return rb_int2inum(14); }
VALUE CRbWin32API::call(int argc, VALUE * argv, VALUE obj) { struct { u32 params[16]; } param; VALUE obj_proc = rb_iv_get(obj, "__proc__"); VALUE obj_import = rb_iv_get(obj, "__import__"); VALUE obj_export = rb_iv_get(obj, "__export__"); FARPROC ApiFunction = (FARPROC)rb_num2ulong(obj_proc); VALUE args; int items = rb_scan_args(argc, argv, "0*", &args); int nimport = RARRAY_LEN(obj_import); if (items != nimport) rb_raise(rb_eSinError, "wrong number of parameters: expected %d, got %d", nimport, items); for (int i = 0; i < nimport; ++i) { u32 lParam = 0; switch (FIX2INT(rb_ary_entry(obj_import, i))) { VALUE str; case _T_NUMBER: case _T_INTEGER: default: lParam = rb_num2ulong(rb_ary_entry(args, i)); break; case _T_POINTER: str = rb_ary_entry(args, i); if (NIL_P(str)) { lParam = 0; } else if (FIXNUM_P(str)) { lParam = rb_num2ulong(str); } else { rb_string_value(&str); rb_str_modify(str); lParam = (u32)rb_string_value_ptr(&str); } break; } param.params[i] = lParam; } u32 retval; __try { __asm { mov ebx, esp sub esp, 40h mov ecx, 10h lea esi, [param] mov edi, esp rep movs dword ptr es:[edi], dword ptr [esi] call dword ptr [ApiFunction] mov esp, ebx mov dword ptr [retval], eax } } __except(EXCEPTION_EXECUTE_HANDLER) { rb_raise(rb_eSinError, "Api Crashed..."); } switch (FIX2INT(obj_export)) { case _T_NUMBER: case _T_INTEGER: return rb_int2inum(retval); case _T_POINTER: return (retval ? rb_str_new2((char *)retval) : Qnil); case _T_VOID: default: return INT2FIX(0); } }