20 #ifndef INCLUDED_SAL_MAIN_H
21 #define INCLUDED_SAL_MAIN_H
39 #if defined IOS || defined ANDROID
41 #error No code that includes this should be built for iOS or Android
45 #define SAL_MAIN_WITH_ARGS_IMPL \
46 int SAL_DLLPUBLIC_EXPORT SAL_CALL main(int argc, char ** argv) \
49 sal_detail_initialize(argc, argv); \
50 ret = sal_main_with_args(argc, argv); \
51 sal_detail_deinitialize(); \
55 #define SAL_MAIN_IMPL \
56 int SAL_DLLPUBLIC_EXPORT SAL_CALL main(int argc, char ** argv) \
59 sal_detail_initialize(argc, argv); \
61 sal_detail_deinitialize(); \
77 # define WINAPI __stdcall
80 #if !defined(DECLARE_HANDLE)
83 # define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
87 # define DECLARE_HANDLE(name) typedef HANDLE name
89 DECLARE_HANDLE(HINSTANCE);
94 #define SAL_WIN_WinMain \
95 int WINAPI WinMain( HINSTANCE _hinst, HINSTANCE _dummy, char* _cmdline, int _nshow ) \
97 int argc = __argc; char ** argv = __argv; \
98 (void) _hinst; (void) _dummy; (void) _cmdline; (void) _nshow; \
99 return main(argc, argv); \
104 # define SAL_WIN_WinMain
110 #define SAL_IMPLEMENT_MAIN_WITH_ARGS(_argc_, _argv_) \
111 static int SAL_CALL sal_main_with_args (int _argc_, char ** _argv_); \
112 SAL_MAIN_WITH_ARGS_IMPL \
114 static int SAL_CALL sal_main_with_args(int _argc_, char ** _argv_)
116 #define SAL_IMPLEMENT_MAIN() \
117 static int SAL_CALL sal_main(void); \
120 static int SAL_CALL sal_main(void)
147 #endif // INCLUDED_SAL_MAIN_H
SAL_DLLPUBLIC void sal_detail_deinitialize()
#define SAL_DLLPUBLIC
Definition: saldllapi.h:30
SAL_DLLPUBLIC void sal_detail_initialize(int argc, char **argv)