UniConfKey Class Reference

#include <uniconfkey.h>

List of all members.


Detailed Description

Represents a UniConf key which is a path in a hierarchy structured much like the traditional Unix filesystem.

The following paths are equivalent when canonicalized:

Keys that may contain slashes or nulls should be escaped in some fashion prior to constructing a UniConfKey object. Simply prefixing slashes with backslashes is inadequate because UniConfKey does not give any special meaning to backslash.

Definition at line 42 of file uniconfkey.h.


Public Member Functions

 UniConfKey ()
 Constructs an empty UniConfKey (the 'root').
 UniConfKey (WvStringParm key)
 Constructs a UniConfKey from a string.
 UniConfKey (const char *key)
 Constructs a UniConfKey from a string.
 UniConfKey (int key)
 Constructs a UniConfKey from an int.
 UniConfKey (const UniConfKey &other)
 Copies a UniConfKey.
 UniConfKey (const UniConfKey &path, const UniConfKey &key)
 Constructs a UniConfKey by concatenating two keys.
void append (const UniConfKey &other)
 Appends a path to this path.
void prepend (const UniConfKey &other)
 Prepends a path to this path.
bool isempty () const
 Returns true if this path has zero segments (also known as root).
bool iswild () const
 Returns true if the key contains a wildcard.
bool hastrailingslash () const
 Returns true if the key has a trailing slash.
int numsegments () const
 Returns the number of segments in this path.
UniConfKey segment (int i) const
 Returns the specified segment of the path.
UniConfKey pop (int n=1)
 Returns the path formed by the first n segments of this path and removes them from the key.
UniConfKey first (int n=1) const
 Returns the path formed by the n first segments of this path.
UniConfKey last (int n=1) const
 Returns the path formed by the n last segments of this path.
UniConfKey removefirst (int n=1) const
 Returns the path formed by removing the first n segments of this path.
UniConfKey removelast (int n=1) const
 Returns the path formed by removing the last n segments of this path.
UniConfKey range (int i, int j) const
 Returns a range of segments.
WvString printable () const
 Returns the canonical string representation of the path.
 operator WvString () const
const char * cstr () const
 Returns a (const char *) of printable() directly.
UniConfKeyoperator= (const UniConfKey &other)
 Assigns this path to equal another.
int compareto (const UniConfKey &other) const
 Compares two paths lexicographically.
bool matches (const UniConfKey &pattern) const
 Determines if the key matches a pattern.
bool suborsame (const UniConfKey &key) const
 Returns true if 'key' is a the same, or a subkey, of this UniConfKey.
bool suborsame (const UniConfKey &key, WvString &subkey) const
UniConfKey subkey (const UniConfKey &key) const
 If this UniConfKey is a subkey of 'key', then return the subkey portion.
bool operator== (const UniConfKey &other) const
 Determines if two paths are equal.
bool operator!= (const UniConfKey &other) const
 Determines if two paths are unequal.
bool operator< (const UniConfKey &other) const
 Determines if this path precedes the other lexicographically.

Static Public Attributes

static UniConfKey EMPTY
static UniConfKey ANY
static UniConfKey RECURSIVE_ANY

Protected Member Functions

void init (WvStringParm key)

Classes

class  Iter
 An iterator over the segments of a key. More...

Constructor & Destructor Documentation

UniConfKey::UniConfKey (  ) 

Constructs an empty UniConfKey (the 'root').

Definition at line 19 of file uniconfkey.cc.

UniConfKey::UniConfKey ( WvStringParm  key  )  [inline]

Constructs a UniConfKey from a string.

See the rules above for information about how the key string is canonicalized.

"key" is the key as a string

Definition at line 62 of file uniconfkey.h.

References init().

UniConfKey::UniConfKey ( const char *  key  )  [inline]

Constructs a UniConfKey from a string.

See the rules above for information about how the key string is canonicalized. This constructor only exists to help out the C++ compiler with its automatic type conversions.

"key" is the key as a string

Definition at line 74 of file uniconfkey.h.

References init().

UniConfKey::UniConfKey ( int  key  )  [inline]

Constructs a UniConfKey from an int.

Definition at line 78 of file uniconfkey.h.

References init().

UniConfKey::UniConfKey ( const UniConfKey other  ) 

Copies a UniConfKey.

"other" is the key to copy

Definition at line 67 of file uniconfkey.cc.

UniConfKey::UniConfKey ( const UniConfKey path,
const UniConfKey key 
)

Constructs a UniConfKey by concatenating two keys.

"path" is the initial part of the new path "key" is the tail of the new path

