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_MAIN)
00029 # define ACE_MAIN main
00030 # endif
00031
00032 # if !defined (ACE_WMAIN)
00033 # define ACE_WMAIN wmain
00034 # endif
00035
00036 # if defined (ACE_WIN32) && defined (ACE_USES_WCHAR)
00037 # define ACE_TMAIN wmain
00038 # else
00039 # if defined (ACE_USES_WCHAR)
00040
00041
00042 # include "ace/Argv_Type_Converter.h"
00043 # define ACE_TMAIN \
00044 ace_main_i (int, ACE_TCHAR *[]); \
00045 int main (int argc, char *argv[]) { \
00046 ACE_Argv_Type_Converter wide_argv (argc, argv); \
00047 return ace_main_i (argc, wide_argv.get_TCHAR_argv ()); \
00048 } \
00049 int ace_main_i
00050 # else
00051 # define ACE_TMAIN main
00052 # endif
00053 # endif
00054
00055 # if defined (ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER)
00056 # if !defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER)
00057 # define ACE_HAS_NONSTATIC_OBJECT_MANAGER
00058 # endif
00059 # endif
00060
00061 # if defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER) \
00062 && !defined (ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER)
00063
00064
00065
00066 # if defined (ACE_VXWORKS) && !defined (__RTP__)
00067
00068 typedef int (*ace_main_proc_ptr)(int, char *[]);
00069
00070 extern ace_main_proc_ptr vx_ace_main_i_ptr;
00071
00072 # define main \
00073 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00074 ace_os_main_i (int, char *[]); \
00075 ACE_END_VERSIONED_NAMESPACE_DECL \
00076 int ace_main_i(int, char *[]); \
00077 int \
00078 ACE_MAIN (int argc, char *argv[]) \
00079 { \
00080 vx_ace_main_i_ptr = ace_main_i; \
00081 return ace_os_main_i (argc, argv); \
00082 } \
00083 int \
00084 ace_main_i
00085
00086 # elif !defined (ACE_WIN32)
00087
00088 # define main \
00089 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00090 ace_os_main_i (int, char *[]); \
00091 ACE_END_VERSIONED_NAMESPACE_DECL \
00092 int \
00093 ACE_MAIN (int argc, char *argv[]) \
00094 { \
00095 return ace_os_main_i (argc, argv); \
00096 } \
00097 int \
00098 ace_main_i
00099
00100 # elif !defined (ACE_HAS_WINCE)
00101
00102 # if defined (ACE_WIN32) && defined (ACE_USES_WCHAR)
00103
00104 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00105
00106 class ACE_Export ACE_Main_Base
00107 {
00108 public:
00109 int run (int, ACE_TCHAR *[]);
00110 virtual int run_i (int, ACE_TCHAR *[]) = 0;
00111 };
00112
00113 ACE_END_VERSIONED_NAMESPACE_DECL
00114
00115 # define wmain \
00116 ace_wmain_i (int, ACE_TCHAR *[]); \
00117 ACE_Export int ace_os_wmain_i (ACE_Main_Base&, int, ACE_TCHAR *[]); \
00118 class ACE_Main : public ACE_Main_Base {int run_i (int, ACE_TCHAR *[]);}; \
00119 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00120 { \
00121 return ace_wmain_i (argc, argv); \
00122 } \
00123 int \
00124 ACE_WMAIN (int argc, ACE_TCHAR *argv[]) \
00125 { \
00126 ACE_Main m; \
00127 return ace_os_wmain_i (m, argc, argv); \
00128 } \
00129 int \
00130 ace_wmain_i
00131
00132 # else
00133
00134 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00135
00136 class ACE_Export ACE_Main_Base
00137 {
00138 public:
00139 int run (int, char *[]);
00140 virtual int run_i (int, char *[]) = 0;
00141 };
00142
00143 ACE_END_VERSIONED_NAMESPACE_DECL
00144
00145 # define main \
00146 ace_main_i (int, char *[]); \
00147 ACE_BEGIN_VERSIONED_NAMESPACE_DECL \
00148 ACE_Export int ace_os_main_i (ACE_Main_Base&, int, char *[]); \
00149 class ACE_Main : public ACE_Main_Base {int run_i (int, char *[]);}; \
00150 inline int ACE_Main::run_i (int argc, char *argv[]) \
00151 { \
00152 return ace_main_i (argc, argv); \
00153 } \
00154 ACE_END_VERSIONED_NAMESPACE_DECL \
00155 int \
00156 ACE_MAIN (int argc, char *argv[]) \
00157 { \
00158 ACE_Main m; \
00159 return ace_os_main_i (m, argc, argv); \
00160 } \
00161 int \
00162 ace_main_i
00163
00164 # endif
00165
00166 # else
00167
00168 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00169
00170 class ACE_Export ACE_Main_Base
00171 {
00172 public:
00173 int run (HINSTANCE, HINSTANCE, LPWSTR, int);
00174 virtual int run_i (int, ACE_TCHAR *[]) = 0;
00175 };
00176
00177 ACE_END_VERSIONED_NAMESPACE_DECL
00178
00179 # if defined (ACE_TMAIN) // Use WinMain on CE; others give warning/error.
00180 # undef ACE_TMAIN
00181 # endif // ACE_TMAIN
00182
00183
00184
00185
00186 # define ACE_TMAIN \
00187 ace_tmain_i (int, ACE_TCHAR *[]); \
00188 class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);}; \
00189 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00190 { \
00191 return ace_tmain_i (argc, argv); \
00192 } \
00193 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) \
00194 { \
00195 ACE_Main m; \
00196 return m.run (hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00197 } \
00198 int ace_tmain_i
00199
00200
00201
00202 # define wmain \
00203 ace_wmain_i (int, ACE_TCHAR *[]); \
00204 ACE_Export int ace_os_winwmain_i (ACE_Main_Base&, hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00205 class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);}; \
00206 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00207 { \
00208 return ace_wmain_i (argc, argv); \
00209 } \
00210 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) \
00211 { \
00212 return ace_os_winwmain_i (hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00213 } \
00214 int ace_wmain_i
00215
00216
00217
00218
00219 # include "ace/Argv_Type_Converter.h"
00220 # define main \
00221 ace_main_i (int, ACE_TCHAR *[]); \
00222 ACE_Export int ace_os_winmain_i (ACE_Main_Base&, hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00223 class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);}; \
00224 inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[]) \
00225 { \
00226 return ace_main_i (argc, argv); \
00227 } \
00228 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) \
00229 { \
00230 return ace_os_winmain_i (hInstance, hPrevInstance, lpCmdLine, nCmdShow); \
00231 } \
00232 int ace_main_i
00233
00234 # endif
00235 # endif
00236
00237 # include "ace/post.h"
00238
00239 #endif