#include <SimOrdMap.h>
Collaboration diagram for casa::SimpleOrderedMap< K, V >:

SimpleOrderedMap<key,value> is a template class. It is similar to OrderedMap<key,value>, but lacks its sophisticated iterator capability. Instead iteration can be done using the getKey and getVal function with a simple index. The function ndefined() gives the number of key,value pairs in the map.
It uses a Block to store an array of pointers to the keys and the associated values. The keys and values themselves are stored on the heap. The keys are kept in order to allow a binary search through the keys for rapid access.
This is one (simple) implementation of an ordered map. It is not suitable for large arrays of keys, since the overhead of keeping the keys in order would get too big.
Exceptions are raised when new[] is failing or when the next() getKey() or getValue() function is failing.
The AipsIO >> and << operators are defined in <aips/SimOrdMapIO.h>.
Definition at line 69 of file SimOrdMap.h.
Public Member Functions | |
| SimpleOrderedMap (const V &defaultValue, uInt size) | |
| Creates a map with the specified default value, "value", and the internal block size. | |
| SimpleOrderedMap (const V &defaultValue) | |
| Creates a map with the specified default value, "value". | |
| SimpleOrderedMap (const SimpleOrderedMap< K, V > &) | |
| Creates a map from another one; use copy semantics. | |
| ~SimpleOrderedMap () | |
| Removes a map. | |
| SimpleOrderedMap< K, V > & | operator= (const SimpleOrderedMap< K, V > &) |
| Assigns this SimpleOrderedMap to another with copy semantics. | |
| V & | define (const K &, const V &) |
| Defines a mapping (ie. | |
| uInt | ndefined () const |
| Get the number of elements in the map. | |
| const K & | getKey (uInt inx) const |
| Get the i-th key in the map. | |
| void | rename (const K &newkey, const K &oldkey) |
| Rename a key. | |
| void | remove (const K &) |
| Undefines a mapping (ie. | |
| void | clear () |
| Clear the entire map (ie. | |
| uInt | ntot () const |
| Get the total size of the block in use. | |
| Bool | ok () const |
| Check the internal state. | |
| V & | operator() (const K &ky) |
| This is the mapping function which maps keys to values. | |
| const V & | operator() (const K &ky) const |
| V & | defaultVal () |
| Returns the default value for the Map. | |
| const V & | defaultVal () const |
| V * | isDefined (const K &) |
| These functions check to see if a mapping is defined between the specified key and some value. | |
| const V * | isDefined (const K &k) const |
| const V & | getVal (uInt inx) const |
| Get the i-th value in the map. | |
| V & | getVal (uInt inx) |
| uInt | incr () const |
| Get or set the Block allocation increment. | |
| uInt | incr (uInt nri) |
Static Public Member Functions | |
| static uInt | Version () |
| Version for major change (used by SimOrdMapIO). | |
Protected Member Functions | |
| uInt | findKey (const K &, Bool &) const |
| Binary search for the key. | |
| void | copyBlock (const SimpleOrderedMap< K, V > &) |
| Copy from another Block of OrderedPair's. | |
Protected Attributes | |
| Block< void * > | kvblk |
| The blocks to hold the keys and values and the total, used and increment size of these blocks. | |
| uInt | nrused |
| uInt | nrincr |
| V | DefaultVal |
| casa::SimpleOrderedMap< K, V >::SimpleOrderedMap | ( | const V & | defaultValue, | |
| uInt | size | |||
| ) |
Creates a map with the specified default value, "value", and the internal block size.
| casa::SimpleOrderedMap< K, V >::SimpleOrderedMap | ( | const V & | defaultValue | ) | [explicit] |
Creates a map with the specified default value, "value".
| casa::SimpleOrderedMap< K, V >::SimpleOrderedMap | ( | const SimpleOrderedMap< K, V > & | ) |
| casa::SimpleOrderedMap< K, V >::~SimpleOrderedMap | ( | ) |
Removes a map.
| SimpleOrderedMap<K,V>& casa::SimpleOrderedMap< K, V >::operator= | ( | const SimpleOrderedMap< K, V > & | ) |
| V& casa::SimpleOrderedMap< K, V >::define | ( | const K & | , | |
| const V & | ||||
| ) |
| V& casa::SimpleOrderedMap< K, V >::operator() | ( | const K & | ky | ) |
This is the mapping function which maps keys to values.
If the map from the key to a value is not defined, a mapping will be defined from the key to the default value (which is set from the constructor. The "isDefined()" member function can be used to check to see if a mapping is defined before using the "operator()()".
Note: With a constant map in the case where the key is not defined, the mapping between key and default value is not created, but rather an exception is thrown.
| const V& casa::SimpleOrderedMap< K, V >::operator() | ( | const K & | ky | ) | const |
| V& casa::SimpleOrderedMap< K, V >::defaultVal | ( | ) | [inline] |
| const V& casa::SimpleOrderedMap< K, V >::defaultVal | ( | ) | const [inline] |
Definition at line 123 of file SimOrdMap.h.
| V* casa::SimpleOrderedMap< K, V >::isDefined | ( | const K & | ) |
These functions check to see if a mapping is defined between the specified key and some value.
If one is, a pointer to the value is returned, otherwise 0 is returned.
| const V* casa::SimpleOrderedMap< K, V >::isDefined | ( | const K & | k | ) | const [inline] |
Definition at line 131 of file SimOrdMap.h.
| uInt casa::SimpleOrderedMap< K, V >::ndefined | ( | ) | const [inline] |
| const K& casa::SimpleOrderedMap< K, V >::getKey | ( | uInt | inx | ) | const [inline] |
Get the i-th key in the map.
It can be used to iterate through the keys as: for (uInt i=0; i<map.ndefined(); i++) { cout << map.getKey(i) << " " << map.getVal(i) << endl; } Index checking is only done if Block is doing it.
Definition at line 146 of file SimOrdMap.h.
| const V& casa::SimpleOrderedMap< K, V >::getVal | ( | uInt | inx | ) | const [inline] |
Get the i-th value in the map.
It can be used to iterate through the keys as: for (uInt i=0; i<map.ndefined(); i++) { cout << map.getKey(i) << " " << map.getVal(i) << endl; } Index checking is only done if Block is doing it.
Definition at line 158 of file SimOrdMap.h.
| V& casa::SimpleOrderedMap< K, V >::getVal | ( | uInt | inx | ) | [inline] |
Definition at line 160 of file SimOrdMap.h.
| void casa::SimpleOrderedMap< K, V >::rename | ( | const K & | newkey, | |
| const K & | oldkey | |||
| ) |
Rename a key.
If the new key already exists, the existing key will be removed.
| void casa::SimpleOrderedMap< K, V >::remove | ( | const K & | ) |
Undefines a mapping (ie.
remove a key value mapping).
| void casa::SimpleOrderedMap< K, V >::clear | ( | ) |
Clear the entire map (ie.
remove all mappings).
| uInt casa::SimpleOrderedMap< K, V >::ntot | ( | ) | const [inline] |
| uInt casa::SimpleOrderedMap< K, V >::incr | ( | ) | const [inline] |
| uInt casa::SimpleOrderedMap< K, V >::incr | ( | uInt | nri | ) | [inline] |
Definition at line 187 of file SimOrdMap.h.
| Bool casa::SimpleOrderedMap< K, V >::ok | ( | ) | const |
| static uInt casa::SimpleOrderedMap< K, V >::Version | ( | ) | [inline, static] |
Version for major change (used by SimOrdMapIO).
enum did not work properly with cfront 3.0.1), so replaced by a static inline function. Users won't normally use this. display 8
Definition at line 200 of file SimOrdMap.h.
| uInt casa::SimpleOrderedMap< K, V >::findKey | ( | const K & | , | |
| Bool & | ||||
| ) | const [protected] |
Binary search for the key.
| void casa::SimpleOrderedMap< K, V >::copyBlock | ( | const SimpleOrderedMap< K, V > & | ) | [protected] |
Block<void*> casa::SimpleOrderedMap< K, V >::kvblk [protected] |
The blocks to hold the keys and values and the total, used and increment size of these blocks.
Definition at line 205 of file SimOrdMap.h.
Referenced by casa::SimpleOrderedMap< const casa::Colormap *, casa::ColormapInfo * >::ntot().
uInt casa::SimpleOrderedMap< K, V >::nrused [protected] |
Definition at line 206 of file SimOrdMap.h.
Referenced by casa::SimpleOrderedMap< const casa::Colormap *, casa::ColormapInfo * >::ndefined().
uInt casa::SimpleOrderedMap< K, V >::nrincr [protected] |
Definition at line 207 of file SimOrdMap.h.
Referenced by casa::SimpleOrderedMap< const casa::Colormap *, casa::ColormapInfo * >::incr().
V casa::SimpleOrderedMap< K, V >::DefaultVal [protected] |
Definition at line 208 of file SimOrdMap.h.
Referenced by casa::SimpleOrderedMap< const casa::Colormap *, casa::ColormapInfo * >::defaultVal().
1.5.1