Definition at line 72 of file uniconfkey.cc.

References path, and spacecat().


Member Function Documentation

void UniConfKey::append ( const UniConfKey other  ) 

Appends a path to this path.

"other" is the path

Definition at line 81 of file uniconfkey.cc.

References path, and spacecat().

Referenced by UniConf::XIter::XIter().

void UniConfKey::prepend ( const UniConfKey other  ) 

Prepends a path to this path.

"other" is the path

Definition at line 90 of file uniconfkey.cc.

References path, and spacecat().

Referenced by UniHashTreeBase::_fullkey(), UniIniGen::refresh(), and _UniSecureIter::value().

bool UniConfKey::isempty (  )  const

Returns true if this path has zero segments (also known as root).

Returns: numsegments() == 0

Definition at line 99 of file uniconfkey.cc.

Referenced by UniHashTreeBase::_findchild(), UniTempGen::get(), UniPermGen::getgroup(), UniPermGen::getowner(), UniSubtreeGen::keymap(), matches(), UniConf::XIter::rewind(), UniTempGen::set(), UniIniGen::set(), and UniConf::XIter::XIter().

bool UniConfKey::iswild (  )  const

Returns true if the key contains a wildcard.

Definition at line 105 of file uniconfkey.cc.

Referenced by UniConf::XIter::XIter().

bool UniConfKey::hastrailingslash (  )  const

Returns true if the key has a trailing slash.

Definition at line 112 of file uniconfkey.cc.

References WvFastString::cstr().

Referenced by suborsame().

int UniConfKey::numsegments (  )  const

Returns the number of segments in this path.

The number of segments is equal to the number of slashes in the path unless the path is "/" (the root), which has zero segments.

Returns: the number of segments

Definition at line 119 of file uniconfkey.cc.

Referenced by UniAutoMountGen::automount(), UniTransactionGen::create_change(), UniTransactionGen::create_value(), UniTransactionGen::gencallback(), UniWvConfGen::get(), UniTransactionGen::get(), UniTransactionGen::iterator(), UniMountGen::iterator(), UniDefGen::keymap(), last(), removelast(), UniConfKey::Iter::rewind(), UniWvConfGen::set(), UniTempGen::set(), UniRegistryGen::set(), UniTransactionGen::set_change(), UniTransactionGen::set_value(), suborsame(), and UniRegistryGen::UniRegistryGen().

UniConfKey UniConfKey::segment ( int  i  )  const

Returns the specified segment of the path.

"i" is the segment index Returns: the segment

Definition at line 134 of file uniconfkey.cc.

References range().

Referenced by UniTransactionGen::create_change(), UniTransactionGen::create_value(), UniTransactionGen::gencallback(), UniTransactionGen::get(), UniTransactionGen::iterator(), UniConfKey::Iter::next(), UniTransactionGen::set_change(), and UniTransactionGen::set_value().

UniConfKey UniConfKey::pop ( int  n = 1  ) 

Returns the path formed by the first n segments of this path and removes them from the key.

Returns: the path

Definition at line 140 of file uniconfkey.cc.

References range().

Referenced by UniTempGen::set().

UniConfKey UniConfKey::first ( int  n = 1  )  const

Returns the path formed by the n first segments of this path.

"n" is the number of segments Returns: the path

Definition at line 148 of file uniconfkey.cc.

References range().

Referenced by UniAutoMountGen::automount(), UniTransactionGen::create_change(), UniTransactionGen::create_value(), UniWvConfGen::get(), UniTransactionGen::get(), UniMountGen::iterator(), matches(), UniWvConfGen::set(), UniRegistryGen::set(), UniTransactionGen::set_change(), suborsame(), UniRegistryGen::UniRegistryGen(), and UniConf::XIter::XIter().

UniConfKey UniConfKey::last ( int  n = 1  )  const

Returns the path formed by the n last segments of this path.

"n" is the number of segments Returns: the path

Definition at line 154 of file uniconfkey.cc.

References numsegments(), and range().

Referenced by UniWvConfGen::get(), UniTransactionGen::get(), UniTempGen::get(), UniRegistryGen::get(), UniPStoreGen::get(), UniFastRegetGen::get(), UniTransactionGen::iterator(), UniMountGen::iterator(), UniConf::key(), UniWvConfGen::set(), UniRegistryGen::set(), UniPStoreGen::set(), and UniTransactionGen::set_value().

UniConfKey UniConfKey::removefirst ( int  n = 1  )  const

Returns the path formed by removing the first n segments of this path.

"n" is the number of segments Returns: the path

Definition at line 160 of file uniconfkey.cc.

