#include <X11/Intrinsic.h>#include <X11/Xfuncproto.h>Include dependency graph for WidgetNode.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Data Structures | |
| struct | _XmuWidgetNode |
Defines | |
| #define | XmuWnClass(wn) ((wn)->widget_class_ptr[0]) |
| #define | XmuWnClassname(wn) (XmuWnClass(wn)->core_class.class_name) |
| #define | XmuWnSuperclass(wn) ((XmuWnClass(wn))->core_class.superclass) |
Typedefs | |
| typedef _XmuWidgetNode | XmuWidgetNode |
Functions | |
| _XFUNCPROTOBEGIN void | XmuWnInitializeNodes (XmuWidgetNode *nodearray, int nnodes) |
| void | XmuWnFetchResources (XmuWidgetNode *node, Widget toplevel, XmuWidgetNode *topnode) |
| int | XmuWnCountOwnedResources (XmuWidgetNode *node, XmuWidgetNode *ownernode, Bool constraints) |
| XmuWidgetNode * | XmuWnNameToNode (XmuWidgetNode *nodelist, int nnodes, _Xconst char *name) |
| #define XmuWnClass | ( | wn | ) | ((wn)->widget_class_ptr[0]) |
Definition at line 61 of file WidgetNode.h.
Referenced by XmuWnFetchResources(), and XmuWnInitializeNodes().
| #define XmuWnClassname | ( | wn | ) | (XmuWnClass(wn)->core_class.class_name) |
| #define XmuWnSuperclass | ( | wn | ) | ((XmuWnClass(wn))->core_class.superclass) |
| typedef struct _XmuWidgetNode XmuWidgetNode |
| int XmuWnCountOwnedResources | ( | XmuWidgetNode * | node, | |
| XmuWidgetNode * | ownernode, | |||
| Bool | constraints | |||
| ) |
Definition at line 279 of file WidgetNode.c.
References _XmuWidgetNode::constraintwn, i, _XmuWidgetNode::nconstraints, _XmuWidgetNode::nresources, and _XmuWidgetNode::resourcewn.
00281 { 00282 register int i; 00283 XmuWidgetNode **wn = (cons ? node->constraintwn : node->resourcewn); 00284 int nmatches = 0; 00285 00286 for (i = (cons ? node->nconstraints : node->nresources); i > 0; i--, wn++) 00287 if (*wn == ownernode) nmatches++; 00288 return nmatches; 00289 }
| void XmuWnFetchResources | ( | XmuWidgetNode * | node, | |
| Widget | toplevel, | |||
| XmuWidgetNode * | topnode | |||
| ) |
Definition at line 211 of file WidgetNode.c.
References compare_resource_entries(), dummy, _XmuWidgetNode::have_resources, _XmuWidgetNode::label, _XmuWidgetNode::nresources, NULL, _XmuWidgetNode::resourcewn, _XmuWidgetNode::superclass, and XmuWnClass.
00213 { 00214 Widget dummy; 00215 XmuWidgetNode *wn; 00216 00217 if (node->have_resources) return; 00218 00219 dummy = XtCreateWidget (node->label, XmuWnClass(node), toplevel, 00220 NULL, 0); 00221 if (dummy) XtDestroyWidget (dummy); 00222 00223 00224 /* 00225 * walk up tree geting resources; since we've instantiated the widget, 00226 * we know that all of our superclasses have been initialized 00227 */ 00228 for (wn = node; wn && !wn->have_resources; wn = wn->superclass) { 00229 XtGetResourceList (XmuWnClass(wn), &wn->resources, &wn->nresources); 00230 if (wn->resources) { 00231 qsort ((char *) wn->resources, wn->nresources, 00232 sizeof(XtResource), compare_resource_entries); 00233 } 00234 wn->resourcewn = (XmuWidgetNode **) XtCalloc (wn->nresources, 00235 sizeof (XmuWidgetNode *)); 00236 if (!wn->resourcewn) { 00237 fprintf (stderr, 00238 "%s: unable to calloc %d %ld byte widget node ptrs\n", 00239 "XmuWnFetchResources", wn->nresources, 00240 (unsigned long)sizeof (XmuWidgetNode *)); 00241 exit (1); 00242 } 00243 00244 XtGetConstraintResourceList (XmuWnClass(wn), &wn->constraints, 00245 &wn->nconstraints); 00246 if (wn->constraints) { 00247 qsort ((char *) wn->constraints, wn->nconstraints, 00248 sizeof(XtResource), compare_resource_entries); 00249 } 00250 wn->constraintwn = (XmuWidgetNode **) 00251 XtCalloc (wn->nconstraints, sizeof (XmuWidgetNode *)); 00252 if (!wn->constraintwn) { 00253 fprintf (stderr, 00254 "%s: unable to calloc %d %ld byte widget node ptrs\n", 00255 "XmuWnFetchResources", wn->nconstraints, 00256 (unsigned long)sizeof (XmuWidgetNode *)); 00257 exit (1); 00258 } 00259 00260 wn->have_resources = True; 00261 if (wn == topnode) break; 00262 } 00263 00264 00265 /* 00266 * Walk up tree removing all resources that appear in superclass; we can 00267 * mash the resource list in place since it was copied out of widget. 00268 */ 00269 for (wn = node; wn; wn = wn->superclass) { 00270 mark_resource_owner (wn); 00271 if (wn == topnode) break; 00272 } 00273 00274 return; 00275 }
Here is the call graph for this function:

