VMS Help  —  TCPIP Services, Programming Interfaces, RPC XDR Routines, xdr_union
    Serializes and deserializes discriminant unions.
    Format
      #include  <tcpip$rpcxdr.h>
      bool_t  xdr_union(XDR *xdrs, enum *dscmp, char *unp, struct
              xdr_discrim *choices, xdrproc_t default);

1  –  Arguments

 xdrs
    A pointer to an XDR stream handle created by one of the XDR
    stream-handle creation routines.
 dscmp
    A pointer to the union's discriminant.
 unp
    A pointer to the union's data.
 choices
    A pointer to an array of xdr_discrim structures. Each structure
    contains an ordered pair of [value,proc]. The final structure in
    the array is denoted by a pointer with the value NULL.
 default
    The address of the default XDR routine to call if the dscmp
    argument is not found in the choices array.

2  –  Description

    A filter primitive that translates between a discriminated union
    and its corresponding external representation. The xdr_union
    routine first translates the discriminant of the union located at
    dscmp. This discriminant is always of type enum_t.

    Next, the routine translates the union data located at unp. To
    translate the union data the xdr_union routine first searches
    the structure pointed to by the choices argument for the union
    discriminant passed in the dscmp argument. If a match is found,
    the xdr_union routine calls proc to translate the union data.

    The end of the xdr_discrim structure array must contain an entry
    with the value NULL for proc. If the xdr_union routine reaches
    this entry before finding a match, the routine calls the default
    procedure (if it is not NULL).

3  –  Return Values

    TRUE               Indicates success.
    FALSE              Indicates failure.
Close Help