summaryrefslogtreecommitdiffstats
path: root/bindings/python/gpod.i.in
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/python/gpod.i.in')
-rw-r--r--bindings/python/gpod.i.in283
1 files changed, 283 insertions, 0 deletions
diff --git a/bindings/python/gpod.i.in b/bindings/python/gpod.i.in
new file mode 100644
index 0000000..90de899
--- /dev/null
+++ b/bindings/python/gpod.i.in
@@ -0,0 +1,283 @@
+/* File : gpod.i.in */
+
+/*
+ Copyright (C) 2005 Nick Piper <nick-gtkpod at nickpiper co uk>
+ Part of the gtkpod project.
+
+ URL: http://www.gtkpod.org/
+ URL: http://gtkpod.sourceforge.net/
+
+ The code contained in this file is free software; you can redistribute
+ it and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either version
+ 2.1 of the License, or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this code; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ $Id$
+
+Please send any fixes, improvements or suggestions to
+<nick-gtkpod at nickpiper co uk>.
+
+*/
+
+%module gpod
+%{
+#include "db-artwork-debug.h"
+#include "db-artwork-parser.h"
+#include "db-image-parser.h"
+#include "db-itunes-parser.h"
+#include "db-parse-context.h"
+#include "itdb.h"
+#include "itdb_private.h"
+
+PyObject* sw_get_tracks(Itdb_iTunesDB *itdb) {
+ PyObject *list;
+ gint i;
+ GList *l;
+ list = PyList_New(g_list_length(itdb->tracks));
+ for (l = itdb->tracks, i = 0; l; l = l->next, ++i) {
+ PyList_SET_ITEM(list, i, SWIG_NewPointerObj((void*)(l->data), SWIGTYPE_p__Itdb_Track, 0));
+ }
+ return list;
+ }
+
+PyObject* sw_get_track(GList *list, gint index) {
+ GList *position;
+ if ( (index >= g_list_length(list)) || index < 0 ) {
+ PyErr_SetString(PyExc_IndexError, "Value out of range");
+ return NULL;
+ }
+ position = g_list_nth(list, index);
+ return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__Itdb_Track, 0);
+ }
+
+PyObject* sw_get_rule(GList *list, gint index) {
+ GList *position;
+ if ( (index >= g_list_length(list)) || index < 0 ) {
+ PyErr_SetString(PyExc_IndexError, "Value out of range");
+ return NULL;
+ }
+ position = g_list_nth(list, index);
+ return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__SPLRule, 0);
+ }
+
+PyObject* sw_get_playlist(GList *list, gint index) {
+ GList *position;
+ if ( (index >= g_list_length(list)) || index < 0 ) {
+ PyErr_SetString(PyExc_IndexError, "Value out of range");
+ return NULL;
+ }
+ position = g_list_nth(list, index);
+ return SWIG_NewPointerObj((void*)(position->data), SWIGTYPE_p__Itdb_Playlist, 0);
+ }
+
+PyObject* sw_get_list_len(GList *list) {
+ return PyInt_FromLong(g_list_length(list));
+ }
+
+PyObject* sw_get_playlist_tracks(Itdb_Playlist *pl) {
+ PyObject *list;
+ gint i;
+ GList *l;
+ list = PyList_New(g_list_length(pl->members));
+ for (l = pl->members, i = 0; l; l = l->next, ++i) {
+ PyList_SET_ITEM(list, i, SWIG_NewPointerObj((void*)(l->data), SWIGTYPE_p__Itdb_Track, 0));
+ }
+ return list;
+ }
+
+PyObject* sw_get_playlists(Itdb_iTunesDB *itdb) {
+ PyObject *list;
+ gint i;
+ GList *l;
+ list = PyList_New(g_list_length(itdb->playlists));
+ for (l = itdb->playlists, i = 0; l; l = l->next, ++i) {
+ PyList_SET_ITEM(list, i, SWIG_NewPointerObj((void*)(l->data), SWIGTYPE_p__Itdb_Playlist, 0));
+ }
+ return list;
+ }
+
+ void sw__track_extra_destroy (PyObject *data) {
+ Py_XDECREF(data);
+ }
+
+ PyObject *sw__track_extra_duplicate (PyObject *data) {
+ if (data == Py_None) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ } else {
+ return PyDict_Copy(data);
+ }
+ }
+
+ PyObject *sw_set_track_userdata(Itdb_Track *track, PyObject *data) {
+ Py_INCREF(data);
+ if ((PyDict_Check(data)) || (data == Py_None)) {
+ if (track->userdata) {
+ Py_DECREF((PyObject *)track->userdata);
+ }
+ track->userdata = (gpointer) data;
+ track->userdata_duplicate = (ItdbUserDataDuplicateFunc)sw__track_extra_duplicate;
+ track->userdata_destroy = (ItdbUserDataDestroyFunc)sw__track_extra_destroy;
+ Py_INCREF(Py_None);
+ return Py_None;
+ } else {
+ PyErr_SetString(PyExc_TypeError, "userdata must be a Dictionary");
+ return NULL;
+ }
+ }
+
+ PyObject* sw_get_track_userdata(Itdb_Track *track) {
+ if (track->userdata) {
+ Py_INCREF((PyObject *)track->userdata);
+ return (PyObject *)track->userdata;
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ }
+
+
+%}
+
+# be nicer to decode these utf8 strings into Unicode objects in the C
+# layer. Here we are leaving it to the Python side, and just giving
+# them utf8 encoded Strings.
+typedef char gchar;
+
+
+%typemap(in) guint8 {
+ unsigned long ival;
+ ival = PyInt_AsUnsignedLongMask($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+ if (ival > 255) {
+ PyErr_SetString(PyExc_ValueError, "$symname: Value must be between 0 and 255");
+ SWIG_fail;
+ } else {
+ $1 = (guint8) ival;
+ }
+}
+
+%typemap(in) gint8 {
+ long ival;
+ ival = PyInt_AsInt($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+ if ((ival < -128) || (ival > 127)) {
+ PyErr_SetString(PyExc_ValueError, "$symname: Value must be between -128 and 127");
+ SWIG_fail;
+ } else {
+ $1 = (gint8) ival;
+ }
+}
+
+%typemap(in) guint16 {
+ unsigned long ival;
+ ival = PyInt_AsUnsignedLongMask($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+ if (ival > 65535) {
+ PyErr_SetString(PyExc_ValueError, "$symname: Value must be between 0 and 65535");
+ SWIG_fail;
+ } else {
+ $1 = (guint16) ival;
+ }
+}
+
+%typemap(in) gint16 {
+ long ival;
+ ival = PyInt_AsLong($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+ if ((ival < -32768) || (ival > 32767)) {
+ PyErr_SetString(PyExc_ValueError, "$symname: Value must be between -32,768 and 32,767");
+ SWIG_fail;
+ } else {
+ $1 = (gint16) ival;
+ }
+}
+
+%typemap(in) guint32 {
+ unsigned long ival;
+ ival = PyInt_AsUnsignedLongMask($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+ $1 = (guint32) ival;
+}
+
+%typemap(in) gint32 {
+ long ival;
+ ival = PyInt_AsLong($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+ $1 = (gint32) ival;
+}
+
+%typemap(in) guint64 {
+ if (PyInt_CheckExact($input))
+ $1 = PyInt_AsUnsignedLongLongMask($input);
+ else
+ $1 = PyLong_AsUnsignedLongLong($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+}
+
+%typemap(in) gint64 {
+ if (PyInt_CheckExact($input))
+ $1 = PyInt_AsLong($input);
+ else
+ $1 = PyLong_AsLongLong($input);
+ if (PyErr_Occurred())
+ SWIG_fail;
+}
+
+%typemap(out) guint64 {
+ $result = PyLong_FromUnsignedLongLong($1);
+}
+
+%typemap(out) gint64 {
+ $result = PyLong_FromLongLong($1);
+}
+
+%typemap(out) guint32 {
+ $result = PyLong_FromUnsignedLong($1);
+}
+
+%typemap(out) gint32 {
+ $result = PyLong_FromLong($1);
+}
+
+%typemap(out) guint16 {
+ $result = PyLong_FromUnsignedLong($1);
+}
+
+%typemap(out) guint8 {
+ $result = PyInt_FromLong($1);
+}
+
+typedef int gboolean;
+typedef int gint;
+
+#define G_BEGIN_DECLS
+#define G_END_DECLS
+
+PyObject* sw_get_tracks(Itdb_iTunesDB *itdb);
+PyObject* sw_get_track(GList *list, gint index);
+PyObject* sw_get_rule(GList *list, gint index);
+PyObject* sw_get_playlist(GList *list, gint index);
+PyObject* sw_get_list_len(GList *list);
+PyObject* sw_get_playlists(Itdb_iTunesDB *itdb);
+PyObject* sw_get_playlist_tracks(Itdb_Playlist *pl);
+PyObject* sw_set_track_userdata(Itdb_Track *track, PyObject *data);
+PyObject* sw_get_track_userdata(Itdb_Track *track);
+
+%include "@top_srcdir@/src/itdb.h"