diff options
Diffstat (limited to 'swig')
| -rw-r--r-- | swig/Makefile.am | 10 | ||||
| -rw-r--r-- | swig/iphone.i | 63 | 
2 files changed, 54 insertions, 19 deletions
diff --git a/swig/Makefile.am b/swig/Makefile.am index d65b984..f3f9714 100644 --- a/swig/Makefile.am +++ b/swig/Makefile.am @@ -1,6 +1,6 @@ -INCLUDES = -I$(top_srcdir)/include  $(libplist_CFLAGS) -I$(oldincludedir) +INCLUDES = -I$(top_srcdir)/include  $(libplist_CFLAGS) $(SWIG_PYTHON_CPPFLAGS) -I$(oldincludedir) -BUILT_SOURCES = iphone_wrap.c +BUILT_SOURCES = iphone_wrap.cxx  SWIG_SOURCES = iphone.i  CLEANFILES =                \ @@ -8,7 +8,7 @@ CLEANFILES =                \          *.pyo               \          _iPhone.so          \          iPhone.py           \ -        iphone_wrap.c +        iphone_wrap.cxx  EXTRA_DIST =                \          __init__.py         \ @@ -21,11 +21,11 @@ iPhonedir = $(pyexecdir)/libiphone  iPhone_PYTHON = __init__.py  nodist_iPhone_PYTHON = iPhone.py  iPhone_LTLIBRARIES = _iPhone.la -nodist__iPhone_la_SOURCES = iphone_wrap.c $(SWIG_SOURCES) +nodist__iPhone_la_SOURCES = iphone_wrap.cxx $(SWIG_SOURCES)  _iPhone_la_CFLAGS = $(PYTHON_CPPFLAGS) -I$(top_srcdir)/src  _iPhone_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS)  _iPhone_la_LIBADD = $(top_builddir)/src/libiphone.la -iphone_wrap.c : $(SWIG_SOURCES) +iphone_wrap.cxx : $(SWIG_SOURCES)  	$(SWIG) $(SWIG_PYTHON_OPT) $(INCLUDES) -I$(top_srcdir)/src -o $@ $< diff --git a/swig/iphone.i b/swig/iphone.i index ba6345a..6604c63 100644 --- a/swig/iphone.i +++ b/swig/iphone.i @@ -7,6 +7,7 @@   #include <libiphone/lockdown.h>   #include <libiphone/mobilesync.h>   #include <plist/plist.h> + #include <plist/plist++.h>   #include "../src/utils.h"   typedef struct {  	iphone_device_t dev; @@ -27,6 +28,7 @@ void my_delete_iPhone(iPhone* dev);  Lockdownd* my_new_Lockdownd(iPhone* phone);  void my_delete_Lockdownd(Lockdownd* lckd);  MobileSync* my_new_MobileSync(Lockdownd* lckd); +PList::Node* new_node_from_plist(plist_t node);   %}  /* Parse the header file to generate wrappers */ @@ -98,6 +100,41 @@ MobileSync* my_new_MobileSync(Lockdownd* lckd) {  	return client;  } +PList::Node* new_node_from_plist(plist_t node) +{ +	PList::Node* ret = NULL; +	plist_type subtype = plist_get_node_type(node); +	switch(subtype) +	{ +	    case PLIST_DICT: +		ret = new PList::Dictionary(node); +		break; +	    case PLIST_ARRAY: +		ret = new PList::Array(node); +		break; +	    case PLIST_BOOLEAN: +		ret = new PList::Boolean(node); +		break; +	    case PLIST_UINT: +		ret = new PList::Integer(node); +		break; +	    case PLIST_REAL: +		ret = new PList::Real(node); +		break; +	    case PLIST_STRING: +		ret = new PList::String(node); +		break; +	    case PLIST_DATE: +		ret = new PList::Date(node); +		break; +	    case PLIST_DATA: +		ret = new PList::Data(node); +		break; +	    default: +		break; +	} +	return ret; +}  %} @@ -154,15 +191,14 @@ MobileSync* my_new_MobileSync(Lockdownd* lckd) {  		my_delete_Lockdownd($self);  	} -	void send(PListNode* node) { -		lockdownd_send($self->client, node->node); +	void send(PList::Node* node) { +		lockdownd_send($self->client, node->GetPlist());  	} -	PListNode* receive() { -		PListNode* node = (PListNode*)malloc(sizeof(PListNode)); -		node->node = NULL; -		lockdownd_recv($self->client, &(node->node)); -		return node; +	PList::Node* receive() { +		plist_t node = NULL; +		lockdownd_recv($self->client, &node); +		return new_node_from_plist(node);  	}  	MobileSync* get_mobilesync_client() { @@ -180,15 +216,14 @@ MobileSync* my_new_MobileSync(Lockdownd* lckd) {  		free($self);  	} -	void send(PListNode* node) { -		mobilesync_send($self->client, node->node); +	void send(PList::Node* node) { +		mobilesync_send($self->client, node->GetPlist());  	} -	PListNode* receive() { -		PListNode* node = (PListNode*)malloc(sizeof(PListNode)); -		node->node = NULL; -		mobilesync_recv($self->client, &(node->node)); -		return node; +	PList::Node* receive() { +		plist_t node = NULL; +		mobilesync_recv($self->client, &node); +		return new_node_from_plist(node);  	}  };  | 
