summaryrefslogtreecommitdiffstats
path: root/swig/iphone.i
diff options
context:
space:
mode:
Diffstat (limited to 'swig/iphone.i')
-rw-r--r--swig/iphone.i63
1 files changed, 49 insertions, 14 deletions
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);
27Lockdownd* my_new_Lockdownd(iPhone* phone); 28Lockdownd* my_new_Lockdownd(iPhone* phone);
28void my_delete_Lockdownd(Lockdownd* lckd); 29void my_delete_Lockdownd(Lockdownd* lckd);
29MobileSync* my_new_MobileSync(Lockdownd* lckd); 30MobileSync* my_new_MobileSync(Lockdownd* lckd);
31PList::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
103PList::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