diff options
Diffstat (limited to 'TAO/tao/CORBA_String.cpp')
-rw-r--r-- | TAO/tao/CORBA_String.cpp | 72 |
1 files changed, 25 insertions, 47 deletions
diff --git a/TAO/tao/CORBA_String.cpp b/TAO/tao/CORBA_String.cpp index 583be67aded..6c49706b60b 100644 --- a/TAO/tao/CORBA_String.cpp +++ b/TAO/tao/CORBA_String.cpp @@ -1,5 +1,5 @@ -#include "tao/CORBA_String.h" -#include "tao/Managed_Types.h" +#include "CORBA_String.h" +#include "Managed_Types.h" #include "ace/OS_NS_string.h" #include "ace/OS_NS_wchar.h" @@ -16,8 +16,6 @@ ACE_RCSID (tao, CORBA_String, "$Id$") -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - char * CORBA::string_dup (const char *str) { @@ -26,84 +24,66 @@ CORBA::string_dup (const char *str) errno = EINVAL; return 0; } + return ACE::String_Conversion::Convert_Out< char >( str ).c_str(); +} - const size_t len = ACE_OS::strlen (str); - - // This allocates an extra byte for the '\0'; - char * copy = CORBA::string_alloc (static_cast<CORBA::ULong> (len)); - - // The memcpy() below assumes that the destination is a valid buffer. - if (copy == 0) +char * +CORBA::string_dup (const WChar *str) +{ + if (!str) { + errno = EINVAL; return 0; } - - ACE_OS::memcpy (copy, - str, - len + 1); - return copy; + return ACE::String_Conversion::Convert_Out< char >( str ).c_str(); } char * CORBA::string_alloc (CORBA::ULong len) { - // Allocate 1 + strlen to accomodate the null terminating character. - - char *s = 0; - ACE_NEW_RETURN (s, - char[size_t (len + 1)], - 0); - - s[0]= '\0'; - - return s; + return ACE::String_Conversion::Allocator_cpp< char >().alloc( len ); } void CORBA::string_free (char *str) { - delete [] str; + ACE::String_Conversion::Allocator_cpp< char >().free( str ); } // **************************************************************** CORBA::WChar* -CORBA::wstring_dup (const WChar *const str) +CORBA::wstring_dup (const WChar * str) { if (!str) { errno = EINVAL; return 0; } + return ACE::String_Conversion::Convert_Out< WChar >( str ).c_str(); +} - CORBA::WChar* retval = - CORBA::wstring_alloc (static_cast <CORBA::ULong> (ACE_OS::strlen (str))); - - // The wscpy() below assumes that the destination is a valid buffer. - if (retval == 0) +CORBA::WChar* +CORBA::wstring_dup (const char *str) +{ + if (!str) { + errno = EINVAL; return 0; } - - return ACE_OS::wscpy (retval, - str); + return ACE::String_Conversion::Convert_Out< WChar >( str ).c_str(); } CORBA::WChar* CORBA::wstring_alloc (CORBA::ULong len) { - CORBA::WChar *s = 0; - ACE_NEW_RETURN (s, - CORBA::WChar [(size_t) (len + 1)], - 0); - - return s; + return ACE::String_Conversion::Allocator_cpp< WChar >().alloc( len ); } void -CORBA::wstring_free (CORBA::WChar *const str) +CORBA::wstring_free (CORBA::WChar * str) { - delete [] str; + ACE::String_Conversion::Allocator_cpp< WChar >().free( str ); } // **************************************************************** @@ -275,7 +255,7 @@ operator>> (istream &is, CORBA::String_out &so) ostream & operator<< (ostream &os, const CORBA::WString_var &wsv) { - const CORBA::ULong len = + const CORBA::ULong len = static_cast <CORBA::ULong> (ACE_OS::strlen (wsv.in ())); for (CORBA::ULong i = 0; i < len; ++i) @@ -351,5 +331,3 @@ operator>> (istream &is, CORBA::WString_out &wso) } #endif /* ACE_LACKS_IOSTREAM_TOTALLY */ - -TAO_END_VERSIONED_NAMESPACE_DECL |