Go to the documentation of this file.00001
00002
00003 #include "ace/OS_main.h"
00004
00005 ACE_RCSID(ace, OS_main, "$Id: OS_main.cpp 85662 2009-06-16 15:17:31Z mitza $")
00006
00007 #if !defined (ACE_DOESNT_DEFINE_MAIN)
00008
00009 #if defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER) && !defined (ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER)
00010
00011 #include "ace/Init_ACE.h"
00012
00013 # if !defined (ACE_HAS_MINIMAL_ACE_OS)
00014 # include "ace/Object_Manager.h"
00015 # endif
00016
00017
00018
00019
00020
00021
00022
00023
00024 # if !defined (ACE_MAIN_OBJECT_MANAGER)
00025 # define ACE_MAIN_OBJECT_MANAGER \
00026 ACE_OS_Object_Manager ace_os_object_manager; \
00027 ACE_Object_Manager ace_object_manager;
00028 # endif
00029
00030 # if !defined (ACE_WIN32)
00031
00032 # if !(defined (ACE_VXWORKS) && !defined (__RTP__))
00033
00034 extern int ace_main_i (int, char *[]);
00035 # endif
00036
00037 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00038
00039 # if defined (ACE_VXWORKS) && !defined (__RTP__)
00040 ace_main_proc_ptr vx_ace_main_i_ptr = 0;
00041
00042 int ace_os_main_i (int argc, char *argv[])
00043 {
00044 ACE_MAIN_OBJECT_MANAGER
00045 return vx_ace_main_i_ptr ? (*vx_ace_main_i_ptr) (argc, argv) : (-1);
00046 }
00047 # else
00048 ACE_Export int
00049 ace_os_main_i (int argc, char *argv[])
00050 {
00051 ACE_MAIN_OBJECT_MANAGER
00052 return ace_main_i (argc, argv);
00053 }
00054 # endif
00055
00056 ACE_END_VERSIONED_NAMESPACE_DECL
00057
00058 # elif !defined (ACE_HAS_WINCE)
00059
00060 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00061
00062 # if defined (ACE_WIN32) && defined (ACE_USES_WCHAR)
00063 int ACE_Main_Base::run (int argc, ACE_TCHAR *argv[])
00064 {
00065 return this->run_i (argc, argv);
00066 }
00067
00068 ACE_Export int
00069 ace_os_wmain_i (ACE_Main_Base &mbase, int argc, ACE_TCHAR *argv[])
00070 {
00071 ACE_MAIN_OBJECT_MANAGER
00072 return mbase.run (argc, argv);
00073 }
00074 # else
00075
00076 ACE_Main_Base::ACE_Main_Base ()
00077 {
00078 ACE::init ();
00079 }
00080
00081 ACE_Main_Base::~ACE_Main_Base ()
00082 {
00083 ACE::fini ();
00084 }
00085
00086 int ACE_Main_Base::run (int argc, char *argv[])
00087 {
00088 return this->run_i (argc, argv);
00089 }
00090
00091 ACE_Export int
00092 ace_os_main_i (ACE_Main_Base &mbase, int argc, char *argv[])
00093 {
00094 ACE_MAIN_OBJECT_MANAGER
00095 return mbase.run (argc, argv);
00096 }
00097 # endif
00098
00099 ACE_END_VERSIONED_NAMESPACE_DECL
00100
00101 # else
00102
00103
00104
00105 # include "ace/OS_NS_string.h"
00106 # include "ace/OS_NS_ctype.h"
00107 # include "ace/ACE.h"
00108 # include "ace/ARGV.h"
00109
00110 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00111
00112 ACE_Main_Base::~ACE_Main_Base ()
00113 {
00114 }
00115
00116 int ACE_Main_Base::run (HINSTANCE,
00117 HINSTANCE,
00118 LPWSTR lpCmdLine,
00119 int)
00120 {
00121 ACE_TCHAR cmdline[1024];
00122 ACE_TCHAR msg_file [MAXPATHLEN];
00123 if (ACE_TEXT_GetModuleFileName (0, msg_file, MAXPATHLEN))
00124 {
00125 bool quote = false;
00126 for (size_t i(0); !quote && msg_file[i]; ++i)
00127 {
00128 if (ACE_OS::ace_isspace (msg_file[i])) quote = true;
00129 }
00130 ACE_TCHAR *cmd_iter = cmdline;
00131 if (quote)
00132 {
00133 *cmd_iter++ = ACE_TEXT ('"');
00134 }
00135 ACE_OS::strcpy (cmd_iter, msg_file);
00136 ACE_OS::strcat (cmd_iter, quote ? ACE_TEXT ("\" ") : ACE_TEXT (" "));
00137 }
00138 else
00139 {
00140 ACE_OS::strcpy (cmdline, ACE_TEXT ("program "));
00141 }
00142 ACE_OS::strcat (cmdline, ACE_TEXT_WCHAR_TO_TCHAR (lpCmdLine));
00143 ACE_ARGV ce_argv (cmdline);
00144 ACE::init ();
00145 ACE_MAIN_OBJECT_MANAGER
00146 int const i = this->run_i (ce_argv.argc (), ce_argv.argv ());
00147 ACE::fini ();
00148 return i;
00149 }
00150 ACE_END_VERSIONED_NAMESPACE_DECL
00151
00152 # endif
00153
00154 #endif
00155
00156 #endif
00157