[seed: 5/5] Validate enum types in property setting
- From: Robert Carr <racarr src gnome org>
- To: svn-commits-list gnome org
- Subject: [seed: 5/5] Validate enum types in property setting
- Date: Tue, 24 Mar 2009 23:06:11 -0400 (EDT)
commit fd9f3bc2f3743a9870909214b1573fab040fc425
Author: Robert Carr <racarr mireia (none)>
Date: Tue Mar 24 23:05:25 2009 -0400
Validate enum types in property setting
---
libseed/seed-signals.c | 2 +-
libseed/seed-types.c | 24 ++++++++++++++++++++++--
libseed/seed-types.h | 2 ++
3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/libseed/seed-signals.c b/libseed/seed-signals.c
index d0ff9db..7326991 100644
--- a/libseed/seed-signals.c
+++ b/libseed/seed-signals.c
@@ -397,7 +397,7 @@ seed_gobject_signal_connect_on_property (JSContextRef ctx,
JSStaticFunction signal_static_functions[] =
{ {"connect", seed_gobject_signal_connect_on_property, 0}
,
-{"emit", seed_gobject_signal_emit, 0}
+ {"emit", seed_gobject_signal_emit, 0}
,
{0, 0, 0}
};
diff --git a/libseed/seed-types.c b/libseed/seed-types.c
index bc7d798..da61852 100644
--- a/libseed/seed-types.c
+++ b/libseed/seed-types.c
@@ -1118,13 +1118,13 @@ seed_gvalue_from_seed_value (JSContextRef ctx,
if (g_type_is_a (type, G_TYPE_ENUM) && JSValueIsNumber (ctx, val))
{
g_value_init (ret, type);
- ret->data[0].v_long = seed_value_to_long (ctx, val, exception);
+ g_value_set_enum (ret, seed_value_to_long (ctx, val, exception));
return TRUE;
}
else if (g_type_is_a (type, G_TYPE_FLAGS) && JSValueIsNumber (ctx, val))
{
g_value_init (ret, type);
- ret->data[0].v_long = seed_value_to_long (ctx, val, exception);
+ g_value_set_flags (ret, seed_value_to_long (ctx, val, exception));
return TRUE;
}
else if (g_type_is_a (type, G_TYPE_OBJECT)
@@ -1894,3 +1894,23 @@ seed_value_from_object (JSContextRef ctx,
else
return seed_wrap_object (ctx, val);
}
+
+gboolean
+seed_validate_enum (GIEnumInfo *info,
+ long val)
+{
+ gint n, i;
+
+ n = g_enum_info_get_n_values (info);
+ for (i = 0; i < n; i++)
+ {
+ GIValueInfo *value_info = g_enum_info_get_value (info, i);
+ glong value = g_value_info_get_value (value_info);
+
+ g_base_info_unref ((GIBaseInfo *)value_info);
+ if (value == val)
+ return TRUE;
+ }
+
+ return FALSE;
+}
diff --git a/libseed/seed-types.h b/libseed/seed-types.h
index 6af369a..f2e578f 100644
--- a/libseed/seed-types.h
+++ b/libseed/seed-types.h
@@ -142,4 +142,6 @@ JSValueRef seed_value_from_object (JSContextRef ctx,
void seed_toggle_ref (gpointer data, GObject * object, gboolean is_last_ref);
+gboolean seed_validate_enum (GIEnumInfo *info, long val);
+
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]