#include <Inventor/SbDict.h>
Public Member Functions | |
SbDict (const int entries=251) | |
SbDict (const SbDict &from) | |
~SbDict () | |
SbDict & | operator= (const SbDict &from) |
void | applyToAll (void(*rtn)(unsigned long key, void *value)) const |
void | applyToAll (void(*rtn)(unsigned long key, void *value, void *data), void *data) const |
void | clear (void) |
SbBool | enter (const unsigned long key, void *const value) |
SbBool | find (const unsigned long key, void *&value) const |
void | makePList (SbPList &keys, SbPList &values) |
SbBool | remove (const unsigned long key) |
void | setHashingFunction (unsigned long(*func)(const unsigned long key)) |
It uses hashing to quickly insert and find entries in the dictionary. An entry consists of an unique key and a generic pointer.
SbDict::SbDict | ( | const int | entries = 251 |
) |
Constructor with entries specifying the number of buckets in the hash list -- so it need to be larger than 0. For best performance during dictionary look-ups, entries should be a prime.
SbDict::SbDict | ( | const SbDict & | from | ) |
Copy constructor.
SbDict::~SbDict | ( | ) |
Destructor.
Make a deep copy of the contents of dictionary from into this dictionary.
void SbDict::applyToAll | ( | void(*)(unsigned long key, void *value) | rtn | ) | const |
Applies rtn to all entries in the dictionary.
void SbDict::applyToAll | ( | void(*)(unsigned long key, void *value, void *data) | rtn, | |
void * | data | |||
) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void SbDict::clear | ( | void | ) |
Clear all entries in the dictionary.
SbBool SbDict::enter | ( | const unsigned long | key, | |
void *const | value | |||
) |
Inserts a new entry into the dictionary. key should be a unique number, and value is the generic user data.
If key does not exist in the dictionary, a new entry is created and TRUE
is returned. Otherwise, the generic user data is changed to value, and FALSE
is returned.
SbBool SbDict::find | ( | const unsigned long | key, | |
void *& | value | |||
) | const |
Searches for key in the dictionary. If an entry with this key exists, TRUE
is returned and the entry value is returned in value. Otherwise, FALSE
is returned.
Creates lists with all entries in the dictionary.
SbBool SbDict::remove | ( | const unsigned long | key | ) |
Removes the entry with key key. TRUE
is returned if an entry with this key was present, FALSE
otherwise.
void SbDict::setHashingFunction | ( | unsigned long(*)(const unsigned long key) | func | ) |
Sets a new hashing function for this dictionary. Default hashing function just returns the key.
If you find that items entered into the dictionary seems to make clusters in only a few buckets, you should try setting a hashing function. If you're for instance using strings, you could use the static SbString::hash() function (you'd need to make a static function that will cast from unsigned long to char * of course).
This function is not part of the OIV API.