[pygobject/gsoc2009: 115/160] Change the naming convention



commit 3bd5057eb652bae4d7440ce3ff573bf6e415a8e3
Author: Simon van der Linden <svdlinden src gnome org>
Date:   Wed Aug 5 18:57:23 2009 +0200

    Change the naming convention
    
    - Function and variable names are lowercase_with_underscores, even in Python
    - Type names are CamelCase
    - Macro names are UPPERCASE_WITH_UNDERSCORES
    - The prefix is pygi for lowercase names, or PyGI for CamelCase and UPPERCASE
      names
    - A leading underscore indicates a function/variable/macro that is not
      public
    - When there is no pygi prefix, but a leading underscore, the
      function/variable/macro is a redefinition of its homonym without the leading
      underscore (except for a few cases)
    - What does _pygi_argument_to_object do? It transforms a GArgument to a
      PyObject. By default, when there is no prefix to the type name (like
      'object', unlike 'g_object'), the function argument is a Python one. Since
      there is no Python type whose name is 'argument', there is no ambiguity, its a
      GArgument. For GI.*Info, we write g_.*_info, to keep consistancy with
      GObject-Introspection's API, though.
    - Capito?

 gi/gimodule.c        |   24 +++-
 gi/pygi-argument.c   |  380 ++++++++++++++++++++++++++++---------------------
 gi/pygi-argument.h   |   41 +++---
 gi/pygi-info.c       |  285 ++++++++++++++++---------------------
 gi/pygi-info.h       |    9 +-
 gi/pygi-private.h    |   48 +++++--
 gi/pygi-repository.c |   24 ++-
 gi/pygi-repository.h |    4 +-
 gi/pygi.h            |    7 +
 9 files changed, 449 insertions(+), 373 deletions(-)
---
diff --git a/gi/gimodule.c b/gi/gimodule.c
index 56910cb..41dc111 100644
--- a/gi/gimodule.c
+++ b/gi/gimodule.c
@@ -26,7 +26,8 @@
 #include <pygobject.h>
 
 PyObject *
-pygi_py_type_find_by_name(const char *namespace_, const char *name)
+pygi_type_find_by_name (const char *namespace_,
+                        const char *name)
 {
     PyObject *py_module;
     gchar *module_name;
@@ -62,8 +63,21 @@ pygi_py_type_find_by_name(const char *namespace_, const char *name)
     return py_module;
 }
 
+PyObject *
+pygi_type_find_by_info (GIBaseInfo *info)
+{
+    const char *namespace_;
+    const char *name;
+
+    namespace_ = g_base_info_get_namespace(info);
+    name = g_base_info_get_name(info);
+
+    return pygi_type_find_by_name(namespace_, name);
+}
+
 gpointer
-pygi_py_object_get_buffer(PyObject *object, gsize *size)
+_pygi_object_get_buffer (PyObject *object,
+                         gsize    *size)
 {
     PyBufferProcs *py_buffer_procs;
     PyObject *py_buffer;
@@ -128,8 +142,8 @@ init_gi(void)
         return;
     }
 
-    pygi_repository_register_types(m);
-    pygi_info_register_types(m);
-    pyg_argument_init();
+    _pygi_repository_register_types(m);
+    _pygi_info_register_types(m);
+    _pygi_argument_init();
 }
 
diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c
index ea120f0..2b78f21 100644
--- a/gi/pygi-argument.c
+++ b/gi/pygi-argument.c
@@ -29,68 +29,88 @@
 #include <datetime.h>
 #include <pygobject.h>
 
-gint
-pygi_gi_registered_type_info_check_py_object(GIRegisteredTypeInfo *info,
-        PyObject *object, gboolean is_instance)
+static gsize
+_pygi_gi_type_tag_size (GITypeTag type_tag)
 {
-    gint retval;
-
-    PyObject *type;
-    gchar *type_name_expected;
-
-    type = pygi_py_type_find_by_gi_info((GIBaseInfo *)info);
-    if (type == NULL) {
-        return FALSE;
-    }
-    g_assert(PyType_Check(type));
-
-    if (is_instance) {
-        retval = PyObject_IsInstance(object, type);
-        if (!retval) {
-            type_name_expected = pygi_gi_base_info_get_fullname(
-                    (GIBaseInfo *)info);
-        }
-    } else {
-        if (!PyObject_Type(type)) {
-            type_name_expected = "type";
-            retval = 0;
-        } else if (!PyType_IsSubtype((PyTypeObject *)object,
-                (PyTypeObject *)type)) {
-            type_name_expected = pygi_gi_base_info_get_fullname(
-                    (GIBaseInfo *)info);
-            retval = 0;
-        } else {
-            retval = 1;
-        }
-    }
-
-    Py_DECREF(type);
-
-    if (!retval) {
-        PyTypeObject *object_type;
-
-        if (type_name_expected == NULL) {
-            return -1;
-        }
+    gsize size;
 
-        object_type = (PyTypeObject *)PyObject_Type(object);
-        if (object_type == NULL) {
-            return -1;
-        }
+    switch(type_tag) {
 
-        PyErr_Format(PyExc_TypeError, "Must be %s, not %s",
-            type_name_expected, object_type->tp_name);
+        /* Basic types */
+        case GI_TYPE_TAG_VOID:
+            size = sizeof(void);
+            break;
+        case GI_TYPE_TAG_BOOLEAN:
+            size = sizeof(gboolean);
+            break;
+        case GI_TYPE_TAG_INT8:
+        case GI_TYPE_TAG_UINT8:
+            size = sizeof(gint8);
+            break;
+        case GI_TYPE_TAG_INT16:
+        case GI_TYPE_TAG_UINT16:
+            size = sizeof(gint16);
+            break;
+        case GI_TYPE_TAG_INT32:
+        case GI_TYPE_TAG_UINT32:
+            size = sizeof(gint32);
+            break;
+        case GI_TYPE_TAG_INT64:
+        case GI_TYPE_TAG_UINT64:
+            size = sizeof(gint64);
+            break;
+        case GI_TYPE_TAG_SHORT:
+        case GI_TYPE_TAG_USHORT:
+            size = sizeof(gshort);
+            break;
+        case GI_TYPE_TAG_INT:
+        case GI_TYPE_TAG_UINT:
+            size = sizeof(gint);
+            break;
+        case GI_TYPE_TAG_LONG:
+        case GI_TYPE_TAG_ULONG:
+            size = sizeof(glong);
+            break;
+        case GI_TYPE_TAG_SIZE:
+        case GI_TYPE_TAG_SSIZE:
+            size = sizeof(gsize);
+            break;
+        case GI_TYPE_TAG_FLOAT:
+            size = sizeof(gfloat);
+            break;
+        case GI_TYPE_TAG_DOUBLE:
+            size = sizeof(gdouble);
+            break;
+        case GI_TYPE_TAG_TIME_T:
+            size = sizeof(time_t);
+            break;
+        case GI_TYPE_TAG_GTYPE:
+            size = sizeof(GType);
+            break;
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+            size = sizeof(gchar *);
+            break;
 
-        g_free(type_name_expected);
+        /* Non-basic types */
+        case GI_TYPE_TAG_ARRAY:
+        case GI_TYPE_TAG_INTERFACE:
+        case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
+        case GI_TYPE_TAG_GHASH:
+        case GI_TYPE_TAG_ERROR:
+            /* TODO */
+            g_assert_not_reached();
+            break;
     }
 
-    return retval;
+    return size;
 }
 
-static
-void
-pygi_gi_type_tag_get_py_bounds(GITypeTag type_tag, PyObject **lower,
-        PyObject **upper)
+static void
+_pygi_gi_type_tag_py_bounds (GITypeTag   type_tag,
+                             PyObject  **lower,
+                             PyObject  **upper)
 {
     switch(type_tag) {
         case GI_TYPE_TAG_INT8:
@@ -170,7 +190,68 @@ pygi_gi_type_tag_get_py_bounds(GITypeTag type_tag, PyObject **lower,
 }
 
 gint
-pygi_gi_type_info_check_py_object(GITypeInfo *type_info, gboolean may_be_null, PyObject *object)
+_pygi_g_registered_type_info_check_object (GIRegisteredTypeInfo *info,
+                                           gboolean is_instance,
+                                           PyObject *object)
+{
+    gint retval;
+
+    PyObject *type;
+    gchar *type_name_expected;
+
+    type = pygi_type_find_by_info((GIBaseInfo *)info);
+    if (type == NULL) {
+        return FALSE;
+    }
+    g_assert(PyType_Check(type));
+
+    if (is_instance) {
+        retval = PyObject_IsInstance(object, type);
+        if (!retval) {
+            type_name_expected = _pygi_g_base_info_get_fullname(
+                    (GIBaseInfo *)info);
+        }
+    } else {
+        if (!PyObject_Type(type)) {
+            type_name_expected = "type";
+            retval = 0;
+        } else if (!PyType_IsSubtype((PyTypeObject *)object,
+                (PyTypeObject *)type)) {
+            type_name_expected = _pygi_g_base_info_get_fullname(
+                    (GIBaseInfo *)info);
+            retval = 0;
+        } else {
+            retval = 1;
+        }
+    }
+
+    Py_DECREF(type);
+
+    if (!retval) {
+        PyTypeObject *object_type;
+
+        if (type_name_expected == NULL) {
+            return -1;
+        }
+
+        object_type = (PyTypeObject *)PyObject_Type(object);
+        if (object_type == NULL) {
+            return -1;
+        }
+
+        PyErr_Format(PyExc_TypeError, "Must be %s, not %s",
+            type_name_expected, object_type->tp_name);
+
+        g_free(type_name_expected);
+    }
+
+    return retval;
+}
+
+gint
+_pygi_g_type_info_check_object (GITypeInfo *type_info,
+                                gboolean    may_be_null,
+                                PyObject   *object)
 {
     gint retval;
 
@@ -215,7 +296,7 @@ pygi_gi_type_info_check_py_object(GITypeInfo *type_info, gboolean may_be_null, P
                 break;
             }
 
-            pygi_gi_type_tag_get_py_bounds(type_tag, &lower, &upper);
+            _pygi_gi_type_tag_py_bounds(type_tag, &lower, &upper);
             if (lower == NULL || upper == NULL) {
                 retval = -1;
                 goto check_number_release;
@@ -327,7 +408,7 @@ check_number_release:
                     break;
                 }
 
-                retval = pygi_gi_type_info_check_py_object(item_type_info, FALSE, item);
+                retval = _pygi_g_type_info_check_object(item_type_info, FALSE, item);
 
                 Py_DECREF(item);
 
@@ -335,7 +416,7 @@ check_number_release:
                     break;
                 }
                 if (!retval) {
-                    PyErr_PREFIX_FROM_FORMAT("Item %zd: ", i);
+                    _PyGI_ERROR_PREFIX("Item %zd: ", i);
                     break;
                 }
             }
@@ -387,7 +468,7 @@ check_number_release:
                 }
                 case GI_INFO_TYPE_BOXED:
                 case GI_INFO_TYPE_OBJECT:
-                    retval = pygi_gi_registered_type_info_check_py_object((GIRegisteredTypeInfo *)info, object, TRUE);
+                    retval = _pygi_g_registered_type_info_check_object((GIRegisteredTypeInfo *)info, TRUE, object);
                     break;
                 default:
                     /* TODO: To complete with other types. */
@@ -429,7 +510,7 @@ check_number_release:
                     break;
                 }
 
