Primitive types
PrimitiveType := <PREFIX><DATA_TYPE>
<PREFIX> := ux
<DATA_TYPE> := <BOOL_TYPE> | <NUMERIC_TYPE> | <STRING_TYPE> | <POINTER_TYPE> | <SIZE_TYPE>
<BOOL_TYPE> := bool
<NUMERIC_TYPE> := <BIT_COUNT><TYPE>
<BIT_COUNT> := 8 | 16 | 32 | 64
<TYPE> := <INTEGER_TYPE> | <FLOATING_POINT_TYPE>
<INTEGER_TYPE> := <SIGNED_INTEGER_TYPE> | <UNSIGNED_INTEGER_TYPE>
<SIGNED_INTEGER_TYPE> := s
<UNSIGNED_INTEGER_TYPE> := u
<FLOATING_POINT_TYPE> := f
<STRING_TYPE> := <ENCODE_RESTRICTED_TYPE> | <ENCODE_FREE_TYPE>
<ENCODE_RESTRICTED_TYPE> := <CHAR_BIT_COUNT> | <CHAR_TYPE>
<CHAR_BIT_COUNT> := 8 | 16
<CHAR_TYPE> := <SINGLE_CHAR> | <CHAR_POINTER>
<SINGLE_CHAR> := c
<CHAR_POINTER> := <WRITABLE_POINTER> | <CONSTANT_POINTER>
<WRITABLE_POINTER> := str
<CONSTANT_POINTER> := cstr
<ENCODE_FREE_TYPE> := <CHAR_TYPE>
<POINTER_TYPE> := ptr<INTEGER_TYPE>
<SIZE_TYPE> := size
위의 규칙에 따라 아래와 같은 타입들이 정의되어 있다.
// Boolean type definitions typedef bool uxbool; // Numeric type definitions typedef char ux8s; typedef unsigned char ux8u; typedef short ux16s; typedef unsigned short ux16u; typedef long ux32s; typedef unsigned long ux32u; typedef __int64 ux64s; typedef unsigned __int64 ux64u; typedef float ux32f; typedef double ux64f; // Size type definitions typedef size_t uxsize; // Byte-restricted character & string type definitions typedef char ux8c; typedef unsigned short ux16c; typedef char * ux8str; typedef const char * ux8cstr; typedef wchar_t * ux16str; typedef const wchar_t *ux16cstr; // Pointer type definitions typedef INT_PTR uxptrs; typedef UINT_PTR uxptru; // Byte-freed character & string type definitions #ifdef _UNICODE typedef wchar_t uxc; typedef wchar_t* uxstr; typedef const wchar_t* uxcstr; #else typedef char uxc; typedef char* uxstr; typedef const char* uxcstr; #endif
User-defined type
UserDefinedType := <TYPE_CLASSIFIER><USAGE><DELIMITER><CLASS_NAME>
<TYPE_CLASSIFIER> := <CLASS> | <INTERFACE> | <TEMPLATE> | <NUMERIC> | <MACRO> | <ENUMERATION> | <STRUCTURE>
<CLASS> := C
<INTERFACE> := I
<TEMPLATE> := T
<NUMERIC> := N
<MACRO> := M
<ENUMERATION> := E
<STRUCTURE> := S
<USAGE> := <CONCRETE_IMPL> | <PARAMETER> | <TYPE_DEFINITION> | <FUNCTION>
<CONCRETE_IMPL> := U
<PARAMETER> := P
<TYPE_DEFINITION> := T
<FUNCTION> := F
<DELIMITER> := x