Backlog/lib/sdl3
Peterino2 0c5383f518 Fix SDL3 parser critical issues and add comprehensive test plans
## Critical Fixes Implemented

### 1. Memory Leak Resolution
- Fixed doc comment allocation in peekDocComment() to properly allocate memory
- Added cleanup for pending_doc_comment when skipping lines
- All tests now run with zero memory leaks (GPA verified)

### 2. Flag Definition Parsing (CRITICAL)
- Added skipWhitespace() helper to handle newlines before #define statements
- Flag structures now properly populated with all fields
- Before: empty structs with only padding
- After: all 7 flags present in GPUTextureUsageFlags

### 3. Invalid Identifier Generation (CRITICAL)
- Implemented "first underscore" naming rule
- Prevents enum values starting with numbers (e.g., 16bit, 2d)
- detectCommonPrefix() now only strips SDL_GPU_/SDL_ prefix
- enumValueToZig() splits on first underscore to preserve type prefix

### 4. Naming Convention Alignment
- Changed from "last underscore" to "first underscore" rule
- Type part: all lowercase (e.g., primitivetype)
- Value part: TitleCamelCase (e.g., Trianglelist)
- Result: primitivetypeTrianglelist (matches existing codebase)
- Added screaminToTitleCamel() helper for proper camelCase conversion

## Test Coverage

### New Tests Added
- patterns.zig: 3 new tests for flag scanning with whitespace
- naming.zig: 10 new comprehensive tests for naming conventions
- All 18 unit tests passing
- Integration test with SDL_gpu.h successful (169 declarations)

### Files Modified
1. **patterns.zig**
   - Added skipWhitespace() helper (lines 609-618)
   - Updated scanFlagTypedef() to skip whitespace before #define
   - Added 3 new flag scanning tests

2. **naming.zig**
   - Rewrote detectCommonPrefix() to only strip SDL prefix
   - Rewrote enumValueToZig() with first underscore rule
   - Added screaminToTitleCamel() helper
   - Added 10 comprehensive naming tests

3. **parser.zig**
   - Previous memory leak fixes intact
   - No changes needed for this iteration

## Documentation Added

1. **PARSER_FIX_PLAN.md** - Detailed implementation plan
2. **IMPLEMENTATION_COMPLETE.md** - Summary of fixes and results
3. **TEST_HARNESS_PLAN.md** - Original test harness design
4. **TEST_HARNESS_PLAN_V2.md** - Enhanced plan with mock generation

## Verification

 Parser generates valid Zig code (no compilation errors)
 All flag fields populated correctly
 No invalid identifiers (no numeric prefixes)
 Naming matches existing codebase conventions
 All 18 unit tests passing
 No memory leaks (GPA verified)
 Successfully parsed SDL_gpu.h (169 declarations)

## Next Steps (Planned)

- Implement mock_codegen.zig for C stub generation
- Create test_project/ with complete build system
- Add function call coverage tests
- Implement golden file regression testing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 19:37:26 -08:00
..
SDL objloader, ozz, sdl3 all updated 2025-10-13 20:57:04 -07:00
content upgrading to sdl 3.16 2025-06-07 14:05:12 -07:00
parser Fix SDL3 parser critical issues and add comprehensive test plans 2026-01-21 19:37:26 -08:00
research sdl3 initial parser 2026-01-21 16:28:12 -08:00
shaderTypes switched all builds to bh.declareOptions 2025-11-28 20:14:56 -08:00
shadercross upgrading to sdl 3.16 2025-06-07 14:05:12 -07:00
spvreflect switched all builds to bh.declareOptions 2025-11-28 20:14:56 -08:00
src saving 2025-11-02 00:55:21 -07:00
apigen.py so much work on hot reloading done 2025-05-19 21:35:04 -07:00
build.zig switched all builds to bh.declareOptions 2025-11-28 20:14:56 -08:00
build.zig.zon fixed all tests and added bh.zig 2025-11-06 20:42:48 -08:00
buildshaders.py saving 2025-04-13 17:41:16 -07:00
test.json added gltf mesh loader back 2025-04-14 23:58:08 -07:00
test.msl added gltf mesh loader back 2025-04-14 23:58:08 -07:00