[pygobject] Drop pygobject_construct() from public API.
- From: Steve FrÃcinaux <sfre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] Drop pygobject_construct() from public API.
- Date: Thu, 1 Sep 2011 07:30:42 +0000 (UTC)
commit 81861bc2d664eb38d46e5c38ff755d436f040f63
Author: Steve FrÃcinaux <code istique net>
Date: Wed Aug 31 14:18:56 2011 +0200
Drop pygobject_construct() from public API.
These functions were introduced in 2005 because python objects could not
"just" be instantiated using g_object_new(), but this is not true
anymore since the introduction of new-style constructors. Hence this API
has no reason to be there anymore.
Nowadays, people who want to construct GObjects defined in python should
just use g_object_new().
https://bugzilla.gnome.org/show_bug.cgi?id=657814
gi/_gobject/gobjectmodule.c | 118 +++++++++------------------------------
gi/_gobject/pygobject-private.h | 3 -
gi/_gobject/pygobject.h | 8 ---
3 files changed, 26 insertions(+), 103 deletions(-)
---
diff --git a/gi/_gobject/gobjectmodule.c b/gi/_gobject/gobjectmodule.c
index dfa1a8c..fc556d2 100644
--- a/gi/_gobject/gobjectmodule.c
+++ b/gi/_gobject/gobjectmodule.c
@@ -1017,6 +1017,32 @@ pygobject_init_wrapper_get(void)
return (PyObject *) g_static_private_get(&pygobject_construction_wrapper);
}
+int
+pygobject_constructv(PyGObject *self,
+ guint n_parameters,
+ GParameter *parameters)
+{
+ if (self->obj == NULL) {
+ GObject *obj;
+ pygobject_init_wrapper_set((PyObject *) self);
+ obj = g_object_newv(pyg_type_from_object((PyObject *) self),
+ n_parameters, parameters);
+ pygobject_sink (obj);
+ pygobject_init_wrapper_set(NULL);
+ if (self->obj == NULL) {
+ self->obj = obj;
+ pygobject_register_wrapper((PyObject *) self);
+ }
+ } else {
+ int i;
+ for (i = 0; i < n_parameters; ++i)
+ g_object_set_property(self->obj,
+ parameters[i].name,
+ ¶meters[i].value);
+ }
+ return 0;
+}
+
static void
pygobject__g_instance_init(GTypeInstance *instance,
gpointer g_class)
@@ -2210,96 +2236,6 @@ pyg_parse_constructor_args(GType obj_type,
return TRUE;
}
-int
-pygobject_constructv(PyGObject *self,
- guint n_parameters,
- GParameter *parameters)
-{
- if (self->obj == NULL) {
- GObject *obj;
- pygobject_init_wrapper_set((PyObject *) self);
- obj = g_object_newv(pyg_type_from_object((PyObject *) self),
- n_parameters, parameters);
- pygobject_sink (obj);
- pygobject_init_wrapper_set(NULL);
- if (self->obj == NULL) {
- self->obj = obj;
- pygobject_register_wrapper((PyObject *) self);
- }
- } else {
- int i;
- for (i = 0; i < n_parameters; ++i)
- g_object_set_property(self->obj,
- parameters[i].name,
- ¶meters[i].value);
- }
- return 0;
-}
-
-/* This function is mostly juste copy-paste from g_object_new, but
- * calls pygobject_constructv instead of g_object_newv */
-int
-pygobject_construct(PyGObject *self, const char *first_property_name, ...)
-{
- va_list var_args;
- GObjectClass *class;
- GParameter *params;
- const gchar *name;
- guint n_params = 0, n_alloced_params = 16;
- GType object_type = pyg_type_from_object((PyObject *) self);
- int retval;
-
- if (!first_property_name)
- return pygobject_constructv(self, 0, NULL);
-
- va_start(var_args, first_property_name);
- class = g_type_class_ref(object_type);
-
- params = g_new(GParameter, n_alloced_params);
- name = first_property_name;
- while (name)
- {
- gchar *error = NULL;
- GParamSpec *pspec = g_object_class_find_property(class, name);
-
- if (!pspec)
- {
- g_warning("%s: object class `%s' has no property named `%s'",
- G_STRFUNC,
- g_type_name(object_type),
- name);
- break;
- }
- if (n_params >= n_alloced_params)
- {
- n_alloced_params += 16;
- params = g_renew(GParameter, params, n_alloced_params);
- }
- params[n_params].name = name;
- params[n_params].value.g_type = 0;
- g_value_init(¶ms[n_params].value, G_PARAM_SPEC_VALUE_TYPE(pspec));
- G_VALUE_COLLECT(¶ms[n_params].value, var_args, 0, &error);
- if (error)
- {
- g_warning("%s: %s", G_STRFUNC, error);
- g_free(error);
- g_value_unset(¶ms[n_params].value);
- break;
- }
- n_params++;
- name = va_arg(var_args, gchar*);
- }
-
- retval = pygobject_constructv(self, n_params, params);
-
- while (n_params--)
- g_value_unset(¶ms[n_params].value);
- g_free(params);
- va_end(var_args);
- g_type_class_unref(class);
- return retval;
-}
-
PyObject *
pyg_integer_richcompare(PyObject *v, PyObject *w, int op)
{
@@ -2450,8 +2386,6 @@ struct _PyGObject_Functions pygobject_api_functions = {
pyg_register_interface_info,
pyg_closure_set_exception_handler,
- pygobject_constructv,
- pygobject_construct,
add_warning_redirection,
disable_warning_redirections,
diff --git a/gi/_gobject/pygobject-private.h b/gi/_gobject/pygobject-private.h
index 1fed2ae..38a5b64 100644
--- a/gi/_gobject/pygobject-private.h
+++ b/gi/_gobject/pygobject-private.h
@@ -89,9 +89,6 @@ gboolean pyg_error_check (GError **error);
int pygobject_constructv (PyGObject *self,
guint n_parameters,
GParameter *parameters);
-int pygobject_construct (PyGObject *self,
- const char *first_property_name,
- ...);
PyObject *pyg_integer_richcompare(PyObject *v,
PyObject *w,
diff --git a/gi/_gobject/pygobject.h b/gi/_gobject/pygobject.h
index 7939563..82a3d83 100644
--- a/gi/_gobject/pygobject.h
+++ b/gi/_gobject/pygobject.h
@@ -180,12 +180,6 @@ struct _PyGObject_Functions {
void (*register_class_init) (GType gtype, PyGClassInitFunc class_init);
void (*register_interface_info) (GType gtype, const GInterfaceInfo *info);
void (*closure_set_exception_handler) (GClosure *closure, PyClosureExceptionHandler handler);
- int (*pygobject_constructv) (PyGObject *self,
- guint n_parameters,
- GParameter *parameters);
- int (*pygobject_construct) (PyGObject *self,
- const char *first_property_name,
- ...);
void (*add_warning_redirection) (const char *domain,
PyObject *warning);
@@ -254,8 +248,6 @@ struct _PyGObject_Functions *_PyGObject_API;
#define pyg_gil_state_release (_PyGObject_API->gil_state_release)
#define pyg_register_class_init (_PyGObject_API->register_class_init)
#define pyg_register_interface_info (_PyGObject_API->register_interface_info)
-#define pygobject_construct (_PyGObject_API->pygobject_construct)
-#define pygobject_constructv (_PyGObject_API->pygobject_constructv)
#define pyg_add_warning_redirection (_PyGObject_API->add_warning_redirection)
#define pyg_disable_warning_redirections (_PyGObject_API->disable_warning_redirections)
#define pyg_type_register_custom_callback (_PyGObject_API->type_register_custom)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]