diff options
| author | nodist <kevin.comas.git@gmail.com> | 2026-06-09 14:01:57 -0400 |
|---|---|---|
| committer | nodist <kevin.comas.git@gmail.com> | 2026-06-09 14:01:57 -0400 |
| commit | 9d6a15b55bc948227401cb0be721e764e8053b50 (patch) | |
| tree | 01dc5d7f3465436236247987e1882f5ce18d3bba /docs/application | |
| parent | a13b72d789c6e2ee3d94bd1b19aad3dda0aea3c3 (diff) | |
add name to application
Diffstat (limited to 'docs/application')
| -rw-r--r-- | docs/application/index.md | 1 | ||||
| -rw-r--r-- | docs/application/name.md | 21 | ||||
| -rw-r--r-- | docs/application/namespace.md | 7 | ||||
| -rw-r--r-- | docs/application/pool.md | 12 |
4 files changed, 37 insertions, 4 deletions
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 |
