[pygobject] Drop pygobject_construct() from public API.



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,
+				  &parameters[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,
-				  &parameters[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(&params[n_params].value, G_PARAM_SPEC_VALUE_TYPE(pspec));
-        G_VALUE_COLLECT(&params[n_params].value, var_args, 0, &error);
-        if (error)
-	{
-            g_warning("%s: %s", G_STRFUNC, error);
-            g_free(error);
-            g_value_unset(&params[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(&params[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]