Annotated templates/native/system.h

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
paul@354 1
/* Native functions for system operations.
paul@354 2
paul@664 3
Copyright (C) 2016, 2017 Paul Boddie <>
paul@354 4
paul@354 5
This program is free software; you can redistribute it and/or modify it under
paul@354 6
the terms of the GNU General Public License as published by the Free Software
paul@354 7
Foundation; either version 3 of the License, or (at your option) any later
paul@354 8
paul@354 9
paul@354 10
This program is distributed in the hope that it will be useful, but WITHOUT
paul@354 11
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
paul@354 12
FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
paul@354 13
paul@354 14
paul@354 15
You should have received a copy of the GNU General Public License along with
paul@354 16
this program.  If not, see <>.
paul@354 17
paul@354 18
paul@354 19
#ifndef __NATIVE_SYSTEM_H__
paul@354 20
#define __NATIVE_SYSTEM_H__
paul@354 21
paul@354 22
#include "types.h"
paul@354 23
paul@354 24
/* Environment support. */
paul@354 25
paul@664 26
__attr __fn_native_system_exit(__attr __self, __attr status);
paul@664 27
__attr __fn_native_system_get_argv(__attr __self);
paul@664 28
__attr __fn_native_system_get_path(__attr __self);
paul@354 29
paul@354 30
/* Module initialisation. */
paul@354 31
paul@354 32
void __main_native_system();
paul@354 33
paul@354 34
#endif /* __NATIVE_SYSTEM_H__ */