61# if defined(BJ_OS_EMSCRIPTEN)
63# elif defined(BJ_OS_WINDOWS)
65# elif defined(BJ_OS_IOS)
79#if defined(BJ_AUTOMAIN) || defined(BJ_AUTOMAIN_CALLBACKS)
95extern int bj_main(
int argc,
char* argv[]);
109extern int bj_call_main(
int argc,
char* argv[],
int (*function)(
int argc,
char* argv[]));
112#ifdef BJ_AUTOMAIN_CALLBACKS
122 bj_callback_exit_error = -1,
123 bj_callback_exit_success = 0,
124 bj_callback_continue = 1,
139typedef int (*bj_app_begin_fn)(
void**, int,
char*[]);
152typedef int (*bj_app_iterate_fn)(
void*);
165typedef int (*bj_app_end_fn)(
void*, int);
180extern int bj_app_begin(
void** user_data,
int argc,
char *argv[]);
193extern int bj_app_iterate(
void* user_data);
207extern int bj_app_end(
void* user_data,
int status);
223extern int bj_call_main_callbacks(
int argc,
char* argv[], bj_app_begin_fn, bj_app_iterate_fn, bj_app_end_fn);
232#if !defined(BJ_NO_AUTOMAIN) && !defined(BJ_MAIN_NOIMPL)
233 #if defined(BJ_AUTOMAIN_CALLBACKS) || defined(BJ_AUTOMAIN)
237# ifdef BJ_AUTOMAIN_CALLBACKS
238# define BJ_MAIN_CALLBACK_STANDARD 1
239 int bj_main(
int argc,
char* argv[]) {
240 return bj_call_main_callbacks(argc, argv, bj_app_begin, bj_app_iterate, bj_app_end);
243# if (!defined(BJ_AUTOMAIN_CALLBACKS) || defined(BJ_MAIN_CALLBACK_STANDARD))
244# if defined(BJ_OS_WINDOWS)
246# define WINAPI __stdcall
248 typedef struct HINSTANCE__* HINSTANCE;
250 typedef wchar_t* PWSTR;
251# ifdef BJ_COMPILER_MSVC
252# if defined(UNICODE) && UNICODE
253 int wmain(
int argc,
wchar_t* wargv[],
wchar_t* wenvp) {
254 (void)argc; (void)wargv; (void)wenvp;
255 return bj_call_main(0, NULL, bj_main);
258 int main(
int argc,
char* argv[]) {
259 (void)argc; (void)argv;
260 return bj_call_main(0, NULL, bj_main);
267# if defined(UNICODE) && UNICODE
268 int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrev, PWSTR szCmdLine,
int sw) {
270 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine,
int sw) {
272 (void)hInst; (void)hPrev; (void)szCmdLine; (void)sw;
273 return bj_call_main(0, NULL, bj_main);
279 int main(
int argc,
char* argv[]) {
280 return bj_call_main(argc, argv, bj_main);
General-purpose definitions for Banjo API.
enum bj_callback_result bj_callback_result
Definition api.h:314