[gjs] GParamSpec: remove custom constructor
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs] GParamSpec: remove custom constructor
- Date: Thu, 10 Apr 2014 23:36:20 +0000 (UTC)
commit 221e15828e0170398db670325361bd09e2da4bee
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sat Jul 7 15:07:14 2012 +0200
GParamSpec: remove custom constructor
With proper argument marshalling, we don't need the custom code
anymore, the regular GObject functions works just as well.
We still need a lot of JS override code, because the arguments
are swapped...
https://bugzilla.gnome.org/show_bug.cgi?id=725282
gi/param.cpp | 227 ------------------------------------------
modules/overrides/GObject.js | 46 +++------
2 files changed, 17 insertions(+), 256 deletions(-)
---
diff --git a/gi/param.cpp b/gi/param.cpp
index 4bb3125..59c4188 100644
--- a/gi/param.cpp
+++ b/gi/param.cpp
@@ -178,232 +178,6 @@ param_finalize(JSFreeOp *fop,
g_slice_free(Param, priv);
}
-static JSBool
-param_new_internal(JSContext *cx,
- unsigned argc,
- jsval *vp)
-{
- jsval *argv = JS_ARGV(cx, vp);
- GParamSpec *pspec = NULL;
- JSBool ret = JS_FALSE;
- gchar *method_name;
-
- gchar *prop_name;
- JSObject *prop_gtype_jsobj;
- GType prop_gtype;
- GType prop_type;
- gchar *nick;
- gchar *blurb;
- GParamFlags flags;
- jsval foo;
-
- if (!gjs_parse_args(cx, "GObject.ParamSpec._new_internal",
- "!sossi", argc, argv,
- "prop_name", &prop_name,
- "prop_gtype", &prop_gtype_jsobj,
- "nick", &nick,
- "blurb", &blurb,
- "flags", &flags))
- return JS_FALSE;
-
- prop_gtype = gjs_gtype_get_actual_gtype(cx, prop_gtype_jsobj);
- prop_type = G_TYPE_FUNDAMENTAL(prop_gtype);
-
- method_name = g_strdup_printf("GObject.ParamSpec.%s",
- g_type_name(prop_type));
-
- argv += 5;
- argc -= 5;
-
- switch (prop_type) {
- case G_TYPE_UCHAR:
- case G_TYPE_CHAR:
- {
- gchar *minimum, *maximum, *default_value;
-
- if (!gjs_parse_args(cx, method_name,
- "sss", argc, argv,
- "minimum", &minimum,
- "maximum", &maximum,
- "default_value", &default_value))
- goto out;
-
- if (prop_type == G_TYPE_CHAR)
- pspec = g_param_spec_char(prop_name, nick, blurb,
- minimum[0], maximum[0], default_value[0],
- flags);
- else
- pspec = g_param_spec_uchar(prop_name, nick, blurb,
- minimum[0], maximum[0], default_value[0],
- flags);
-
- g_free(minimum);
- g_free(maximum);
- g_free(default_value);
- }
- break;
- case G_TYPE_INT:
- case G_TYPE_UINT:
- case G_TYPE_LONG:
- case G_TYPE_ULONG:
- case G_TYPE_INT64:
- case G_TYPE_UINT64:
- {
- gint64 minimum, maximum, default_value;
-
- if (!gjs_parse_args(cx, method_name,
- "ttt", argc, argv,
- "minimum", &minimum,
- "maximum", &maximum,
- "default_value", &default_value))
- goto out;
-
- switch (prop_type) {
- case G_TYPE_INT:
- pspec = g_param_spec_int(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- break;
- case G_TYPE_UINT:
- pspec = g_param_spec_uint(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- break;
- case G_TYPE_LONG:
- pspec = g_param_spec_long(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- break;
- case G_TYPE_ULONG:
- pspec = g_param_spec_ulong(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- break;
- case G_TYPE_INT64:
- pspec = g_param_spec_int64(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- break;
- case G_TYPE_UINT64:
- pspec = g_param_spec_uint64(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- break;
- }
- }
- break;
- case G_TYPE_BOOLEAN:
- {
- gboolean default_value;
-
- if (!gjs_parse_args(cx, method_name,
- "b", argc, argv,
- "default_value", &default_value))
- goto out;
-
- default_value = JSVAL_TO_BOOLEAN(argv[0]);
-
- pspec = g_param_spec_boolean(prop_name, nick, blurb,
- default_value, flags);
- }
- break;
- case G_TYPE_ENUM:
- {
- GIEnumInfo *info;
- gint64 default_value;
-
- if (!gjs_parse_args(cx, method_name,
- "t", argc, argv,
- "default_value", &default_value))
- goto out;
-
- info = g_irepository_find_by_gtype(g_irepository_get_default(), prop_gtype);
-
- if (!_gjs_enum_value_is_valid(cx, info, default_value))
- goto out;
-
- pspec = g_param_spec_enum(prop_name, nick, blurb,
- prop_gtype, default_value, flags);
- }
- break;
- case G_TYPE_FLAGS:
- {
- gint64 default_value;
-
- if (!gjs_parse_args(cx, method_name,
- "t", argc, argv,
- "default_value", &default_value))
- goto out;
-
- if (!_gjs_flags_value_is_valid(cx, prop_gtype, default_value))
- goto out;
-
- pspec = g_param_spec_flags(prop_name, nick, blurb,
- prop_gtype, default_value, flags);
- }
- break;
- case G_TYPE_FLOAT:
- case G_TYPE_DOUBLE:
- {
- gfloat minimum, maximum, default_value;
-
- if (!gjs_parse_args(cx, "GObject.ParamSpec.float",
- "fff", argc, argv,
- "minimum", &minimum,
- "maximum", &maximum,
- "default_value", &default_value))
- goto out;
-
- if (prop_type == G_TYPE_FLOAT)
- pspec = g_param_spec_float(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- else
- pspec = g_param_spec_double(prop_name, nick, blurb,
- minimum, maximum, default_value, flags);
- }
- break;
- case G_TYPE_STRING:
- {
- gchar *default_value;
-
- if (!gjs_parse_args(cx, method_name,
- "s", argc, argv,
- "default_value", &default_value))
- goto out;
-
- pspec = g_param_spec_string(prop_name, nick, blurb,
- default_value, flags);
-
- g_free (default_value);
- }
- break;
- case G_TYPE_PARAM:
- pspec = g_param_spec_param(prop_name, nick, blurb, prop_gtype, flags);
- break;
- case G_TYPE_BOXED:
- pspec = g_param_spec_boxed(prop_name, nick, blurb, prop_gtype, flags);
- break;
- case G_TYPE_POINTER:
- pspec = g_param_spec_pointer(prop_name, nick, blurb, flags);
- break;
- case G_TYPE_OBJECT:
- pspec = g_param_spec_object(prop_name, nick, blurb, prop_gtype, flags);
- break;
- default:
- gjs_throw(cx,
- "Could not create param spec for type '%s'",
- g_type_name(prop_gtype));
- goto out;
- }
-
- ret = JS_TRUE;
-
- foo = OBJECT_TO_JSVAL(gjs_param_from_g_param(cx, pspec));
-
- JS_SET_RVAL(cx, vp, foo);
- out:
-
- g_free(method_name);
- g_free(prop_name);
- g_free(nick);
- g_free(blurb);
-
- return ret;
-}
/* The bizarre thing about this vtable is that it applies to both
* instances of the object, and to the prototype that instances of the
@@ -435,7 +209,6 @@ JSFunctionSpec gjs_param_proto_funcs[] = {
};
static JSFunctionSpec gjs_param_constructor_funcs[] = {
- { "_new_internal", JSOP_WRAPPER((JSNative)param_new_internal), 0, 0 },
{ NULL }
};
diff --git a/modules/overrides/GObject.js b/modules/overrides/GObject.js
index 481a3ba..d17c34c 100644
--- a/modules/overrides/GObject.js
+++ b/modules/overrides/GObject.js
@@ -189,83 +189,71 @@ function _init() {
_makeDummyClass(this, 'Type', 'GTYPE', 'GType', GObject.type_from_name);
this.ParamSpec.char = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Char,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_char(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.uchar = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.UChar,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_uchar(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.int = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Int,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_int(name, nick, blurb, minimum, maxmium, default_value, flags);
};
this.ParamSpec.uint = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.UInt,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_uint(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.long = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Long,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_long(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.ulong = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.ULong,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_ulong(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.int64 = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Int64,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_int64(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.uint64 = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.UInt64,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_uint64(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.float = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Float,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_float(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.boolean = function(name, nick, blurb, flags, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Boolean,
- nick, blurb, flags, default_value);
+ return GObject.param_spec_boolean(name, nick, blurb, default_value, flags);
};
this.ParamSpec.flags = function(name, nick, blurb, flags, flags_type, default_value) {
- return GObject.ParamSpec._new_internal(name, flags_type, nick, blurb, flags, default_value);
+ return GObject.param_spec_flags(name, nick, blurb, flags_type, default_value, flags);
};
this.ParamSpec.enum = function(name, nick, blurb, flags, enum_type, default_value) {
- return GObject.ParamSpec._new_internal(name, enum_type, nick, blurb, flags, default_value);
+ return GObject.param_spec_enum(name, nick, blurb, enum_type, default_value, flags);
};
this.ParamSpec.double = function(name, nick, blurb, flags, minimum, maximum, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.Double,
- nick, blurb, flags, minimum, maximum, default_value);
+ return GObject.param_spec_double(name, nick, blurb, minimum, maximum, default_value, flags);
};
this.ParamSpec.string = function(name, nick, blurb, flags, default_value) {
- return GObject.ParamSpec._new_internal(name, GObject.String,
- nick, blurb, flags, default_value);
+ return GObject.param_spec_string(name, nick, blurb, default_value, flags);
};
this.ParamSpec.boxed = function(name, nick, blurb, flags, boxed_type) {
- return GObject.ParamSpec._new_internal(name, boxed_type, nick, blurb, flags);
+ return GObject.param_spec_boxed(name, nick, blurb, boxed_type, flags);
};
this.ParamSpec.object = function(name, nick, blurb, flags, object_type) {
- return GObject.ParamSpec._new_internal(name, object_type, nick, blurb, flags);
+ return GObject.param_spec_object(name, nick, blurb, object_type, flags);
};
this.ParamSpec.param = function(name, nick, blurb, flags, param_type) {
- return GObject.ParamSpec._new_internal(name, param_type, nick, blurb, flags);
+ return GObject.param_spec_param(name, nick, blurb, param_type, flags);
};
this.Class = GObjectMeta;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]