XtSetArg()XtSetArg()NameXtSetArg - set a resource name and value in an argument list.
Synopsis
void XtSetArg(arg, resource_name, value)
Arg arg;
String resource_name;
XtArgVal value;
Inputs
arg Specifies the Arg structure to set.
resource_name
Specifies the name of the resource.
value Specifies the value of the resource, or its address.
DescriptionXtSetArg() sets arg.name to resource_name, and sets arg.value to value.
If the size of the resource is less than or equal to the size of an
XtArgVal, the resource value is stored directly in value; otherwise, a
pointer to it is stored in value.
XtSetArg() is implemented as the following macro:
#define XtSetArg(arg, n, d) ((void)( (arg).name = (n), (arg).value = (XtArgVal)(d) ))
Because this macro evaluates arg twice, you must not use an expression
with autoincrement, autodecrement or other side effects for this argu‐
ment.
Usage
Many Intrinsics functions need to be passed pairs of resource names and
values in an ArgList to set or override resource values. XtSetArg() is
used to set or dynamically change values in an Arg structure or ArgList
array.
Note that in Release 4, a number of functions beginning with the prefix
XtVa were added to the Intrinsics. These functions accept a NULL-ter‐
minated variable-length argument list instead of a single ArgList
array. Often these forms of the functions are easier to use.
ExampleXtSetArg() is usually used in a highly stylized manner to minimize the
probability of making a mistake; for example:
Arg args[20];
int n;
n = 0;
XtSetArg(args[n], XtNheight, 100); n++;
XtSetArg(args[n], XtNwidth, 200); n++;
XtSetValues(widget, args, n);
Incrementing the array index on the same line means that resource set‐
tings can be easily read, inserted, deleted or commented out on a line-
by-line basis. If you use this approach, be careful when using XtSe‐
tArg() inside an if statement-don't forget to use curly braces to
include the increment statement.
Alternatively, an application can statically declare the argument list:
static Args args[] = {
{XtNheight, (XtArgVal) 100},
{XtNwidth, (XtArgVal) 200},
};
XtSetValues(Widget, args, XtNumber(args));
Structures
The Arg and ArgList types are defined as follows:
typedef struct {
String name;
XtArgVal value;
} Arg, *ArgList;
The definition of XtArgVal differs depending on architecture-its pur‐
pose is precisely to make code portable between architectures with dif‐
ferent word sizes.
See AlsoXtMergeArgLists(1), XtNumber(1).
Xt - Argument Lists XtSetArg()