HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ustring Class Reference

#include <ustring.h>

Classes

struct  TableRep
 

Public Types

typedef char value_type
 
typedef value_typepointer
 
typedef value_typereference
 
typedef const value_typeconst_reference
 
typedef size_t size_type
 
typedef std::string::const_iterator const_iterator
 
typedef
std::string::const_reverse_iterator 
const_reverse_iterator
 

Public Member Functions

 ustring (void)
 
 ustring (const char *str)
 
 ustring (string_view str)
 
 ustring (const char *str, size_type pos, size_type n)
 
 ustring (const char *str, size_type n)
 
 ustring (size_type n, char c)
 
 ustring (const std::string &str, size_type pos, size_type n=npos)
 
 ustring (const ustring &str)
 
 ustring (const ustring &str, size_type pos, size_type n=npos)
 
 ~ustring ()
 
 operator string_view () const
 Conversion to string_view. More...
 
const ustringassign (const ustring &str)
 
const ustringassign (const ustring &str, size_type pos, size_type n=npos)
 
const ustringassign (const std::string &str)
 
const ustringassign (const std::string &str, size_type pos, size_type n=npos)
 
const ustringassign (const char *str)
 
const ustringassign (const char *str, size_type n)
 
const ustringassign (size_type n, char c)
 
const ustringassign (string_view str)
 Assign a string_view to *this. More...
 
const ustringoperator= (const ustring &str)
 
const ustringoperator= (const char *str)
 
const ustringoperator= (const std::string &str)
 
const ustringoperator= (string_view str)
 
const ustringoperator= (char c)
 
const char * c_str () const
 
const char * data () const
 
const std::string & string () const
 
void clear (void)
 
size_t length (void) const
 
size_t hash (void) const
 
size_t size (void) const
 
bool empty (void) const
 
const_iterator begin () const
 
const_iterator end () const
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator rend () const
 
const_reference operator[] (size_type pos) const
 
size_type copy (char *s, size_type n, size_type pos=0) const
 
ustring substr (size_type pos=0, size_type n=npos) const
 
size_type find (const ustring &str, size_type pos=0) const
 
size_type find (const std::string &str, size_type pos=0) const
 
size_type find (const char *s, size_type pos, size_type n) const
 
size_type find (const char *s, size_type pos=0) const
 
size_type find (char c, size_type pos=0) const
 
size_type rfind (const ustring &str, size_type pos=npos) const
 
size_type rfind (const std::string &str, size_type pos=npos) const
 
size_type rfind (const char *s, size_type pos, size_type n) const
 
size_type rfind (const char *s, size_type pos=npos) const
 
size_type rfind (char c, size_type pos=npos) const
 
size_type find_first_of (const ustring &str, size_type pos=0) const
 
size_type find_first_of (const std::string &str, size_type pos=0) const
 
size_type find_first_of (const char *s, size_type pos, size_type n) const
 
size_type find_first_of (const char *s, size_type pos=0) const
 
size_type find_first_of (char c, size_type pos=0) const
 
size_type find_last_of (const ustring &str, size_type pos=npos) const
 
size_type find_last_of (const std::string &str, size_type pos=npos) const
 
size_type find_last_of (const char *s, size_type pos, size_type n) const
 
size_type find_last_of (const char *s, size_type pos=npos) const
 
size_type find_last_of (char c, size_type pos=npos) const
 
size_type find_first_not_of (const ustring &str, size_type pos=0) const
 
size_type find_first_not_of (const std::string &str, size_type pos=0) const
 
size_type find_first_not_of (const char *s, size_type pos, size_type n) const
 
size_type find_first_not_of (const char *s, size_type pos=0) const
 
size_type find_first_not_of (char c, size_type pos=0) const
 
size_type find_last_not_of (const ustring &str, size_type pos=npos) const
 
size_type find_last_not_of (const std::string &str, size_type pos=npos) const
 
size_type find_last_not_of (const char *s, size_type pos, size_type n) const
 
size_type find_last_not_of (const char *s, size_type pos=npos) const
 
size_type find_last_not_of (char c, size_type pos=npos) const
 
int compare (const ustring &str) const
 
int compare (const std::string &str) const
 
int compare (string_view str) const
 
int compare (const char *str) const
 
bool operator== (const ustring &str) const
 
bool operator!= (const ustring &str) const
 
