Provided by: ivtools-dev_2.0.11d.a1-3build1_amd64 bug

NAME

       classes - unique identifiers for catalog-managed objects and component views

SYNOPSIS

       #include <Unidraw/classes.h>

DESCRIPTION

       Classes for catalog-managed objects, including components, commands, tools, state variables, and transfer
       functions, must be associated with mutually-unique class identifiers that can be written onto disk.  This
       allows a creator object to call the appropriate constructor as part of recreating an object from disk.

       Also,  there must be a mechanism for creating an appropriate view given a subject; that is, there must be
       an association between a subject class and allowable view classes for that subject.  This association  is
       established  by  defining  class  identifiers  for  component  views.   These  identifiers  are formed by
       concatenating the identifier for a given component subject class with  an  identifier  that  specifies  a
       ``view  category.''   For  example,  the  class  identifier  for  the  PostScript external view of a line
       component is the concatenation of the identifier for the line component subject class and POSTSCRIPT_VIEW
       identifier, which specifies the category of external views for  generating  PostScript.   This  makes  it
       possible  to  create  an  instance  of  the  appropriate  PostScript  external view subclass given a line
       component subject.

       The class identifiers for the Unidraw base and predefined derived classes are specified in the  classes.h
       include  file.   Applications  that  define  new catalog-managed objects or component views should define
       unique class identifiers in a similar manner.  Class identifiers for catalog-managed objects  are  simply
       integers  with  mnemonic  macro  definitions,  usually the class name in all-uppercase.  For example, the
       identifier for the LineComp component subject class is

       #define LINE_COMP 9030

       View class identifiers are specified using the Combine macro, which takes as its first argument the macro
       definition of the corresponding component subject identifier; its second argument is  an  identifier  for
       the  view  category.   The  Combine  macro itself is then defined with a mnemonic name.  For example, the
       identifier for the PostScript external view  class  PSLine  (which  generates  PostScript  for  the  line
       component subject) is defined as

       #define PS_LINE Combine(LINE_COMP, POSTSCRIPT_VIEW)

       where the POSTSCRIPT_VIEW view category identifier is defined as

       #define POSTSCRIPT_VIEW 9103

       N.B.: All class identifiers in a given application must be unique.

SEE ALSO

       Catalog(3U), Creator(3U)

Unidraw                                           12 June 1990                                       classes(3U)