[pygobject/gsoc2009: 115/160] Change the naming convention
- From: Simon van der Linden <svdlinden src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [pygobject/gsoc2009: 115/160] Change the naming convention
- Date: Fri, 14 Aug 2009 21:33:24 +0000 (UTC)
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]