static VALUE rbg_rval2gtkradioactionentries_body(VALUE value) { long i; struct rbg_rval2gtkradioactionentries_args *args = (struct rbg_rval2gtkradioactionentries_args *)value; for (i = 0; i < args->n; i++) { VALUE entry; long n; RARRAY_PTR(args->ary)[i] = rb_ary_dup(rb_ary_to_ary(RARRAY_PTR(args->ary)[i])); entry = RARRAY_PTR(args->ary)[i]; n = RARRAY_LEN(entry); switch (n) { case 6: args->result[i].value = NUM2INT(RARRAY_PTR(entry)[5]); case 5: args->result[i].tooltip = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[4]); case 4: args->result[i].accelerator = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[3]); case 3: args->result[i].label = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[2]); case 2: args->result[i].stock_id = RVAL2CSTR_ACCEPT_SYMBOL_ACCEPT_NIL(RARRAY_PTR(entry)[1]); case 1: args->result[i].name = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[0]); default: rb_raise(rb_eArgError, "entry does not contain right number of entries %ld (1..6)", n); } } return Qnil; }
/* * call-seq: * index.remove_all(pathspec = []) -> nil * index.remove_all(pathspec = []) { |path, pathspec| block } -> nil * * Remove all matching index entries. * * Searches +index+ for entries that match +pathspec+ and removes them * from the index. * * +pathspec+ can either be a String, or an Array of Strings. * If +pathspec+ is empty, all entries in the index will be matched. * * If a block is given, each matched +path+ and the +pathspec+ that matched * it will be passed to the block. If the return value of +block+ is * falsy, the matching item will not be removed from the index. */ static VALUE rb_git_index_remove_all(int argc, VALUE *argv, VALUE self) { VALUE rb_pathspecs = rb_ary_new(); git_index *index; git_strarray pathspecs; int error, exception = 0; Data_Get_Struct(self, git_index, index); rb_scan_args(argc, argv, "01", &rb_pathspecs); if (NIL_P(rb_pathspecs)) rb_pathspecs = rb_ary_new(); rugged_rb_ary_to_strarray(rb_ary_to_ary(rb_pathspecs), &pathspecs); error = git_index_remove_all(index, &pathspecs, rb_block_given_p() ? rugged__index_matched_path_cb : NULL, &exception); xfree(pathspecs.strings); if (exception) rb_jump_tag(exception); rugged_exception_check(error); return Qnil; }
static VALUE rg_s_reorder_items(G_GNUC_UNUSED VALUE self, VALUE attrs) { struct rpango_reorder_items_args args; args.ary = rb_ary_to_ary(attrs); args.n = RARRAY_LEN(args.ary); args.result = NULL; return rb_ensure(rpango_reorder_items_body, (VALUE)&args, rpango_reorder_items_ensure, (VALUE)&args); }
GList * rbgdk_rval2gdkpixbufglist(VALUE value) { struct rval2gdkpixbufglist_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = NULL; rb_rescue(rbgdk_rval2gdkpixbufglist_body, (VALUE)&args, rbgdk_rval2gdkpixbufglist_rescue, (VALUE)&args); return args.result; }
static VALUE rg_set_runs(VALUE self, VALUE attrs) { struct layout_line_set_runs_args args; args.line = _SELF(self); args.ary = rb_ary_to_ary(attrs); args.n = RARRAY_LEN(args.ary); args.result = NULL; rb_rescue(layout_line_set_runs_body, (VALUE)&args, layout_line_set_runs_rescue, (VALUE)&args); return self; }
static GSList * rbgtk_rval2gtkradiotoolbuttongslist(VALUE value) { struct rbgtk_rval2gtkradiotoolbuttongslist_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = NULL; rb_rescue(rbgtk_rval2gtkradiotoolbuttongslist_body, (VALUE)&args, rbgtk_rval2gtkradiotoolbuttongslist_rescue, (VALUE)&args); return args.result; }
static VALUE rg_set_extra_attrs(VALUE self, VALUE attrs) { struct ana_set_extra_attrs_args args; args.analysis = _SELF(self); args.ary = rb_ary_to_ary(attrs); args.n = RARRAY_LEN(args.ary); args.result = NULL; rb_rescue(ana_set_extra_attrs_body, (VALUE)&args, ana_set_extra_attrs_rescue, (VALUE)&args); return self; }
static GtkRadioActionEntry * rbg_rval2gtkradioactionentries(volatile VALUE *value, long *n) { struct rbg_rval2gtkradioactionentries_args args; args.ary = *value = rb_ary_dup(rb_ary_to_ary(*value)); args.n = RARRAY_LEN(args.ary); args.result = g_new0(GtkRadioActionEntry, args.n + 1); rb_rescue(rbg_rval2gtkradioactionentries_body, (VALUE)&args, rbg_rval2gtkradioactionentries_rescue, (VALUE)&args); *n = args.n; return args.result; }
GtkTargetEntry * rbgtk_rval2gtktargetentries(VALUE value, long *n) { struct rbgtk_rval2gtktargetentries_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = g_new(GtkTargetEntry, args.n + 1); rb_rescue(rbgtk_rval2gtktargetentries_body, (VALUE)&args, rbgtk_rval2gtktargetentries_rescue, (VALUE)&args); *n = args.n; return args.result; }
GdkPoint * rbgdk_rval2gdkpoints(VALUE value, long *n) { struct rbgdk_rval2gdkpoints_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = g_new(GdkPoint, args.n + 1); rb_rescue(rbgdk_rval2gdkpoints_body, (VALUE)&args, rbgdk_rval2gdkpoints_rescue, (VALUE)&args); *n = args.n; return args.result; }
static GtkPageRange * rbgtk_rval2gtkpageranges(VALUE value, long *n) { struct rbgtk_rval2gtkpageranges_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = g_new(GtkPageRange, args.n + 1); rb_rescue(rbgtk_rval2gtkpageranges_body, (VALUE)&args, rbgtk_rval2gtkpageranges_rescue, (VALUE)&args); if (n != NULL) *n = args.n; return args.result; }
static AtkStateType * rval2atkstatetype(VALUE value, long *n) { struct rval2atkstatetype_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = g_new(AtkStateType, args.n + 1); rb_rescue(rval2atkstatetype_body, (VALUE)&args, rval2atkstatetype_rescue, (VALUE)&args); if (n != NULL) *n = args.n; return args.result; }
static GdkSpan * rbgdk_rval2gdkspans(VALUE value, long *n) { struct rbgdk_rval2gdkspans_args args; args.ary = rb_ary_to_ary(value); args.n = RARRAY_LEN(args.ary); args.result = g_new(GdkSpan, args.n + 1); rb_rescue(rbgdk_rval2gdkspans_body, (VALUE)&args, rbgdk_rval2gdkspans_rescue, (VALUE)&args); if (n != NULL) *n = args.n; return args.result; }
static VALUE rbgtk_rval2gtkpageranges_body(VALUE value) { long i; struct rbgtk_rval2gtkpageranges_args *args = (struct rbgtk_rval2gtkpageranges_args *)value; for (i = 0; i < args->n; i++) { VALUE ary = rb_ary_to_ary(RARRAY_PTR(args->ary)[i]); if (RARRAY_LEN(ary) != 2) rb_raise(rb_eArgError, "range %ld should be array of size 2", i); args->result[i].start = NUM2INT(RARRAY_PTR(ary)[0]); args->result[i].end = NUM2INT(RARRAY_PTR(ary)[1]); } return Qnil; }
static VALUE rbgtk_rval2gtktargetentries_body(VALUE value) { long i; struct rbgtk_rval2gtktargetentries_args *args = (struct rbgtk_rval2gtktargetentries_args *)value; for (i = 0; i < args->n; i++) { VALUE entry = rb_ary_to_ary(RARRAY_PTR(args->ary)[i]); VALUE flags = RARRAY_PTR(entry)[1]; VALUE info = RARRAY_PTR(entry)[2]; args->result[i].target = (gchar *)RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[0]); args->result[i].flags = NIL_P(flags) ? 0 : RVAL2GFLAGS(flags, GTK_TYPE_TARGET_FLAGS); args->result[i].info = NIL_P(info) ? 0 : NUM2INT(info); } return Qnil; }
static VALUE rbgdk_rval2gdkpoints_body(VALUE value) { long i; struct rbgdk_rval2gdkpoints_args *args = (struct rbgdk_rval2gdkpoints_args *)value; for (i = 0; i < args->n; i++) { VALUE points = rb_ary_to_ary(RARRAY_PTR(args->ary)[i]); if (RARRAY_LEN(points) != 2) rb_raise(rb_eArgError, "point %ld should be array of size 2", i); args->result[i].x = NUM2INT(RARRAY_PTR(points)[0]); args->result[i].y = NUM2INT(RARRAY_PTR(points)[1]); } return Qnil; }
GList * rbgio_gfile_ary_to_glist(VALUE ary) { int i, n; volatile GFile *file; GList *list = NULL; ary = rb_ary_to_ary(ary); n = RARRAY_LEN(ary); for (i = 0; i < n; i++) file = RVAL2GFILE(RARRAY_PTR(ary)[i]); for (i = 0; i < n; i++) list = g_list_append(list, RVAL2GFILE(RARRAY_PTR(ary)[i])); return list; }
static VALUE rbg_rval2gtktoggleactionentries_body(VALUE value) { long i; struct rbg_rval2gtktoggleactionentries_args *args = (struct rbg_rval2gtktoggleactionentries_args *)value; for (i = 0; i < args->n; i++) { VALUE entry; long n; RARRAY_PTR(args->ary)[i] = rb_ary_dup(rb_ary_to_ary(RARRAY_PTR(args->ary)[i])); entry = RARRAY_PTR(args->ary)[i]; n = RARRAY_LEN(entry); args->result[i].callback = G_CALLBACK(activate_toggle_action); if (n < 1 || n > 7) rb_raise(rb_eArgError, "entry does not contain right number of entries %ld (1..7)", n); args->result[i].name = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[0]); switch (n) { case 7: args->result[i].is_active = RVAL2CBOOL(RARRAY_PTR(entry)[6]); case 6: /* TODO: Call #to_proc on entry 5? */ rb_hash_aset(args->procs, RARRAY_PTR(entry)[0], RARRAY_PTR(entry)[5]); case 5: args->result[i].tooltip = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[4]); case 4: args->result[i].accelerator = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[3]); case 3: args->result[i].label = RVAL2CSTR_ACCEPT_NIL(RARRAY_PTR(entry)[2]); case 2: args->result[i].stock_id = RVAL2CSTR_ACCEPT_SYMBOL_ACCEPT_NIL(RARRAY_PTR(entry)[1]); break; default: break; } } return Qnil; }
void rbgio_rval_to_gtimeval(VALUE value, GTimeVal *time) { if (rb_respond_to(value, rb_intern("tv_sec"))) { time->tv_sec = RVAL2GLONG(rb_funcall(value, rb_intern("tv_sec"), 0)); time->tv_usec = rb_respond_to(value, rb_intern("tv_usec")) ? RVAL2GLONG(rb_funcall(value, rb_intern("tv_usec"), 0)) : 0; } else if (rb_respond_to(value, rb_intern("to_ary"))) { VALUE ary = rb_ary_to_ary(value); if (RARRAY_LEN(ary) < 1 || RARRAY_LEN(ary) > 2) rb_raise(rb_eArgError, "Array of length 1 or 2 expected"); time->tv_sec = RVAL2GLONG(RARRAY_PTR(ary)[0]); time->tv_usec = RARRAY_LEN(ary) > 1 ? RVAL2GLONG(RARRAY_PTR(ary)[1]) : 0; } else { time->tv_sec = RVAL2GLONG(value); time->tv_usec = 0; } }
static VALUE rg_add_items(VALUE self, VALUE items) { gint i, len; GList* list = (GList*)NULL; VALUE items_internal = rb_ivar_get(self, id_items_internal); items = rb_ary_to_ary(items); len = RARRAY_LEN(items); for (i = 0; i < len; i ++){ VALUE data = RARRAY_PTR(items)[i]; VALUE item = rb_assoc_new(self, data); list = g_list_append(list, (gpointer)item); rb_hash_aset(items_internal, data, item); } g_completion_add_items(_SELF(self), list); return self; }
static void value_array_from_ruby(const VALUE from, GValue *to) { struct value_array_from_ruby_args args; if (NIL_P(from)) { g_value_set_boxed(to, NULL); return; } args.ary = rb_ary_to_ary(from); args.n = RARRAY_LEN(args.ary); args.result = g_value_array_new((guint)args.n); rb_rescue(value_array_from_ruby_body, (VALUE)&args, value_array_from_ruby_rescue, (VALUE)&args); g_value_set_boxed(to, args.result); }
static VALUE rbgdk_rval2gdktrapezoids_body(VALUE value) { long i; struct rbgdk_rval2gdktrapezoids_args *args = (struct rbgdk_rval2gdktrapezoids_args *)value; for (i = 0; i < args->n; i++) { VALUE trapezoids = rb_ary_to_ary(RARRAY_PTR(args->ary)[i]); if (RARRAY_LEN(trapezoids) != 6) rb_raise(rb_eArgError, "trapezoid %ld should be array of size 6", i); args->result[i].y1 = NUM2DBL(RARRAY_PTR(trapezoids)[0]); args->result[i].x11 = NUM2DBL(RARRAY_PTR(trapezoids)[1]); args->result[i].x21 = NUM2DBL(RARRAY_PTR(trapezoids)[2]); args->result[i].y2 = NUM2DBL(RARRAY_PTR(trapezoids)[3]); args->result[i].x12 = NUM2DBL(RARRAY_PTR(trapezoids)[4]); args->result[i].x22 = NUM2DBL(RARRAY_PTR(trapezoids)[5]); } return Qnil; }
static VALUE lstore_insert_body(VALUE value) { struct lstore_insert_args *args = (struct lstore_insert_args *)value; GtkTreeModel *model = GTK_TREE_MODEL(args->store); for (args->i = 0; args->i < args->n; args->i++) { VALUE ary = rb_ary_to_ary(RARRAY_PTR(args->ary)[args->i]); args->columns[args->i] = NUM2INT(RARRAY_PTR(ary)[1]); g_value_init(&args->values[args->i], gtk_tree_model_get_column_type(model, args->columns[args->i])); rbgobj_rvalue_to_gvalue(RARRAY_PTR(ary)[0], &args->values[args->i]); } gtk_list_store_insert_with_valuesv(args->store, &args->iter, args->position, args->columns, args->values, args->n); return Qnil; }
static VALUE array_spec_rb_ary_to_ary(VALUE self, VALUE ary) { return rb_ary_to_ary(ary); }