Creator - recreates catalog-managed objects from disk and
instantiates component views from their class identifiers
SYNOPSIS
#include <Unidraw/creator.h>
DESCRIPTION
A creator object can reconstruct a catalog-managed object
from disk and can instantiate a component view given a
class identifier. Generally only the Catalog class uses
the creator to reconstruct objects from disk, but it may
be useful for other classes (e.g., the Component base
class) to use the creator to create views of component
subjects.
Applications that derive new catalog-managed classes or
component views must also derive a subclass of Creator
that extends the base class operations to support the new
classes.
PUBLIC OPERATIONS
Creator()
Instantiate an new creator object. The Catalog
constructor requires an instance of a creator
object, either an instance of the Creator base
class or an instance of an application-specific
Creator subclass.
virtual void* Create(
ClassId, istream& in, ObjectMap* objmap, int objid
)
Create an instance of the class corresponding to
the given class identifier. Normally this opera-
tion will be used by the Catalog class exclusively.
This operation contains a switch statement that
calls a CREATE macro for each possible class iden-
tifier. The CREATE macro takes the istream,
ObjectMap, and int arguments as parameters; it is
not important to understand how the macro uses
these arguments. For example, the entry for the
LineComp line component subject class is
case LINE_COMP: CREATE(LineComp, in, objmap,
objid);
Derived Creator classes must redefine this opera-
tion to include a switch statement for application-
specific classes, with the default case calling the
parent class's Create operation.
virtual void* Create(ClassId id)
Create an instance of the view class corresponding
ments of the form
if (id == <identifier name>) return new <class
name>;
For example, the entry for the PostScript external
view class identifier for line components is
if (id == PS_LINE) return new PSLine;
Derived Creator classes must redefine this opera-
tion to include if statements for application-spe-
cific view classes, with the final statement being
a call to the parent classes's Create operation.
SEE ALSO
Catalog(3U), classes(3U), globals(3U)
Man(1) output converted with
man2html