-                retval = pygi_gi_type_info_check_py_object(item_type_info, FALSE, item);
+                retval = _pygi_g_type_info_check_object(item_type_info, FALSE, item);
 
                 Py_DECREF(item);
 
@@ -437,7 +518,7 @@ check_number_release:
                     break;
                 }
                 if (!retval) {
-                    PyErr_PREFIX_FROM_FORMAT("Item %zd: ", i);
+                    _PyGI_ERROR_PREFIX("Item %zd: ", i);
                     break;
                 }
             }
@@ -493,21 +574,21 @@ check_number_release:
                 key = PyList_GET_ITEM(keys, i);
                 value = PyList_GET_ITEM(values, i);
 
-                retval = pygi_gi_type_info_check_py_object(key_type_info, FALSE, key);
+                retval = _pygi_g_type_info_check_object(key_type_info, FALSE, key);
                 if (retval < 0) {
                     break;
                 }
                 if (!retval) {
-                    PyErr_PREFIX_FROM_FORMAT("Key %zd :", i);
+                    _PyGI_ERROR_PREFIX("Key %zd :", i);
                     break;
                 }
 
-                retval = pygi_gi_type_info_check_py_object(value_type_info, FALSE, value);
+                retval = _pygi_g_type_info_check_object(value_type_info, FALSE, value);
                 if (retval < 0) {
                     break;
                 }
                 if (!retval) {
-                    PyErr_PREFIX_FROM_FORMAT("Value %zd :", i);
+                    _PyGI_ERROR_PREFIX("Value %zd :", i);
                     break;
                 }
             }
@@ -527,86 +608,55 @@ check_number_release:
     return retval;
 }
 
