rwlogo
SourcePro C++ 12.0

SourcePro® C++ API Reference Guide



   SourcePro C++
Documentation Home

RWTFunctorMap1< Key > Class Template Reference
[Functor Map]

A functor map that takes only one argument at invocation time and returns no value. More...

#include <rw/functor/map/RWTFunctorMap1.h>

Inheritance diagram for RWTFunctorMap1< Key >:
RWTFunctor1< Key > RWHandleBase

List of all members.

Public Types

typedef Key key_type
typedef unsigned(* hash_function )(const Key &)

Public Member Functions

 RWTFunctorMap1 (hash_function hf, size_t size=RW_FUNCTOR_MAP_CAPACITY)
 RWTFunctorMap1 (const RWTFunctorMap1< Key > &second)
 ~RWTFunctorMap1 (void)
RWTFunctorMap1< Key > & operator= (const RWTFunctorMap1< Key > &second)
void operator() (Key key) const
RWTFunctorMap1Imp< Key > & body (void) const
bool add (Key key, RWFunctor0 functor)
bool remove (Key key)
bool contains (Key key) const
bool find (Key key, RWFunctor0 &functor) const
void resize (size_t size)
void clear (void)
size_t entries (void) const
void setDefault (RWFunctor0 functor)
RWFunctor0 getDefault (void) const

Detailed Description

template<class Key>
class RWTFunctorMap1< Key >

The RWTFunctorMap1 class represents the functor maps that take only one argument at invocation time and return no value. Since this single argument is the key into the map, the functors held in the map take no arguments, and 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, used later to invoke the desired functor.

Examples

 #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;
 }

Program output:

 okButton was pushed
 cancelButton was pushed

Member Typedef Documentation

template<class Key>
typedef unsigned(* RWTFunctorMap1< Key >::hash_function)(const Key &)

The signature of the hash function.

template<class Key>
typedef Key RWTFunctorMap1< Key >::key_type

The type of the key.


Constructor & Destructor Documentation

template<class Key>
RWTFunctorMap1< Key >::RWTFunctorMap1 ( hash_function  hf,
size_t  size = RW_FUNCTOR_MAP_CAPACITY 
)

Constructs an empty map instance. This creates a complete RWTFunctorMap1 instance, but with no entries. The size parameter has a default value of RW_FUNCTOR_MAP_CAPACITY, defined in rw/functor/map/pkgdefs.h.

template<class Key>
RWTFunctorMap1< Key >::RWTFunctorMap1 ( const RWTFunctorMap1< Key > &  second  ) 

Copy constructor. Constructs a new functor map instance that shares its representation with the functor map second.

template<class Key>
RWTFunctorMap1< Key >::~RWTFunctorMap1 ( void   ) 

Destructor.


Member Function Documentation

template<class Key>
bool RWTFunctorMap1< Key >::add ( Key  key,
RWFunctor0  functor 
)

Adds the specified functor to the functor map with the corresponding key, and returns true. If an entry already exists with an equivalent key, returns false, and the addition fails.

template<class Key>
RWTFunctorMap1Imp<Key>& RWTFunctorMap1< Key >::body ( void   )  const

Gets a reference for the body instance, if any; otherwise, throws an RWTHRInvalidPointer exception.

Reimplemented from RWTFunctor1< Key >.

template<class Key>
void RWTFunctorMap1< Key >::clear ( void   ) 

Clears the functor map of all entries.

template<class Key>
bool RWTFunctorMap1< Key >::contains ( Key  key  )  const

Returns true if the functor map contains an entry with key equivalent to the given key, otherwise false.

template<class Key>
size_t RWTFunctorMap1< Key >::entries ( void   )  const

Returns the number of entries in the functor map.

template<class Key>
bool RWTFunctorMap1< Key >::find ( Key  key,
RWFunctor0 functor 
) const

Finds the entry in the functor map with a key equivalent to the given key, and returns it via the reference parameter functor. Returns true if the key is found, otherwise false. If a matching key is not found but a default functor exists, sets the parameter functor to the default functor, and returns false. If no match is found and there is no default functor, throws an RWTHRInternalError exception.

See also:
setDefault().
template<class Key>
RWFunctor0 RWTFunctorMap1< Key >::getDefault ( void   )  const

Returns the map's default functor.

See also:
setDefault().
template<class Key>
void RWTFunctorMap1< Key >::operator() ( Key  key  )  const

Invokes the functor in the map that is associated with a key equivalent to 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.

Reimplemented from RWTFunctor1< Key >.

template<class Key>
RWTFunctorMap1<Key>& RWTFunctorMap1< Key >::operator= ( const RWTFunctorMap1< Key > &  second  ) 

Assignment operator. Binds this functor map instance to the representation of the second map instance.

template<class Key>
bool RWTFunctorMap1< Key >::remove ( Key  key  ) 

Removes the entry, if it exists, with a key equivalent to the given key, and returns true. If no such entry exists, returns false.

template<class Key>
void RWTFunctorMap1< Key >::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 of the constructor.

template<class Key>
void RWTFunctorMap1< Key >::setDefault ( RWFunctor0  functor  ) 

Sets functor as the default functor. This functor is used when an invalid key is provided to access the functor map.

 All Classes Functions Variables Typedefs Enumerations Enumerator Friends

© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.