-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtodo.txt
More file actions
113 lines (97 loc) · 3.85 KB
/
todo.txt
File metadata and controls
113 lines (97 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
lib:
move parts of the parser into a library separate from introlib
preprocessor
!! interface for creating types/contexts
sprint/mprint version of everything that uses stdout
accurate type print
would be useful for metaprogramming
intro_print: follow pointer arrays
intro_print: detect and handle cyclical references
intro_print options
whether to print unnamed members as if their members were within
max depth
printf-like formatting print with insertions for types and values of types
bitfield access
allocation options as part of context
city:
!! attribute to specify allocators
version for "release" without as much information where types are assumed to match
type id's?
could also check against type names or maybe name hashes
attribute:
dynamically sized value attributes
allow multiple aliases
allow attributes in more places
functions
function arguments
'from' attribute: allow conversion from a type, introlib will have builtin conversion functions for basic types
some way to specify custom conversion functions
'terminated' attribute?
specify the terminator (optionally?)
members of complex type can specify an attribute as a value: I(default default)
value(@inherit_base): inherit base of pointer or array type
parse:
!! GNU and MS alignment attributes
!! GNU and MS pack attributes/pragma
vector types (__m128, etc)
store type location information
ParseInfo: have everything, strip away unwated stuff at gen
parse globals (for libraries that use extern)
rudimentary C++ support
templates?
function overloads
namespaces
member functions
references
operator overloads?
parse struct defaults as intro defaults?
expr:
!! ability to return a value of any type
array subscript
compound literals
support globals
handle character literals including L'x'
handle strings next to each other
optimise pass
opt out constant parts
pre:
FileInfo: add include location
pragma that adds a file to make dependencies
parse #line directives
create #line directives?
fix -E spacing
gen:
!! generate header and data seperately, linker will complain about multiple definitions when compiled in multiple objects
c header: write protect?
idea: use type infomation to generate the header
some kind of create_c_constant function or something
idea: stop using type information to generate anything because changing anything in intro.h can be a nightmare
allow multiple outputs at once ex. header + city
vector types (__m128, etc)
option to create typedefs for structs and enums
typeof with _Generic?
more generation options:
odin package
json info
config:
default program arguments
allow config to be appended with another config?
handle c type sizes
static assert in .intro file if types don't match
embed a default config based on how the parser was compiled
test:
add sanitized target
test for errors that should be raised by the parser
more rigorous tests
doc:
examples:
!! more of these
misc:
idea: some kind of plugin system
for when you want to do metaprogramming, it seems more sensible to run your metaprogram along with intro \
instead of compiling another program.
these plugins could be inserted at different parts of the process, simplest case being, just run something with the type information before gen
could be used to add checking to attributes, and maybe other kinds of enforcement
idea: use parser to generate system headers with types only, no functions
if we are to have our own system headers, we may as well also parse them into a binary format as well
memory cleanup