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