Data
Extensions
The
functionality of the CMC data structures and functions can be augmented through
the use of CMC data extensions. Data extensions are used to add additional
fields to data structures and additional parameters to a function.
A standard
generic data structure, CMC_extension, specifies the item code, item data, item
reference, and a bitmask of flags. The item code is the name of the extension
and is used to identify it. The item data, depending on the item code, contains
either the length of the item value, the item value itself, or other
information about the item. The item reference points to where the extension value
is stored or is NULL if there is no related item storage. The flags are set to
zero or to values that describe options for the extension. To use an extension
in a CMC function, a client application sets the item code member of a CMC_extension
structure to a valid name and passes the structure as part of the parameter
list.
Extensions
that are additional parameters to a function can be either input or output
parameters. If the extension is passed as an input parameter, the calling
client application or service provider allocates memory for the CMC_extension
structure and any other structures that are associated with the extension. If
the extension is passed as an output parameter, CMC allocates the storage for
the extension result and the caller frees it by calling the cmc_free function.
The following
extensions make up the CMC common extension set, the extensions that are common
to most CMC implementations but are not in the CMC base specification. The
extensions are listed in alphabetical order. Each reference entry describes the
purpose of the extension.