If C code generation is selected, the following items are generated for each XSD type:
C type definition
Encode function prototype
Decode function prototype
Initialization function prototype
Other function prototypes depending on selected options (for example, print)
A sample section from a C header file is as follows:
/** * Name */ typedef struct EXTERN Name { OSXMLSTRING givenName; OSXMLSTRING initial; OSXMLSTRING familyName; /* namespace attributes - list of OSXMLNamespace */ OSRTDList _nsAttrs; } Name; EXTERN int XmlET_Name (OSCTXT* pctxt, Name* pvalue, const OSUTF8CHAR* elemName, OSXMLNamespace* pNS); EXTERN int XmlDT_Name (OSCTXT* pctxt, Name* pvalue); EXTERN int XmlVT_Name (OSCTXT* pctxt); EXTERN int Init_Name (OSCTXT* pctxt, Name* pvalue); EXTERN void Print_Name (const char* name, Name* pvalue);
This corresponds to the following XSD type definition:
<xsd:complexType name="Name"> <xsd:sequence> <xsd:element name="givenName" type="xsd:string"/> <xsd:element name="initial" type="xsd:string"/> <xsd:element name="familyName" type="xsd:string"/> </xsd:sequence> </xsd:complexType>
In this case, the Name C struct typedef corresponds to the Name XSD complex type definition.
The XmlET_Name function prototype is the XML encode function for the type. The XmlDT_Name function is the pull-parser decode function for this type. The XmlVT_Name function is the pull-parser validation function for this type (only generated if -genvalid was specified). If -sax was specified, there would be no generated type function because decoding is handled by SAX handler functions.
The Init_Name function prototype is the declaration of the initialization function for this type. This function is called to initialize a variable of the type before encoding or decoding. It initializes all fields to zero or to the field's fixed or default value as specified in the XSD source file.
The Print_Name function prototype is for a print utility function. This is an optional function that was generated by using the -print command line qualifier. It prints the contents of a variable of the generated type to the standard output device.