25# if defined(BJ_OS_EMSCRIPTEN)
27# elif defined(BJ_OS_WINDOWS)
29# elif defined(BJ_OS_IOS)
43#if defined(BJ_AUTOMAIN) || defined(BJ_AUTOMAIN_CALLBACKS)
44extern int bj_main(
int argc,
char* argv[]);
45extern int bj_call_main(
int argc,
char* argv[],
int (*function)(
int argc,
char* argv[]));
48#ifdef BJ_AUTOMAIN_CALLBACKS
50typedef enum bj_callback_result_t
52 bj_callback_exit_error = -1,
53 bj_callback_exit_success = 0,
54 bj_callback_continue = 1,
57typedef int (*bj_app_begin_fn_t)(
void**, int,
char*[]);
58typedef int (*bj_app_iterate_fn_t)(
void*);
59typedef int (*bj_app_end_fn_t)(
void*, int);
61extern int bj_app_begin(
void** user_data,
int argc,
char *argv[]);
62extern int bj_app_iterate(
void* user_data);
63extern int bj_app_end(
void* user_data,
int status);
65extern int bj_call_main_callbacks(
int argc,
char* argv[], bj_app_begin_fn_t, bj_app_iterate_fn_t, bj_app_end_fn_t);
74#if !defined(BJ_NO_AUTOMAIN) && !defined(BJ_MAIN_NOIMPL)
75 #if defined(BJ_AUTOMAIN_CALLBACKS) || defined(BJ_AUTOMAIN)
79# ifdef BJ_AUTOMAIN_CALLBACKS
80# define BJ_MAIN_CALLBACK_STANDARD 1
81 int bj_main(
int argc,
char* argv[]) {
82 return bj_call_main_callbacks(argc, argv, bj_app_begin, bj_app_iterate, bj_app_end);
85# if (!defined(BJ_AUTOMAIN_CALLBACKS) || defined(BJ_MAIN_CALLBACK_STANDARD))
86# if defined(BJ_OS_WINDOWS)
88# define WINAPI __stdcall
90 typedef struct HINSTANCE__* HINSTANCE;
92 typedef wchar_t* PWSTR;
93# ifdef BJ_COMPILER_MSVC
94# if defined(UNICODE) && UNICODE
95 int wmain(
int argc,
wchar_t* wargv[],
wchar_t* wenvp) {
96 (void)argc; (void)wargv; (void)wenvp;
97 return bj_call_main(0, NULL, bj_main);
100 int main(
int argc,
char* argv[]) {
101 (void)argc; (void)argv;
102 return bj_call_main(0, NULL, bj_main);
109# if defined(UNICODE) && UNICODE
110 int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrev, PWSTR szCmdLine,
int sw) {
112 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine,
int sw) {
114 (void)hInst; (void)hPrev; (void)szCmdLine; (void)sw;
115 return bj_call_main(0, NULL, bj_main);
121 int main(
int argc,
char* argv[]) {
122 return bj_call_main(argc, argv, bj_main);
General-purpose definitions for Banjo API.