bool operator== (const std::string &x) const
 
bool operator== (string_view x) const
 
bool operator== (const char *x) const
 Test a ustring (this) for lexicographic equality with char x. More...
 
bool operator!= (const std::string &x) const
 
bool operator!= (string_view x) const
 
bool operator!= (const char *x) const
 
bool operator< (const ustring &x) const
 

Static Public Member Functions

template<typename... Args>
static ustring sprintf (const char *fmt, const Args &...args)
 
template<typename... Args>
static ustring fmtformat (const char *fmt, const Args &...args)
 
template<typename... Args>
static ustring format (const char *fmt, const Args &...args)
 
static std::string getstats (bool verbose=true)
 
static size_t memory ()
 
static const char * make_unique (string_view str)
 
static bool is_unique (const char *str)
 
static ustring from_unique (const char *unique)
 

Static Public Attributes

static const size_type npos = static_cast<size_type>(-1)
 

Friends

int compare (const std::string &a, const ustring &b)
 
bool operator== (const std::string &a, const ustring &b)
 
bool operator== (string_view a, const ustring &b)
 
bool operator== (const char *a, const ustring &b)
 
bool operator!= (const std::string &a, const ustring &b)
 
bool operator!= (string_view a, const ustring &b)
 
bool operator!= (const char *a, const ustring &b)
 
std::ostream & operator<< (std::ostream &out, const ustring &str)
 

Detailed Description

A ustring is an alternative to char* or std::string for storing strings, in which the character sequence is unique (allowing many speed advantages for assignment, equality testing, and inequality testing).

The implementation is that behind the scenes there is a hash set of allocated strings, so the characters of each string are unique. A ustring itself is a pointer to the characters of one of these canonical strings. Therefore, assignment and equality testing is just a single 32- or 64-bit int operation, the only mutex is when a ustring is created from raw characters, and the only malloc is the first time each canonical ustring is created.

The internal table also contains a std::string version and the length of the string, so converting a ustring to a std::string (via ustring::string()) or querying the number of characters (via ustring::size() or ustring::length()) is extremely inexpensive, and does not involve creation/allocation of a new std::string or a call to strlen.

We try very hard to completely mimic the API of std::string, including all the constructors, comparisons, iterations, etc. Of course, the charaters of a ustring are non-modifiable, so we do not replicate any of the non-const methods of std::string. But in most other ways it looks and acts like a std::string and so most templated algorthms that would work on a "const std::string &" will also work on a ustring.

Usage guidelines:

Compared to standard strings, ustrings have several advantages:

  • Each individual ustring is very small – in fact, we guarantee that a ustring is the same size and memory layout as an ordinary char*.
  • Storage is frugal, since there is only one allocated copy of each unique character sequence, throughout the lifetime of the program.
  • Assignment from one ustring to another is just copy of the pointer; no allocation, no character copying, no reference counting.
  • Equality testing (do the strings contain the same characters) is a single operation, the comparison of the pointer.
  • Memory allocation only occurs when a new ustring is construted from raw characters the FIRST time – subsequent constructions of the same string just finds it in the canonial string set, but doesn't need to allocate new storage. Destruction of a ustring is trivial, there is no de-allocation because the canonical version stays in the set. Also, therefore, no user code mistake can lead to memory leaks.

But there are some problems, too. Canonical strings are never freed from the table. So in some sense all the strings "leak", but they only leak one copy for each unique string that the program ever comes across. Also, creation of unique strings from raw characters is more expensive than for standard strings, due to hashing, table queries, and other overhead.

On the whole, ustrings are a really great string representation

  • if you tend to have (relatively) few unique strings, but many copies of those strings;
  • if the creation of strings from raw characters is relatively rare compared to copying or comparing to existing strings;
  • if you tend to make the same strings over and over again, and if it's relatively rare that a single unique character sequence is used only once in the entire lifetime of the program;
  • if your most common string operations are assignment and equality testing and you want them to be as fast as possible;
  • if you are doing relatively little character-by-character assembly of strings, string concatenation, or other "string manipulation" (other than equality testing).

ustrings are not so hot

  • if your program tends to have very few copies of each character sequence over the entire lifetime of the program;
  • if your program tends to generate a huge variety of unique strings over its lifetime, each of which is used only a short time and then discarded, never to be needed again;
  • if you don't need to do a lot of string assignment or equality testing, but lots of more complex string manipulation.

