RWTFunctorMap1 RWTFunctor1<Key>
add() clear() contains() |
entries() find() getDefault() |
operator()() operator=() remove() |
resize() setDefault() |
Functor Map, subpackage of Functor
#include <rw/functor/map/RWTFunctorMap1.h>
The RWTFunctorMap1 class represents the functor maps that take only one argument at invocation time. Since this one argument is the key into the map, the functors that are held in the map do not take any arguments at all; they are RWFunctor0 functors.
Functor maps allow functors to be grouped together in a key/value table structure. Add functors to the map with a corresponding key of type key_type, later using it to invoke the desired functor.
#include <rw/cstring.h> #include <rw/functor/functor0.h> #include <rw/functor/map/RWTFunctorMap1.h> // Functions that we want to wrap in functors: void okButton(){ cout << "okButton was pushed" << endl; } void cancelButton(){ cout << "cancelButton was pushed" << endl; } int main () { // Create new RWFunctor0s to be the values in the map. RWFunctor0 okFunctor =rwtMakeFunctor0((void(*)(void))0,okButton); RWFunctor0 cancelFunctor =rwtMakeFunctor0((void(*)(void))0,cancelButton); // Create keys with which to associate the values. RWCString okKey = "ok"; RWCString cancelKey = "cancel"; // Declare a new map. A complete, but empty, instance // now exists. RWTFunctorMap1<RWCString> fmap(RWCString::hash); // Add something to the map to make it useful. fmap.add(okKey, okFunctor); fmap.add(cancelKey, cancelFunctor); // Invoking the map with the key "ok" calls the okButton functor. fmap("ok"); // Finally, invoking the map with the key "cancel" calls the // cancelButton functor. fmap("cancel"); return 0; } OUTPUT: okButton was pushed cancelButton was pushed
typedef Key key_type;
The type of the key.
typedef unsigned (*hash_function)(const Key&);
The signature of the hash function.
RWTFunctorMap1(hash_function hf, size_t size = RW_FUNCTOR_MAP_CAPACITY);
Constructs an empty map instance. This creates a complete RWTFunctorMap1 instance, but the map will contain no entries. The default size parameter is set to RW_FUNCTOR_MAP_CAPACITY, which is set in rw/functor/map/pkgdefs.h.
RWTFunctorMap1(const RWTFunctorMap1<key_type>& second);
Copy constructor. Constructs a new functor map instance that shares its representation with the original functor map.
RWTFunctorMap1<key_type>& operator=(const RWTFunctorMap1<key_type>& second);
Assignment operator. Binds this functor map instance to the representation of the second map instance.
void operator()(key_type key) const;
Invokes the functor in the map that is associated with the given key. If there is no matching key, and a default functor has been set, calls the default. If there is no default, and no matching key, throws an RWTHRInternalError exception.
RWBoolean add(key_type key, RWFunctor0 functor);
Adds the specified functor to the functor map with the corresponding key. If an entry already exists with an equivalent key, the addition fails and FALSE is returned.
void clear();
Clears the functor map of all entries.
RWBoolean contains(key_type key) const;
Returns TRUE if the functor map contains an entry with an equivalent key.
size_t entries() const;
Returns the number of entries in the functor map.
RWBoolean find(key_type key, RWFunctor0& functor) const;
Finds the entry in the functor map with the equivalent key, and returns it via the RWFunctor0 reference parameter. Returns TRUE if the key is found, and otherwise, returns FALSE. In the case where a matching key is not found, but a default functor exists, this sets the reference parameter to the default functor, but returns FALSE. If no match is found, and there is no default functor, this throws an RWTHRInternalError exception.
RWFunctor0 getDefault() const;
Returns the map's default functor. This functor is used whenever an invalid key accesses the functor map.
Boolean remove(key_type key);
Removes the entry, if it exists, with the equivalent key, and returns TRUE. If no such entry exists, returns FALSE.
void resize(size_t size);
Changes the size of the map to size. This is an expensive operation, since the entire map must be re-created. Size can be set at construction time via the size parameter.
void setDefault(RWFunctor0 functor);
Sets a functor as the default functor. This functor is used whenever an invalid key is used to access the functor map.
©Copyright 2000, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.