00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "ace/ACE_export.h"
00018
00019 #ifndef ACE_OS_MAIN_H
00020 # define ACE_OS_MAIN_H
00021
00022 # include "ace/pre.h"
00023
00024 # if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 # endif
00027
00028 # if defined (ACE_HAS_RTEMS)
00029 extern char* rtems_progname;
00030 # endif
00031
00032 # if !defined (ACE_MAIN)
00033 # define ACE_MAIN main
00034 # endif
00035
00036 # if !defined (ACE_WMAIN)
00037 # define ACE_WMAIN wmain
00038 # endif
00039
00040 # if defined (ACE_WIN32) && defined (ACE_USES_WCHAR)
00041 # define ACE_TMAIN wmain
00042 # else
00043 # if defined (ACE_USES_WCHAR)
00044
00045
00046 # include "ace/Argv_Type_Converter.h"
00047 # define ACE_TMAIN \
00048 ace_main_i (int, ACE_TCHAR *[]); \
00049 int main (int argc, char *argv[]) { \
00050 ACE_Argv_Type_Converter wide_argv (argc, argv); \
00051 return ace_main_i (argc, wide_argv.get_TCHAR_argv ()); \
00052 } \
00053 int ace_main_i
00054 # else
00055 # define ACE_TMAIN main
00056 # endif
00057 # endif
00058
00059 # if defined (ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER)
00060 # if !defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER)
00061 # define ACE_HAS_NONSTATIC_OBJECT_MANAGER
00062 # endif
00063 # endif
00064
00065 # if defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER) \
00066 && !defined (ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER)
00067
00068
00069
00070 # if defined (ACE_VXWORKS) && !defined (__RTP__)
00071
00072 typedef int (*ace_main_proc_ptr)(int, char *[]);
00073
00074 extern ace_main_proc_ptr vx_ace_main_i_ptr;
00075
00076 # define main \
00077 ACE_MAIN (int, char *[]); \
00078 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00079 int ace_os_main_i (int, char *[]); \
00080 ACE_END_VERSIONED_NAMESPACE_DECL \
00081 int ace_main_i(int, char *[]); \
00082 int \
00083 ACE_MAIN (int argc, char *argv[]) \
00084 { \
00085 vx_ace_main_i_ptr = ace_main_i; \
00086 return ace_os_main_i (argc, argv); \
00087 } \
00088 int \
00089 ace_main_i
00090
00091 # elif defined (ACE_HAS_RTEMS)
00092
00093 # define main \
00094 ACE_MAIN (int, char *[]); \
00095 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00096 int ace_os_main_i (int, char *[]); \
00097 ACE_END_VERSIONED_NAMESPACE_DECL \
00098 int \
00099 ACE_MAIN (int argc, char *argv[]) \
00100 { \
00101 if ((argc > 0) && argv && argv[0]) \
00102 rtems_progname = argv[0]; \
00103 else \
00104 rtems_progname = "RTEMS"; \
00105 return ace_os_main_i (argc, argv); \
00106 } \
00107 int \
00108 ace_main_i
00109
00110 # elif !defined (ACE_WIN32)
00111
00112 # define main \
00113 ACE_MAIN (int, char *[]); \
00114 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00115 int ace_os_main_i (int, char *[]); \
00116 ACE_END_VERSIONED_NAMESPACE_DECL \
00117 int \
00118 ACE_MAIN (int argc, char *argv[]) \
00119 { \
00120 return ace_os_main_i (argc, argv); \
00121 } \
00122 int \
00123 ace_main_i
00124
00125 # elif !defined (ACE_HAS_WINCE)
00126
00127 # if defined (ACE_WIN32) && defined (ACE_USES_WCHAR)
00128
00129 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00130
00131 class ACE_Export ACE_Main_Base
00132 {
00133 public:
00134 int run (int, ACE_TCHAR *[]);
00135 virtual int run_i (int, ACE_TCHAR *[]) = 0;
00136 };
00137
00138 ACE_END_VERSIONED_NAMESPACE_DECL
00139
00140 # define wmain \
00141 ace_wmain_i (int, ACE_TCHAR *[]); \
00142 ACE_Export int ace_os_wmain_i (ACE_Main_Base&, int, ACE_TCHAR *[]); \
00143 class ACE_Main : public ACE_Main_Base {int run_i (int, ACE_TCHAR *[]);}; \
00144 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00145 { \
00146 return ace_wmain_i (argc, argv); \
00147 } \
00148 int \
00149 ACE_WMAIN (int argc, ACE_TCHAR *argv[]) \
00150 { \
00151 ACE_Main m; \
00152 return ace_os_wmain_i (m, argc, argv); \
00153 } \
00154 int \
00155 ace_wmain_i
00156
00157 # else
00158
00159 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00160
00161 class ACE_Export ACE_Main_Base
00162 {
00163 public:
00164 ACE_Main_Base ();
00165 virtual ~ACE_Main_Base ();
00166 int run (int, char *[]);
00167 virtual int run_i (int, char *[]) = 0;
00168 };
00169
00170 ACE_END_VERSIONED_NAMESPACE_DECL
00171
00172
00173
00174
00175
00176
00177
00178 # if defined (ACE_BUILD_LABVIEW_EXE_AS_DLL)
00179 extern "C" __declspec (dllexport) int main (int, char *[]);
00180 # endif
00181
00182 # define main \
00183 ace_main_i (int, char *[]); \
00184 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00185 ACE_Export int ace_os_main_i (ACE_Main_Base&, int, char *[]); \
00186 class ACE_Main : public ACE_Main_Base {int run_i (int, char *[]);}; \
00187 inline int ACE_Main::run_i (int argc, char *argv[]) \
00188 { \
00189 return ace_main_i (argc, argv); \
00190 } \
00191 ACE_END_VERSIONED_NAMESPACE_DECL \
00192 int \
00193 ACE_MAIN (int argc, char *argv[]) \
00194 { \
00195 ACE_Main m; \
00196 return m.run (argc, argv); \
00197 } \
00198 int \
00199 ace_main_i
00200
00201 # endif
00202
00203 # else
00204
00205 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00206
00207 class ACE_Export ACE_Main_Base
00208 {
00209 public:
00210 int run (HINSTANCE, HINSTANCE, LPWSTR, int);
00211 virtual int run_i (int, ACE_TCHAR *[]) = 0;
00212 };
00213
00214 ACE_END_VERSIONED_NAMESPACE_DECL
00215
00216 # if defined (ACE_TMAIN) // Use WinMain on CE; others give warning/error.
00217 # undef ACE_TMAIN
00218 # endif // ACE_TMAIN
00219
00220
00221
00222
00223 # define ACE_TMAIN \
00224 ace_tmain_i (int, ACE_TCHAR *[]); \
00225 class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);}; \
00226 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00227 { \
00228 return ace_tmain_i (argc, argv); \
00229 } \
00230 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) \
00231 { \
00232 ACE_Main m; \
00233 return m.run (hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00234 } \
00235 int ace_tmain_i
00236
00237
00238
00239 # define wmain \
00240 ace_wmain_i (int, ACE_TCHAR *[]); \
00241 ACE_Export int ace_os_winwmain_i (ACE_Main_Base&, hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00242 class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);}; \
00243 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00244 { \
00245 return ace_wmain_i (argc, argv); \
00246 } \
00247 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) \
00248 { \
00249 return ace_os_winwmain_i (hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00250 } \
00251 int ace_wmain_i
00252
00253
00254
00255
00256 # include "ace/Argv_Type_Converter.h"
00257 # define main \
00258 ace_main_i (int, ACE_TCHAR *[]); \
00259 ACE_Export int ace_os_winmain_i (ACE_Main_Base&, hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00260 class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);}; \
00261 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00262 { \
00263 return ace_main_i (argc, argv); \
00264 } \
00265 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) \
00266 { \
00267 return ace_os_winmain_i (hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00268 } \
00269 int ace_main_i
00270
00271 # endif
00272 # endif
00273
00274 # include "ace/post.h"
00275
00276 #endif