Definition at line 145 of file ustring.h.

Member Typedef Documentation

typedef std::string::const_iterator ustring::const_iterator

Definition at line 153 of file ustring.h.

Definition at line 150 of file ustring.h.

typedef std::string::const_reverse_iterator ustring::const_reverse_iterator

Definition at line 154 of file ustring.h.

Definition at line 148 of file ustring.h.

Definition at line 149 of file ustring.h.

typedef size_t ustring::size_type

Definition at line 151 of file ustring.h.

typedef char ustring::value_type

Definition at line 147 of file ustring.h.

Constructor & Destructor Documentation

ustring::ustring ( void  )
inline

Default ctr for ustring – make an empty string.

Definition at line 158 of file ustring.h.

ustring::ustring ( const char *  str)
inlineexplicit

Construct a ustring from a null-terminated C string (char *).

Definition at line 165 of file ustring.h.

ustring::ustring ( string_view  str)
inlineexplicit

Construct a ustring from a string_view, which can be auto-converted from either a null-terminated C string (char *) or a C++ std::string.

Definition at line 173 of file ustring.h.

ustring::ustring ( const char *  str,
size_type  pos,
size_type  n 
)
inline

Construct a ustring from at most n characters of str, starting at position pos.

Definition at line 180 of file ustring.h.

ustring::ustring ( const char *  str,
size_type  n 
)
inline

Construct a ustring from the first n characters of str.

Definition at line 187 of file ustring.h.

ustring::ustring ( size_type  n,
char  c 
)
inline

Construct a ustring from n copies of character c.

Definition at line 194 of file ustring.h.

ustring::ustring ( const std::string str,
size_type  pos,
size_type  n = npos 
)
inline

Construct a ustring from an indexed substring of a std::string.

Definition at line 201 of file ustring.h.

ustring::ustring ( const ustring str)
inline

Copy construct a ustring from another ustring.

Definition at line 210 of file ustring.h.

ustring::ustring ( const ustring str,
size_type  pos,
size_type  n = npos 
)
inline

Construct a ustring from an indexed substring of a ustring.

Definition at line 217 of file ustring.h.

ustring::~ustring ( )
inline

ustring destructor.

Definition at line 226 of file ustring.h.

Member Function Documentation

const ustring& ustring::assign ( const ustring str)
inline

Assign a ustring to *this.

Definition at line 233 of file ustring.h.

const ustring& ustring::assign ( const ustring str,
size_type  pos,
size_type  n = npos 
)
inline

Assign a substring of a ustring to *this.

Definition at line 241 of file ustring.h.

const ustring& ustring::assign ( const std::string str)
inline

Assign a std::string to *this.

Definition at line 249 of file ustring.h.

const ustring& ustring::assign ( const std::string str,
size_type  pos,
size_type  n = npos 
)
inline

Assign a substring of a std::string to *this.

Definition at line 257 of file ustring.h.

const ustring& ustring::assign ( const char *  str)
inline

Assign a null-terminated C string (char*) to *this.

Definition at line 266 of file ustring.h.

const ustring& ustring::assign ( const char *  str,
size_type  n 
)
inline

Assign the first n characters of str to *this.

Definition at line 274 of file ustring.h.

const ustring& ustring::assign ( size_type  n,
char  c 
)
inline

Assign n copies of c to *this.

Definition at line 282 of file ustring.h.

const ustring& ustring::assign ( string_view  str)
inline

Assign a string_view to *this.

Definition at line 289 of file ustring.h.

const_iterator ustring::begin ( void  ) const
inline

Return a const_iterator that references the first character of the string.

Definition at line 375 of file ustring.h.

const char* ustring::c_str ( void  ) const
inline

Return a C string representation of a ustring.

Definition at line 324 of file ustring.h.

void ustring::clear ( void  )
inline

Reset to an empty string.

Definition at line 343 of file ustring.h.

int ustring::compare ( const ustring str) const
inline

Return 0 if *this is lexicographically equal to str, -1 if *this is lexicographically earlier than str, 1 if *this is lexicographically after str.

Definition at line 570 of file ustring.h.

int ustring::compare ( const std::string str) const
inline

Return 0 if *this is lexicographically equal to str, -1 if *this is lexicographically earlier than str, 1 if *this is lexicographically after str.

