|
| 1 | +# **cl-win32-types Roadmap** |
| 2 | + |
| 3 | +This document outlines the development roadmap for the cl-win32-types library, focusing on tasks that enhance its core mission of providing an exhaustive and accurate CFFI type definitions for the Windows API. |
| 4 | + |
| 5 | +## **Project Mission** |
| 6 | + |
| 7 | +cl-win32-types is a foundational library that provides accurate CFFI type aliases for Windows API development. It does one thing well: giving Lisp developers the correct type definitions, structures, and constants they need to interface with Windows APIs. |
| 8 | + |
| 9 | +### **Priority 1: Core Type Coverage** |
| 10 | + |
| 11 | +- \[ \] **Additional Integer Types**: Add any missing fundamental Windows integer types. |
| 12 | + - \[ \] USHORT |
| 13 | + - \[ \] SHORT |
| 14 | + - \[ \] UCHAR |
| 15 | + - \[ \] SCHAR |
| 16 | +- \[ \] **Additional Handle Types**: Add specialized handles for common Windows subsystems. |
| 17 | + - \[ \] HKEY (registry key handle) |
| 18 | + - \[ \] HFILE (file handle) |
| 19 | + - \[ \] HMENU (menu handle) |
| 20 | + - \[ \] HCURSOR (cursor handle) |
| 21 | + - \[ \] HPEN (pen handle) |
| 22 | +- \[ \] **Callback Types**: Define function pointer types for common callbacks. |
| 23 | + - \[ \] WNDPROC (window procedure) |
| 24 | + - \[ \] DLGPROC (dialog procedure) |
| 25 | + - \[ \] HOOKPROC (hook procedure) |
| 26 | +- \[ \] **Platform Completeness**: |
| 27 | + - \[ \] Add ARM64 Windows platform detection to the pointer-size logic. |
| 28 | + - \[ \] Verify type sizes against the Windows SDK on an ARM64 machine. |
| 29 | + |
| 30 | +### **Priority 2: Common Structures and Unions** |
| 31 | + |
| 32 | +- \[ \] **Basic Geometry**: Add common coordinate and size structures. |
| 33 | + - \[ \] POINT |
| 34 | + - \[ \] SIZE |
| 35 | + - \[ \] RECT |
| 36 | +- \[ \] **System Information**: Add basic system data structures. |
| 37 | + - \[ \] SYSTEMTIME |
| 38 | + - \[ \] FILETIME |
| 39 | + - \[ \] LARGE\_INTEGER (union) |
| 40 | + - \[ \] ULARGE\_INTEGER (union) |
| 41 | +- \[ \] **Common Message Structures**: |
| 42 | + - \[ \] MSG (window message) |
| 43 | +- \[ \] **Security**: Add basic security structures. |
| 44 | + - \[ \] SECURITY\_ATTRIBUTES |
| 45 | + |
| 46 | +### **Priority 3: Common Constants** |
| 47 | + |
| 48 | +- \[ \] **Common Return Values**: Define standard Windows return codes. |
| 49 | + - \[ \] ERROR\_SUCCESS |
| 50 | + - \[ \] INVALID\_HANDLE\_VALUE |
| 51 | + - \[ \] S\_OK, E\_FAIL |
| 52 | +- \[ \] **File Attributes**: Define file system constants. |
| 53 | + - \[ \] FILE\_ATTRIBUTE\_\* constants |
| 54 | + - \[ \] GENERIC\_READ, GENERIC\_WRITE access rights |
| 55 | +- \[ \] **Registry Constants**: Define registry access and key constants. |
| 56 | + - \[ \] HKEY\_\* predefined keys |
| 57 | + - \[ \] KEY\_\* access rights |
| 58 | +- \[ \] **Resource Limits**: Define common Windows buffer size constants. |
| 59 | + - \[ \] MAX\_PATH |
| 60 | + - \[ \] MAX\_COMPUTERNAME\_LENGTH |
| 61 | + |
| 62 | +### **Priority 4: Quality and Usability** |
| 63 | + |
| 64 | +- \[ \] **Documentation Improvements**: |
| 65 | + - \[ \] Add practical examples to README.md for structure access patterns. |
| 66 | + - \[ \] Create a type reference table in the README.md listing all types and their C equivalents. |
| 67 | +- \[ \] **Testing Enhancements**: |
| 68 | + - \[ \] Add tests to verify structure layouts and sizes. |
| 69 | + - \[ \] Add tests to verify constant values match Windows headers. |
| 70 | +- \[ \] **Code Quality**: |
| 71 | + - \[ \] Ensure consistent code formatting (e.g., using a tool like trivial-formatter). |
| 72 | + - \[ \] Review and improve inline comments for clarity. |
| 73 | + |
| 74 | +### **Priority 5: Distribution and Accessibility** |
| 75 | + |
| 76 | +- \[ \] **Quicklisp Submission**: Submit the library to the Quicklisp distribution. |
| 77 | +- \[ \] **Lisp Implementation Testing**: Verify the library works across major Lisp implementations. |
| 78 | + - \[ \] CCL |
| 79 | + - \[ \] LispWorks |
| 80 | + - \[ \] Allegro CL |
| 81 | + |
| 82 | +### **Priority 6: Community and Maintenance** |
| 83 | + |
| 84 | +- \[ \] **Issue Templates**: Create GitHub issue templates for bug reports and feature (e.g., missing type) requests. |
| 85 | +- \[ \] **Contributing Guide**: Create a CONTRIBUTING.md file documenting how to add new types and run tests. |
| 86 | +- \[ \] **Versioning Strategy**: Decide on a clear versioning strategy (e.g., Semantic Versioning) for future releases. |
0 commit comments