/* * initialize the synthetic resource crap. The only way I know to get the * CachePart stuff for Gadget subclasses is via the baseclass extension * (secondary stuff); unfortunately, I don't know how that works yet. */ void _XmBuildGadgetResources(WidgetClass c) { XmGadgetClass super; XmGadgetClass gc = (XmGadgetClass)c; XmBaseClassExt *bce = NULL; XmExtObjectClass subpclass, esuper; DEBUGOUT(_LtDebug(__FILE__, NULL, "_XmBuildGadgetResources\n")); _XmInitializeSyntheticResources(gc->gadget_class.syn_resources, gc->gadget_class.num_syn_resources); /* * if we're the Gadget, our super doesn't have synthetic resources * nor do we have an extension, so we can bail here. */ if (c == xmGadgetClass) { return; } super = ((XmGadgetClass)c->core_class.superclass); _XmBuildResources(&gc->gadget_class.syn_resources, &gc->gadget_class.num_syn_resources, super->gadget_class.syn_resources, super->gadget_class.num_syn_resources); /* * we can get the subpart stuff from the baseclass extension, now that * it's there. */ bce = (XmBaseClassExt *)_XmGetBaseClassExtPtr(c, XmQmotif); if (!*bce || !(subpclass = (XmExtClassRec *)(*bce)->secondaryObjectClass)) { return; } _XmInitializeSyntheticResources(subpclass->ext_class.syn_resources, subpclass->ext_class.num_syn_resources); /* core dump avoidance overkill */ esuper = (XmExtObjectClass)subpclass->object_class.superclass; if (subpclass == &xmExtClassRec || esuper == &xmExtClassRec) { return; } _XmBuildResources(&subpclass->ext_class.syn_resources, &subpclass->ext_class.num_syn_resources, esuper->ext_class.syn_resources, esuper->ext_class.num_syn_resources); }
void _XmBuildExtResources(WidgetClass c) { XmExtObjectClass ec = (XmExtObjectClass)c; _XmInitializeSyntheticResources(ec->ext_class.syn_resources, ec->ext_class.num_syn_resources); if (c != xmExtObjectClass) { XmExtObjectClass super = (XmExtObjectClass)ec->object_class.superclass; _XmBuildResources(&ec->ext_class.syn_resources, &ec->ext_class.num_syn_resources, super->ext_class.syn_resources, super->ext_class.num_syn_resources); } }
void _XmBuildExtResources(WidgetClass c) { XmExtObjectClass wc = (XmExtObjectClass) c; XmExtObjectClass sc; _XmProcessLock(); _XmInitializeSyntheticResources(wc->ext_class.syn_resources, wc->ext_class.num_syn_resources); if (wc != (XmExtObjectClass) xmExtObjectClass) { sc = (XmExtObjectClass) wc->object_class.superclass; _XmBuildResources (&(wc->ext_class.syn_resources), &(wc->ext_class.num_syn_resources), sc->ext_class.syn_resources, sc->ext_class.num_syn_resources); } _XmProcessUnlock(); }
/********************************************************************** * * _XmBuildGadgetResources * Build up the gadget's synthetic resource processing list * by combining the super classes with this class. * **********************************************************************/ void _XmBuildGadgetResources( WidgetClass c ) { XmGadgetClass wc = (XmGadgetClass) c ; XmGadgetClass sc; XmBaseClassExt *classExtPtr; XmExtClassRec *secondaryObjClass; WidgetClass secObjSuperClass; _XmProcessLock(); sc = (XmGadgetClass) wc->rect_class.superclass; _XmInitializeSyntheticResources(wc->gadget_class.syn_resources, wc->gadget_class.num_syn_resources); /* * RectObj has no synthetic resources to incorporate. */ if (sc != (XmGadgetClass) rectObjClass) { _XmBuildResources (&(wc->gadget_class.syn_resources), &(wc->gadget_class.num_syn_resources), sc->gadget_class.syn_resources, sc->gadget_class.num_syn_resources); } classExtPtr = _XmGetBaseClassExtPtr(c, XmQmotif); secondaryObjClass = (XmExtClassRec *) ((*classExtPtr)->secondaryObjectClass); /* * Not all gadgets have secondary objects. */ if (secondaryObjClass == NULL) {_XmProcessUnlock(); return; } secObjSuperClass = secondaryObjClass->object_class.superclass; /* * secondary object resources have already been inited when they are * inherited */ if (!secObjSuperClass->core_class.class_inited) { _XmInitializeSyntheticResources( secondaryObjClass->ext_class.syn_resources, secondaryObjClass->ext_class.num_syn_resources); secObjSuperClass->core_class.class_inited = True; } /* * ExtObject has no synthetic resources to incorporate. */ if (secObjSuperClass != (WidgetClass) xmExtObjectClass) { _XmBuildResources ( &(secondaryObjClass->ext_class.syn_resources), &(secondaryObjClass->ext_class.num_syn_resources), ((XmExtClassRec *)secObjSuperClass) ->ext_class.syn_resources, ((XmExtClassRec *)secObjSuperClass) ->ext_class.num_syn_resources); } _XmProcessUnlock(); }