static VALUE fraction_range_set(VALUE self, VALUE min, VALUE max) { GValue min_value = {0}, max_value = {0}; rbgobj_initialize_gvalue(&min_value, min); rbgobj_initialize_gvalue(&max_value, max); gst_value_set_fraction_range(RVAL2GOBJ(self), &min_value, &max_value); return Qnil; }
static VALUE fraction_range_initialize(VALUE self, VALUE min, VALUE max) { GValue min_value = G_VALUE_INIT, max_value = G_VALUE_INIT; rbgobj_initialize_gvalue(&min_value, min); rbgobj_initialize_gvalue(&max_value, max); gst_value_set_fraction_range(DATA_PTR(self), &min_value, &max_value); return Qnil; }
static void value_array_rvalue2gvalue(VALUE value, GValue *result) { guint i, len; len = RARRAY_LEN(value); for (i = 0; i < len; i++) { GValue val = {0}; rbgobj_initialize_gvalue(&val, RARRAY_PTR(value)[i]); gst_value_array_append_value(result, &val); g_value_unset(&val); } }
static VALUE fraction_range_set_max(VALUE self, VALUE max) { GValue *value; GValue max_value = {0}; value = RVAL2GOBJ(self); rbgobj_initialize_gvalue(&max_value, max); gst_value_set_fraction_range(value, gst_value_get_fraction_range_min(value), &max_value); return Qnil; }
static VALUE fraction_range_set_min(VALUE self, VALUE min) { GValue *value; GValue min_value = G_VALUE_INIT; value = RVAL2GOBJ(self); rbgobj_initialize_gvalue(&min_value, min); gst_value_set_fraction_range(value, &min_value, gst_value_get_fraction_range_max(value)); return Qnil; }
static void rb_gi_argument_from_ruby_interface(GIArgument *argument, GITypeInfo *type_info, VALUE rb_argument) { GIBaseInfo *interface_info; GIInfoType interface_type; GType gtype; interface_info = g_type_info_get_interface(type_info); interface_type = g_base_info_get_type(interface_info); gtype = g_registered_type_info_get_g_type(interface_info); switch (interface_type) { case GI_INFO_TYPE_INVALID: case GI_INFO_TYPE_FUNCTION: case GI_INFO_TYPE_CALLBACK: rb_raise(rb_eNotImpError, "TODO: Ruby -> GIArgument(interface)[%s]: <%s>", g_info_type_to_string(interface_type), g_base_info_get_name(interface_info)); break; case GI_INFO_TYPE_STRUCT: if (gtype == G_TYPE_VALUE) { GValue *gvalue; gvalue = ALLOC(GValue); memset(gvalue, 0, sizeof(GValue)); if (rb_obj_is_kind_of(rb_argument, rb_cGLibValue)) { GValue *source_gvalue; source_gvalue = RVAL2BOXED(rb_argument, G_TYPE_VALUE); g_value_init(gvalue, source_gvalue->g_type); g_value_copy(source_gvalue, gvalue); } else { rbgobj_initialize_gvalue(gvalue, rb_argument); } argument->v_pointer = gvalue; } else { argument->v_pointer = RVAL2BOXED(rb_argument, gtype); } break; case GI_INFO_TYPE_BOXED: rb_raise(rb_eNotImpError, "TODO: Ruby -> GIArgument(interface)[%s]: <%s>", g_info_type_to_string(interface_type), g_base_info_get_name(interface_info)); break; case GI_INFO_TYPE_ENUM: if (gtype == G_TYPE_NONE) { argument->v_int32 = NUM2INT(rb_argument); } else { argument->v_int32 = RVAL2GENUM(rb_argument, gtype); } break; case GI_INFO_TYPE_FLAGS: if (gtype == G_TYPE_NONE) { argument->v_int32 = NUM2INT(rb_argument); } else { argument->v_int32 = RVAL2GFLAGS(rb_argument, gtype); } break; case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_INTERFACE: argument->v_pointer = RVAL2GOBJ(rb_argument); break; case GI_INFO_TYPE_CONSTANT: rb_raise(rb_eNotImpError, "TODO: Ruby -> GIArgument(interface)[%s]: <%s>", g_info_type_to_string(interface_type), g_base_info_get_name(interface_info)); break; case GI_INFO_TYPE_INVALID_0: g_assert_not_reached(); break; case GI_INFO_TYPE_UNION: case GI_INFO_TYPE_VALUE: case GI_INFO_TYPE_SIGNAL: case GI_INFO_TYPE_VFUNC: case GI_INFO_TYPE_PROPERTY: case GI_INFO_TYPE_FIELD: case GI_INFO_TYPE_ARG: case GI_INFO_TYPE_TYPE: case GI_INFO_TYPE_UNRESOLVED: default: rb_raise(rb_eNotImpError, "TODO: Ruby -> GIArgument(interface)[%s]: <%s>", g_info_type_to_string(interface_type), g_base_info_get_name(interface_info)); break; } g_base_info_unref(interface_info); }