1.1 --- a/templates/native.c Wed Nov 23 17:23:52 2016 +0100
1.2 +++ b/templates/native.c Wed Nov 23 17:32:58 2016 +0100
1.3 @@ -349,6 +349,19 @@
1.4 return attr;
1.5 }
1.6
1.7 +__attr __fn_native__list_setsize(__attr __args[])
1.8 +{
1.9 + __attr * const self = &__args[1];
1.10 + __attr * const size = &__args[2];
1.11 + /* self.__data__ interpreted as list */
1.12 + __fragment *data = __load_via_object(self->value, __pos___data__).data;
1.13 + /* size.__data__ interpreted as int */
1.14 + unsigned int n = __load_via_object(size->value, __pos___data__).intvalue;
1.15 +
1.16 + data->size = n;
1.17 + return __builtins___none_None;
1.18 +}
1.19 +
1.20 __attr __fn_native__list_append(__attr __args[])
1.21 {
1.22 __attr * const self = &__args[1];
1.23 @@ -438,11 +451,18 @@
1.24 return elements[i];
1.25 }
1.26
1.27 -__attr __fn_native__list_to_tuple(__attr __args[])
1.28 +__attr __fn_native__list_setelement(__attr __args[])
1.29 {
1.30 - __attr * const l = &__args[1];
1.31 + __attr * const self = &__args[1];
1.32 + __attr * const index = &__args[2];
1.33 + __attr * const value = &__args[3];
1.34 + /* self.__data__ interpreted as fragment */
1.35 + __attr *elements = __load_via_object(self->value, __pos___data__).data->attrs;
1.36 + /* index.__data__ interpreted as int */
1.37 + int i = __load_via_object(index->value, __pos___data__).intvalue;
1.38
1.39 - /* NOTE: To be written. */
1.40 + /* Set the element. */
1.41 + elements[i] = *value;
1.42 return __builtins___none_None;
1.43 }
1.44
1.45 @@ -474,38 +494,6 @@
1.46 return __new_str(s);
1.47 }
1.48
1.49 -__attr __fn_native__tuple_init(__attr __args[])
1.50 -{
1.51 - __attr * const size = &__args[1];
1.52 - /* size.__data__ interpreted as fragment */
1.53 - __fragment *data = calloc(__load_via_object(size->value, __pos___data__).intvalue, sizeof(__attr));
1.54 - __attr attr = {0, .data=data};
1.55 -
1.56 - return attr;
1.57 -}
1.58 -
1.59 -__attr __fn_native__tuple_len(__attr __args[])
1.60 -{
1.61 - __attr * const self = &__args[1];
1.62 - /* self.__data__ interpreted as fragment */
1.63 - unsigned int size = __load_via_object(self->value, __pos___data__).data->size;
1.64 -
1.65 - /* Return the new integer. */
1.66 - return __new_int(size);
1.67 -}
1.68 -
1.69 -__attr __fn_native__tuple_element(__attr __args[])
1.70 -{
1.71 - __attr * const self = &__args[1];
1.72 - __attr * const index = &__args[2];
1.73 - /* self.__data__ interpreted as fragment */
1.74 - __attr *elements = __load_via_object(self->value, __pos___data__).data->attrs;
1.75 - /* index.__data__ interpreted as int */
1.76 - int i = __load_via_object(index->value, __pos___data__).intvalue;
1.77 -
1.78 - return elements[i];
1.79 -}
1.80 -
1.81 __attr __fn_native__isinstance(__attr __args[])
1.82 {
1.83 __attr * const obj = &__args[1];