summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-21 00:27:33 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-21 00:39:12 +0200
commit545591a696bdff73f68573c54a05ca70eb58032d (patch)
tree1975115fc262756f14988a23cd7eed414149a7c4 /py
parent439542f70c4546568dca3f2539d503aa7a6ec05b (diff)
downloadmicropython-545591a696bdff73f68573c54a05ca70eb58032d.tar.gz
micropython-545591a696bdff73f68573c54a05ca70eb58032d.zip
Implement string multiplication.
Diffstat (limited to 'py')
-rw-r--r--py/objstr.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/py/objstr.c b/py/objstr.c
index 68fe7f0fcc..01de5e3674 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -102,6 +102,18 @@ mp_obj_t str_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
return MP_BOOL((op == RT_COMPARE_OP_IN) ^ (strstr(lhs_str, rhs_str) == NULL));
}
break;
+ case RT_BINARY_OP_MULTIPLY:
+ {
+ if (!MP_OBJ_IS_SMALL_INT(rhs_in)) {
+ return NULL;
+ }
+ int n = MP_OBJ_SMALL_INT_VALUE(rhs_in);
+ size_t len = strlen(lhs_str);
+ char *s = m_new(char, len * n + 1);
+ s[len * n] = 0;
+ mp_seq_multiply(lhs_str, sizeof(*lhs_str), len, n, s);
+ return MP_OBJ_NEW_QSTR(qstr_from_str_take(s, len * n + 1));
+ }
}
return MP_OBJ_NULL; // op not supported