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