summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-10-12 10:10:39 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-10-12 10:13:51 +0300
commit91fc075a33a6f0bf8e1a07b797f6fd01207a5e17 (patch)
tree436209bc10ce78ee1196797e012823b5aa3b917a /py
parent3aa7dd23c9206b983f0004ec63eb6be913f7332a (diff)
downloadmicropython-91fc075a33a6f0bf8e1a07b797f6fd01207a5e17.tar.gz
micropython-91fc075a33a6f0bf8e1a07b797f6fd01207a5e17.zip
py/objarray: Allow to create array of void pointers, as extension to CPython.
Using 'P' format specifier (matches struct module). This is another shortcut for FFI, just as previously introduced "array of objects" ('O').
Diffstat (limited to 'py')
-rw-r--r--py/binary.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/py/binary.c b/py/binary.c
index d8f865ebe5..71ef3f04d5 100644
--- a/py/binary.c
+++ b/py/binary.c
@@ -145,6 +145,9 @@ mp_obj_t mp_binary_get_val_array(char typecode, void *p, mp_uint_t index) {
// Extension to CPython: array of objects
case 'O':
return ((mp_obj_t*)p)[index];
+ // Extension to CPython: array of pointers
+ case 'P':
+ return mp_obj_new_int((mp_int_t)((void**)p)[index]);
}
return MP_OBJ_NEW_SMALL_INT(val);
}
@@ -369,5 +372,8 @@ void mp_binary_set_val_array_from_int(char typecode, void *p, mp_uint_t index, m
((double*)p)[index] = val;
break;
#endif
+ // Extension to CPython: array of pointers
+ case 'P':
+ ((void**)p)[index] = (void*)val;
}
}