From ceb874e83d44a2c3d7c7d167fc8853694538ae53 Mon Sep 17 00:00:00 2001 From: nodist Date: Sun, 7 Jun 2026 17:45:48 -0400 Subject: type definitions with type_ptr --- docs/application/type.md | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'docs/application/type.md') diff --git a/docs/application/type.md b/docs/application/type.md index eae1425..52b28de 100644 --- a/docs/application/type.md +++ b/docs/application/type.md @@ -2,6 +2,42 @@ --- -## Allocation - ## 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 __attribute__((packed)) { + // ... +} kpl_type_template; + +typedef enum __attribute__((packed)) { + // .. +} kpl_type_flags; + +typedef union { + // ... +} kpl_type_body; + +typedef struct { + kpl_type_template template; + uint16_t flags; + kpl_type_ptr self, prev, next, parent; + _Atomic int32_t ref_count; + 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; +``` -- cgit v1.2.3