seed_make_union (JSContextRef ctx, gpointer younion, GIBaseInfo * info)
{
JSObjectRef object;
+
+ if (younion == NULL)
+ {
+ return JSValueMakeNull (ctx);
+ }
+
seed_struct_privates *priv = g_slice_alloc (sizeof (seed_struct_privates));
priv->pointer = younion;
seed_pointer_class = JSClassCreate (&seed_pointer_def);
seed_struct_def.parentClass = seed_pointer_class;
seed_struct_class = JSClassCreate (&seed_struct_def);
- seed_union_def.parentClass = seed_union_class;
+ seed_union_def.parentClass = seed_pointer_class;
seed_union_class = JSClassCreate (&seed_union_def);
seed_boxed_def.parentClass = seed_struct_class;
seed_boxed_class = JSClassCreate (&seed_boxed_def);
#ifndef _SEED_STRUCT_H
#define _SEED_STRUCT_H
extern JSClassRef seed_struct_class;
+extern JSClassRef seed_union_class;
JSObjectRef seed_make_union (JSContextRef ctx, gpointer younion,
GIBaseInfo * info);
arg->v_pointer = NULL;
- if (interface_type == GI_INFO_TYPE_OBJECT
- || interface_type == GI_INFO_TYPE_INTERFACE)
+ if (interface_type == GI_INFO_TYPE_OBJECT ||
+ interface_type == GI_INFO_TYPE_INTERFACE)
{
gobject = seed_value_to_object (ctx, value, exception);
required_gtype =
g_base_info_unref (interface);
break;
}
- else if (interface_type == GI_INFO_TYPE_STRUCT)
+ else if (interface_type == GI_INFO_TYPE_STRUCT ||
+ interface_type == GI_INFO_TYPE_UNION)
{
if (JSValueIsObjectOfClass (ctx, value, seed_struct_class))
arg->v_pointer = seed_pointer_get_pointer (ctx, value);
+ else if (JSValueIsObjectOfClass (ctx, value, seed_union_class))
+ arg->v_pointer = seed_pointer_get_pointer (ctx, value);
else
{
GType type =