Each system routine that processes keywords is required to define a structure variable into which IDL_KWProcessByOffset() will store all the results of keyword processing. This variable must follow the following rules:

  • The name of the structure type must be defined as KW_RESULT. This requirement exists so that the IDL_KW_OFFSETOF() macro can properly do its work.
  • The first field within any KW_RESULT structure must be defined using the IDL_KW_RESULT_FIRST_FIELD macro. The contents of this first field are private, and should not be examined. It contains the information required by IDL to properly track its resource use.
  • The name of the KW_RESULT variable must be kw. This requirement exists so that the IDL_KW_FREE macro can properly do its work.

Hence, all system routines that process keywords will contain statements similar to the following:

typedef struct {
   IDL_KW_RESULT_FIRST_FIELD;
   /* Must be first entry in struct */
   …	/* Additional user specified fields */
} KW_RESULT;
 
KW_RESULT kw;

All fields within the KW_RESULT structure after the required first field can have arbitrary user selected names. The types of these fields are dictated by the IDL_KW_PAR and IDL_KW_ARR_DESC_R structures that refer to them.