Definition at line 581 of file ustring.h.

int ustring::compare ( string_view  str) const
inline

Return 0 if *this is lexicographically equal to str, -1 if *this is lexicographically earlier than str, 1 if *this is lexicographically after str.

Definition at line 589 of file ustring.h.

int ustring::compare ( const char *  str) const
inline

Return 0 if *this is lexicographically equal to str, -1 if *this is lexicographically earlier than str, 1 if *this is lexicographically after str.

Definition at line 597 of file ustring.h.

size_type ustring::copy ( char *  s,
size_type  n,
size_type  pos = 0 
) const
inline

Dump into character array s the characters of this ustring, beginning with position pos and copying at most n characters.

Definition at line 396 of file ustring.h.

const char* ustring::data ( ) const
inline

Return a C string representation of a ustring.

Definition at line 328 of file ustring.h.

bool ustring::empty ( void  ) const
inline

Is the string empty – i.e., is it nullptr or does it point to an empty string?

Definition at line 371 of file ustring.h.

const_iterator ustring::end ( void  ) const
inline

Return a const_iterator that references the end of a traversal of the characters of the string.

Definition at line 379 of file ustring.h.

size_type ustring::find ( const ustring str,
size_type  pos = 0 
) const
inline

Definition at line 415 of file ustring.h.

size_type ustring::find ( const std::string str,
size_type  pos = 0 
) const
inline

Definition at line 420 of file ustring.h.

size_type ustring::find ( const char *  s,
size_type  pos,
size_type  n 
) const
inline

Definition at line 425 of file ustring.h.

size_type ustring::find ( const char *  s,
size_type  pos = 0 
) const
inline

Definition at line 430 of file ustring.h.

size_type ustring::find ( char  c,
size_type  pos = 0 
) const
inline

Definition at line 435 of file ustring.h.

size_type ustring::find_first_not_of ( const ustring str,
size_type  pos = 0 
) const
inline

Definition at line 515 of file ustring.h.

size_type ustring::find_first_not_of ( const std::string str,
size_type  pos = 0 
) const
inline

Definition at line 520 of file ustring.h.

size_type ustring::find_first_not_of ( const char *  s,
size_type  pos,
size_type  n 
) const
inline

Definition at line 525 of file ustring.h.

size_type ustring::find_first_not_of ( const char *  s,
size_type  pos = 0 
) const
inline

Definition at line 530 of file ustring.h.

size_type ustring::find_first_not_of ( char  c,
size_type  pos = 0 
) const
inline

Definition at line 535 of file ustring.h.

size_type ustring::find_first_of ( const ustring str,
size_type  pos = 0 
) const
inline

Definition at line 465 of file ustring.h.

size_type ustring::find_first_of ( const std::string str,
size_type  pos = 0 
) const
inline

Definition at line 470 of file ustring.h.

size_type ustring::find_first_of ( const char *  s,
size_type  pos,
size_type  n 
) const
inline

Definition at line 475 of file ustring.h.

size_type ustring::find_first_of ( const char *  s,
size_type  pos = 0 
) const
inline

Definition at line 480 of file ustring.h.

size_type ustring::find_first_of ( char  c,
size_type  pos = 0 
) const
inline

Definition at line 485 of file ustring.h.

size_type ustring::find_last_not_of ( const ustring str,
size_type  pos = npos 
) const
inline

Definition at line 540 of file ustring.h.

size_type ustring::find_last_not_of ( const std::string str,
size_type  pos = npos 
) const
inline

Definition at line 545 of file ustring.h.

size_type ustring::find_last_not_of ( const char *  s,
size_type  pos,
size_type  n 
) const
inline

Definition at line 551 of file ustring.h.

size_type ustring::find_last_not_of ( const char *  s,
size_type  pos = npos 
) const
inline

Definition at line 556 of file ustring.h.

size_type ustring::find_last_not_of ( char  c,
size_type  pos = npos 
) const
inline

Definition at line 561 of file ustring.h.

size_type ustring::find_last_of ( const ustring str,
size_type  pos = npos 
) const
inline

Definition at line 490 of file ustring.h.

size_type ustring::find_last_of ( const std::string str,
size_type  pos = npos 
) const
inline

Definition at line 495 of file ustring.h.

