Previous Table of Contents Next


7.2.2 add_arg


void add_arg ( // PIDL
in Identifier name, // argument name
in TypeCode arg_type, // argument datatype
in OpaqueValue value, // argument value to be added
in long len, // length/count of argument value
in Flags arg_flags // argument flags
);

   add_arg incrementally adds arguments to the request.

   For each argument, minimally its value and len must be specified. An argument’s data type, name, and usage flags (i.e., in, out, inout) may also be specified. If so indicated, arguments are validated for data type, order, name, and usage correctness against the set of arguments expected for the indicated operation.

   An implementation of the request services may relax the order constraint (and allow arguments to be specified out of order) by doing ordering based upon argument name.

   The arguments added to the request become associated with the request and are assumed to be unchanged until the invoke has completed (or the request has been deleted).

   Arguments may be associated with a request by specifying them on the Object::create_request call or by adding them via calls to add_arg. Using both methods for specifying arguments for the same request is not supported.

    In addition to the argument modes defined in Section 7.1.1, “Common Data Structures,? on page 7-2, arg_flags may also take the flag value IN_COPY_VALUE. The argument passing flags defined in Section 7.1.1, “Common Data Structures,? on page 7-2 may be used here to indicate the intended parameter passing mode of an argument.

   If the IN_COPY_VALUE flag is set, a copy of the argument value is made and used instead. This flag is ignored for inout and out arguments.