C/C++ Programmer's Guide (G06.27+, H06.08+, J06.03+)

_arg_present()
The _arg_present() operator is an HP extension. _arg_present() is used to determine the
presence of a parameter in an extensible or variable function. The compiler generates code to
determine whether the supplied operand is present in the actual function call. If the operand is
present, 1 is returned; otherwise, 0 is returned.
unary-expression:
_arg_present (formal-parameter-name)
formal-parameter-name
defines the operand on which the _arg_present() operator operates.
Usage Guidelines
The _arg_present() operator is allowed only in an extensible or variable function.
The formal-parameter-name operand in the _arg_present() operator must be the
name of a formal parameter of the extensible or variable function.
_bitlength()
The _bitlength() operator yields the size, in bits, of its operand. Its operand can be an
expression or the parenthesized name of a type. The size is determined from the type of the
operand, which itself is not evaluated. The result is an integer constant. The _bitlength()
operator is similar to the sizeof() operator, except that for _bitlength() the result is in bits and
the unary-expression can be a bit-field selection.
_bitlength (type-name) | unary-expression
type-name
is the name of a type.
unary-expression
is a unary expression.
Usage Guideline
The _bitlength() operator cannot be applied to an operand of function type or of incomplete
type. If this application is attempted, the result is an unsigned constant whose type is size_t.
_optional()
The _optional() operator is similar to the pTAL $OPTIONAL standard function. It allows you
to dynamically pass and omit actual parameters to extensible and variable functions.
The first expression operand is a scalar expression that is evaluated to determine whether an actual
argument is to be evaluated and passed to the extensible or variable function. If the first expression
is zero, the second expression operand is not evaluated and no actual argument is passed. If the
first expression is not zero, the second expression operand is evaluated and passed as the actual
argument.
When the _optional() operator is used, the extensible and variable mask and count words
are computed at run-time. The code generated is slightly slower than using “normal” calls where
the mask word and count words are computed at compile time.
_optional ( expression1, expression2 )
62 C and C++ Extensions