next up previous contents index
Next: 3. The Method Wrappers Up: 2. The Method Hooks Previous: 1. The Wrapper Data   Contents   Index

2. The BaseClass Extension Record

Every widget class that wants to take part in the BaseClass game of hooks and wrappers must attach a data structure of type XmBaseClassExtRec to its class record. From now on I'll use the abbreviation ``BCE record'' (although its more an acronym) whenever I refer to a data structure of the type XmBaseClassExtRec. A BCE record can be used to add prehook and posthook methods to any widget class. Beside this, a BCE record also contains information about secondary objects, wrapper methods and other things right out of Pandora's box.

The layout of a BCE record is as follows:

XmBaseClassExtRec


typedef struct _XmBaseClassExtRec 
{
    XtPointer             next_extension;
    XrmQuark              record_type;
    long                  version;
    Cardinal              record_size;
    XtInitProc            initializePrehook;
    XtSetValuesFunc       setValuesPrehook;
    XtInitProc            initializePosthook;
    XtSetValuesFunc       setValuesPosthook;
    WidgetClass           secondaryObjectClass;
    XtInitProc            secondaryObjectCreate;
    XmGetSecResDataFunc   getSecResData;
    unsigned char         flags[32];
    XtArgsProc            getValuesPrehook;
    XtArgsProc            getValuesPosthook;
    XtWidgetClassProc     classPartInitPrehook;
    XtWidgetClassProc     classPartInitPosthook;
    XtResourceList        ext_resources;
    XtResourceList        compiled_ext_resources;
    Cardinal              num_ext_resources;
    Boolean               use_sub_resources;
    XmWidgetNavigableProc widgetNavigable;
    XmFocusChangeProc     focusChange;
    XmWrapperData         wrapperData;
} XmBaseClassExtRec, *XmBaseClassExt;

If you want to attach your own BCE record to a (may be self-written) M*TIF widget class, take these steps:


\begin{itemlist}
\item[\circled{1}] Within your class record, let \code{core\_cl...
...t class, using \code{\_XmFastSubclassInit()}. More
on this below.
\end{itemlist}

If you don't need the BaseClass' whistles and bells for your self-written new widget class and you subclass from any of M*TIF's widget classes, then you can skip the steps mentioned above. If you don't attach a BCE record to your widget class record you'll automagically inherit a BCE record from your widget's superclass.

Now let's look at each member of a BCE record in more detail:


\begin{itemdescription}
\ITEM[XtPointer next\_extension;]
Used when you need to ...
...cent entry of the wrapper stack for this widget class.
\par\end{itemdescription}


next up previous contents index
Next: 3. The Method Wrappers Up: 2. The Method Hooks Previous: 1. The Wrapper Data   Contents   Index
Danny Backx
2000-12-13