# Type --- ## Object Definitions ```c #define KPL_TYPE_BLOCK_ARRAY_SIZE UINT16_MAX #define KPL_TYPE_BLOCKS_SIZE UINT16_MAX typedef struct { uint16_t block_index, array_index; } kpl_type_ptr; static const kpl_type_ptr kpl_type_ptr_null = { UINT16_MAX, UINT16_MAX }; typedef enum : uint16_t { // ... } kpl_type_template; typedef union { // ... } kpl_type_body; typedef struct { kpl_type_template template; _Atomic unt16_t ref_count; kpl_type_ptr self, prev, next, parent; kpl_type_body body; } kpl_type; static size_t type_array_block_index; static kpl_type *type_array_blocks[KPL_TYPE_BLOCKS_SIZE]; static kpl_type_ptr type_pool_head; ```