---
name: "XmGetSecondaryResourceData"
section: "3"
platform: "linux"
package: "openmotif"
version: "2.3.8-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XmGetSecondaryResourceData"
---

# XmGetSecondaryResourceData(3)

A function that provides access to secondary widget resource data

## NAME

**XmGetSecondaryResourceData** — A function that provides access to secondary widget resource data

## SYNOPSIS

```
#include <Xm/Xm.h>
Cardinal XmGetSecondaryResourceData(
WidgetClass widget_class,
XmSecondaryResourceData **secondary_data_return);
```

## DESCRIPTION

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*).

- *widget\_class*

  Specifies the widget class for which secondary resource data is to be retrieved.

- *secondary\_data\_return*

  Specifies a pointer to an array of **XmSecondaryResourceData** pointers to be returned by this function. If the widget class has no secondary resource data, for example, if the value returned by the function is 0 (zero), the function returns no meaningful value for this argument.

## RETURN

Returns the number of secondary resource data structures associated with this widget class.

## EXAMPLE

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);
}
```
