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