The schema knl defines the following scalar types and classes:
extern void (0); extern sos_Int (4); extern sos_Char (1); extern sos_Cstring (4); extern sos_Pointer (4); enum sos_Bool {FALSE, TRUE}; enum sos_Eq_kind {EQ_STRONG, EQ_WEAK}; enum sos_Comp_result {CMP_LESS, CMP_EQUAL, CMP_GREATER}; extern sos_Container (4); extern sos_Offset (4); extern sos_Id (8); class sos_Object; class sos_Ordered_object; class sos_Scalar_object; class sos_Type; class sos_Named; class sos_String;
The relationships between some of the kernel types are illustrated in Figure .
The external types void, sos_Int, sos_Char, sos_Cstring, and sos_Pointer as well as the enumeration types sos_Bool, sos_Eq_kind, and sos_Comp_result are described in Section .
The class sos_Object is the (indirect) superclass of all classes, whereas the class sos_Scalar_object can be considered as the implicit supertype of all scalar types (see Section ). The classes sos_Object, sos_Scalar_object, sos_Ordered_object, sos_Type, sos_Named, and sos_String are described in detail in Appendix .
The type sos_Container plays a special role that will be described in Section . The type sos_Offset denotes the position of an object within a container; it is only used for internal purposes. This holds also true for the type sos_Id.