ACE_Argv_Type_Converter Class Reference

To convert 'char' input/command line parameter to 'wchar_t'. More...

#include <Argv_Type_Converter.h>

List of all members.

Public Member Functions

 ACE_Argv_Type_Converter (int &argc, char **argv)
 ~ACE_Argv_Type_Converter (void)
ACE_TCHAR ** get_TCHAR_argv (void)
 Returns the pointer of converted command line.

char ** get_ASCII_argv (void)
 Returns the pointer of ASCII (char) command line.

int & get_argc (void)
 Returns the number of sub paramters (argc).


Private Member Functions

 ACE_Argv_Type_Converter (const ACE_Argv_Type_Converter &)
 Copy Constructor should not be used.

ACE_Argv_Type_Converter operator= (const ACE_Argv_Type_Converter &)
 Assignment '=' operator should not be used.


Private Attributes

int & saved_argc_
 Original number of input paramter, same as 'argc'.

char ** char_argv_
 Data member pointer that contains converted argv in ACE_ANTI_TCHAR.


Detailed Description

To convert 'char' input/command line parameter to 'wchar_t'.

This class is to convert 'char' type command line paramter to wide-character (wchar_t) format and stores the copy of it. This is useful for all classes that use 'char**' argv but cannot be converted into 'ACE_TCHAR**' version. Note that the converted data will be lost upon destruction, so classes should use this class as their data member.

Definition at line 39 of file Argv_Type_Converter.h.


Constructor & Destructor Documentation

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_Argv_Type_Converter::ACE_Argv_Type_Converter int &  argc,
char **  argv
 

Definition at line 36 of file Argv_Type_Converter.cpp.

References ACE_TEXT_ANTI_TO_TCHAR, and ACE_OS::strdup().

00037   : saved_argc_(argc),
00038     char_argv_(argv)
00039 #if defined (ACE_USES_WCHAR)
00040     , wchar_argv_(0),
00041     before_pass_argc_(argc),
00042     original_type_(0),
00043     wchar_passed_(0),
00044     char_passed_(0)
00045 {
00046   this->initialize();
00047 
00048   for (int i = 0; i < argc; ++i)
00049     this->wchar_argv_[i] = ACE_OS::strdup (ACE_TEXT_ANTI_TO_TCHAR (argv[i]));
00050 }
00051 #else
00052 {
00053 }

ACE_Argv_Type_Converter::~ACE_Argv_Type_Converter void   ) 
 

Definition at line 56 of file Argv_Type_Converter.cpp.

References char_argv_, and ACE_OS::free().

00057 {
00058 #if defined (ACE_USES_WCHAR)
00059   // selectively delete the 'copy' of argv
00060   if (this->original_type_)
00061     {
00062       // if original type is wchar_t
00063       if (this->char_passed_)
00064         this->align_wchar_with_char ();
00065 
00066       for (int i = 0; i < this->before_pass_argc_; ++i)
00067         ACE_OS::free (this->char_argv_[i]);
00068 
00069       delete [] this->char_argv_;
00070     }
00071   else
00072     {
00073       // if original type is char
00074       if (this->wchar_passed_) 
00075         this->align_char_with_wchar ();
00076 
00077       for (int i = 0; i < this->before_pass_argc_; ++i)
00078         ACE_OS::free (this->wchar_argv_[i]);
00079 
00080       delete [] this->wchar_argv_;
00081     }
00082 #endif  // ACE_USES_WCHAR
00083 }

ACE_Argv_Type_Converter::ACE_Argv_Type_Converter const ACE_Argv_Type_Converter  )  [private]
 

Copy Constructor should not be used.


Member Function Documentation

ACE_INLINE int & ACE_Argv_Type_Converter::get_argc void   ) 
 

Returns the number of sub paramters (argc).

Definition at line 39 of file Argv_Type_Converter.inl.

References saved_argc_.

00040 {
00041   return this->saved_argc_;
00042 }

ACE_INLINE char ** ACE_Argv_Type_Converter::get_ASCII_argv void   ) 
 

Returns the pointer of ASCII (char) command line.

Definition at line 24 of file Argv_Type_Converter.inl.

References char_argv_.

00025 {
00026 #if defined (ACE_USES_WCHAR)
00027   if (this->wchar_passed_)
00028     {
00029       this->align_char_with_wchar ();
00030     }
00031 
00032   this->char_passed_ = 1;
00033 #endif  // ACE_USES_WCHAR
00034 
00035   return this->char_argv_;
00036 }

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_TCHAR ** ACE_Argv_Type_Converter::get_TCHAR_argv void   ) 
 

Returns the pointer of converted command line.

Definition at line 8 of file Argv_Type_Converter.inl.

References char_argv_.

00009 {
00010 #if defined (ACE_USES_WCHAR)
00011   if (this->char_passed_)
00012     {
00013       this->align_wchar_with_char ();
00014     }
00015 
00016   this->wchar_passed_ = true;
00017   return this->wchar_argv_;
00018 #else
00019   return this->char_argv_;
00020 #endif  // ACE_USES_WCHAR
00021 }

ACE_Argv_Type_Converter ACE_Argv_Type_Converter::operator= const ACE_Argv_Type_Converter  )  [private]
 

Assignment '=' operator should not be used.


Member Data Documentation

char** ACE_Argv_Type_Converter::char_argv_ [private]
 

Data member pointer that contains converted argv in ACE_ANTI_TCHAR.

Definition at line 90 of file Argv_Type_Converter.h.

Referenced by get_ASCII_argv(), get_TCHAR_argv(), and ~ACE_Argv_Type_Converter().

int& ACE_Argv_Type_Converter::saved_argc_ [private]
 

Original number of input paramter, same as 'argc'.

Definition at line 87 of file Argv_Type_Converter.h.

Referenced by get_argc().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:19:12 2006 for ACE by doxygen 1.3.6