zypp::base::UniqueString< _Derived > Class Template Reference

Immutable strings with unique representation in memory. More...

#include <UniqueString.h>

Inheritance diagram for zypp::base::UniqueString< _Derived >:
[legend]

List of all members.

Public Types

typedef hash_set
< std::string >
::size_type 
size_type
typedef hash_set
< std::string >
::const_iterator 
const_iterator

Public Member Functions

const std::string & asString () const
 Explicit conversion to string.
const std::string & str () const
 Explicit conversion to string (convenience).
 operator const std::string & () const
 Implicit conversion to string.
std::string::size_type size () const
 Short for str().size().
bool empty () const
 Short for str().empty().
int compare (const std::string &rhs) const
 Short for str().compare( s ).

Static Public Member Functions

static bool allEmpty ()
 Whether there are known UniqueStrings.
static size_type allSize ()
 Number of known UniqueStrings.
static const_iterator allBegin ()
 Iterator to the 1st UniqueString.
static const_iterator allEnd ()
 Iterator behind the last UniqueString.

Protected Member Functions

 UniqueString ()
 Default ctor provides an empty string.
 UniqueString (const std::string &name_r)
 Ctor taking a name to store.
virtual ~UniqueString ()
 Dtor.

Static Private Member Functions

static hash_set
< std::string > & 
hash ()
 Provides the static hash to unify the strings.

Private Attributes

std::string _name
 Immutable string.

Related Functions

(Note that these are not member functions.)

template<class _Derived>
bool operator== (const UniqueString< _Derived > &lhs, const UniqueString< _Derived > &rhs)
 operator ==
template<class _Derived>
bool operator== (const UniqueString< _Derived > &lhs, const std::string &rhs)
 operator ==
template<class _Derived>
bool operator== (const std::string &lhs, const UniqueString< _Derived > &rhs)
 operator ==
template<class _Derived>
bool operator!= (const UniqueString< _Derived > &lhs, const UniqueString< _Derived > &rhs)
 operator !=
template<class _Derived>
bool operator!= (const UniqueString< _Derived > &lhs, const std::string &rhs)
 operator !=
template<class _Derived>
bool operator!= (const std::string &lhs, const UniqueString< _Derived > &rhs)
 operator !=
template<class _Derived>
bool operator< (const UniqueString< _Derived > &lhs, const UniqueString< _Derived > &rhs)
 operator <
template<class _Derived>
bool operator< (const UniqueString< _Derived > &lhs, const std::string &rhs)
 operator <
template<class _Derived>
bool operator< (const std::string &lhs, const UniqueString< _Derived > &rhs)
 operator <
template<class _Derived>
bool operator> (const UniqueString< _Derived > &lhs, const UniqueString< _Derived > &rhs)
 operator >
template<class _Derived>
bool operator> (const UniqueString< _Derived > &lhs, const std::string &rhs)
 operator >
template<class _Derived>
bool operator> (const std::string &lhs, const UniqueString< _Derived > &rhs)
 operator >
template<class _Derived>
bool operator<= (const UniqueString< _Derived > &lhs, const UniqueString< _Derived > &rhs)
 operator <=
template<class _Derived>
bool operator<= (const UniqueString< _Derived > &lhs, const std::string &rhs)
 operator <=
template<class _Derived>
bool operator<= (const std::string &lhs, const UniqueString< _Derived > &rhs)
 operator <=
template<class _Derived>
bool operator>= (const UniqueString< _Derived > &lhs, const UniqueString< _Derived > &rhs)
 operator >=
template<class _Derived>
bool operator>= (const UniqueString< _Derived > &lhs, const std::string &rhs)
 operator >=
template<class _Derived>
bool operator>= (const std::string &lhs, const UniqueString< _Derived > &rhs)
 operator >=
template<class _Derived>
std::ostream & operator<< (std::ostream &str, const UniqueString< _Derived > &obj)
 Stream output.


Detailed Description

