summaryrefslogtreecommitdiffstatshomepage
path: root/py/sequence.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-21 00:19:19 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-21 00:39:12 +0200
commit439542f70c4546568dca3f2539d503aa7a6ec05b (patch)
tree44d8ad003c5382567ca64aed25556c99ce05a2fe /py/sequence.c
parent51ee44a718668964f2986096b3cb5ac45fb85439 (diff)
downloadmicropython-439542f70c4546568dca3f2539d503aa7a6ec05b.tar.gz
micropython-439542f70c4546568dca3f2539d503aa7a6ec05b.zip
sequence.c: Start to refactor sequence operations for reuse among types.
Diffstat (limited to 'py/sequence.c')
-rw-r--r--py/sequence.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/py/sequence.c b/py/sequence.c
new file mode 100644
index 0000000000..af3c61af6e
--- /dev/null
+++ b/py/sequence.c
@@ -0,0 +1,25 @@
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <assert.h>
+
+#include "nlr.h"
+#include "misc.h"
+#include "mpconfig.h"
+#include "mpqstr.h"
+#include "obj.h"
+#include "map.h"
+#include "runtime0.h"
+#include "runtime.h"
+
+// Helpers for sequence types
+
+// Implements backend of sequence * integer operation. Assumes elements are
+// memory-adjacent in sequence.
+void mp_seq_multiply(const void *items, uint item_sz, uint len, uint times, void *dest) {
+ for (int i = 0; i < times; i++) {
+ uint copy_sz = item_sz * len;
+ memcpy(dest, items, copy_sz);
+ dest = (char*)dest + copy_sz;
+ }
+}