diff options
Diffstat (limited to 'ace/Argv_Type_Converter.cpp')
-rw-r--r-- | ace/Argv_Type_Converter.cpp | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/ace/Argv_Type_Converter.cpp b/ace/Argv_Type_Converter.cpp deleted file mode 100644 index 2fca97a0671..00000000000 --- a/ace/Argv_Type_Converter.cpp +++ /dev/null @@ -1,210 +0,0 @@ -// $Id$ - -#include "ace/Argv_Type_Converter.h" - -#if !defined (__ACE_INLINE__) -#include "ace/Argv_Type_Converter.inl" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID (ace, - Argv_Type_Converter, - "$Id$") - -#include "ace/OS_NS_string.h" -#include "ace/OS_Errno.h" - -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -#if defined (ACE_USES_WCHAR) -ACE_Argv_Type_Converter::ACE_Argv_Type_Converter (int &argc, wchar_t** argv) - : saved_argc_ (argc) - , char_argv_ (0) - , wchar_argv_ (argv) - , before_pass_argc_ (argc) - , original_type_ (1) - , wchar_passed_ (0) - , char_passed_ (0) -{ - this->initialize (); - - for (int i = 0; i < argc; ++i) - { - this->char_argv_[i] = - ACE_OS::strdup (ACE_TEXT_ALWAYS_CHAR (argv[i])); - } -} -#endif // ACE_USES_WCHAR - - -ACE_Argv_Type_Converter::ACE_Argv_Type_Converter (int &argc, char** argv) - : saved_argc_(argc) - , char_argv_(argv) -#if defined (ACE_USES_WCHAR) - , wchar_argv_(0) - , before_pass_argc_(argc) - , original_type_(0) - , wchar_passed_(0) - , char_passed_(0) -{ - this->initialize(); - - for (int i = 0; i < argc; ++i) - { - this->wchar_argv_[i] = - ACE_OS::strdup (ACE_TEXT_ANTI_TO_TCHAR (argv[i])); - } -} -#else -{ -} -#endif // ACE_USES_WCHAR - -ACE_Argv_Type_Converter::~ACE_Argv_Type_Converter (void) -{ -#if defined (ACE_USES_WCHAR) - // selectively delete the 'copy' of argv - if (this->original_type_) - { - // if original type is wchar_t - if (this->char_passed_) - { - this->align_wchar_with_char(); - } - for (int i = 0; i < this->before_pass_argc_; ++i) - { - ACE_OS::free (this->char_argv_[i]); - } - delete [] this->char_argv_; - } - else - { - // if original type is char - if (this->wchar_passed_) { - this->align_char_with_wchar (); - } - for (int i = 0; i < this->before_pass_argc_; ++i) - { - ACE_OS::free (this->wchar_argv_[i]); - } - delete [] this->wchar_argv_; - } -#endif // ACE_USES_WCHAR -} - -#if defined (ACE_USES_WCHAR) -void -ACE_Argv_Type_Converter::initialize (void) -{ - if (this->original_type_) - { // make a copy of argv in 'char' type - // Create one more argv entry than original argc for the NULL. - ACE_NEW (char_argv_, char*[this->saved_argc_ + 1]); - this->char_argv_[saved_argc_] = 0; // last entry of argv is - // always a NULL - } - else - { // make a copy of argv in 'wchar_t' type - ACE_NEW (this->wchar_argv_, wchar_t*[this->saved_argc_ + 1]); - this->wchar_argv_[saved_argc_] = 0; - } -} - - -void -ACE_Argv_Type_Converter::align_char_with_wchar (void) -{ - int wchar_argv_index = 0; - wchar_t* match_argv = this->wchar_argv_[0]; // pick the initial entry - - while (wchar_argv_index < this->saved_argc_) - { - // if n'th entries of both argv lists are different - if (ACE_OS::strcmp(this->char_argv_[wchar_argv_index], - ACE_TEXT_ALWAYS_CHAR (match_argv)) != 0) - { - // loop through the wchar argv list entries that are after - // wchar_argv_index - for (int i = wchar_argv_index + 1; i < before_pass_argc_; ++i) - { - if (ACE_OS::strcmp (this->char_argv_[i], - ACE_TEXT_ALWAYS_CHAR (match_argv)) - == 0) - { - // swap the pointers in the char argv list - char* temp = this->char_argv_[wchar_argv_index]; - this->char_argv_[wchar_argv_index] = this->char_argv_[i]; - this->char_argv_[i] = temp; - break; - } - } - } - - // move to the next wchar argv list entry - match_argv = this->wchar_argv_[++wchar_argv_index]; - } - - this->cleanup (); -} - -void -ACE_Argv_Type_Converter::align_wchar_with_char (void) -{ - int char_argv_index = 0; - char* match_argv = this->char_argv_[0]; // pick the initial entry - - while (char_argv_index < saved_argc_) - { - // if n'th entries of both argv lists are different - if (ACE_OS::strcmp ( - ACE_TEXT_ALWAYS_CHAR (this->wchar_argv_[char_argv_index]), - match_argv) != 0) - { - // loop through the wchar argv list entries that are after - // wchar_argv_index - for (int i = char_argv_index + 1; i < this->before_pass_argc_; ++i) - { - if (ACE_OS::strcmp ( - ACE_TEXT_ALWAYS_CHAR(this->wchar_argv_[i]), - match_argv) == 0) { - // swap the pointers in the char argv list - wchar_t* temp = this->wchar_argv_[char_argv_index]; - this->wchar_argv_[char_argv_index] = this->wchar_argv_[i]; - this->wchar_argv_[i] = temp; - break; - } - } - } - - // move to the next wchar argv list entry - match_argv = this->char_argv_[++char_argv_index]; - } - - this->cleanup(); -} - -void -ACE_Argv_Type_Converter::cleanup (void) -{ - for (int i = this->saved_argc_; i < this->before_pass_argc_; ++i) - { - // Check whether it's ours to delete. - if (original_type_ == 1) - { - ACE_OS::free (this->char_argv_[i]); - this->char_argv_[i] = 0; - } - else - { - ACE_OS::free (this->wchar_argv_[i]); - this->wchar_argv_[i] = 0; - } - } - - this->before_pass_argc_ = this->saved_argc_; - - this->wchar_passed_ = 0; - this->char_passed_ = 0; -} -#endif // ACE_USES_WCHAR - -ACE_END_VERSIONED_NAMESPACE_DECL |