The stub modules that are generated from an interface definition require more information about the interface than can be expressed in C. For example, stubs must know whether an operation parameter is an input or an output.
The additional information required to define a network interface is specified via IDL attributes. IDL attributes can apply to types, to structure members, to operations, to operation parameters, or to the interface as a whole. Some attributes are legal in only one of the preceding contexts; others are legal in more than one context. An attribute is always represented in [ ] (brackets) before the item to which it applies. For example, in an operation declaration, inputs of the operation are preceded by the in attribute and outputs are preceded by the out attribute:
void arith_add (
[in] long a,
[in] long b,
[out] long *c,
);