IDL supports two kinds of pointer semantics. The pointer_default attribute specifies the default semantics for pointers that are declared in the interface definition. The pointer_default attribute takes the form:
pointer_default (pointer_attribute)
Possible values for pointer_attribute are ref, unique, and ptr.
The default semantics established by the pointer_default attribute apply to the following uses of pointers:
· A pointer that occurs in the declaration of a member of a structure or a union.
· A pointer that does not occur at the top level of an operation parameter declared with more than one pointer operator. A top-level pointer is one that is not the target of another pointer and is not a field of a data structure that is the target of a pointer. (See Pointer Attributes in Parameters, which describes pointer attributes in parameters, for more information on top-level pointers.)
Note that the pointer_default attribute does not apply to a pointer that is the return value of an operation because this is always a full pointer.
The default semantics can be overridden by pointer attributes in the declaration of a particular pointer. If an interface definition does not specify pointer_default and contains a declaration that requires default pointer semantics, the IDL compiler will issue an error. For additional information on pointer semantics, refer to Pointer Attributes.
The pointer_default attribute can appear at most once in an interface.