20# if defined(BJ_OS_WINDOWS)
22# elif defined(BJ_OS_IOS)
36#if defined(BJ_AUTOMAIN) || defined(BJ_AUTOMAIN_CALLBACKS)
37extern int bj_main(
int argc,
char* argv[]);
38extern int bj_call_main(
int argc,
char* argv[],
int (*function)(
int argc,
char* argv[]));
41#ifdef BJ_AUTOMAIN_CALLBACKS
43typedef enum bj_callback_result_t
45 bj_callback_exit_error = -1,
46 bj_callback_exit_success = 0,
47 bj_callback_continue = 1,
50typedef bj_callback_result (*bj_app_begin_fn_t)(
void**, int,
char*[]);
51typedef bj_callback_result (*bj_app_iterate_fn_t)(
void*);
52typedef bj_callback_result (*bj_app_end_fn_t)(
void*, int);
54extern bj_callback_result bj_app_begin(
void** user_data,
int argc,
char *argv[]);
55extern bj_callback_result bj_app_iterate(
void* user_data);
56extern bj_callback_result bj_app_end(
void* user_data,
int status);
58extern int bj_call_main_callbacks(
int argc,
char* argv[], bj_app_begin_fn_t, bj_app_iterate_fn_t, bj_app_end_fn_t);
67#if !defined(BJ_NO_AUTOMAIN) && !defined(BJ_MAIN_NOIMPL)
68 #if defined(BJ_AUTOMAIN_CALLBACKS) || defined(BJ_AUTOMAIN)
72# ifdef BJ_AUTOMAIN_CALLBACKS
73# define BJ_MAIN_CALLBACK_STANDARD 1
74 int bj_main(
int argc,
char* argv[]) {
75 return bj_call_main_callbacks(argc, argv, bj_app_begin, bj_app_iterate, bj_app_end);
78# if (!defined(BJ_AUTOMAIN_CALLBACKS) || defined(BJ_MAIN_CALLBACK_STANDARD))
79# if defined(BJ_OS_WINDOWS)
81# define WINAPI __stdcall
83 typedef struct HINSTANCE__* HINSTANCE;
85 typedef wchar_t* PWSTR;
86# ifdef BJ_COMPILER_MSVC
87# if defined(UNICODE) && UNICODE
88 int wmain(
int argc,
wchar_t* wargv[],
wchar_t* wenvp) {
89 (void)argc; (void)wargv; (void)wenvp;
90 return bj_call_main(0, NULL, bj_main);
93 int main(
int argc,
char* argv[]) {
94 (void)argc; (void)argv;
95 return bj_call_main(0, NULL, bj_main);
102# if defined(UNICODE) && UNICODE
103 int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrev, PWSTR szCmdLine,
int sw) {
105 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine,
int sw) {
107 (void)hInst; (void)hPrev; (void)szCmdLine; (void)sw;
108 return bj_call_main(0, NULL, bj_main);
114 int main(
int argc,
char* argv[]) {
115 return bj_call_main(argc, argv, bj_main);
General-purpose definitions for Banjo API.