size_type ustring::find_last_of ( const char *  s,
size_type  pos,
size_type  n 
) const
inline

Definition at line 500 of file ustring.h.

size_type ustring::find_last_of ( const char *  s,
size_type  pos = npos 
) const
inline

Definition at line 505 of file ustring.h.

size_type ustring::find_last_of ( char  c,
size_type  pos = npos 
) const
inline

Definition at line 510 of file ustring.h.

template<typename... Args>
static ustring ustring::fmtformat ( const char *  fmt,
const Args &...  args 
)
inlinestatic

Construct a ustring in a fmt::format-like fashion. In other words, something like: ustring s = ustring::fmtformat("blah {} {}", (int)foo, (float)bar); The argument list is fully typesafe. The formatting of the string will always use the classic "C" locale conventions (in particular, '.' as decimal separator for float values).

Definition at line 710 of file ustring.h.

template<typename... Args>
static ustring ustring::format ( const char *  fmt,
const Args &...  args 
)
inlinestatic

NOTE: Semi-DEPRECATED! This will someday switch to behave like fmt::format (or future std::format) but for now, it is back compatible and equivalent to sprintf.

Definition at line 719 of file ustring.h.

static ustring ustring::from_unique ( const char *  unique)
inlinestatic

Create a ustring from characters guaranteed to already be ustring-clean, without having to run through the hash yet again. Use with extreme caution!!!

Definition at line 759 of file ustring.h.

static std::string ustring::getstats ( bool  verbose = true)
static

Return the statistics output as a string.

size_t ustring::hash ( void  ) const
inline

Return a hashed version of the string

Definition at line 357 of file ustring.h.

static bool ustring::is_unique ( const char *  str)
inlinestatic

Is this character pointer a unique ustring representation of those characters? Useful for diagnostics and debugging.

Definition at line 751 of file ustring.h.

size_t ustring::length ( void  ) const
inline

Return the number of characters in the string.

Definition at line 347 of file ustring.h.

static const char* ustring::make_unique ( string_view  str)
static

