Commit 4b57fac1 authored by Damien George's avatar Damien George
Browse files

Merge pull request #43 from chipaca/master

Implement list addition.
parents c2e21bb7 9bc56d93
......@@ -18,6 +18,7 @@ typedef struct _mp_obj_list_t {
} mp_obj_list_t;
static mp_obj_t mp_obj_new_list_iterator(mp_obj_list_t *list, int cur);
static mp_obj_list_t *list_new(uint n);
/******************************************************************************/
/* list */
......@@ -43,6 +44,17 @@ static mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) {
uint index = mp_get_index(o->base.type, o->len, rhs);
return o->items[index];
}
case RT_BINARY_OP_ADD:
{
if (!MP_OBJ_IS_TYPE(rhs, &list_type)) {
return NULL;
}
mp_obj_list_t *p = rhs;
mp_obj_list_t *s = list_new(o->len + p->len);
memcpy(s->items, o->items, sizeof(mp_obj_t) * o->len);
memcpy(s->items + o->len, p->items, sizeof(mp_obj_t) * p->len);
return s;
}
default:
// op not supported
return NULL;
......
# list addition
a = [1,2,3]
b = [4,5,6]
c = a + b
print(c)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment