XmGetSecondaryResourceData(3) | Library Functions Manual | XmGetSecondaryResourceData(3) |
XmGetSecondaryResourceData — A function that provides access to secondary widget resource data "XmGetSecondaryResourceData"
#include <Xm/Xm.h> Cardinal XmGetSecondaryResourceData( WidgetClass widget_class, XmSecondaryResourceData **secondary_data_return);
Some Motif widget classes (such as Gadget, Text, and VendorShell) have resources that are not accessible through the functions XtGetResourceList and XtGetConstraintResourceList. In order to retrieve the descriptions of these resources, an application must use XmGetSecondaryResourceData.
When a widget class has such resources, this function provides descriptions of the resources in one or more data structures. XmGetSecondaryResourceData takes a widget class argument and returns the number of these data structures associated with the widget class. If the return value is greater than 0 (zero), the function allocates and fills an array of pointers to the corresponding data structures. It returns this array at the address that is the value of the secondary_data_return argument.
The type XmSecondaryResourceData is a pointer to a structure with two members that are useful to an application: resources, of type XtResourceList, and num_resources, of type Cardinal. The resources member is a list of the widget resources that are not accessible using Xt functions. The num_resources member is the length of the resources list.
If the return value is greater than 0 (zero), XmGetSecondaryResourceData allocates memory that the application must free. Use XtFree to free the resource list in each structure (the value of the resources member), the structures themselves, and the array of pointers to the structures (the array whose address is secondary_data_return).
Returns the number of secondary resource data structures associated with this widget class.
The following example uses XmGetSecondaryResourceData to print the names of the secondary resources of the Motif Text widget and then frees the data allocated by the function:
XmSecondaryResourceData * block_array; Cardinal num_blocks, i, j; if (num_blocks = XmGetSecondaryResourceData (xmTextWidgetClass,
&block_array)) {
for (i = 0; i < num_blocks; i++) {
for (j = 0; j < block_array[i]->num_resources; j++) {
printf("%s\n", block_array[i]->resources[j].resource_name);
}
XtFree((char*)block_array[i]->resources);
XtFree((char*)block_array[i]);
}
XtFree((char*)block_array); }