-gsize
-pygi_gi_type_tag_get_size(GITypeTag type_tag)
+GArray *
+_pygi_argument_to_array (GArgument  *arg,
+                         GArgument  *args[],
+                         GITypeInfo *type_info)
 {
-    gsize size;
+    /* Create a GArray. */
+    GITypeInfo *item_type_info;
+    gboolean is_zero_terminated;
+    GITypeTag item_type_tag;
+    gsize item_size;
+    gssize length;
+    GArray *g_array;
 
-    switch(type_tag) {
+    is_zero_terminated = g_type_info_is_zero_terminated(type_info);
+    item_type_info = g_type_info_get_param_type(type_info, 0);
+    g_assert(item_type_info != NULL);
 
-        /* Basic types */
-        case GI_TYPE_TAG_VOID:
-            size = sizeof(void);
-            break;
-        case GI_TYPE_TAG_BOOLEAN:
-            size = sizeof(gboolean);
-            break;
-        case GI_TYPE_TAG_INT8:
-        case GI_TYPE_TAG_UINT8:
-            size = sizeof(gint8);
-            break;
-        case GI_TYPE_TAG_INT16:
-        case GI_TYPE_TAG_UINT16:
-            size = sizeof(gint16);
-            break;
-        case GI_TYPE_TAG_INT32:
-        case GI_TYPE_TAG_UINT32:
-            size = sizeof(gint32);
-            break;
-        case GI_TYPE_TAG_INT64:
-        case GI_TYPE_TAG_UINT64:
-            size = sizeof(gint64);
-            break;
-        case GI_TYPE_TAG_SHORT:
-        case GI_TYPE_TAG_USHORT:
-            size = sizeof(gshort);
-            break;
-        case GI_TYPE_TAG_INT:
-        case GI_TYPE_TAG_UINT:
-            size = sizeof(gint);
-            break;
-        case GI_TYPE_TAG_LONG:
-        case GI_TYPE_TAG_ULONG:
-            size = sizeof(glong);
-            break;
-        case GI_TYPE_TAG_SIZE:
-        case GI_TYPE_TAG_SSIZE:
-            size = sizeof(gsize);
-            break;
-        case GI_TYPE_TAG_FLOAT:
-            size = sizeof(gfloat);
-            break;
-        case GI_TYPE_TAG_DOUBLE:
-            size = sizeof(gdouble);
-            break;
-        case GI_TYPE_TAG_TIME_T:
-            size = sizeof(time_t);
-            break;
-        case GI_TYPE_TAG_GTYPE:
-            size = sizeof(GType);
-            break;
-        case GI_TYPE_TAG_UTF8:
-        case GI_TYPE_TAG_FILENAME:
-            size = sizeof(gchar *);
-            break;
+    item_type_tag = g_type_info_get_tag(item_type_info);
+    item_size = _pygi_gi_type_tag_size(item_type_tag);
 
-        /* Non-basic types */
-        case GI_TYPE_TAG_ARRAY:
-        case GI_TYPE_TAG_INTERFACE:
-        case GI_TYPE_TAG_GLIST:
-        case GI_TYPE_TAG_GSLIST:
-        case GI_TYPE_TAG_GHASH:
-        case GI_TYPE_TAG_ERROR:
-            /* TODO */
-            g_assert_not_reached();
-            break;
+    g_base_info_unref((GIBaseInfo *)item_type_info);
+
+    if (is_zero_terminated) {
+        length = g_strv_length(arg->v_pointer);
+    } else {
+        length = g_type_info_get_array_fixed_size(type_info);
+        if (length < 0) {
+            gint length_arg_pos;
+
+            length_arg_pos = g_type_info_get_array_length(type_info);
+            g_assert(length_arg_pos >= 0);
+
+            /* FIXME: Take into account the type of the argument. */
+            length = args[length_arg_pos]->v_int;
+        }
     }
 
-    return size;
+    g_array = g_array_new(is_zero_terminated, FALSE, item_size);
+
+    g_array->data = arg->v_pointer;
+    g_array->len = length;
+
+    return g_array;
 }
 
 GArgument
-pygi_g_argument_from_py_object(PyObject *object, GITypeInfo *type_info, GITransfer transfer)
+_pygi_argument_from_object (PyObject   *object,
+                            GITypeInfo *type_info,
+                            GITransfer  transfer)
 {
     GArgument arg;
     GITypeTag type_tag;
@@ -784,7 +834,7 @@ pygi_g_argument_from_py_object(PyObject *object, GITypeInfo *type_info, GITransf
             g_assert(item_type_info != NULL);
 
             item_type_tag = g_type_info_get_tag(item_type_info);
-            item_size = pygi_gi_type_tag_get_size(item_type_tag);
+            item_size = _pygi_gi_type_tag_size(item_type_tag);
 
             array = g_array_sized_new(is_zero_terminated, FALSE, item_size, length);
             if (array == NULL) {
@@ -802,7 +852,7 @@ pygi_g_argument_from_py_object(PyObject *object, GITypeInfo *type_info, GITransf
                     goto array_item_error;
                 }
 
-                item = pygi_g_argument_from_py_object(py_item, item_type_info,
+                item = _pygi_argument_from_object(py_item, item_type_info,
                         transfer == GI_TRANSFER_EVERYTHING ? GI_TRANSFER_EVERYTHING : GI_TRANSFER_NOTHING);
 
                 Py_DECREF(py_item);
@@ -816,11 +866,11 @@ pygi_g_argument_from_py_object(PyObject *object, GITypeInfo *type_info, GITransf
 
 array_item_error:
                 /* Free everything we have converted so far. */
-                pygi_g_argument_release((GArgument *)array, type_info,
+                _pygi_argument_release((GArgument *)array, type_info,
                         GI_TRANSFER_NOTHING, GI_DIRECTION_IN);
                 array = NULL;
 
-                PyErr_PREFIX_FROM_FORMAT("Item %zd: ", i);
+                _PyGI_ERROR_PREFIX("Item %zd: ", i);
                 break;
             }
 
@@ -893,7 +943,7 @@ array_item_error:
                         break;
                     }
 
-                    buffer = pygi_py_object_get_buffer(object, &size);
+                    buffer = _pygi_object_get_buffer(object, &size);
 
                     arg.v_pointer = buffer;
                     break;
@@ -936,7 +986,7 @@ array_item_error:
                     goto list_item_error;
                 }
 
-                item = pygi_g_argument_from_py_object(py_item, item_type_info,
+                item = _pygi_argument_from_object(py_item, item_type_info,
                         transfer == GI_TRANSFER_EVERYTHING ? GI_TRANSFER_EVERYTHING : GI_TRANSFER_NOTHING);
 
                 Py_DECREF(py_item);
@@ -955,11 +1005,11 @@ array_item_error:
 
 list_item_error:
                 /* Free everything we have converted so far. */
-                pygi_g_argument_release((GArgument *)list, type_info,
+                _pygi_argument_release((GArgument *)list, type_info,
                         GI_TRANSFER_NOTHING, GI_DIRECTION_IN);
                 list = NULL;
 
-                PyErr_PREFIX_FROM_FORMAT("Item %zd: ", i);
+                _PyGI_ERROR_PREFIX("Item %zd: ", i);
                 break;
             }
 
@@ -1062,13 +1112,13 @@ list_item_error:
                 py_key = PyList_GET_ITEM(keys, i);
                 py_value = PyList_GET_ITEM(values, i);
 
-                key = pygi_g_argument_from_py_object(py_key, key_type_info,
+                key = _pygi_argument_from_object(py_key, key_type_info,
                         transfer == GI_TRANSFER_EVERYTHING ? GI_TRANSFER_EVERYTHING : GI_TRANSFER_NOTHING);
                 if (PyErr_Occurred()) {
                     goto hash_table_item_error;
                 }
 
-                value = pygi_g_argument_from_py_object(py_value, value_type_info,
+                value = _pygi_argument_from_object(py_value, value_type_info,
                         transfer == GI_TRANSFER_EVERYTHING ? GI_TRANSFER_EVERYTHING : GI_TRANSFER_NOTHING);
                 if (PyErr_Occurred()) {
                     goto hash_table_item_error;
@@ -1079,11 +1129,11 @@ list_item_error:
 
 hash_table_item_error:
                 /* Free everything we have converted so far. */
-                pygi_g_argument_release((GArgument *)hash_table, type_info,
+                _pygi_argument_release((GArgument *)hash_table, type_info,
                         GI_TRANSFER_NOTHING, GI_DIRECTION_IN);
                 hash_table = NULL;
 
-                PyErr_PREFIX_FROM_FORMAT("Item %zd: ", i);
+                _PyGI_ERROR_PREFIX("Item %zd: ", i);
                 break;
             }
 
@@ -1111,7 +1161,8 @@ hash_table_release:
 }
 
 PyObject *
-pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
+_pygi_argument_to_object (GArgument  *arg,
+                          GITypeInfo *type_info)
 {
     GITypeTag type_tag;
     PyObject *object;
@@ -1241,10 +1292,10 @@ pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
                 PyObject *py_item;
 
                 item = _g_array_index(array, GArgument, i);
-                py_item = pygi_g_argument_to_py_object(&item, item_type_info);
+                py_item = _pygi_argument_to_object(&item, item_type_info);
                 if (py_item == NULL) {
                     Py_CLEAR(object);
-                    PyErr_PREFIX_FROM_FORMAT("Item %zu: ", i);
+                    _PyGI_ERROR_PREFIX("Item %zu: ", i);
                     break;
                 }
 
@@ -1291,7 +1342,7 @@ pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
                     }
 
                     /* Wrap the structure. */
-                    py_type = pygi_py_type_find_by_gi_info(info);
+                    py_type = pygi_type_find_by_info(info);
                     if (py_type == NULL) {
                         Py_DECREF(buffer);
                         break;
@@ -1309,7 +1360,7 @@ pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
                     PyObject *py_type;
 
                     /* Make sure the class is initialized. */
-                    py_type = pygi_py_type_find_by_gi_info(info);
+                    py_type = pygi_type_find_by_info(info);
                     if (py_type == NULL) {
                         break;
                     }
@@ -1354,10 +1405,10 @@ pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
 
                 item.v_pointer = list->data;
 
-                py_item = pygi_g_argument_to_py_object(&item, item_type_info);
+                py_item = _pygi_argument_to_object(&item, item_type_info);
                 if (py_item == NULL) {
                     Py_CLEAR(object);
-                    PyErr_PREFIX_FROM_FORMAT("Item %zu: ", i);
+                    _PyGI_ERROR_PREFIX("Item %zu: ", i);
                     break;
                 }
 
@@ -1392,12 +1443,12 @@ pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
                 PyObject *py_value;
                 int retval;
 
-                py_key = pygi_g_argument_to_py_object(&key, key_type_info);
+                py_key = _pygi_argument_to_object(&key, key_type_info);
                 if (py_key == NULL) {
                     break;
                 }
 
-                py_value = pygi_g_argument_to_py_object(&value, value_type_info);
+                py_value = _pygi_argument_to_object(&value, value_type_info);
                 if (py_value == NULL) {
                     Py_DECREF(py_key);
                     break;
@@ -1428,7 +1479,10 @@ pygi_g_argument_to_py_object(GArgument *arg, GITypeInfo *type_info)
 }
 
 void
-pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transfer, GIDirection direction)
+_pygi_argument_release (GArgument   *arg,
+                        GITypeInfo  *type_info,
+                        GITransfer   transfer,
+                        GIDirection  direction)
 {
     GITypeTag type_tag;
 
@@ -1496,7 +1550,7 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
                 for (i = 0; i < array->len; i++) {
                     GArgument item;
                     item = _g_array_index(array, GArgument, i);
-                    pygi_g_argument_release(&item, item_type_info, item_transfer, direction);
+                    _pygi_argument_release(&item, item_type_info, item_transfer, direction);
                 }
 
                 g_base_info_unref((GIBaseInfo *)item_type_info);
@@ -1588,7 +1642,7 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
 
                 /* Free the items */
                 for (item = list; item != NULL; item = g_slist_next(item)) {
-                    pygi_g_argument_release((GArgument *)&item->data, item_type_info,
+                    _pygi_argument_release((GArgument *)&item->data, item_type_info,
                         item_transfer, direction);
                 }
 
@@ -1637,9 +1691,9 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
 
                 g_hash_table_iter_init(&hash_table_iter, hash_table);
                 while (g_hash_table_iter_next(&hash_table_iter, &key, &value)) {
-                    pygi_g_argument_release((GArgument *)&key, key_type_info,
+                    _pygi_argument_release((GArgument *)&key, key_type_info,
                         item_transfer, direction);
-                    pygi_g_argument_release((GArgument *)&value, value_type_info,
+                    _pygi_argument_release((GArgument *)&value, value_type_info,
                         item_transfer, direction);
                 }
 
@@ -1665,7 +1719,7 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
 }
 
 void
-pyg_argument_init(void)
+_pygi_argument_init (void)
 {
     PyDateTime_IMPORT;
 }
diff --git a/gi/pygi-argument.h b/gi/pygi-argument.h
index e714e54..2a46cc3 100644
--- a/gi/pygi-argument.h
+++ b/gi/pygi-argument.h
@@ -28,29 +28,36 @@
 
 G_BEGIN_DECLS
 
-gsize pygi_gi_type_tag_get_size(GITypeTag type_tag);
 
-gint pygi_gi_registered_type_info_check_py_object(GIRegisteredTypeInfo *info,
-                                                  PyObject *object,
-                                                  gboolean is_instance);
+/* Private */
 
-gint pygi_gi_type_info_check_py_object(GITypeInfo *type_info,
-                                       gboolean may_be_null,
-                                       PyObject *object);
+gint _pygi_g_type_info_check_object(GITypeInfo *type_info,
+                                    gboolean    may_be_null,
+                                    PyObject   *object);
 
-GArgument pygi_g_argument_from_py_object(PyObject *object,
-                                         GITypeInfo *type_info,
-                                         GITransfer transfer);
+gint _pygi_g_registered_type_info_check_object(GIRegisteredTypeInfo *info,
+                                               gboolean              is_instance,
+                                               PyObject             *object);
 
-PyObject * pygi_g_argument_to_py_object(GArgument *arg,
-                                        GITypeInfo *type_info);
 
-void pygi_g_argument_release(GArgument *arg,
-                             GITypeInfo *type_info,
-                             GITransfer transfer,
-                             GIDirection direction);
+GArray* _pygi_argument_to_array (GArgument  *arg,
+                                 GArgument  *args[],
+                                 GITypeInfo *type_info);
 
-void pyg_argument_init(void);
+GArgument _pygi_argument_from_object (PyObject   *object,
+                                      GITypeInfo *type_info,
+                                      GITransfer  transfer);
+
+PyObject* _pygi_argument_to_object (GArgument  *arg,
+                                    GITypeInfo *type_info);
+
+
+void _pygi_argument_release(GArgument   *arg,
+                            GITypeInfo  *type_info,
+                            GITransfer   transfer,
+                            GIDirection  direction);
+
+void _pygi_argument_init(void);
 
 G_END_DECLS
 
diff --git a/gi/pygi-info.c b/gi/pygi-info.c
index 8afffb5..2b0f466 100644
--- a/gi/pygi-info.c
+++ b/gi/pygi-info.c
@@ -25,7 +25,7 @@
 
 #include <pygobject.h>
 
-#define PYGIINFO_DEFINE_TYPE(name, cname, base) \
+#define _PyGI_DEFINE_INFO_TYPE(name, cname, base) \
 static PyMethodDef _Py##cname##_methods[]; \
 PyTypeObject Py##cname##_Type = { \
     PyObject_HEAD_INIT(NULL) \
@@ -66,7 +66,7 @@ PyTypeObject Py##cname##_Type = { \
 /* BaseInfo */
 
 static void
-pygi_base_info_dealloc(PyGIBaseInfo *self)
+_base_info_dealloc (PyGIBaseInfo *self)
 {
     PyObject_GC_UnTrack((PyObject *)self);
 
@@ -81,13 +81,15 @@ pygi_base_info_dealloc(PyGIBaseInfo *self)
 }
 
 static int
-pygi_base_info_traverse(PyGIBaseInfo *self, visitproc visit, void *arg)
+_base_info_traverse (PyGIBaseInfo *self,
+                     visitproc     visit,
+                     void         *arg)
 {
     return 0;
 }
 
 static PyObject *
-pygi_base_info_repr(PyGIBaseInfo *self)
+_base_info_repr (PyGIBaseInfo *self)
 {
     return PyString_FromFormat("<%s object (%s) at 0x%p>",
             self->ob_type->tp_name, g_base_info_get_name(self->info), (void *)self);
@@ -101,12 +103,12 @@ PyTypeObject PyGIBaseInfo_Type = {
     "gi.BaseInfo",                             /* tp_name */
     sizeof(PyGIBaseInfo),                      /* tp_basicsize */
     0,                                         /* tp_itemsize */
-    (destructor)pygi_base_info_dealloc,        /* tp_dealloc */
+    (destructor)_base_info_dealloc,        /* tp_dealloc */
     (printfunc)NULL,                           /* tp_print */
     (getattrfunc)NULL,                         /* tp_getattr */
     (setattrfunc)NULL,                         /* tp_setattr */
     (cmpfunc)NULL,                             /* tp_compare */
-    (reprfunc)pygi_base_info_repr,             /* tp_repr */
+    (reprfunc)_base_info_repr,             /* tp_repr */
     NULL,                                      /* tp_as_number */
     NULL,                                      /* tp_as_sequence */
     NULL,                                      /* tp_as_mapping */
@@ -119,7 +121,7 @@ PyTypeObject PyGIBaseInfo_Type = {
     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
         Py_TPFLAGS_HAVE_GC,                    /* tp_flags */
     NULL,                                      /* tp_doc */
-    (traverseproc)pygi_base_info_traverse,     /* tp_traverse */
+    (traverseproc)_base_info_traverse,     /* tp_traverse */
     (inquiry)NULL,                             /* tp_clear */
     (richcmpfunc)NULL,                         /* tp_richcompare */
     offsetof(PyGIBaseInfo, inst_weakreflist),  /* tp_weaklistoffset */
@@ -129,13 +131,13 @@ PyTypeObject PyGIBaseInfo_Type = {
 };
 
 static PyObject *
-_wrap_g_base_info_get_name(PyGIBaseInfo *self)
+_wrap_g_base_info_get_name (PyGIBaseInfo *self)
 {
     return PyString_FromString(g_base_info_get_name(self->info));
 }
 
 static PyObject *
-_wrap_g_base_info_get_namespace(PyGIBaseInfo *self)
+_wrap_g_base_info_get_namespace (PyGIBaseInfo *self)
 {
     return PyString_FromString(g_base_info_get_namespace(self->info));
 }
@@ -147,7 +149,7 @@ static PyMethodDef _PyGIBaseInfo_methods[] = {
 };
 
 PyObject *
-pyg_info_new(GIBaseInfo *info)
+_pygi_info_new (GIBaseInfo *info)
 {
     GIInfoType info_type;
     PyTypeObject *type;
@@ -231,33 +233,9 @@ pyg_info_new(GIBaseInfo *info)
     return (PyObject *)self;
 }
 
-gchar *
-pygi_gi_base_info_get_fullname(GIBaseInfo *info) {
-    GIBaseInfo *container_info;
-    gchar *fullname;
-
-    container_info = g_base_info_get_container(info);
-    if (container_info != NULL) {
-        fullname = g_strdup_printf("%s.%s.%s",
-                g_base_info_get_namespace(container_info),
-                g_base_info_get_name(container_info),
-                g_base_info_get_name(info));
-    } else {
-        fullname = g_strdup_printf("%s.%s",
-                g_base_info_get_namespace(info),
-                g_base_info_get_name(info));
-    }
-
-    if (fullname == NULL) {
-        PyErr_NoMemory();
-    }
-
-    return fullname;
-}
-
 
 /* CallableInfo */
-PYGIINFO_DEFINE_TYPE("CallableInfo", GICallableInfo, PyGIBaseInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("CallableInfo", GICallableInfo, PyGIBaseInfo_Type);
 
 static PyMethodDef _PyGICallableInfo_methods[] = {
     { NULL, NULL, 0 }
@@ -265,10 +243,10 @@ static PyMethodDef _PyGICallableInfo_methods[] = {
 
 
 /* FunctionInfo */
-PYGIINFO_DEFINE_TYPE("FunctionInfo", GIFunctionInfo, PyGICallableInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("FunctionInfo", GIFunctionInfo, PyGICallableInfo_Type);
 
 static PyObject *
-_wrap_g_function_info_is_constructor(PyGIBaseInfo *self)
+_wrap_g_function_info_is_constructor (PyGIBaseInfo *self)
 {
     GIFunctionInfoFlags flags;
     gboolean is_constructor;
@@ -280,7 +258,7 @@ _wrap_g_function_info_is_constructor(PyGIBaseInfo *self)
 }
 
 static PyObject *
-_wrap_g_function_info_is_method(PyGIBaseInfo *self)
+_wrap_g_function_info_is_method (PyGIBaseInfo *self)
 {
     GIFunctionInfoFlags flags;
     gboolean is_method;
@@ -291,56 +269,9 @@ _wrap_g_function_info_is_method(PyGIBaseInfo *self)
     return PyBool_FromLong(is_method);
 }
 
-static
-GArray *
-pygi_g_array_from_array(gpointer array, GITypeInfo *type_info, GArgument *args[])
-{
-    /* Create a GArray. */
-    GITypeInfo *item_type_info;
-    gboolean is_zero_terminated;
-    GITypeTag item_type_tag;
-    gsize item_size;
-    gssize length;
-    GArray *g_array;
-
-    is_zero_terminated = g_type_info_is_zero_terminated(type_info);
-    item_type_info = g_type_info_get_param_type(type_info, 0);
-    g_assert(item_type_info != NULL);
-
-    item_type_tag = g_type_info_get_tag(item_type_info);
-    item_size = pygi_gi_type_tag_get_size(item_type_tag);
-
-    g_base_info_unref((GIBaseInfo *)item_type_info);
-
-    if (is_zero_terminated) {
-        length = g_strv_length(array);
-    } else {
-        length = g_type_info_get_array_fixed_size(type_info);
-        if (length < 0) {
-            gint length_arg_pos;
-
-            length_arg_pos = g_type_info_get_array_length(type_info);
-            g_assert(length_arg_pos >= 0);
-
-            /* FIXME: Take into account the type of the argument. */
-            length = args[length_arg_pos]->v_int;
-        }
-    }
-
-    g_array = g_array_new(is_zero_terminated, FALSE, item_size);
-    if (g_array == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    g_array->data = array;
-    g_array->len = length;
-
-    return g_array;
-}
-
 static PyObject *
-_wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
+_wrap_g_function_info_invoke (PyGIBaseInfo *self,
+                              PyObject     *py_args)
 {
     gboolean is_method;
     gboolean is_constructor;
@@ -476,12 +407,11 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
 
         if (n_py_args != n_py_args_expected) {
             gchar *fullname;
-            fullname = pygi_gi_base_info_get_fullname(self->info);
+            fullname = _pygi_g_base_info_get_fullname(self->info);
             if (fullname != NULL) {
                 PyErr_Format(PyExc_TypeError,
                     "%s() takes exactly %zd argument(s) (%zd given)",
                     fullname, n_py_args_expected, n_py_args);
-                g_free(fullname);
             }
             goto return_;
         }
@@ -501,16 +431,16 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
 
             /* AFAIK, only registered types can have constructors or methods,
              * so the cast should be safe. */
-            retval = pygi_gi_registered_type_info_check_py_object(
-                    (GIRegisteredTypeInfo *)container_info, py_arg, is_method);
+            retval = _pygi_g_registered_type_info_check_object(
+                    (GIRegisteredTypeInfo *)container_info, is_method, py_arg);
 
             if (retval < 0) {
                 goto return_;
             } else if (!retval) {
                 gchar *fullname;
-                fullname = pygi_gi_base_info_get_fullname(self->info);
+                fullname = _pygi_g_base_info_get_fullname(self->info);
                 if (fullname != NULL) {
-                    PyErr_PREFIX_FROM_FORMAT("%s() argument %zd: ", fullname, py_args_pos);
+                    _PyGI_ERROR_PREFIX("%s() argument %zd: ", fullname, py_args_pos);
                     g_free(fullname);
                 }
                 goto return_;
@@ -536,17 +466,17 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
 
             may_be_null = g_arg_info_may_be_null(arg_infos[i]);
 
-            retval = pygi_gi_type_info_check_py_object(arg_type_infos[i],
+            retval = _pygi_g_type_info_check_object(arg_type_infos[i],
                     may_be_null, py_arg);
 
             if (retval < 0) {
                 goto return_;
             } else if (!retval) {
                 gchar *fullname;
-                fullname = pygi_gi_base_info_get_fullname(self->info);
+                fullname = _pygi_g_base_info_get_fullname(self->info);
                 if (fullname != NULL) {
-                    PyErr_PREFIX_FROM_FORMAT("%s() argument %zd: ",
-                        pygi_gi_base_info_get_fullname(self->info),
+                    _PyGI_ERROR_PREFIX("%s() argument %zd: ",
+                        _pygi_g_base_info_get_fullname(self->info),
                         py_args_pos);
                     g_free(fullname);
                 }
@@ -633,7 +563,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
                 case GI_INFO_TYPE_STRUCT:
                 {
                     gsize size;
-                    in_args[0].v_pointer = pygi_py_object_get_buffer(py_arg, &size);
+                    in_args[0].v_pointer = _pygi_object_get_buffer(py_arg, &size);
                     break;
                 }
                 case GI_INFO_TYPE_OBJECT:
@@ -666,7 +596,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
                 g_assert(py_args_pos < n_py_args);
                 py_arg = PyTuple_GET_ITEM(py_args, py_args_pos);
 
-                *args[i] = pygi_g_argument_from_py_object(py_arg, arg_type_infos[i],
+                *args[i] = _pygi_argument_from_object(py_arg, arg_type_infos[i],
                         transfer);
 
                 if (PyErr_Occurred()) {
@@ -784,10 +714,11 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
 
             g_assert(error != NULL);
 
-            fullname = pygi_gi_base_info_get_fullname(self->info);
+            fullname = _pygi_g_base_info_get_fullname(self->info);
             if (fullname != NULL) {
                 PyErr_Format(PyExc_RuntimeError, "Error invoking %s(): %s",
                     fullname, error->message);
+                g_free(fullname);
             }
 
             g_error_free(error);
@@ -810,7 +741,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
         if (return_type_tag == GI_TYPE_TAG_ARRAY) {
             GArray *array;
 
-            array = pygi_g_array_from_array(return_arg.v_pointer, return_type_info, args);
+            array = _pygi_argument_to_array(&return_arg, args, return_type_info);
             if (array == NULL) {
                 /* TODO */
                 goto return_;
@@ -819,7 +750,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
             return_arg.v_pointer = array;
         }
 
-        return_value = pygi_g_argument_to_py_object(&return_arg, return_type_info);
+        return_value = _pygi_argument_to_object(&return_arg, return_type_info);
         if (return_value == NULL) {
             /* TODO */
             goto return_;
@@ -827,7 +758,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
 
         transfer = g_callable_info_get_caller_owns((GICallableInfo *)self->info);
 
-        pygi_g_argument_release(&return_arg, return_type_info, transfer,
+        _pygi_argument_release(&return_arg, return_type_info, transfer,
             GI_DIRECTION_OUT);
 
         if (return_type_tag == GI_TYPE_TAG_ARRAY
@@ -890,7 +821,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
                     && (direction != GI_DIRECTION_IN || transfer == GI_TRANSFER_NOTHING)) {
                 GArray *array;
 
-                array = pygi_g_array_from_array(args[i]->v_pointer, arg_type_infos[i], args);
+                array = _pygi_argument_to_array(args[i], args, arg_type_infos[i]);
                 if (array == NULL) {
                     /* TODO */
                     goto return_;
@@ -903,7 +834,7 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
                 /* Convert the argument. */
                 PyObject *obj;
 
-                obj = pygi_g_argument_to_py_object(args[i], arg_type_infos[i]);
+                obj = _pygi_argument_to_object(args[i], arg_type_infos[i]);
                 if (obj == NULL) {
                     /* TODO */
                     goto return_;
@@ -926,21 +857,21 @@ _wrap_g_function_info_invoke(PyGIBaseInfo *self, PyObject *py_args)
             if (direction == GI_DIRECTION_INOUT) {
                 if (transfer != GI_TRANSFER_EVERYTHING) {
                     g_assert(containers_pos < n_containers);
-                    pygi_g_argument_release(&containers[containers_pos], arg_type_infos[i],
+                    _pygi_argument_release(&containers[containers_pos], arg_type_infos[i],
                         GI_TRANSFER_NOTHING, GI_DIRECTION_IN);
                     containers_pos += 1;
                 }
                 if (transfer != GI_TRANSFER_NOTHING) {
-                    pygi_g_argument_release(args[i], arg_type_infos[i], transfer,
+                    _pygi_argument_release(args[i], arg_type_infos[i], transfer,
                         GI_DIRECTION_OUT);
                 }
             } else if (direction == GI_DIRECTION_IN && transfer == GI_TRANSFER_CONTAINER) {
                 g_assert(containers_pos < n_containers);
-                pygi_g_argument_release(&containers[containers_pos], arg_type_infos[i],
+                _pygi_argument_release(&containers[containers_pos], arg_type_infos[i],
                     GI_TRANSFER_NOTHING, direction);
                 containers_pos += 1;
             } else {
-                pygi_g_argument_release(args[i], arg_type_infos[i], transfer, direction);
+                _pygi_argument_release(args[i], arg_type_infos[i], transfer, direction);
             }
 
             if (type_tag == GI_TYPE_TAG_ARRAY
@@ -978,10 +909,10 @@ static PyMethodDef _PyGIFunctionInfo_methods[] = {
 
 
 /* RegisteredTypeInfo */
-PYGIINFO_DEFINE_TYPE("RegisteredTypeInfo", GIRegisteredTypeInfo, PyGIBaseInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("RegisteredTypeInfo", GIRegisteredTypeInfo, PyGIBaseInfo_Type);
 
 static PyObject *
-_wrap_g_registered_type_info_get_g_type(PyGIBaseInfo *self)
+_wrap_g_registered_type_info_get_g_type (PyGIBaseInfo *self)
 {
     GType type;
 
@@ -997,10 +928,10 @@ static PyMethodDef _PyGIRegisteredTypeInfo_methods[] = {
 
 
 /* GIStructInfo */
-PYGIINFO_DEFINE_TYPE("StructInfo", GIStructInfo, PyGIRegisteredTypeInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("StructInfo", GIStructInfo, PyGIRegisteredTypeInfo_Type);
 
 static PyObject *
-_wrap_g_struct_info_get_fields(PyGIBaseInfo *self)
+_wrap_g_struct_info_get_fields (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1020,7 +951,7 @@ _wrap_g_struct_info_get_fields(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_struct_info_get_field((GIStructInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1036,7 +967,7 @@ _wrap_g_struct_info_get_fields(PyGIBaseInfo *self)
 }
 
 static PyObject *
-_wrap_g_struct_info_get_methods(PyGIBaseInfo *self)
+_wrap_g_struct_info_get_methods (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1056,7 +987,7 @@ _wrap_g_struct_info_get_methods(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_struct_info_get_method((GIStructInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1072,7 +1003,7 @@ _wrap_g_struct_info_get_methods(PyGIBaseInfo *self)
 }
 
 static PyObject *
-_wrap_g_struct_info_new_buffer(PyGIBaseInfo *self)
+_wrap_g_struct_info_new_buffer (PyGIBaseInfo *self)
 {
     gsize size = g_struct_info_get_size ((GIStructInfo*)self->info);
     PyObject *buffer = PyBuffer_New (size);
@@ -1089,10 +1020,10 @@ static PyMethodDef _PyGIStructInfo_methods[] = {
 
 
 /* EnumInfo */
-PYGIINFO_DEFINE_TYPE("EnumInfo", GIEnumInfo, PyGIRegisteredTypeInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("EnumInfo", GIEnumInfo, PyGIRegisteredTypeInfo_Type);
 
 static PyObject *
-_wrap_g_enum_info_get_values(PyGIBaseInfo *self)
+_wrap_g_enum_info_get_values (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1112,7 +1043,7 @@ _wrap_g_enum_info_get_values(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_enum_info_get_value((GIEnumInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1134,10 +1065,10 @@ static PyMethodDef _PyGIEnumInfo_methods[] = {
 
 
 /* ObjectInfo */
-PYGIINFO_DEFINE_TYPE("ObjectInfo", GIObjectInfo, PyGIRegisteredTypeInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("ObjectInfo", GIObjectInfo, PyGIRegisteredTypeInfo_Type);
 
 static PyObject *
-_wrap_g_object_info_get_parent(PyGIBaseInfo *self)
+_wrap_g_object_info_get_parent (PyGIBaseInfo *self)
 {
     GIBaseInfo *info;
     PyObject *py_info;
@@ -1148,7 +1079,7 @@ _wrap_g_object_info_get_parent(PyGIBaseInfo *self)
         Py_RETURN_NONE;
     }
 
-    py_info = pyg_info_new(info);
+    py_info = _pygi_info_new(info);
 
     g_base_info_unref(info);
 
@@ -1156,7 +1087,7 @@ _wrap_g_object_info_get_parent(PyGIBaseInfo *self)
 }
 
 static PyObject *
-_wrap_g_object_info_get_methods(PyGIBaseInfo *self)
+_wrap_g_object_info_get_methods (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1176,7 +1107,7 @@ _wrap_g_object_info_get_methods(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_object_info_get_method((GIObjectInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1192,7 +1123,7 @@ _wrap_g_object_info_get_methods(PyGIBaseInfo *self)
 }
 
 static PyObject *
-_wrap_g_object_info_get_fields(PyGIBaseInfo *self)
+_wrap_g_object_info_get_fields (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1212,7 +1143,7 @@ _wrap_g_object_info_get_fields(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_object_info_get_field((GIObjectInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1228,7 +1159,7 @@ _wrap_g_object_info_get_fields(PyGIBaseInfo *self)
 }
 
 static PyObject *
-_wrap_g_object_info_get_interfaces(PyGIBaseInfo *self)
+_wrap_g_object_info_get_interfaces (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1248,7 +1179,7 @@ _wrap_g_object_info_get_interfaces(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_object_info_get_interface((GIObjectInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1273,10 +1204,10 @@ static PyMethodDef _PyGIObjectInfo_methods[] = {
 
 
 /* GIInterfaceInfo */
-PYGIINFO_DEFINE_TYPE("InterfaceInfo", GIInterfaceInfo, PyGIRegisteredTypeInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("InterfaceInfo", GIInterfaceInfo, PyGIRegisteredTypeInfo_Type);
 
 static PyObject *
-_wrap_g_interface_info_get_methods(PyGIBaseInfo *self)
+_wrap_g_interface_info_get_methods (PyGIBaseInfo *self)
 {
     gssize n_infos;
     PyObject *infos;
@@ -1296,7 +1227,7 @@ _wrap_g_interface_info_get_methods(PyGIBaseInfo *self)
         info = (GIBaseInfo *)g_interface_info_get_method((GIInterfaceInfo *)self->info, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -1312,7 +1243,8 @@ _wrap_g_interface_info_get_methods(PyGIBaseInfo *self)
 }
 
 static void
-initialize_interface (GTypeInterface *iface, PyTypeObject *pytype)
+initialize_interface (GTypeInterface *iface,
+                      PyTypeObject   *pytype)
 {
     // TODO: Implement this when g-i adds supports for vfunc offsets:
     // http://bugzilla.gnome.org/show_bug.cgi?id=560281
@@ -1351,7 +1283,7 @@ initialize_interface (GTypeInterface *iface, PyTypeObject *pytype)
 }
 
 static PyObject *
-_wrap_g_interface_info_register(PyGIBaseInfo *self)
+_wrap_g_interface_info_register (PyGIBaseInfo *self)
 {
     GType gtype;
     GInterfaceInfo *info_struct = g_new0(GInterfaceInfo, 1);
@@ -1375,10 +1307,10 @@ static PyMethodDef _PyGIInterfaceInfo_methods[] = {
 
 
 /* GIValueInfo */
-PYGIINFO_DEFINE_TYPE("ValueInfo", GIValueInfo, PyGIBaseInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("ValueInfo", GIValueInfo, PyGIBaseInfo_Type);
 
 static PyObject *
-_wrap_g_value_info_get_value(PyGIBaseInfo *self)
+_wrap_g_value_info_get_value (PyGIBaseInfo *self)
 {
     glong value;
 
@@ -1395,10 +1327,11 @@ static PyMethodDef _PyGIValueInfo_methods[] = {
 
 
 /* GIFieldInfo */
-PYGIINFO_DEFINE_TYPE("FieldInfo", GIFieldInfo, PyGIBaseInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("FieldInfo", GIFieldInfo, PyGIBaseInfo_Type);
 
 static PyObject *
-_wrap_g_field_info_get_value(PyGIBaseInfo *self, PyObject *args)
+_wrap_g_field_info_get_value (PyGIBaseInfo *self,
+                              PyObject     *args)
 {
     PyObject *retval;
     GIBaseInfo *container_info;
@@ -1422,7 +1355,7 @@ _wrap_g_field_info_get_value(PyGIBaseInfo *self, PyObject *args)
     if (container_info_type == GI_INFO_TYPE_STRUCT
             || container_info_type == GI_INFO_TYPE_BOXED) {
         gsize size;
-        buffer = pygi_py_object_get_buffer(object, &size);
+        buffer = _pygi_object_get_buffer(object, &size);
         if (buffer == NULL) {
             goto return_;
         }
@@ -1485,7 +1418,7 @@ _wrap_g_field_info_get_value(PyGIBaseInfo *self, PyObject *args)
     }
 
 g_argument_to_py_object:
-    retval = pygi_g_argument_to_py_object(&value, field_type_info);
+    retval = _pygi_argument_to_object(&value, field_type_info);
 
 return_:
     g_base_info_unref((GIBaseInfo *)field_type_info);
@@ -1495,7 +1428,8 @@ return_:
 }
 
 static PyObject *
-_wrap_g_field_info_set_value(PyGIBaseInfo *self, PyObject *args)
+_wrap_g_field_info_set_value (PyGIBaseInfo *self,
+                              PyObject     *args)
 {
     PyObject *object;
     PyObject *py_value;
@@ -1521,7 +1455,7 @@ _wrap_g_field_info_set_value(PyGIBaseInfo *self, PyObject *args)
     if (container_info_type == GI_INFO_TYPE_STRUCT
             || container_info_type == GI_INFO_TYPE_BOXED) {
         gsize size;
-        buffer = pygi_py_object_get_buffer(object, &size);
+        buffer = _pygi_object_get_buffer(object, &size);
         if (buffer == NULL) {
             goto return_;
         }
@@ -1530,19 +1464,19 @@ _wrap_g_field_info_set_value(PyGIBaseInfo *self, PyObject *args)
     }
 
     /* Check the value. */
-    check_retval = pygi_gi_type_info_check_py_object(field_type_info, TRUE, py_value);
+    check_retval = _pygi_g_type_info_check_object(field_type_info, TRUE, py_value);
 
     if (check_retval < 0) {
         goto return_;
     }
 
     if (!check_retval) {
-        PyErr_PREFIX_FROM_FORMAT("%s.set_value() argument 1: ",
+        _PyGI_ERROR_PREFIX("%s.set_value() argument 1: ",
                 g_base_info_get_namespace(self->info));
         goto return_;
     }
 
-    value = pygi_g_argument_from_py_object(py_value, field_type_info, GI_TRANSFER_NOTHING);
+    value = _pygi_argument_from_object(py_value, field_type_info, GI_TRANSFER_NOTHING);
 
     /* A few types are not handled by g_field_info_set_field, so do it here. */
     if (!g_type_info_is_pointer(field_type_info)
@@ -1607,35 +1541,60 @@ static PyMethodDef _PyGIFieldInfo_methods[] = {
 
 
 /* GIUnresolvedInfo */
-PYGIINFO_DEFINE_TYPE("UnresolvedInfo", GIUnresolvedInfo, PyGIBaseInfo_Type);
+_PyGI_DEFINE_INFO_TYPE("UnresolvedInfo", GIUnresolvedInfo, PyGIBaseInfo_Type);
 
 static PyMethodDef _PyGIUnresolvedInfo_methods[] = {
     { NULL, NULL, 0 }
 };
 
+/* Private */
+
+gchar *
+_pygi_g_base_info_get_fullname (GIBaseInfo *info)
+{
+    GIBaseInfo *container_info;
+    gchar *fullname;
+
+    container_info = g_base_info_get_container(info);
+    if (container_info != NULL) {
+        fullname = g_strdup_printf("%s.%s.%s",
+                g_base_info_get_namespace(container_info),
+                g_base_info_get_name(container_info),
+                g_base_info_get_name(info));
+    } else {
+        fullname = g_strdup_printf("%s.%s",
+                g_base_info_get_namespace(info),
+                g_base_info_get_name(info));
+    }
+
+    if (fullname == NULL) {
+        PyErr_NoMemory();
+    }
+
+    return fullname;
+}
+
 void
-pygi_info_register_types(PyObject *m)
+_pygi_info_register_types (PyObject *m)
 {
-#define REGISTER_TYPE(m, type, name) \
+#define _PyGI_REGISTER_TYPE(m, type, name) \
     type.ob_type = &PyType_Type; \
     if (PyType_Ready(&type)) \
         return; \
     if (PyModule_AddObject(m, name, (PyObject *)&type)) \
         return
 
-    REGISTER_TYPE(m, PyGIBaseInfo_Type, "BaseInfo");
-    REGISTER_TYPE(m, PyGIUnresolvedInfo_Type, "UnresolvedInfo");
-    REGISTER_TYPE(m, PyGICallableInfo_Type, "CallableInfo");
-    REGISTER_TYPE(m, PyGIFunctionInfo_Type, "FunctionInfo");
-    REGISTER_TYPE(m, PyGIRegisteredTypeInfo_Type, "RegisteredTypeInfo");
-    REGISTER_TYPE(m, PyGIStructInfo_Type, "StructInfo");
-    REGISTER_TYPE(m, PyGIEnumInfo_Type, "EnumInfo");
-    REGISTER_TYPE(m, PyGIObjectInfo_Type, "ObjectInfo");
-    REGISTER_TYPE(m, PyGIInterfaceInfo_Type, "InterfaceInfo");
-    REGISTER_TYPE(m, PyGIValueInfo_Type, "ValueInfo");
-    REGISTER_TYPE(m, PyGIFieldInfo_Type, "FieldInfo");
-
-#undef REGISTER_TYPE
+    _PyGI_REGISTER_TYPE(m, PyGIBaseInfo_Type, "BaseInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIUnresolvedInfo_Type, "UnresolvedInfo");
+    _PyGI_REGISTER_TYPE(m, PyGICallableInfo_Type, "CallableInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIFunctionInfo_Type, "FunctionInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIRegisteredTypeInfo_Type, "RegisteredTypeInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIStructInfo_Type, "StructInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIEnumInfo_Type, "EnumInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIObjectInfo_Type, "ObjectInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIInterfaceInfo_Type, "InterfaceInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIValueInfo_Type, "ValueInfo");
+    _PyGI_REGISTER_TYPE(m, PyGIFieldInfo_Type, "FieldInfo");
+
+#undef _PyGI_REGISTER_TYPE
 }
-
-#undef PYGIINFO_DEFINE_TYPE
diff --git a/gi/pygi-info.h b/gi/pygi-info.h
index c7f2e3c..c24fa11 100644
--- a/gi/pygi-info.h
+++ b/gi/pygi-info.h
@@ -28,11 +28,14 @@
 
 G_BEGIN_DECLS
 
-PyObject* pyg_info_new(GIBaseInfo *info);
 
-gchar * pygi_gi_base_info_get_fullname(GIBaseInfo *info);
+/* Private */
 
-void pygi_info_register_types(PyObject *m);
+PyObject* _pygi_info_new (GIBaseInfo *info);
+
+gchar* _pygi_g_base_info_get_fullname (GIBaseInfo *info);
+
+void _pygi_info_register_types (PyObject *m);
 
 G_END_DECLS
 
diff --git a/gi/pygi-private.h b/gi/pygi-private.h
index e099687..53cf354 100644
--- a/gi/pygi-private.h
+++ b/gi/pygi-private.h
@@ -4,8 +4,12 @@
 #ifndef __PYGI_PRIVATE_H__
 #define __PYGI_PRIVATE_H__
 
+#ifdef __PYGI_H__
+#   error "Import pygi.h or pygi-private.h, but not both"
+#endif
+
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+#   include <config.h>
 #endif
 
 #include <Python.h>
@@ -16,6 +20,11 @@
 #include "pygi-info.h"
 #include "pygi-argument.h"
 
+G_BEGIN_DECLS
+
+
+/* Python types */
+
 extern PyTypeObject PyGIRepository_Type;
 
 extern PyTypeObject PyGIBaseInfo_Type;
@@ -30,7 +39,26 @@ extern PyTypeObject PyGIValueInfo_Type;
 extern PyTypeObject PyGIFieldInfo_Type;
 extern PyTypeObject PyGIUnresolvedInfo_Type;
 
-#define PyErr_PREFIX_FROM_FORMAT(format, ...) G_STMT_START { \
+
+/* Errors */
+
+extern PyObject *PyGIRepositoryError;
+
+
+/* Functions (defined in gimodule.c) */
+
+PyObject* pygi_type_find_by_name (const char *namespace_,
+                                  const char *name);
+PyObject* pygi_type_find_by_info (GIBaseInfo *info);
+
+
+/* Private */
+
+gpointer _pygi_object_get_buffer (PyObject *object,
+                                  gsize    *size);
+
+
+#define _PyGI_ERROR_PREFIX(format, ...) G_STMT_START { \
     PyObject *py_error_prefix; \
     py_error_prefix = PyString_FromFormat(format, ## __VA_ARGS__); \
     if (py_error_prefix != NULL) { \
@@ -46,26 +74,20 @@ extern PyTypeObject PyGIUnresolvedInfo_Type;
     } \
 } G_STMT_END
 
-PyObject * pygi_py_type_find_by_name(const char *namespace_,
-                                     const char *name);
-
-#define pygi_py_type_find_by_gi_info(info) \
-    pygi_py_type_find_by_name(g_base_info_get_namespace(info), g_base_info_get_name(info))
 
-gpointer pygi_py_object_get_buffer(PyObject *object, gsize *size);
+/* GArray */
 
 #if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 22
-#define g_array_get_element_size(a) \
-    *(guint *)((gpointer)(a) + sizeof(guint8 *) + sizeof(guint) * 2)
+#   define g_array_get_element_size(a) \
+        *(guint *)((gpointer)(a) + sizeof(guint8 *) + sizeof(guint) * 2)
 #endif
 
-
-/* GArray */
-
 /* Redefine g_array_index because we want it to return the i-th element, casted
  * to the type t, of the array a, and not the i-th element of the array a casted to the type t. */
 #define _g_array_index(a,t,i) \
     *(t *)((a)->data + g_array_get_element_size(a) * (i))
 
 
+G_END_DECLS
+
 #endif /* __PYGI_PRIVATE_H__ */
diff --git a/gi/pygi-repository.c b/gi/pygi-repository.c
index 85c1fea..f84fc7b 100644
--- a/gi/pygi-repository.c
+++ b/gi/pygi-repository.c
@@ -60,7 +60,7 @@ PyTypeObject PyGIRepository_Type = {
 };
 
 static PyObject *
-_wrap_g_irepository_get_default(PyObject *self)
+_wrap_g_irepository_get_default (PyObject *self)
 {
     static PyGIRepository *repository = NULL;
 
@@ -78,7 +78,9 @@ _wrap_g_irepository_get_default(PyObject *self)
 }
 
 static PyObject *
-_wrap_g_irepository_require(PyGIRepository *self, PyObject *args, PyObject *kwargs)
+_wrap_g_irepository_require (PyGIRepository *self,
+                             PyObject       *args,
+                             PyObject       *kwargs)
 {
     static char *kwlist[] = { "namespace", "version", "lazy", NULL };
 
@@ -110,7 +112,9 @@ _wrap_g_irepository_require(PyGIRepository *self, PyObject *args, PyObject *kwar
 }
 
 static PyObject *
-_wrap_g_irepository_find_by_name(PyGIRepository *self, PyObject *args, PyObject *kwargs)
+_wrap_g_irepository_find_by_name (PyGIRepository *self,
+                                  PyObject       *args,
+                                  PyObject       *kwargs)
 {
     static char *kwlist[] = { "namespace", "name", NULL };
 
@@ -129,7 +133,7 @@ _wrap_g_irepository_find_by_name(PyGIRepository *self, PyObject *args, PyObject
         Py_RETURN_NONE;
     }
 
-    py_info = pyg_info_new(info);
+    py_info = _pygi_info_new(info);
 
     g_base_info_unref(info);
 
@@ -137,7 +141,9 @@ _wrap_g_irepository_find_by_name(PyGIRepository *self, PyObject *args, PyObject
 }
 
 static PyObject *
-_wrap_g_irepository_get_infos(PyGIRepository *self, PyObject *args, PyObject *kwargs)
+_wrap_g_irepository_get_infos (PyGIRepository *self,
+                               PyObject       *args,
+                               PyObject       *kwargs)
 {
     static char *kwlist[] = { "namespace", NULL };
 
@@ -166,7 +172,7 @@ _wrap_g_irepository_get_infos(PyGIRepository *self, PyObject *args, PyObject *kw
         info = g_irepository_get_info(self->repository, namespace_, i);
         g_assert(info != NULL);
 
-        py_info = pyg_info_new(info);
+        py_info = _pygi_info_new(info);
 
         g_base_info_unref(info);
 
@@ -182,7 +188,9 @@ _wrap_g_irepository_get_infos(PyGIRepository *self, PyObject *args, PyObject *kw
 }
 
 static PyObject *
-_wrap_g_irepository_get_typelib_path(PyGIRepository *self, PyObject *args, PyObject *kwargs)
+_wrap_g_irepository_get_typelib_path (PyGIRepository *self,
+                                      PyObject       *args,
+                                      PyObject       *kwargs)
 {
     static char *kwlist[] = { "namespace", NULL };
     const char *namespace_;
@@ -212,7 +220,7 @@ static PyMethodDef _PyGIRepository_methods[] = {
 };
 
 void
-pygi_repository_register_types(PyObject *m)
+_pygi_repository_register_types (PyObject *m)
 {
     PyGIRepository_Type.ob_type = &PyType_Type;
     if (PyType_Ready(&PyGIRepository_Type)) {
diff --git a/gi/pygi-repository.h b/gi/pygi-repository.h
index 573ecf3..e0376a3 100644
--- a/gi/pygi-repository.h
+++ b/gi/pygi-repository.h
@@ -26,7 +26,9 @@
 
 G_BEGIN_DECLS
 
-void pygi_repository_register_types(PyObject *m);
+/* Private */
+
+void _pygi_repository_register_types (PyObject *m);
 
 G_END_DECLS
 
diff --git a/gi/pygi.h b/gi/pygi.h
index ec6d33e..f7e6931 100644
--- a/gi/pygi.h
+++ b/gi/pygi.h
@@ -39,6 +39,13 @@ typedef struct {
     PyObject *inst_weakreflist;
 } PyGIBaseInfo;
 
+
+#ifndef __PYGI_PRIVATE_H__
+
+/* TODO: Public API goes here. */
+
+#endif
+
 G_END_DECLS
 
 #endif /* __PYGI_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]