1.1 --- a/templates/native.c Sat Nov 12 23:27:04 2016 +0100
1.2 +++ b/templates/native.c Tue Nov 15 19:12:12 2016 +0100
1.3 @@ -19,6 +19,24 @@
1.4 #undef status
1.5 }
1.6
1.7 +__attr __fn_native__get_argv(__attr __args[])
1.8 +{
1.9 + #define status (__args[1])
1.10 +
1.11 + /* NOTE: To be written. */
1.12 + return __builtins___none_None;
1.13 + #undef status
1.14 +}
1.15 +
1.16 +__attr __fn_native__get_path(__attr __args[])
1.17 +{
1.18 + #define status (__args[1])
1.19 +
1.20 + /* NOTE: To be written. */
1.21 + return __builtins___none_None;
1.22 + #undef status
1.23 +}
1.24 +
1.25 __attr __fn_native__is(__attr __args[])
1.26 {
1.27 #define x (__args[1])
1.28 @@ -291,9 +309,15 @@
1.29 __attr __fn_native__list_len(__attr __args[])
1.30 {
1.31 #define self (__args[1])
1.32 + /* self.__data__ interpreted as fragment */
1.33 + unsigned int size = __load_via_object(self.value, __pos___data__).data->size;
1.34
1.35 - /* NOTE: To be written. */
1.36 - return __builtins___none_None;
1.37 + /* Create a new integer and mutate the __data__ attribute. */
1.38 + __attr length = __new(&__InstanceTable___builtins___int_int, &__builtins___int_int, sizeof(__obj___builtins___int_int));
1.39 + length.value->attrs[__pos___data__].intvalue = size;
1.40 +
1.41 + /* Return the new integer. */
1.42 + return length;
1.43 #undef self
1.44 }
1.45
1.46 @@ -361,7 +385,7 @@
1.47 #define obj (__args[1])
1.48 #define cls (__args[2])
1.49
1.50 - if (__HASATTR(obj.value, __TYPEPOS(cls.value), __TYPECODE(cls.value)))
1.51 + if (__is_instance(obj.value) && __HASATTR(__get_class(obj.value), __TYPEPOS(cls.value), __TYPECODE(cls.value)))
1.52 return obj;
1.53 else
1.54 return __builtins___none_None;