2017-03-07 Paul Boddie Switched to using normal, named function parameters instead of arrays. This requires a special function to convert any array-based arguments to the positioned arguments. However, parameters no longer need to be dereferenced when used in functions. Specialised macros are required to invoke functions with different numbers of parameters. Fortunately, the macros required can be deduced from the functions defined in the program. normal-function-parameters
     1 /* Native functions for system operations.     2      3 Copyright (C) 2016, 2017 Paul Boddie <>     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 <>.    17 */    18     19 #ifndef __NATIVE_SYSTEM_H__    20 #define __NATIVE_SYSTEM_H__    21     22 #include "types.h"    23     24 /* Environment support. */    25     26 __attr __fn_native_system_exit(__attr __self, __attr status);    27 __attr __fn_native_system_get_argv(__attr __self);    28 __attr __fn_native_system_get_path(__attr __self);    29     30 /* Module initialisation. */    31     32 void __main_native_system();    33     34 #endif /* __NATIVE_SYSTEM_H__ */