1.1 --- a/templates/native/io.c Mon Mar 06 22:29:36 2017 +0100
1.2 +++ b/templates/native/io.c Tue Mar 07 00:28:18 2017 +0100
1.3 @@ -31,11 +31,10 @@
1.4
1.5 /* Input/output. */
1.6
1.7 -__attr __fn_native_io_fclose(__attr __args[])
1.8 +__attr __fn_native_io_fclose(__attr __self, __attr fp)
1.9 {
1.10 - __attr * const fp = &__args[1];
1.11 /* fp interpreted as FILE reference */
1.12 - FILE *f = (FILE *) fp->datavalue;
1.13 + FILE *f = (FILE *) fp.datavalue;
1.14
1.15 errno = 0;
1.16 if (fclose(f))
1.17 @@ -44,11 +43,10 @@
1.18 return __builtins___none_None;
1.19 }
1.20
1.21 -__attr __fn_native_io_fflush(__attr __args[])
1.22 +__attr __fn_native_io_fflush(__attr __self, __attr fp)
1.23 {
1.24 - __attr * const fp = &__args[1];
1.25 /* fp interpreted as FILE reference */
1.26 - FILE *f = (FILE *) fp->datavalue;
1.27 + FILE *f = (FILE *) fp.datavalue;
1.28
1.29 errno = 0;
1.30 if (fflush(f))
1.31 @@ -57,14 +55,12 @@
1.32 return __builtins___none_None;
1.33 }
1.34
1.35 -__attr __fn_native_io_fopen(__attr __args[])
1.36 +__attr __fn_native_io_fopen(__attr __self, __attr filename, __attr mode)
1.37 {
1.38 - __attr * const filename = &__args[1];
1.39 - __attr * const mode = &__args[2];
1.40 - /* filename.__data__ interpreted as string */
1.41 - char *fn = __load_via_object(filename->value, __data__).strvalue;
1.42 - /* mode.__data__ interpreted as string */
1.43 - char *s = __load_via_object(mode->value, __data__).strvalue;
1.44 + /* filename interpreted as string */
1.45 + char *fn = __load_via_object(filename.value, __data__).strvalue;
1.46 + /* mode interpreted as string */
1.47 + char *s = __load_via_object(mode.value, __data__).strvalue;
1.48 FILE *f;
1.49 __attr attr;
1.50
1.51 @@ -89,14 +85,12 @@
1.52 return __builtins___none_None;
1.53 }
1.54
1.55 -__attr __fn_native_io_fdopen(__attr __args[])
1.56 +__attr __fn_native_io_fdopen(__attr __self, __attr fd, __attr mode)
1.57 {
1.58 - __attr * const fd = &__args[1];
1.59 - __attr * const mode = &__args[2];
1.60 - /* fd.__data__ interpreted as int */
1.61 - int i = __load_via_object(fd->value, __data__).intvalue;
1.62 - /* mode.__data__ interpreted as string */
1.63 - char *s = __load_via_object(mode->value, __data__).strvalue;
1.64 + /* fd interpreted as int */
1.65 + int i = __load_via_object(fd.value, __data__).intvalue;
1.66 + /* mode interpreted as string */
1.67 + char *s = __load_via_object(mode.value, __data__).strvalue;
1.68 FILE *f;
1.69 __attr attr;
1.70
1.71 @@ -121,14 +115,12 @@
1.72 return __builtins___none_None;
1.73 }
1.74
1.75 -__attr __fn_native_io_fread(__attr __args[])
1.76 +__attr __fn_native_io_fread(__attr __self, __attr fp, __attr size)
1.77 {
1.78 - __attr * const fp = &__args[1];
1.79 - __attr * const size = &__args[2];
1.80 /* fp interpreted as FILE reference */
1.81 - FILE *f = (FILE *) fp->datavalue;
1.82 - /* size.__data__ interpreted as int */
1.83 - int to_read = __load_via_object(size->value, __data__).intvalue;
1.84 + FILE *f = (FILE *) fp.datavalue;
1.85 + /* size interpreted as int */
1.86 + int to_read = __load_via_object(size.value, __data__).intvalue;
1.87 char buf[to_read];
1.88 size_t have_read;
1.89 int error;
1.90 @@ -151,15 +143,12 @@
1.91 return __new_str(s, have_read);
1.92 }
1.93
1.94 -__attr __fn_native_io_fwrite(__attr __args[])
1.95 +__attr __fn_native_io_fwrite(__attr __self, __attr fp, __attr str)
1.96 {
1.97 - __attr * const fp = &__args[1];
1.98 - __attr * const str = &__args[2];
1.99 /* fp interpreted as FILE reference */
1.100 - FILE *f = (FILE *) fp->datavalue;
1.101 - /* str.__data__ interpreted as string */
1.102 - char *s = __load_via_object(str->value, __data__).strvalue;
1.103 - /* str.__size__ interpreted as int */
1.104 + FILE *f = (FILE *) fp.datavalue;
1.105 + /* str interpreted as string */
1.106 + char *s = __load_via_object(str.value, __data__).strvalue;
1.107 int to_write = __load_via_object(str->value, __size__).intvalue;
1.108 size_t have_written = fwrite(s, sizeof(char), to_write, f);
1.109 int error;
1.110 @@ -175,11 +164,10 @@
1.111 return __builtins___none_None;
1.112 }
1.113
1.114 -__attr __fn_native_io_close(__attr __args[])
1.115 +__attr __fn_native_io_close(__attr __self, __attr fd)
1.116 {
1.117 - __attr * const fd = &__args[1];
1.118 - /* fd.__data__ interpreted as int */
1.119 - int i = __load_via_object(fd->value, __data__).intvalue;
1.120 + /* fd interpreted as int */
1.121 + int i = __load_via_object(fd.value, __data__).intvalue;
1.122
1.123 errno = 0;
1.124 if (close(i) == -1)
1.125 @@ -188,14 +176,12 @@
1.126 return __builtins___none_None;
1.127 }
1.128
1.129 -__attr __fn_native_io_read(__attr __args[])
1.130 +__attr __fn_native_io_read(__attr __self, __attr fd, __attr n)
1.131 {
1.132 - __attr * const fd = &__args[1];
1.133 - __attr * const n = &__args[2];
1.134 - /* fd.__data__ interpreted as int */
1.135 - int i = __load_via_object(fd->value, __data__).intvalue;
1.136 - /* n.__data__ interpreted as int */
1.137 - int to_read = __load_via_object(n->value, __data__).intvalue;
1.138 + /* fd interpreted as int */
1.139 + int i = __load_via_object(fd.value, __data__).intvalue;
1.140 + /* n interpreted as int */
1.141 + int to_read = __load_via_object(n.value, __data__).intvalue;
1.142 char buf[to_read];
1.143 ssize_t have_read;
1.144 char *s;
1.145 @@ -213,16 +199,13 @@
1.146 return __new_str(s, have_read);
1.147 }
1.148
1.149 -__attr __fn_native_io_write(__attr __args[])
1.150 +__attr __fn_native_io_write(__attr __self, __attr fd, __attr str)
1.151 {
1.152 - __attr * const fd = &__args[1];
1.153 - __attr * const str = &__args[2];
1.154 - /* fd.__data__ interpreted as int */
1.155 - int i = __load_via_object(fd->value, __data__).intvalue;
1.156 - /* str.__data__ interpreted as string */
1.157 - char *s = __load_via_object(str->value, __data__).strvalue;
1.158 - /* str.__size__ interpreted as int */
1.159 - int size = __load_via_object(str->value, __size__).intvalue;
1.160 + /* fd interpreted as int */
1.161 + int i = __load_via_object(fd.value, __data__).intvalue;
1.162 + /* str interpreted as string */
1.163 + char *s = __load_via_object(str.value, __data__).strvalue;
1.164 + int size = __load_via_object(str.value, __size__).intvalue;
1.165 ssize_t have_written;
1.166
1.167 errno = 0;