template<class _Derived>
class zypp::base::UniqueString< _Derived >

Immutable strings with unique representation in memory.

Each UniqueString provides a const std::string. This string is stored in a unifying hash, that way equal UniqueStrings share their string representation in memory.

At the same time the unifying hash contains all the string values created so far. Static methods are provided to query the hash contents.

Uses CRTP to provide the unifying hash.

   struct KeyWord : public base::UniqueString<KeyWord>
   {
     KeyWord()
     {}
     KeyWord( const std::string & name_r )
       :base::UniqueString<KeyWord>( name_r )
     {}
   };

   int main( int argc, char * argv[] )
   {
     KeyWord();
     KeyWord( "a" );
     KeyWord( "b" );
     KeyWord( "c" );
     KeyWord( "a" );
     KeyWord( "c" );

     DBG << "Known KeyWords: " << KeyWord::allSize() << endl;
     for ( KeyWord::const_iterator it = KeyWord::allBegin(); it != KeyWord::allEnd(); ++it )
     {
       DBG << *it << endl;
     }

     return 0;
   }
 Known KeyWords: 3
 a
 b
 c

Definition at line 79 of file UniqueString.h.


Member Typedef Documentation

template<class _Derived>
typedef hash_set<std::string>::size_type zypp::base::UniqueString< _Derived >::size_type

Definition at line 125 of file UniqueString.h.

template<class _Derived>
typedef hash_set<std::string>::const_iterator zypp::base::UniqueString< _Derived >::const_iterator

Definition at line 126 of file UniqueString.h.


Constructor & Destructor Documentation

template<class _Derived>
zypp::base::UniqueString< _Derived >::UniqueString (  )  [inline, protected]

Default ctor provides an empty string.

Definition at line 83 of file UniqueString.h.

template<class _Derived>
zypp::base::UniqueString< _Derived >::UniqueString ( const std::string &  name_r  )  [inline, protected]

Ctor taking a name to store.

Definition at line 87 of file UniqueString.h.

template<class _Derived>
virtual zypp::base::UniqueString< _Derived >::~UniqueString (  )  [inline, protected, virtual]

Dtor.

Definition at line 96 of file UniqueString.h.


Member Function Documentation

template<class _Derived>
const std::string& zypp::base::UniqueString< _Derived >::asString (  )  const [inline]

Explicit conversion to string.

Definition at line 101 of file UniqueString.h.

Referenced by zypp::base::UniqueString< zypp::PackageKeyword >::operator const std::string &(), and zypp::base::UniqueString< zypp::PackageKeyword >::str().

template<class _Derived>
const std::string& zypp::base::UniqueString< _Derived >::str (  )  const [inline]

Explicit conversion to string (convenience).

Definition at line 105 of file UniqueString.h.

Referenced by zypp::base::UniqueString< _Derived >::operator!=(), zypp::base::UniqueString< _Derived >::operator==(), zypp::base::UniqueString< _Derived >::operator>(), and zypp::base::UniqueString< _Derived >::operator>=().

template<class _Derived>
zypp::base::UniqueString< _Derived >::operator const std::string & (  )  const [inline]

Implicit conversion to string.

Definition at line 109 of file UniqueString.h.

template<class _Derived>
std::string::size_type zypp::base::UniqueString< _Derived >::size (  )  const [inline]

Short for str().size().

Definition at line 113 of file UniqueString.h.

template<class _Derived>
bool zypp::base::UniqueString< _Derived >::empty (  )  const [inline]

Short for str().empty().

Definition at line 117 of file UniqueString.h.

template<class _Derived>
int zypp::base::UniqueString< _Derived >::compare ( const std::string &  rhs  )  const [inline]

Short for str().compare( s ).

Definition at line 121 of file UniqueString.h.

template<class _Derived>
static bool zypp::base::UniqueString< _Derived >::allEmpty (  )  [inline, static]

Whether there are known UniqueStrings.

