From 9d6a15b55bc948227401cb0be721e764e8053b50 Mon Sep 17 00:00:00 2001 From: nodist Date: Tue, 9 Jun 2026 14:01:57 -0400 Subject: add name to application --- docs/application/index.md | 1 + docs/application/name.md | 21 +++++++++++++++++++++ docs/application/namespace.md | 7 +++---- docs/application/pool.md | 12 ++++++++++++ 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 docs/application/name.md (limited to 'docs/application') diff --git a/docs/application/index.md b/docs/application/index.md index 9f316bc..fcc1dad 100644 --- a/docs/application/index.md +++ b/docs/application/index.md @@ -13,6 +13,7 @@ * ##### [Interface](./interface.md) * ##### [Type](./type.md) * ##### [Pool](./pool.md) +# ##### [Name](./name.md) * ##### [Thread](./thread.md) * ##### [Io](./io.md) * ##### [Gc](./gc.md) diff --git a/docs/application/name.md b/docs/application/name.md new file mode 100644 index 0000000..0fcc669 --- /dev/null +++ b/docs/application/name.md @@ -0,0 +1,21 @@ +# Name + +--- + +Each word representing a var, symbol or type gets an `NAME_IDENTIFIER` -> `kpl_name*` associated with it + +## Object Definitions + +```c +typedef struct _kpl_name { + POOL_HEADER(_kpl_name); + uint32_t length; + char *c_str[]; +} kpl_name; + +static kpl_name *kpl_name_head; +``` + +## Lookup and Storage + +All `kpl_name*` objects are stored as a tree under `kpl_name_head` diff --git a/docs/application/namespace.md b/docs/application/namespace.md index 41d9ee5..63d1f1a 100644 --- a/docs/application/namespace.md +++ b/docs/application/namespace.md @@ -22,19 +22,18 @@ typedef struct _kpl_native_namespace { typedef struct _kpl_file_namespace { POOL_HEADER(_kpl_file_namespace); - __Atomic int16_t children; - uint16_t flags; + kpl_type_ptr ast; kpl_queue *parents; kpl_buffer *file_name, *file_string; kpl_export *exports; - // TODO AST kpl_task *task; + _Atomic size_t children; } kpl_file_namespace; typedef struct _kpl_string_namespace { _Atomic int16_t children; + kpl_type_ptr ast; kpl_buffer *string; - // TODO AST kpl_task *task; } kpl_string_namespace; ``` diff --git a/docs/application/pool.md b/docs/application/pool.md index 46602bf..f9baac6 100644 --- a/docs/application/pool.md +++ b/docs/application/pool.md @@ -11,9 +11,21 @@ typedef struct _kpl_pool_obj { POOL_HEADER(_kpl_pool_obj); } kpl_pool_obj; +typedef strut { + _Atomic size_t allocs; + kpl_pool_obj *root; + pthread_mutex_t mutex; +} kpl_pool; + static kpl_pool_obj *kpl_pool_head; ``` +## Object Size + +The max size of an object in the pool is 2 \*\* 32 + +This allows for 4 aligned bytes after the `POOL_HEADER` macro + ## List Management ## Tree Management -- cgit v1.2.3