References range().

Referenced by matches(), suborsame(), and UniConf::XIter::XIter().

UniConfKey UniConfKey::removelast ( int  n = 1  )  const

Returns the path formed by removing the last n segments of this path.

"n" is the number of segments Returns: the path

Definition at line 166 of file uniconfkey.cc.

References numsegments(), and range().

Referenced by UniSecureGen::exists(), UniFastRegetGen::get(), UniPermGen::getgroup(), UniPermGen::getowner(), UniConf::parent(), and UniFileSystemGen::set().

UniConfKey UniConfKey::range ( int  i,
int  j 
) const

Returns a range of segments.

"i" is the first segment index, beginning if <= 0 "j" is the last segment index, end if >= numsegments() Returns: the path, empty if j <= i

Definition at line 172 of file uniconfkey.cc.

References WvString::edit(), path, and WvFastString::setsize().

Referenced by first(), last(), pop(), removefirst(), removelast(), segment(), and UniRegistryGen::UniRegistryGen().

WvString UniConfKey::printable (  )  const

Returns the canonical string representation of the path.

If the UniConfKey was constructed in part or whole from strings, then the string returned here will have the same case information as those strings but the arrangement of slashes may differ. That is, the identity UniConfKey(string).printable() == string does not hold.

Returns: the path as a string

Definition at line 214 of file uniconfkey.cc.

Referenced by cstr(), UniPStoreGen::get(), operator WvString(), UniRegistryGen::set(), UniPStoreGen::set(), subkey(), and UniRegistryGen::UniRegistryGen().

UniConfKey & UniConfKey::operator= ( const UniConfKey other  ) 

Assigns this path to equal another.

"other" is the other path

Definition at line 220 of file uniconfkey.cc.

References path.

int UniConfKey::compareto ( const UniConfKey other  )  const

Compares two paths lexicographically.

Uses case-insensitive matching on the path string to produce a total ordering of all paths. "other" is the other path Returns: 0 if *this == other, < 0 if *this < other, else > 0

Definition at line 227 of file uniconfkey.cc.

References path.

Referenced by UniHashTreeBase::_recursivecompare(), UniConf::SortedIterBase::defcomparator(), operator<(), and operator==().

bool UniConfKey::matches ( const UniConfKey pattern  )  const

Determines if the key matches a pattern.

Patterns are simply keys that may have path segments consiting entirely of "*". Optional path segments are indicated by the segment "..." which matches zero or more segments.

Using wildcards to represent part of a segment is not supported yet. "pattern" is the pattern Returns: true if the key matches, false otherwise

Definition at line 233 of file uniconfkey.cc.

References ANY, first(), isempty(), matches(), RECURSIVE_ANY, and removefirst().

Referenced by matches().

UniConfKey UniConfKey::subkey ( const UniConfKey key  )  const

If this UniConfKey is a subkey of 'key', then return the subkey portion.

Behaviour is undefined when this is not the same. Use suborsame() to check.

Definition at line 303 of file uniconfkey.cc.

References printable(), and suborsame().

Referenced by UniConf::fullkey().

bool UniConfKey::operator== ( const UniConfKey other  )  const [inline]

Determines if two paths are equal.

"other" is the other path Returns: true in that case

Definition at line 248 of file uniconfkey.h.

References compareto().

bool UniConfKey::operator!= ( const UniConfKey other  )  const [inline]

Determines if two paths are unequal.

"other" is the other path Returns: true in that case

Definition at line 256 of file uniconfkey.h.

bool UniConfKey::operator< ( const UniConfKey other  )  const [inline]

Determines if this path precedes the other lexicographically.

"other" is the other path Returns: true in that case

Definition at line 264 of file uniconfkey.h.

References compareto().


Member Data Documentation

UniConfKey UniConfKey::EMPTY [static]

represents "" (root)

Definition at line 47 of file uniconfkey.h.

Referenced by UniConfGen::NullIter::key(), UniIniGen::refresh(), UniConf::XIter::rewind(), UniConf::root(), and UniIniGen::UniIniGen().

UniConfKey UniConfKey::ANY [static]

represents "*"

Definition at line 48 of file uniconfkey.h.

Referenced by matches(), and UniConf::XIter::rewind().

UniConfKey UniConfKey::RECURSIVE_ANY [static]

represents "..."

Definition at line 49 of file uniconfkey.h.

Referenced by matches(), and UniConf::XIter::rewind().


The documentation for this class was generated from the following files:
Generated on Fri Oct 5 18:20:31 2007 for WvStreams by  doxygen 1.5.3