Add TODO.md with next implementation steps

Document the current completed state and outline the next phase:
- Mock code generator implementation
- Test project with C linkage and function coverage
- Golden file regression testing
- Multi-header support

Provides clear roadmap based on TEST_HARNESS_PLAN_V2.md with
time estimates and prioritization.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Peterino2 2026-01-21 20:28:07 -08:00
parent 35a171f804
commit ec10f75888
1 changed files with 110 additions and 0 deletions

110
lib/sdl3/parser/TODO.md vendored Normal file
View File

@ -0,0 +1,110 @@
# SDL3 Parser - Next Steps
## Current Status ✅
The parser is **complete and functional** with:
- All C declaration types supported (opaque, enum, struct, flags, functions)
- Proper naming conventions implemented ("first underscore" rule)
- Memory leak free (validated with GPA)
- 18+ unit tests, all passing
- Comprehensive documentation under `docs/`
- Successfully parses SDL_gpu.h (169 declarations)
## Next Implementation Phase
Based on `TEST_HARNESS_PLAN_V2.md`, the next logical steps are:
### 1. Implement Mock Code Generator (~3 hours)
Create `mock_codegen.zig` to generate C mock implementations when `--mocks` flag is passed:
```bash
zig build run -- SDL_gpu.h --mocks > gpu_mocks.c
```
**Tasks:**
- [ ] Add `--mocks` CLI flag parsing in `parser.zig`
- [ ] Create `mock_codegen.zig` module
- [ ] Generate stub C functions that return null/0/default values
- [ ] Generate C header declarations
- [ ] Add unit tests for mock generation
### 2. Create Test Project (~4 hours)
Build `test_project/` with complete compilation and linkage testing:
**Tasks:**
- [ ] Create `test_project/` directory structure
- [ ] Set up `build.zig` to compile C mocks into static library
- [ ] Create `c.zig` that links against mock library
- [ ] Generate Zig bindings from SDL_gpu.h
- [ ] Create `test_main.zig` that calls all generated functions
- [ ] Add assertions to verify function calls work
- [ ] Integrate into main `build.zig` as `zig build test-project`
### 3. Add Golden File Testing (~2 hours)
Implement regression testing to catch unintended output changes:
**Tasks:**
- [ ] Generate golden reference file from current parser output
- [ ] Create comparison test in `test_project/`
- [ ] Add diff reporting when output changes
- [ ] Add `--update-golden` flag to accept new output
### 4. Multi-Header Support (~2 hours)
Test parser on additional SDL3 headers:
**Tasks:**
- [ ] Test with `SDL_video.h`
- [ ] Test with `SDL_audio.h`
- [ ] Test with `SDL_events.h`
- [ ] Document any new patterns discovered
- [ ] Add pattern-specific tests if needed
## Future Enhancements
### Nice to Have
- [ ] Performance benchmarking and profiling
- [ ] Batch processing script for multiple headers
- [ ] CI/CD integration for automated testing
- [ ] Fuzz testing with random C headers
- [ ] Support for function pointer types (basic support exists)
- [ ] Support for union types
- [ ] Support for complex macros (beyond simple #define)
### Documentation
- [ ] Add examples of using generated bindings in real projects
- [ ] Create video/tutorial for using the parser
- [ ] Document known limitations and unsupported patterns
## Time Estimate
**Test Harness Implementation**: ~10 hours total
- Mock generator: 3 hours
- Test project: 4 hours
- Golden file testing: 2 hours
- Multi-header testing: 1 hour
## Getting Started
To begin the next phase:
1. Read `TEST_HARNESS_PLAN_V2.md` for complete design
2. Start with mock code generator implementation
3. Use test-driven development (write tests first)
4. Run `zig build test` frequently to verify changes
5. Update this TODO.md as tasks are completed
## Questions/Decisions Needed
- Should mocks return null/zero or track call counts?
- Should test project test all functions or just a subset?
- What's the acceptable diff threshold for golden file testing?
- Should we support C++ headers in the future?
---
Last updated: 2026-01-21
Parser version: Working, all tests passing