SourcePro C++ 12.0 |
SourcePro® C++ API Reference Guide |
SourcePro C++ Documentation Home |
Creates an instance of an RWCollectable object, given a class ID. More...
#include <rw/factory.h>
Public Member Functions | |
RWFactory () | |
~RWFactory () | |
void | addFunction (RWuserCreator uc, RWClassID id) |
RWCollectable * | create (RWClassID id) const |
RWuserCreator | getFunction (RWClassID id) const |
void | removeFunction (RWClassID id) |
void | addFunction (RWuserCreator uc, RWClassID id, RWStringID sid) |
RWCollectable * | create (RWStringID sid) const |
RWuserCreator | getFunction (RWStringID sid) const |
void | removeFunction (RWStringID sid) |
RWStringID | getStringID (RWClassID id) const |
RWClassID | getClassID (RWStringID sid) const |
bool | operator<= (const RWFactory &h) |
bool | operator<= (const RWSet &h) const |
bool | operator<= (const RWHashTable &h) const |
Related Functions | |
(Note that these are not member functions.) | |
typedef RWCollectable *(* | RWuserCreator )() |
RWFactory * | getRWFactory () |
Class RWFactory can create an instance of an RWCollectable object, given a class ID. It does this by maintaining a table of class IDs and associated "creator functions." A creator function has the prototype:
RWCollectable* aCreatorFunction();
This function creates an instance of a particular class. For a given RWClassID tag, the appropriate function is selected, invoked and the resultant pointer returned. Because any object created this way is created off the heap, you are responsible for deleting it when done.
A one-of-a-kind global RWFactory can be accessed using getRWFactory(). It is guaranteed to have creator functions in it for all of the classes referenced by your program. See the section in the Essential Tools Module User's Guide about RWFactory.
typedef unsigned short RWClassID; typedef RWCollectable* (*RWuserCreator)(); #include <rw/factory.h> RWFactory* theFactory;
None
#include <iostream> #include <rw/tools/ctdatetime.h> #include <rw/factory.h> #include <rw/rwbag.h> int main () { std::cout << "This program creates an RWBag using theFactory.\n"; // Dummy access to RWBag interface to stimulate // the registration of RWBag with the factory. RWBag ().clear (); // Create the RWBag instance - use the special rwCreateFromFactory. RWBag* ptr = (RWBag*)(rwCreateFromFactory (__RWBAG)); if (0 == ptr) { std::cout << "RWBag instance creation failed.\n"; return 1; } std::cout << "RWBag instance has been created.\n"; // Insert today's date ptr->insert (new RWCollectableDateTime (RWCollectableDateTime::setCurrentTime)); std::cout << "RWBag instance contains an instance of RWCollectableDateTime.\n"; // First delete members ... ptr->clearAndDestroy(); std::cout << "RWBag instance content cleared.\n"; // ... then the bag itself. delete ptr; std::cout << "RWBag instance deleted.\n"; return 0; }
Program output:
This program creates an RWBag using theFactory. RWBag instance has been created. RWBag instance contains an instance of RWCollectableDateTime. RWBag instance content cleared. RWBag instance deleted.
RWFactory::RWFactory | ( | ) |
Constructs an RWFactory.
RWFactory::~RWFactory | ( | ) |
Calls clearAndDestroy(), which is inherited from RWSet.
void RWFactory::addFunction | ( | RWuserCreator | uc, | |
RWClassID | id, | |||
RWStringID | sid | |||
) |
Adds to RWFactory the global function pointed to by uc, which creates an instance of an object with RWClassID id and RWStringID sid.
void RWFactory::addFunction | ( | RWuserCreator | uc, | |
RWClassID | id | |||
) |
RWCollectable* RWFactory::create | ( | RWStringID | sid | ) | const |
Allocates a new instance of the class with RWStringID sid off the heap and returns a pointer to it. Returns rwnil if sid does not exist. Because this instance is allocated off the heap, you are responsible for deleting it when done.
RWCollectable* RWFactory::create | ( | RWClassID | id | ) | const |
RWClassID RWFactory::getClassID | ( | RWStringID | sid | ) | const |
Looks up the RWClassID associated with sid and returns it. If there is no such association, returns __RWUNKNOWN
.
RWuserCreator RWFactory::getFunction | ( | RWStringID | sid | ) | const |
Returns from RWFactory a pointer to the global function associated with RWStringID sid. Returns rwnil if sid does not exist.
RWuserCreator RWFactory::getFunction | ( | RWClassID | id | ) | const |
RWStringID RWFactory::getStringID | ( | RWClassID | id | ) | const |
Looks up the RWStringID associated with id and returns it. If there is no such association, returns RWStringID("NoID").
bool RWFactory::operator<= | ( | const RWHashTable & | h | ) | const [inline] |
Returns true
if self is a subset of h, that is, every element of self has a counterpart in h which isEqual().
This operator is included to fix an inconsistency in the C++ language. It is not explicitly present unless you are compiling with an implementation of the C++ Standard Library. It would normally be inherited from RWSet.
Reimplemented from RWSet.
bool RWFactory::operator<= | ( | const RWSet & | h | ) | const [inline] |
Returns true
if self is a subset of h, that is, every element of self has a counterpart in h which isEqual().
This operator is included to fix an inconsistency in the C++ language. It is not explicitly present unless you are compiling with an implementation of the C++ Standard Library. It would normally be inherited from RWSet.
Reimplemented from RWSet.
bool RWFactory::operator<= | ( | const RWFactory & | h | ) | [inline] |
Returns true
if self is a subset of h, that is, every element of self has a counterpart in h which isEqual().
This operator is included to fix an inconsistency in the C++ language. It is not explicitly present unless you are compiling with an implementation of the C++ Standard Library. It would normally be inherited from RWSet.
void RWFactory::removeFunction | ( | RWStringID | sid | ) |
Removes from RWFactory the global function associated with RWStringID sid. If sid does not exist in the factory, no action is taken.
void RWFactory::removeFunction | ( | RWClassID | id | ) |
RWFactory * getRWFactory | ( | ) | [related] |
Returns a pointer to the global RWFactory object instance, creating it if necessary.
typedef RWCollectable*(* RWuserCreator)() [related] |
A global function used to allocate a RWCollectable derived class for RWFactory. A creator function has prototype:
RWCollectable* aCreatorFunction();
© 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.