Keywords: LessTif

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:

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:

Next: 3. The Method Wrappers Up: 2. The Method Hooks Previous: 1. The Wrapper Data Contents Index