Gtk
view release on metacpan or search on metacpan
GtkObject.xs view on Meta::CPAN
} else {
int type=0;
gpointer ptr=0;
if (SvRV(data)) {
if (sv_derived_from(data, "Gtk::Object")) {
type = 1;
ptr = SvGtkObjectRef(data, 0);
}
}
if (!type)
croak("Unable to store user data of that type");
gtk_object_set_user_data(object, ptr);
gtk_object_set_data(object, "user_data_type_Perl", (gpointer)type);
}
}
void
DESTROY(self)
SV * self
CODE:
disconnect_GtkObjectRef(ST(0));
SV *
set(self, name, value, ...)
Gtk::Object self
SV * name
SV * value
CODE:
{
GtkType t;
GtkArg argv[3];
int p;
int argc;
RETVAL = newSVsv(ST(0));
for(p=1;p<items;) {
if ((p+1)>=items)
croak("too few arguments");
argv[0].name = SvPV(ST(p),na);
t = gtk_object_get_arg_type(argv[0].name);
argv[0].type = t;
value = ST(p+1);
argc = 1;
GtkSetArg(&argv[0], value, ST(0), self);
gtk_object_setv(self, argc, argv);
p += 1 + argc;
}
}
OUTPUT:
RETVAL
void
get(self, name, ...)
Gtk::Object self
SV * name
PPCODE:
{
GtkType t;
GtkArg argv[3];
int p;
int argc;
for(p=1;p<items;) {
argv[0].name = SvPV(ST(p),na);
t = gtk_object_get_arg_type(argv[0].name);
argv[0].type = t;
argc = 1;
gtk_object_getv(self, argc, argv);
EXTEND(sp,1);
PUSHs(sv_2mortal(GtkGetArg(&argv[0])));
if (t == GTK_TYPE_STRING)
g_free(GTK_VALUE_STRING(argv[0]));
p++;
}
}
SV *
new(klass, ...)
SV * klass
CODE:
{
GtkType t;
GtkArg argv[3];
int p;
int argc;
int type = type_name(SvPV(klass, na));
GtkObject * object = gtk_object_new(type, NULL);
RETVAL = newSVGtkObjectRef(object, SvPV(klass, na));
for(p=1;p<items;) {
if ((p+1)>=items)
croak("too few arguments");
argv[0].name = SvPV(ST(p),na);
t = gtk_object_get_arg_type(argv[0].name);
argv[0].type = t;
argc = 1;
GtkSetArg(&argv[0], ST(p+1), RETVAL, object);
gtk_object_setv(object, argc, argv);
p += 1 + argc;
}
}
OUTPUT:
( run in 0.800 second using v1.01-cache-2.11-cpan-5511b514fd6 )