Definition at line 129 of file UniqueString.h.

template<class _Derived>
static size_type zypp::base::UniqueString< _Derived >::allSize (  )  [inline, static]

Number of known UniqueStrings.

Definition at line 133 of file UniqueString.h.

template<class _Derived>
static const_iterator zypp::base::UniqueString< _Derived >::allBegin (  )  [inline, static]

Iterator to the 1st UniqueString.

Definition at line 137 of file UniqueString.h.

template<class _Derived>
static const_iterator zypp::base::UniqueString< _Derived >::allEnd (  )  [inline, static]

Iterator behind the last UniqueString.

Definition at line 141 of file UniqueString.h.

template<class _Derived>
static hash_set<std::string>& zypp::base::UniqueString< _Derived >::hash (  )  [inline, static, private]

Provides the static hash to unify the strings.

Definition at line 146 of file UniqueString.h.

Referenced by zypp::base::UniqueString< zypp::PackageKeyword >::UniqueString().


Friends And Related Function Documentation

template<class _Derived>
bool operator== ( const UniqueString< _Derived > &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator ==

Definition at line 160 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator== ( const UniqueString< _Derived > &  lhs,
const std::string &  rhs 
) [related]

operator ==

Definition at line 164 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator== ( const std::string &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator ==

Definition at line 168 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator!= ( const UniqueString< _Derived > &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator !=

Definition at line 174 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator!= ( const UniqueString< _Derived > &  lhs,
const std::string &  rhs 
) [related]

operator !=

Definition at line 178 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator!= ( const std::string &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator !=

Definition at line 182 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator< ( const UniqueString< _Derived > &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator <

Definition at line 188 of file UniqueString.h.

template<class _Derived>
bool operator< ( const UniqueString< _Derived > &  lhs,
const std::string &  rhs 
) [related]

operator <

Definition at line 192 of file UniqueString.h.

template<class _Derived>
bool operator< ( const std::string &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator <

Definition at line 196 of file UniqueString.h.

template<class _Derived>
bool operator> ( const UniqueString< _Derived > &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator >

Definition at line 202 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator> ( const UniqueString< _Derived > &  lhs,
const std::string &  rhs 
) [related]

operator >

Definition at line 206 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator> ( const std::string &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator >

Definition at line 210 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator<= ( const UniqueString< _Derived > &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator <=

Definition at line 216 of file UniqueString.h.

template<class _Derived>
bool operator<= ( const UniqueString< _Derived > &  lhs,
const std::string &  rhs 
) [related]

operator <=

Definition at line 220 of file UniqueString.h.

template<class _Derived>
bool operator<= ( const std::string &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator <=

Definition at line 224 of file UniqueString.h.

template<class _Derived>
bool operator>= ( const UniqueString< _Derived > &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator >=

Definition at line 230 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator>= ( const UniqueString< _Derived > &  lhs,
const std::string &  rhs 
) [related]

operator >=

Definition at line 234 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
bool operator>= ( const std::string &  lhs,
const UniqueString< _Derived > &  rhs 
) [related]

operator >=

Definition at line 238 of file UniqueString.h.

References zypp::base::UniqueString< _Derived >::str().

template<class _Derived>
std::ostream & operator<< ( std::ostream &  str,
const UniqueString< _Derived > &  obj 
) [related]

Stream output.

Definition at line 243 of file UniqueString.h.

References zypp::solver::detail::str.


Member Data Documentation

template<class _Derived>
std::string zypp::base::UniqueString< _Derived >::_name [private]

Immutable string.

Definition at line 154 of file UniqueString.h.

Referenced by zypp::base::UniqueString< zypp::PackageKeyword >::asString(), and zypp::base::UniqueString< zypp::PackageKeyword >::UniqueString().


The documentation for this class was generated from the following file:
Generated on Tue Sep 25 19:23:17 2007 for libzypp by  doxygen 1.5.3