| _XFUNCPROTOBEGIN void XmuWnInitializeNodes | ( | XmuWidgetNode * | nodearray, | |
| int | nnodes | |||
| ) |
Definition at line 144 of file WidgetNode.c.
References _XmuWidgetNode::children, _XmuWidgetNode::constraints, _XmuWidgetNode::constraintwn, _XmuWidgetNode::data, done, _XmuWidgetNode::have_resources, i, j, _XmuWidgetNode::label, _XmuWidgetNode::lowered_classname, _XmuWidgetNode::lowered_label, namelen, _XmuWidgetNode::nconstraints, _XmuWidgetNode::nresources, NULL, _XmuWidgetNode::resources, _XmuWidgetNode::resourcewn, _XmuWidgetNode::siblings, _XmuWidgetNode::superclass, superclass, XmuCopyISOLatin1Lowered(), XmuWnClass, XmuWnClassname, and XmuWnSuperclass.
00145 { 00146 int i; 00147 XmuWidgetNode *wn; 00148 00149 /* 00150 * Assume that the node array is in alphabetic order, so we need to 00151 * search backwards to make sure that the children are listed forward. 00152 */ 00153 for (i = nnodes - 1, wn = nodearray + (nnodes - 1); i >= 0; i--, wn--) { 00154 WidgetClass superclass = XmuWnSuperclass(wn); 00155 int j; 00156 XmuWidgetNode *swn; 00157 int lablen = strlen (wn->label); 00158 int namelen = strlen (XmuWnClassname(wn)); 00159 00160 wn->lowered_label = XtMalloc (lablen + namelen + 2); 00161 #if 0 00162 /* XtMalloc exits if failed */ 00163 if (!wn->lowered_label) { 00164 fprintf (stderr, 00165 "%s: unable to allocate %d bytes for widget name\n", 00166 "XmuWnInitializeNodes", lablen + namelen + 2); 00167 exit (1); 00168 } 00169 #endif 00170 wn->lowered_classname = wn->lowered_label + (lablen + 1); 00171 XmuCopyISOLatin1Lowered (wn->lowered_label, wn->label); 00172 XmuCopyISOLatin1Lowered (wn->lowered_classname, XmuWnClassname(wn)); 00173 wn->superclass = NULL; 00174 wn->have_resources = False; 00175 wn->resources = NULL; 00176 wn->resourcewn = NULL; 00177 wn->nresources = 0; 00178 wn->constraints = NULL; 00179 wn->constraintwn = NULL; 00180 wn->nconstraints = 0; 00181 wn->data = (XtPointer) NULL; 00182 00183 /* 00184 * walk up the superclass chain 00185 */ 00186 while (superclass) { 00187 for (j = 0, swn = nodearray; j < nnodes; j++, swn++) { 00188 if (superclass == XmuWnClass(swn)) { 00189 wn->superclass = swn; 00190 goto done; /* stupid C language */ 00191 } 00192 } 00193 /* 00194 * Hmm, we have a hidden superclass (such as in core in R4); just 00195 * ignore it and keep on walking 00196 */ 00197 superclass = superclass->core_class.superclass; 00198 } 00199 done: 00200 if (wn->superclass) { 00201 wn->siblings = wn->superclass->children; 00202 wn->superclass->children = wn; 00203 } 00204 } 00205 00206 return; 00207 }
Here is the call graph for this function:

| XmuWidgetNode* XmuWnNameToNode | ( | XmuWidgetNode * | nodelist, | |
| int | nnodes, | |||
| _Xconst char * | name | |||
| ) |
Definition at line 293 of file WidgetNode.c.
References i, _XmuWidgetNode::lowered_classname, _XmuWidgetNode::lowered_label, and XmuNCopyISOLatin1Lowered().
00294 { 00295 int i; 00296 XmuWidgetNode *wn; 00297 char tmp[1024]; 00298 00299 XmuNCopyISOLatin1Lowered(tmp, name, sizeof(tmp)); 00300 for (i = 0, wn = nodelist; i < nnodes; i++, wn++) { 00301 if (strcmp (tmp, wn->lowered_label) == 0 || 00302 strcmp (tmp, wn->lowered_classname) == 0) { 00303 return wn; 00304 } 00305 } 00306 return NULL; 00307 }
Here is the call graph for this function:

1.5.1