20 #ifndef INCLUDED_SAL_MAIN_H
21 #define INCLUDED_SAL_MAIN_H
36 #if defined LIBO_INTERNAL_ONLY && defined __cplusplus
40 namespace sal::detail { constexpr
int InitializeSoffice = -1; }
46 #if !(defined IOS || defined ANDROID)
49 #define SAL_MAIN_WITH_ARGS_IMPL \
50 int SAL_DLLPUBLIC_EXPORT SAL_CALL main(int argc, char ** argv) \
53 sal_detail_initialize(argc, argv); \
54 ret = sal_main_with_args(argc, argv); \
55 sal_detail_deinitialize(); \
59 #define SAL_MAIN_IMPL \
60 int SAL_DLLPUBLIC_EXPORT SAL_CALL main(int argc, char ** argv) \
63 sal_detail_initialize(argc, argv); \
65 sal_detail_deinitialize(); \
81 # define WINAPI __stdcall
84 #if !defined(DECLARE_HANDLE)
87 # define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
91 # define DECLARE_HANDLE(name) typedef HANDLE name
93 DECLARE_HANDLE(HINSTANCE);
98 #define SAL_WIN_WinMain \
99 int WINAPI WinMain( HINSTANCE _hinst, HINSTANCE _dummy, char* _cmdline, int _nshow ) \
101 int argc = __argc; char ** argv = __argv; \
102 (void) _hinst; (void) _dummy; (void) _cmdline; (void) _nshow; \
103 return main(argc, argv); \
108 # define SAL_WIN_WinMain
114 #define SAL_IMPLEMENT_MAIN_WITH_ARGS(_argc_, _argv_) \
115 static int SAL_CALL sal_main_with_args (int _argc_, char ** _argv_); \
116 SAL_MAIN_WITH_ARGS_IMPL \
118 static int SAL_CALL sal_main_with_args(int _argc_, char ** _argv_)
120 #define SAL_IMPLEMENT_MAIN() \
121 static int SAL_CALL sal_main(void); \
124 static int SAL_CALL sal_main(void)
SAL_DLLPUBLIC void sal_detail_deinitialize(void)
SAL_DLLPUBLIC void sal_detail_initialize(int argc, char **argv)
#define SAL_DLLPUBLIC
Definition: saldllapi.h:30