GObject * peas_extension_gjs_new (GType exten_type, GType *interfaces, JSContext *js_context, JSObject *js_object) { PeasExtensionGjs *gexten; GType real_type; g_return_val_if_fail (js_context != NULL, NULL); g_return_val_if_fail (js_object != NULL, NULL); real_type = peas_extension_register_subclass (PEAS_TYPE_EXTENSION_GJS, interfaces); /* Already Warned */ if (real_type == G_TYPE_INVALID) { g_free (interfaces); return NULL; } gexten = PEAS_EXTENSION_GJS (g_object_new (real_type, NULL)); gexten->js_context = js_context; gexten->js_object = js_object; PEAS_EXTENSION_WRAPPER (gexten)->exten_type = exten_type; PEAS_EXTENSION_WRAPPER (gexten)->interfaces = interfaces; JS_AddObjectRoot (gexten->js_context, &gexten->js_object); return G_OBJECT (gexten); }
GObject * peas_extension_seed_new (GType exten_type, SeedContext js_context, SeedObject js_object) { PeasExtensionSeed *sexten; GType real_type; g_return_val_if_fail (js_context != NULL, NULL); g_return_val_if_fail (js_object != NULL, NULL); real_type = peas_extension_register_subclass (PEAS_TYPE_EXTENSION_SEED, exten_type); sexten = PEAS_EXTENSION_SEED (g_object_new (real_type, NULL)); sexten->js_context = js_context; sexten->js_object = js_object; PEAS_EXTENSION_WRAPPER (sexten)->exten_type = exten_type; seed_context_ref (sexten->js_context); seed_value_protect (sexten->js_context, sexten->js_object); return G_OBJECT (sexten); }