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 @@ | |||
| 1 | INCLUDES = -I$(top_srcdir)/include $(libplist_CFLAGS) -I$(oldincludedir) | 1 | INCLUDES = -I$(top_srcdir)/include $(libplist_CFLAGS) $(SWIG_PYTHON_CPPFLAGS) -I$(oldincludedir) |
| 2 | 2 | ||
| 3 | BUILT_SOURCES = iphone_wrap.c | 3 | BUILT_SOURCES = iphone_wrap.cxx |
| 4 | SWIG_SOURCES = iphone.i | 4 | SWIG_SOURCES = iphone.i |
| 5 | 5 | ||
| 6 | CLEANFILES = \ | 6 | CLEANFILES = \ |
| @@ -8,7 +8,7 @@ CLEANFILES = \ | |||
| 8 | *.pyo \ | 8 | *.pyo \ |
| 9 | _iPhone.so \ | 9 | _iPhone.so \ |
| 10 | iPhone.py \ | 10 | iPhone.py \ |
| 11 | iphone_wrap.c | 11 | iphone_wrap.cxx |
| 12 | 12 | ||
| 13 | EXTRA_DIST = \ | 13 | EXTRA_DIST = \ |
| 14 | __init__.py \ | 14 | __init__.py \ |
| @@ -21,11 +21,11 @@ iPhonedir = $(pyexecdir)/libiphone | |||
| 21 | iPhone_PYTHON = __init__.py | 21 | iPhone_PYTHON = __init__.py |
| 22 | nodist_iPhone_PYTHON = iPhone.py | 22 | nodist_iPhone_PYTHON = iPhone.py |
| 23 | iPhone_LTLIBRARIES = _iPhone.la | 23 | iPhone_LTLIBRARIES = _iPhone.la |
| 24 | nodist__iPhone_la_SOURCES = iphone_wrap.c $(SWIG_SOURCES) | 24 | nodist__iPhone_la_SOURCES = iphone_wrap.cxx $(SWIG_SOURCES) |
| 25 | _iPhone_la_CFLAGS = $(PYTHON_CPPFLAGS) -I$(top_srcdir)/src | 25 | _iPhone_la_CFLAGS = $(PYTHON_CPPFLAGS) -I$(top_srcdir)/src |
| 26 | _iPhone_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) | 26 | _iPhone_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) |
| 27 | _iPhone_la_LIBADD = $(top_builddir)/src/libiphone.la | 27 | _iPhone_la_LIBADD = $(top_builddir)/src/libiphone.la |
| 28 | 28 | ||
| 29 | iphone_wrap.c : $(SWIG_SOURCES) | 29 | iphone_wrap.cxx : $(SWIG_SOURCES) |
| 30 | $(SWIG) $(SWIG_PYTHON_OPT) $(INCLUDES) -I$(top_srcdir)/src -o $@ $< | 30 | $(SWIG) $(SWIG_PYTHON_OPT) $(INCLUDES) -I$(top_srcdir)/src -o $@ $< |
| 31 | 31 | ||
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 @@ | |||
| 7 | #include <libiphone/lockdown.h> | 7 | #include <libiphone/lockdown.h> |
| 8 | #include <libiphone/mobilesync.h> | 8 | #include <libiphone/mobilesync.h> |
| 9 | #include <plist/plist.h> | 9 | #include <plist/plist.h> |
| 10 | #include <plist/plist++.h> | ||
| 10 | #include "../src/utils.h" | 11 | #include "../src/utils.h" |
| 11 | typedef struct { | 12 | typedef struct { |
| 12 | iphone_device_t dev; | 13 | iphone_device_t dev; |
| @@ -27,6 +28,7 @@ void my_delete_iPhone(iPhone* dev); | |||
| 27 | Lockdownd* my_new_Lockdownd(iPhone* phone); | 28 | Lockdownd* my_new_Lockdownd(iPhone* phone); |
| 28 | void my_delete_Lockdownd(Lockdownd* lckd); | 29 | void my_delete_Lockdownd(Lockdownd* lckd); |
| 29 | MobileSync* my_new_MobileSync(Lockdownd* lckd); | 30 | MobileSync* my_new_MobileSync(Lockdownd* lckd); |
| 31 | PList::Node* new_node_from_plist(plist_t node); | ||
| 30 | 32 | ||
| 31 | %} | 33 | %} |
| 32 | /* Parse the header file to generate wrappers */ | 34 | /* Parse the header file to generate wrappers */ |
| @@ -98,6 +100,41 @@ MobileSync* my_new_MobileSync(Lockdownd* lckd) { | |||
| 98 | return client; | 100 | return client; |
| 99 | } | 101 | } |
| 100 | 102 | ||
| 103 | PList::Node* new_node_from_plist(plist_t node) | ||
| 104 | { | ||
| 105 | PList::Node* ret = NULL; | ||
| 106 | plist_type subtype = plist_get_node_type(node); | ||
| 107 | switch(subtype) | ||
| 108 | { | ||
| 109 | case PLIST_DICT: | ||
| 110 | ret = new PList::Dictionary(node); | ||
| 111 | break; | ||
| 112 | case PLIST_ARRAY: | ||
| 113 | ret = new PList::Array(node); | ||
| 114 | break; | ||
| 115 | case PLIST_BOOLEAN: | ||
| 116 | ret = new PList::Boolean(node); | ||
| 117 | break; | ||
| 118 | case PLIST_UINT: | ||
| 119 | ret = new PList::Integer(node); | ||
| 120 | break; | ||
| 121 | case PLIST_REAL: | ||
| 122 | ret = new PList::Real(node); | ||
| 123 | break; | ||
| 124 | case PLIST_STRING: | ||
| 125 | ret = new PList::String(node); | ||
| 126 | break; | ||
| 127 | case PLIST_DATE: | ||
| 128 | ret = new PList::Date(node); | ||
| 129 | break; | ||
| 130 | case PLIST_DATA: | ||
| 131 | ret = new PList::Data(node); | ||
| 132 | break; | ||
| 133 | default: | ||
| 134 | break; | ||
| 135 | } | ||
| 136 | return ret; | ||
| 137 | } | ||
| 101 | %} | 138 | %} |
| 102 | 139 | ||
| 103 | 140 | ||
| @@ -154,15 +191,14 @@ MobileSync* my_new_MobileSync(Lockdownd* lckd) { | |||
| 154 | my_delete_Lockdownd($self); | 191 | my_delete_Lockdownd($self); |
| 155 | } | 192 | } |
| 156 | 193 | ||
| 157 | void send(PListNode* node) { | 194 | void send(PList::Node* node) { |
| 158 | lockdownd_send($self->client, node->node); | 195 | lockdownd_send($self->client, node->GetPlist()); |
| 159 | } | 196 | } |
| 160 | 197 | ||
| 161 | PListNode* receive() { | 198 | PList::Node* receive() { |
| 162 | PListNode* node = (PListNode*)malloc(sizeof(PListNode)); | 199 | plist_t node = NULL; |
| 163 | node->node = NULL; | 200 | lockdownd_recv($self->client, &node); |
| 164 | lockdownd_recv($self->client, &(node->node)); | 201 | return new_node_from_plist(node); |
| 165 | return node; | ||
| 166 | } | 202 | } |
| 167 | 203 | ||
| 168 | MobileSync* get_mobilesync_client() { | 204 | MobileSync* get_mobilesync_client() { |
| @@ -180,15 +216,14 @@ MobileSync* my_new_MobileSync(Lockdownd* lckd) { | |||
| 180 | free($self); | 216 | free($self); |
| 181 | } | 217 | } |
| 182 | 218 | ||
| 183 | void send(PListNode* node) { | 219 | void send(PList::Node* node) { |
| 184 | mobilesync_send($self->client, node->node); | 220 | mobilesync_send($self->client, node->GetPlist()); |
| 185 | } | 221 | } |
| 186 | 222 | ||
| 187 | PListNode* receive() { | 223 | PList::Node* receive() { |
| 188 | PListNode* node = (PListNode*)malloc(sizeof(PListNode)); | 224 | plist_t node = NULL; |
| 189 | node->node = NULL; | 225 | mobilesync_recv($self->client, &node); |
| 190 | mobilesync_recv($self->client, &(node->node)); | 226 | return new_node_from_plist(node); |
| 191 | return node; | ||
| 192 | } | 227 | } |
| 193 | }; | 228 | }; |
| 194 | 229 | ||
