Skip to content

Commit 6971a46

Browse files
authored
Create TODO.md
1 parent 2c1cd5f commit 6971a46

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

TODO.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
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

Comments
 (0)