SString.inl

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // SString.inl,v 4.3 2005/12/22 01:17:51 shuston Exp
00004 
00005 // Include ACE.h only if it hasn't already been included, e.g., if
00006 // ACE_TEMPLATES_REQUIRE_SOURCE, ACE.h won't have been pulled in by
00007 // String_Base.cpp.
00008 #ifndef ACE_ACE_H
00009 #  include "ace/ACE.h"
00010 #endif /* !ACE_ACE_H */
00011 
00012 #include "ace/OS_NS_stdlib.h"
00013 
00014 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00015 
00016 ACE_INLINE
00017 ACE_NS_WString::ACE_NS_WString (ACE_Allocator *alloc)
00018   : ACE_WString (alloc)
00019 {
00020 }
00021 
00022 ACE_INLINE
00023 ACE_NS_WString::ACE_NS_WString (const ACE_WSTRING_TYPE *s,
00024                                 size_t len,
00025                                 ACE_Allocator *alloc)
00026   : ACE_WString (s, len, alloc)
00027 {
00028 }
00029 
00030 ACE_INLINE
00031 ACE_NS_WString::ACE_NS_WString (const ACE_WSTRING_TYPE *s,
00032                                 ACE_Allocator *alloc)
00033   : ACE_WString (s, alloc)
00034 {
00035 }
00036 
00037 ACE_INLINE
00038 ACE_NS_WString::ACE_NS_WString (size_t len, ACE_Allocator *alloc)
00039   : ACE_WString (len, 0, alloc)
00040 {
00041 }
00042 
00043 ACE_INLINE
00044 ACE_NS_WString::ACE_NS_WString (const ACE_NS_WString &s)
00045   : ACE_WString (s)
00046 {
00047 }
00048 
00049 ACE_INLINE
00050 ACE_NS_WString::ACE_NS_WString (ACE_WSTRING_TYPE c, ACE_Allocator *alloc)
00051   : ACE_WString (c, alloc)
00052 {
00053 }
00054 
00055 ACE_INLINE ACE_NS_WString
00056 operator+ (const ACE_NS_WString &s, const ACE_NS_WString &t)
00057 {
00058   ACE_NS_WString temp (s);
00059   temp += t;
00060   return temp;
00061 }
00062 
00063 // -------------------------------------------------------
00064 
00065 ACE_INLINE
00066 ACE_SString::~ACE_SString (void)
00067 {
00068 }
00069 
00070 ACE_INLINE ACE_SString
00071 ACE_SString::substr (size_t offset,
00072                      ssize_t length) const
00073 {
00074   return this->substring (offset, length);
00075 }
00076 
00077 // Return the <slot'th> character in the string.
00078 
00079 ACE_INLINE char
00080 ACE_SString::operator[] (size_t slot) const
00081 {
00082   ACE_TRACE ("ACE_SString::operator[]");
00083   return this->rep_[slot];
00084 }
00085 
00086 // Return the <slot'th> character in the string by reference.
00087 
00088 ACE_INLINE char &
00089 ACE_SString::operator[] (size_t slot)
00090 {
00091   ACE_TRACE ("ACE_SString::operator[]");
00092   return this->rep_[slot];
00093 }
00094 
00095 // Get the underlying pointer (does not make a copy, so beware!).
00096 
00097 ACE_INLINE const char *
00098 ACE_SString::rep (void) const
00099 {
00100   ACE_TRACE ("ACE_SString::rep");
00101   return this->rep_;
00102 }
00103 
00104 // Get the underlying pointer (does not make a copy, so beware!).
00105 
00106 ACE_INLINE const char *
00107 ACE_SString::fast_rep (void) const
00108 {
00109   ACE_TRACE ("ACE_SString::fast_rep");
00110   return this->rep_;
00111 }
00112 
00113 // Get the underlying pointer (does not make a copy, so beware!).
00114 
00115 ACE_INLINE const char *
00116 ACE_SString::c_str (void) const
00117 {
00118   ACE_TRACE ("ACE_SString::c_str");
00119   return this->rep_;
00120 }
00121 
00122 // Comparison operator.
00123 
00124 ACE_INLINE bool
00125 ACE_SString::operator== (const ACE_SString &s) const
00126 {
00127   ACE_TRACE ("ACE_SString::operator==");
00128   return this->len_ == s.len_
00129     && ACE_OS::strcmp (this->rep_, s.rep_) == 0;
00130 }
00131 
00132 // Less than comparison operator.
00133 
00134 ACE_INLINE bool
00135 ACE_SString::operator < (const ACE_SString &s) const
00136 {
00137   ACE_TRACE ("ACE_SString::operator <");
00138 
00139   return (this->rep_ && s.rep_)
00140     ? ACE_OS::strcmp (this->rep_, s.rep_) < 0
00141     : ((s.rep_) ? true : false);
00142 }
00143 
00144 // Greater than comparison operator.
00145 
00146 ACE_INLINE bool
00147 ACE_SString::operator > (const ACE_SString &s) const
00148 {
00149   ACE_TRACE ("ACE_SString::operator >");
00150 
00151   return (this->rep_ && s.rep_)
00152     ? ACE_OS::strcmp (this->rep_, s.rep_) > 0
00153     : ((this->rep_) ? true : false );
00154 }
00155 
00156 // Comparison operator.
00157 
00158 ACE_INLINE bool
00159 ACE_SString::operator!= (const ACE_SString &s) const
00160 {
00161   ACE_TRACE ("ACE_SString::operator!=");
00162   return !(*this == s);
00163 }
00164 
00165 ACE_INLINE int
00166 ACE_SString::compare (const ACE_SString &s) const
00167 {
00168   ACE_TRACE ("ACE_SString::compare");
00169   return ACE_OS::strcmp (this->rep_, s.rep_);
00170 }
00171 
00172 ACE_INLINE int
00173 ACE_SString::find (const char *s, int pos) const
00174 {
00175   char *substr = this->rep_ + pos;
00176   char *pointer = ACE_OS::strstr (substr, s);
00177   if (pointer == 0)
00178     return ACE_SString::npos;
00179   else
00180     return pointer - this->rep_;
00181 }
00182 
00183 ACE_INLINE int
00184 ACE_SString::find (char c, int pos) const
00185 {
00186   char *substr = this->rep_ + pos;
00187   char *pointer = ACE_OS::strchr (substr, c);
00188   if (pointer == 0)
00189     return ACE_SString::npos;
00190   else
00191     return pointer - this->rep_;
00192 }
00193 
00194 ACE_INLINE int
00195 ACE_SString::strstr (const ACE_SString &s) const
00196 {
00197   ACE_TRACE ("ACE_SString::strstr");
00198 
00199   return this->find (s.rep_);
00200 }
00201 
00202 ACE_INLINE int
00203 ACE_SString::find (const ACE_SString &str, int pos) const
00204 {
00205   return this->find (str.rep_, pos);
00206 }
00207 
00208 ACE_INLINE int
00209 ACE_SString::rfind (char c, int pos) const
00210 {
00211   if (pos == ACE_SString::npos)
00212     pos = static_cast<int> (this->len_);
00213 
00214   for (int i = pos - 1; i >= 0; i--)
00215     if (this->rep_[i] == c)
00216       return i;
00217 
00218   return ACE_SString::npos;
00219 }
00220 
00221 ACE_INLINE u_long
00222 ACE_SString::hash (void) const
00223 {
00224   return ACE::hash_pjw (this->rep_);
00225 }
00226 
00227 ACE_INLINE size_t
00228 ACE_SString::length (void) const
00229 {
00230   ACE_TRACE ("ACE_SString::length");
00231   return this->len_;
00232 }
00233 
00234 ACE_INLINE
00235 ACE_Auto_String_Free::ACE_Auto_String_Free (char* p)
00236   :  p_ (p)
00237 {
00238 }
00239 
00240 ACE_INLINE
00241 ACE_Auto_String_Free::ACE_Auto_String_Free (ACE_Auto_String_Free& rhs)
00242   :  p_ (rhs.p_)
00243 {
00244   rhs.p_ = 0;
00245 }
00246 
00247 ACE_INLINE void
00248 ACE_Auto_String_Free::reset (char* p)
00249 {
00250   if (this->p_ != 0)
00251     ACE_OS::free (this->p_);
00252   this->p_ = p;
00253 }
00254 
00255 ACE_INLINE ACE_Auto_String_Free&
00256 ACE_Auto_String_Free::operator= (ACE_Auto_String_Free& rhs)
00257 {
00258   if (this != &rhs)
00259     {
00260       this->reset (rhs.p_);
00261       rhs.p_ = 0;
00262     }
00263   return *this;
00264 }
00265 
00266 ACE_INLINE
00267 ACE_Auto_String_Free::~ACE_Auto_String_Free (void)
00268 {
00269   this->reset (0);
00270 }
00271 
00272 ACE_INLINE char*
00273 ACE_Auto_String_Free::operator* (void) const
00274 {
00275   return this->p_;
00276 }
00277 
00278 ACE_INLINE char
00279 ACE_Auto_String_Free::operator[] (int i) const
00280 {
00281   return this->p_[i];
00282 }
00283 
00284 ACE_INLINE char*
00285 ACE_Auto_String_Free::get (void) const
00286 {
00287   return this->p_;
00288 }
00289 
00290 ACE_INLINE char*
00291 ACE_Auto_String_Free::release (void)
00292 {
00293   char* p = this->p_;
00294   this->p_ = 0;
00295   return p;
00296 }
00297 
00298 ACE_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 09:42:04 2006 for ACE by doxygen 1.3.6