00001 #include "ace/Local_Name_Space.h"
00002 #include "ace/ACE.h"
00003 #include "ace/RW_Process_Mutex.h"
00004 #include "ace/SString.h"
00005 #include "ace/OS_NS_string.h"
00006 #include "ace/Truncate.h"
00007
00008 ACE_RCSID (ace,
00009 Local_Name_Space,
00010 "$Id: Local_Name_Space.cpp 79053 2007-07-28 23:01:47Z shuston $")
00011
00012 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00013
00014 ACE_NS_String::~ACE_NS_String (void)
00015 {
00016 if (this->delete_rep_)
00017 delete [] this->rep_;
00018 }
00019
00020 ACE_WCHAR_T *
00021 ACE_NS_String::fast_rep (void) const
00022 {
00023 ACE_TRACE ("ACE_NS_String::fast_rep");
00024 return this->rep_;
00025 }
00026
00027 ACE_NS_String::operator ACE_NS_WString () const
00028 {
00029 ACE_TRACE ("ACE_NS_String::operator ACE_NS_WString");
00030 return ACE_NS_WString (this->rep_,
00031 (this->len_ / sizeof (ACE_WCHAR_T)) - 1);
00032 }
00033
00034 size_t
00035 ACE_NS_String::len (void) const
00036 {
00037 ACE_TRACE ("ACE_NS_String::len");
00038 return this->len_;
00039 }
00040
00041 char *
00042 ACE_NS_String::char_rep (void) const
00043 {
00044 ACE_TRACE ("ACE_NS_String::char_rep");
00045 ACE_NS_WString w_string (this->rep_,
00046 (this->len_ / sizeof (ACE_WCHAR_T)) - 1);
00047 return w_string.char_rep ();
00048 }
00049
00050 ACE_NS_String::ACE_NS_String (void)
00051 : len_ (0),
00052 rep_ (0),
00053 delete_rep_ (0)
00054 {
00055 ACE_TRACE ("ACE_NS_String::ACE_NS_String");
00056 }
00057
00058 ACE_NS_String::ACE_NS_String (const ACE_NS_WString &s)
00059 : len_ ((s.length () + 1) * sizeof (ACE_WCHAR_T)),
00060 rep_ (s.rep ()),
00061 delete_rep_ (1)
00062 {
00063 ACE_TRACE ("ACE_NS_String::ACE_NS_String");
00064 }
00065
00066 int
00067 ACE_NS_String::strstr (const ACE_NS_String &s) const
00068 {
00069 ACE_TRACE ("ACE_NS_String::strstr");
00070
00071 if (this->len_ < s.len_)
00072
00073 return -1;
00074 else if (this->len_ == s.len_)
00075
00076 return *this == s ? 0 : -1;
00077 else
00078 {
00079
00080 const size_t len = (this->len_ - s.len_) / sizeof (ACE_WCHAR_T);
00081 const size_t pat_len = s.len_ / sizeof (ACE_WCHAR_T) - 1;
00082
00083 for (size_t i = 0; i <= len; ++i)
00084 {
00085 size_t j;
00086
00087 for (j = 0; j < pat_len; ++j)
00088 if (this->rep_[i + j] != s.rep_[j])
00089 break;
00090
00091 if (j == pat_len)
00092
00093 return ACE_Utils::truncate_cast<int> (i);
00094 }
00095
00096 return -1;
00097 }
00098 }
00099
00100 bool
00101 ACE_NS_String::operator == (const ACE_NS_String &s) const
00102 {
00103 ACE_TRACE ("ACE_NS_String::operator ==");
00104 return this->len_ == s.len_
00105 && ACE_OS::memcmp ((void *) this->rep_,
00106 (void *) s.rep_, this->len_) == 0;
00107 }
00108
00109 bool
00110 ACE_NS_String::operator != (const ACE_NS_String &s) const
00111 {
00112 ACE_TRACE ("ACE_NS_String::operator !=");
00113 return !this->operator == (s);
00114 }
00115
00116 ACE_NS_String::ACE_NS_String (ACE_WCHAR_T *dst,
00117 const ACE_WCHAR_T *src,
00118 size_t bytes)
00119 : len_ (bytes),
00120 rep_ (dst),
00121 delete_rep_ (0)
00122 {
00123 ACE_TRACE ("ACE_NS_String::ACE_NS_String");
00124 ACE_OS::memcpy (this->rep_, src, bytes);
00125 }
00126
00127 u_long
00128 ACE_NS_String::hash (void) const
00129 {
00130 return ACE::hash_pjw
00131 (reinterpret_cast<char *> (const_cast<ACE_WCHAR_T *> (this->rep_)),
00132 this->len_);
00133 }
00134
00135 ACE_NS_Internal::ACE_NS_Internal (void)
00136 : value_ (),
00137 type_ ()
00138 {
00139 }
00140
00141 ACE_NS_Internal::ACE_NS_Internal (ACE_NS_String &value, const char *type)
00142 : value_ (value),
00143 type_ (type)
00144 {
00145 ACE_TRACE ("ACE_NS_Internal::ACE_NS_Internal");
00146 }
00147
00148 bool
00149 ACE_NS_Internal::operator == (const ACE_NS_Internal &s) const
00150 {
00151 ACE_TRACE ("ACE_NS_Internal::operator ==");
00152 return this->value_ == s.value_;
00153 }
00154
00155 ACE_NS_String
00156 ACE_NS_Internal::value (void)
00157 {
00158 ACE_TRACE ("ACE_NS_Internal::value");
00159 return this->value_;
00160 }
00161
00162 const char *
00163 ACE_NS_Internal::type (void)
00164 {
00165 ACE_TRACE ("ACE_NS_Internal::type");
00166 return this->type_;
00167 }
00168
00169 ACE_END_VERSIONED_NAMESPACE_DECL