seed r303 - trunk/libseed
- From: racarr svn gnome org
- To: svn-commits-list gnome org
- Subject: seed r303 - trunk/libseed
- Date: Sat, 22 Nov 2008 04:11:31 +0000 (UTC)
Author: racarr
Date: Sat Nov 22 04:11:30 2008
New Revision: 303
URL: http://svn.gnome.org/viewvc/seed?rev=303&view=rev
Log:
Object struct members.
Modified:
trunk/libseed/seed-engine.c
Modified: trunk/libseed/seed-engine.c
==============================================================================
--- trunk/libseed/seed-engine.c (original)
+++ trunk/libseed/seed-engine.c Sat Nov 22 04:11:30 2008
@@ -627,6 +627,7 @@
if (!spec)
{
+
len = strlen(cproperty_name);
for (i = 0; i < len - 1; i++)
{
@@ -635,9 +636,66 @@
}
spec = g_object_class_find_property(G_OBJECT_GET_CLASS(b),
cproperty_name);
+ if (spec)
+ goto found;
+ else
+ {
+ GIFieldInfo * field;
+ GIBaseInfo * info = (GIBaseInfo *)
+ g_irepository_find_by_gtype(0, G_OBJECT_TYPE(b));
+ gint n;
+ const gchar * name;
+
+ for (i = 0; i < len - 1; i++)
+ {
+ if (cproperty_name[i] == '-')
+ cproperty_name[i] = '_';
+ }
+
+ if (!info)
+ {
+ g_free(cproperty_name);
+ return 0;
+ }
+
+ n = g_object_info_get_n_fields((GIObjectInfo *)info);
+ for (i = 0; i < n; i++)
+ {
+ field = g_object_info_get_field((GIObjectInfo *)info, i);
+ name = g_base_info_get_name((GIBaseInfo *) field);
+
+ if (!strcmp(name, cproperty_name))
+ goto found_field;
+ else
+ {
+ g_base_info_unref((GIBaseInfo *) field);
+ field = 0;
+ }
+ }
+ found_field:
+ if (field)
+ {
+ GArgument field_value;
+ GITypeInfo * field_type = g_field_info_get_type(field);
+ if (g_field_info_get_field(field, b,
+ &field_value))
+ {
+ ret = seed_gi_argument_make_js(&field_value,
+ field_type,
+ exception);
+
+ g_base_info_unref((GIBaseInfo *) info);
+
+ g_free(cproperty_name);
+ return ret;
+ }
+ }
+ g_base_info_unref((GIBaseInfo*)info);
+ }
g_free(cproperty_name);
return 0;
}
+found:
g_value_init(&gval, spec->value_type);
g_object_get_property(b, cproperty_name, &gval);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]