Given a string_view, return a pointer to the unique version kept in the internal table (creating a new table entry if we haven't seen this sequence of characters before). N.B.: this is equivalent to ustring(str).c_str(). It's also the routine that is used directly by ustring's internals to generate the canonical unique copy of the characters.

static size_t ustring::memory ( )
static

Return the amount of memory consumed by the ustring table.

ustring::operator string_view ( ) const
inline

Conversion to string_view.

Definition at line 229 of file ustring.h.

bool ustring::operator!= ( const ustring str) const
inline

Test two ustrings for inequality – are they comprised of different sequences of characters. Note that because ustrings are unique, this is a trivial pointer comparison, not a char-by-char loop as would be the case with a char* or a std::string.

Definition at line 620 of file ustring.h.

bool ustring::operator!= ( const std::string x) const
inline

Test a ustring (*this) for lexicographic inequality with std::string x.

Definition at line 656 of file ustring.h.

bool ustring::operator!= ( string_view  x) const
inline

Test a ustring (*this) for lexicographic inequality with string_view x.

Definition at line 660 of file ustring.h.

bool ustring::operator!= ( const char *  x) const
inline

Test a ustring (this) for lexicographic inequality with char x.

Definition at line 664 of file ustring.h.

bool ustring::operator< ( const ustring x) const
inline

Test for lexicographic 'less', comes in handy for lots of STL containers and algorithms.

Definition at line 689 of file ustring.h.

const ustring& ustring::operator= ( const ustring str)
inline

Assign a ustring to another ustring.

Definition at line 297 of file ustring.h.

const ustring& ustring::operator= ( const char *  str)
inline

Assign a null-terminated C string (char *) to a ustring.

Definition at line 301 of file ustring.h.

const ustring& ustring::operator= ( const std::string str)
inline

Assign a C++ std::string to a ustring.

Definition at line 305 of file ustring.h.

const ustring& ustring::operator= ( string_view  str)
inline

Assign a string_view to a ustring.

Definition at line 309 of file ustring.h.

const ustring& ustring::operator= ( char  c)
inline

Assign a single char to a ustring.

Definition at line 313 of file ustring.h.

bool ustring::operator== ( const ustring str) const
inline

Test two ustrings for equality – are they comprised of the same sequence of characters. Note that because ustrings are unique, this is a trivial pointer comparison, not a char-by-char loop as would be the case with a char* or a std::string.

Definition at line 614 of file ustring.h.

bool ustring::operator== ( const std::string x) const
inline

Test a ustring (*this) for lexicographic equality with std::string x.

Definition at line 624 of file ustring.h.

bool ustring::operator== ( string_view  x) const
inline

Test a ustring (*this) for lexicographic equality with string_view x.

Definition at line 628 of file ustring.h.

bool ustring::operator== ( const char *  x) const
inline

Test a ustring (this) for lexicographic equality with char x.

Definition at line 631 of file ustring.h.

const_reference ustring::operator[] ( size_type  pos) const
inline

Return a reference to the character at the given position. Note that it's up to the caller to be sure pos is within the size of the string.

Definition at line 392 of file ustring.h.

const_reverse_iterator ustring::rbegin ( ) const
inline

Return a const_reverse_iterator that references the last character of the string.

Definition at line 383 of file ustring.h.

const_reverse_iterator ustring::rend ( ) const
inline

Return a const_reverse_iterator that references the end of a reverse traversal of the characters of the string.

Definition at line 387 of file ustring.h.

size_type ustring::rfind ( const ustring str,
size_type  pos = npos 
) const
inline

Definition at line 440 of file ustring.h.

size_type ustring::rfind ( const std::string str,
size_type  pos = npos 
) const
inline

Definition at line 445 of file ustring.h.

size_type ustring::rfind ( const char *  s,
size_type  pos,
size_type  n 
) const
inline

Definition at line 450 of file ustring.h.

size_type ustring::rfind ( const char *  s,
size_type  pos = npos 
) const
inline

Definition at line 455 of file ustring.h.

size_type ustring::rfind ( char  c,
size_type  pos = npos 
) const
inline

Definition at line 460 of file ustring.h.

size_t ustring::size ( void  ) const
inline

Return the number of characters in the string.

Definition at line 367 of file ustring.h.

template<typename... Args>
static ustring ustring::sprintf ( const char *  fmt,
const Args &...  args 
)
inlinestatic

Construct a ustring in a printf-like fashion. In other words, something like: ustring s = ustring::sprintf("blah %d %g", (int)foo, (float)bar); The argument list is fully typesafe. The formatting of the string will always use the classic "C" locale conventions (in particular, '.' as decimal separator for float values).

Definition at line 698 of file ustring.h.

const std::string& ustring::string ( void  ) const
inline

Return a C++ std::string representation of a ustring.

Definition at line 332 of file ustring.h.

ustring ustring::substr ( size_type  pos = 0,
size_type  n = npos 
) const
inline

Returns a substring of the ustring object consisting of n characters starting at position pos.

Definition at line 408 of file ustring.h.

Friends And Related Function Documentation

int compare ( const std::string a,
const ustring b 
)
friend

Return 0 if a is lexicographically equal to b, -1 if a is lexicographically earlier than b, 1 if a is lexicographically after b.

Definition at line 605 of file ustring.h.

bool operator!= ( const std::string a,
const ustring b 
)
friend

Test for lexicographic inequality between std::string a and ustring b.

Definition at line 668 of file ustring.h.

bool operator!= ( string_view  a,
const ustring b 
)
friend

Test for lexicographic inequality between string_view a and ustring b.

Definition at line 675 of file ustring.h.

bool operator!= ( const char *  a,
const ustring b 
)
friend

Test for lexicographic inequality between char* a and ustring b.

Definition at line 682 of file ustring.h.

std::ostream& operator<< ( std::ostream &  out,
const ustring str 
)
friend

Generic stream output of a ustring.

Definition at line 726 of file ustring.h.

bool operator== ( const std::string a,
const ustring b 
)
friend

Test for lexicographic equality between std::string a and ustring b.

Definition at line 635 of file ustring.h.

bool operator== ( string_view  a,
const ustring b 
)
friend

Test for lexicographic equality between string_view a and ustring b.

Definition at line 642 of file ustring.h.

bool operator== ( const char *  a,
const ustring b 
)
friend

Test for lexicographic equality between char* a and ustring b.

Definition at line 649 of file ustring.h.

Member Data Documentation

const size_type ustring::npos = static_cast<size_type>(-1)
static

Definition at line 152 of file ustring.h.


The documentation for this class was generated from the following file: