Table of Contents
XSD built-in simple type declarations are mapped directly to C types defined in the osSysTypes.h runtime header file. The general mapping of each XSD simple type to a C type is as follows:
| XSD Built-In Type | C Type (in osSysTypes) | C Type (base) |
|---|---|---|
| anyURI | OSXMLSTRING | unsigned char* |
| anyType | OSXSDAnyType | struct |
| base64Binary | OSDynOctStr | struct |
| boolean | OSBOOL | unsigned char* |
| byte | OSINT8 | char |
| date | OSXMLSTRING | unsigned char* |
| dateTime | OSXMLSTRING | unsigned char* |
| decimal | OSREAL | double |
| double | OSREAL | double |
| duration | OSXMLSTRING | unsigned char* |
| ENTITIES | OSRTDList | linked list struct |
| ENTITY | OSXMLSTRING | unsigned char* |
| float | OSREAL | double |
| gDay | OSXMLSTRING | unsigned char* |
| gMonth | OSXMLSTRING | unsigned char* |
| gMonthDay | OSXMLSTRING | unsigned char* |
| gYear | OSXMLSTRING | unsigned char* |
| gYearMonth | OSXMLSTRING | unsigned char* |
| hexBinary | OSDynOctStr | struct |
| ID | OSXMLSTRING | unsigned char* |
| IDREF | OSXMLSTRING | unsigned char* |
| IDREFS | OSRTDList | linked list struct |
| integer | OSINT32 | int |
| int | OSINT32 | int |
| language | OSXMLSTRING | unsigned char* |
| long | OSINT64 | long long (64-bit integer type) |
| Name | OSXMLSTRING | unsigned char* |
| NCName | OSXMLSTRING | unsigned char* |
| negativeInteger | OSINT32 | int |
| NMTOKEN | OSXMLSTRING | unsigned char* |
| NMTOKENS | OSRTDList | linked list struct |
| nonNegativeInteger | OSUINT32 | unsigned int |
| nonPositiveInteger | OSUINT32 | int |
| normalizedString | OSXMLSTRING | unsigned char* |
| positiveInteger | OSUINT32 | unsigned int |
| short | OSINT16 | short |
| string | OSXMLSTRING | unsigned char* |
| time | OSXMLSTRING | unsigned char* |
| token | OSXMLSTRING | unsigned char* |
| unsignedByte | OSUINT8 | unsigned char* |
| unsignedShort | OSUINT16 | unsigned short |
| unsignedInt | OSUINT32 | unsigned int |
| unsignedLong | OSUINT64 | unsigned long (64-bit) |
For C++, class wrappers are added around each of these types when they are used in simple type declarations. In most cases, these classes contain a single public member variable called value that holds the value of the type. They also contain a constructor and assignment operator for setting the value.
The following sections provide more detail on these mappings.