OSF DCE Application Development Guide--Core Components

OSF DCE Application Development Guide—Core Components
17.14.7.1.2 Full Pointers
A full pointer is the most complex form of pointer. It supports all capabilities associated
with pointers. For example, by using a full pointer you can build complex data structures
such as linked lists, trees, queues, or arbitrary graphs.
A full pointer has the following characteristics:
Its value can change during a call; it can change from a NULL to non-NULL value,
non-NULL to NULL, or from one non-NULL value to another non-NULL value.
It supports aliasing; it can point to a storage area that is also pointed to by any other
full pointer used in a parameter of the same operation. However, all such pointers
must point to the beginning of the structure. There is no support for pointers to
substructures or to overlapping storage areas. For example, if the interface definition
code contains the following:
[uuid(0e256080-587c-11ca-878c-08002b111685), version(1.0)]
interface overlap
{
typedef struct {
long bill;
long charlie;
} foo;
typedef struct {
long fred;
foo ken;
} bar;
void op ( [in] foo *f, [in] bar *b );
}
and the client application code includes the following:
bar bb;
.
.
.
op ( &bb.ken, &bb );
then the server stub treats these two separate parameters as distinct, and the manager
application code does not see them as overlapping storage.
It allows dynamically allocated data to be returned from a call.
17.14.7.1.3 Unique Pointers
A unique pointer is more flexible than a reference pointer. However, both types of
pointers share several important characteristics.
17 44 Tandem Computers Incorporated 124245