paul@344 | 1 | /* Native functions. |
paul@344 | 2 | |
paul@344 | 3 | Copyright (C) 2016 Paul Boddie <paul@boddie.org.uk> |
paul@344 | 4 | |
paul@344 | 5 | This program is free software; you can redistribute it and/or modify it under |
paul@344 | 6 | the terms of the GNU General Public License as published by the Free Software |
paul@344 | 7 | Foundation; either version 3 of the License, or (at your option) any later |
paul@344 | 8 | version. |
paul@344 | 9 | |
paul@344 | 10 | This program is distributed in the hope that it will be useful, but WITHOUT |
paul@344 | 11 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
paul@344 | 12 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
paul@344 | 13 | details. |
paul@344 | 14 | |
paul@344 | 15 | You should have received a copy of the GNU General Public License along with |
paul@344 | 16 | this program. If not, see <http://www.gnu.org/licenses/>. |
paul@344 | 17 | */ |
paul@344 | 18 | |
paul@161 | 19 | #ifndef __NATIVE_H__ |
paul@161 | 20 | #define __NATIVE_H__ |
paul@161 | 21 | |
paul@344 | 22 | /* Environment support. */ |
paul@167 | 23 | |
paul@167 | 24 | __attr __fn_native__exit(__attr __args[]); |
paul@182 | 25 | __attr __fn_native__get_argv(__attr __args[]); |
paul@182 | 26 | __attr __fn_native__get_path(__attr __args[]); |
paul@182 | 27 | |
paul@344 | 28 | /* Identity testing. */ |
paul@344 | 29 | |
paul@161 | 30 | __attr __fn_native__is(__attr __args[]); |
paul@161 | 31 | __attr __fn_native__is_not(__attr __args[]); |
paul@182 | 32 | |
paul@344 | 33 | /* Limit definition. */ |
paul@344 | 34 | |
paul@309 | 35 | __attr __fn_native__get_maxint(__attr __args[]); |
paul@309 | 36 | __attr __fn_native__get_minint(__attr __args[]); |
paul@309 | 37 | |
paul@344 | 38 | /* Integer operations. */ |
paul@344 | 39 | |
paul@161 | 40 | __attr __fn_native__int_add(__attr __args[]); |
paul@161 | 41 | __attr __fn_native__int_div(__attr __args[]); |
paul@161 | 42 | __attr __fn_native__int_mod(__attr __args[]); |
paul@182 | 43 | __attr __fn_native__int_mul(__attr __args[]); |
paul@207 | 44 | __attr __fn_native__int_neg(__attr __args[]); |
paul@161 | 45 | __attr __fn_native__int_pow(__attr __args[]); |
paul@182 | 46 | __attr __fn_native__int_sub(__attr __args[]); |
paul@182 | 47 | |
paul@161 | 48 | __attr __fn_native__int_and(__attr __args[]); |
paul@307 | 49 | __attr __fn_native__int_not(__attr __args[]); |
paul@161 | 50 | __attr __fn_native__int_or(__attr __args[]); |
paul@161 | 51 | __attr __fn_native__int_xor(__attr __args[]); |
paul@182 | 52 | |
paul@161 | 53 | __attr __fn_native__int_rdiv(__attr __args[]); |
paul@161 | 54 | __attr __fn_native__int_rmod(__attr __args[]); |
paul@161 | 55 | __attr __fn_native__int_rpow(__attr __args[]); |
paul@182 | 56 | __attr __fn_native__int_rsub(__attr __args[]); |
paul@182 | 57 | |
paul@161 | 58 | __attr __fn_native__int_lt(__attr __args[]); |
paul@161 | 59 | __attr __fn_native__int_gt(__attr __args[]); |
paul@161 | 60 | __attr __fn_native__int_eq(__attr __args[]); |
paul@198 | 61 | __attr __fn_native__int_ne(__attr __args[]); |
paul@198 | 62 | |
paul@198 | 63 | __attr __fn_native__int_str(__attr __args[]); |
paul@182 | 64 | |
paul@344 | 65 | /* String operations. */ |
paul@344 | 66 | |
paul@161 | 67 | __attr __fn_native__str_add(__attr __args[]); |
paul@161 | 68 | __attr __fn_native__str_lt(__attr __args[]); |
paul@161 | 69 | __attr __fn_native__str_gt(__attr __args[]); |
paul@161 | 70 | __attr __fn_native__str_eq(__attr __args[]); |
paul@161 | 71 | __attr __fn_native__str_len(__attr __args[]); |
paul@161 | 72 | __attr __fn_native__str_nonempty(__attr __args[]); |
paul@296 | 73 | __attr __fn_native__str_ord(__attr __args[]); |
paul@292 | 74 | __attr __fn_native__str_substr(__attr __args[]); |
paul@182 | 75 | |
paul@344 | 76 | /* List operations. */ |
paul@344 | 77 | |
paul@161 | 78 | __attr __fn_native__list_init(__attr __args[]); |
paul@227 | 79 | __attr __fn_native__list_setsize(__attr __args[]); |
paul@206 | 80 | __attr __fn_native__list_append(__attr __args[]); |
paul@206 | 81 | __attr __fn_native__list_concat(__attr __args[]); |
paul@161 | 82 | __attr __fn_native__list_len(__attr __args[]); |
paul@161 | 83 | __attr __fn_native__list_nonempty(__attr __args[]); |
paul@161 | 84 | __attr __fn_native__list_element(__attr __args[]); |
paul@227 | 85 | __attr __fn_native__list_setelement(__attr __args[]); |
paul@182 | 86 | |
paul@344 | 87 | /* Buffer operations. */ |
paul@344 | 88 | |
paul@206 | 89 | __attr __fn_native__buffer_str(__attr __args[]); |
paul@206 | 90 | |
paul@344 | 91 | /* Method binding. */ |
paul@344 | 92 | |
paul@230 | 93 | __attr __fn_native__get_using(__attr __args[]); |
paul@230 | 94 | |
paul@344 | 95 | /* Introspection. */ |
paul@344 | 96 | |
paul@228 | 97 | __attr __fn_native__object_getattr(__attr __args[]); |
paul@161 | 98 | __attr __fn_native__isinstance(__attr __args[]); |
paul@231 | 99 | __attr __fn_native__issubclass(__attr __args[]); |
paul@182 | 100 | |
paul@344 | 101 | /* Input/output. */ |
paul@344 | 102 | |
paul@352 | 103 | __attr __fn_native__fclose(__attr __args[]); |
paul@347 | 104 | __attr __fn_native__fopen(__attr __args[]); |
paul@328 | 105 | __attr __fn_native__fdopen(__attr __args[]); |
paul@336 | 106 | __attr __fn_native__fread(__attr __args[]); |
paul@336 | 107 | __attr __fn_native__fwrite(__attr __args[]); |
paul@352 | 108 | __attr __fn_native__close(__attr __args[]); |
paul@173 | 109 | __attr __fn_native__read(__attr __args[]); |
paul@173 | 110 | __attr __fn_native__write(__attr __args[]); |
paul@173 | 111 | |
paul@173 | 112 | /* Module initialisation. */ |
paul@173 | 113 | |
paul@161 | 114 | void __main_native(); |
paul@161 | 115 | |
paul@161 | 116 | #endif /* __NATIVE_H__ */ |