Files
Juliet/todo_modules.md

42 lines
2.1 KiB
Markdown

# Modular Architecture & Tooling TODO
This document tracks upcoming tasks for Juliet's modular architecture (`core`, `appbin`, future `render`, `ui`, etc.) and the build/LSP generation tooling.
---
## 1. Tooling & Project Generator (`tools/new_project_gen.c`)
- [x] **Dynamic Preceding Include Parser**:
- Implemented dynamic parser `get_preceding_includes_from_inc_h(layer_name, target_file_path)` in `tools/new_project_gen.c`.
- Reads `<layer>_inc.h` line-by-line and collects all `#include "..."` statements that appear strictly **above** the target header being analyzed.
- Automatically injects those preceding includes via `/FI` so that any header opened in Neovim/clangd has its exact required preprocessor context with zero hardcoding.
- [x] **Multi-Layer Cascade**:
- Deduces layer hierarchy from `appbin_main.c` and supplies lower layer includes (`/FIcore/core_inc.h`, etc.) to upper layers automatically.
---
## 2. Core Module Implementation (`Juliet/core/`)
- [ ] **Fill `core.c`**:
- Implement base core routines (OS helpers, string utilities, arena allocation implementations, math helpers).
- [ ] **Win32 Core Cleanup**:
- Fix argument passing in `win32_core.c:55` (`main_thread_core_entry_point(argc, &argv)` vs `char** argv`).
- Implement proper command line argument parsing into `String8`/`String16` arenas.
- [ ] **Unit Tests for Core**:
- Create standalone test executable or test entry point validating arena allocation, commit/decommit, and string routines.
---
## 3. Future Layers
- [ ] **Render Layer (`Juliet/render/`)**:
- Create `render_inc.h`, `render_inc.c`.
- Implement D3D12 device initialization, command queues, swap chain, and memory allocators.
- Add `#include "render/render_inc.h"` and `#include "render/render_inc.c"` to `appbin_main.c`.
- [ ] **UI Layer (`Juliet/ui/`)**:
- Create `ui_inc.h`, `ui_inc.c`.
- Implement UI hierarchy, layout, text rendering, and input handling.
---
## 4. Build System & LSP Maintenance
- [ ] Run `new_generate.bat` after adding new layers or changing layer include order in `appbin_main.c`.
- [ ] Keep `new_build.bat` as the single-pass unity compiler command for lightning-fast build times.