From ea7be32cae9b599bafa3dbe97236a3a16470a3e5 Mon Sep 17 00:00:00 2001 From: Nicholas Piper Date: Sun, 7 May 2006 17:55:35 +0000 Subject: Track, Database and Playlist support for the nicer API. add_song.py uses this now. git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1258 f01d2545-417e-4e96-918e-98f8d0dbbcb6 --- bindings/python/gpod.i | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'bindings/python/gpod.i') diff --git a/bindings/python/gpod.i b/bindings/python/gpod.i index 39de9c1..1d5f231 100644 --- a/bindings/python/gpod.i +++ b/bindings/python/gpod.i @@ -94,6 +94,48 @@ PyObject* sw_get_playlists(Itdb_iTunesDB *itdb) { } 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 @@ -101,6 +143,7 @@ PyObject* sw_get_playlists(Itdb_iTunesDB *itdb) { # them utf8 encoded Strings. typedef char gchar; + %typemap(in) guint8 { unsigned long ival; ival = PyInt_AsUnsignedLongMask($input); @@ -221,4 +264,7 @@ PyObject* sw_get_rule(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 "../../src/itdb.h" -- cgit