# Type --- ## Object Definitions ```c typedef enum : uint8_t { // ... } kpl_type_template; typedef enum : uint8_t { CONST = 1 << 0, EMPTY = 1 << 1, REF = 1 << 2, SHARED = 1 << 3, RETURN = 1 << 4 } kpl_type_qualifiers; typedef union { // 64 Bytes Max } kpl_type_body; typedef struct { kpl_type_template template; uint8_t qualifiers; uint16_t modifiers; uint16_t token_length, token_line; uint32_t token_position; _Atomic int32_t ref_count; kpl_ptr self, prev, next; kpl_namespace_module *module; kpl_type_body body; } kpl_type; uint16_t array_index, slab_count; typedef struct _kpl_type_slab { struct _kpl_type_slab *next; kpl_type array[UINT16_MAX]; } kpl_type_slab; kpl_type_slab *type_slab; kpl_ptr type_pool; kpl_mutex type_mutex; ```