forked from dearimgui/dear_bindings
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changelog.txt
145 lines (133 loc) · 10.2 KB
/
Changelog.txt
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
--- v0.07 WIP
* Fixed a bug where unbounded arrays would get emitted to the metadata as having bounds of "[None]" instead of "[]". (#41)
* Fixed structs not having associated line numbers in the JSON output (#39)
* Added --imgui-include-dir option to allow the path to ImGui include files to be specified
* Made imconfig.h get parsed by default to check for extra options, and added --config-include to allow custom config
files (of the type you would use the IMGUI_USER_CONFIG define to supply) to be included as well. This option reads
and uses such files but does not emit their contents to the .h file (on the assumption that they are getting included
there by regular means). It does however emit that information to the JSON output.
* Standardised the rule that "metadata elements are omitted if not known" and removed cases where they were omitted
when not their default values. (#42)
--- v0.06
* In ImGui v1.90.0 WIP the callback variants of "ListBox()" and "ComboBox()" have a new function pointer type, but the
old type is still available as an overload. Disambiguating based solely on function pointer type is problematic, so
instead Dear Bindings renames the "old" versions of those two functions as "ImGui_ListBoxObsolete()" and
"ImGui_ComboBoxObsolete()" respectively.
--- v0.05
* Added source information giving the original file and line number of each element to the JSON output (#39)
* Added type comprehension system, which generates a breakdown of type information in the JSON output
* Added --nopassingstructsbyvalue flag to force struct parameters to be passed as pointers
* **BREAKING CHANGE** Renamed the "type" field of classes/structs/unions in the JSON output (the one that contained
"struct"/"class"/"union") to "kind" to avoid confusion with the actual type
* **BREAKING CHANGE** Removed the "names" field from field definitions in the JSON, and instead emit one field
for each distinct name defined in the original source (so "float x,y" is no longer represented in the JSON as a single
field with two names, but two separate fields). This simplifies the JSON by removing the concept of fields with
multiple names and makes field and argument definitions more consistent.
* Renamed anonymous structures in the JSON from "<AnonymousN>" to "__anonymous_typeN" so as to avoid generating names
that are not valid identifiers (which was the original goal, but in practice that seemed to cause more problems than
it solved).
* Anonymous types now get a description correctly emitted in the JSON at the point of use like other types.
* **BREAKING CHANGE** Type declarations for arrays in the JSON now include the array bounds (in addition to having
is_array set to True)
* Added an "is_nullable" annotation to pointers in type descriptions which indicates if the pointer is "allowed" to be
null. If no value is present this means Dear Bindings doesn't know (and code should assume it can be null). At present
this only affects pointers which were converted from references, as in that case we know the value should never be null.
* Added experimental support for converting backends.
* Added stdarg.h include (for va_list), and stddef.h (for size_t) back into the header.
* Added templates for SDL2/3 backends and removed the old SDL ones.
* Fixed a bug affecting backend generation where if an extern "C" block was immediately followed by a preprocessor
directive, it incorrectly omitted the brackets from the extern thinking that it was a single statement.
* Flagged self arguments as non-nullable.
* Added "original_class" member to JSON output for functions to indicate which class the function originally belonged to.
* Added "is_instance_pointer" to JSON output for function arguments to indicate that the argument is the class instance
pointer (this/self).
* **POSSIBLY BREAKING CHANGE** In the JSON output, the "value" field of enum values is now the calculated (integer) value
of the enum value, whilst "value_expression" contains the raw expression provided in the header file (which was
previously in "value"). The "value" field is calculated for all enum values, even those with no expression (i.e. the
implicit "last element +1" case).
* Enum values ending with an underscore ("_") are now flagged with "is_internal" in the JSON output.
* Enum values that represent total item counts (ending with "_COUNT") are now flagged with "is_count" in the JSON output.
* Added "is_flags_enum" to the JSON output, which indicates if an enum should be treated as a bitfield rather than a
series of ordinal values.
--- v0.04
Put quotes back on string define values in the metadata
Fixed incorrect codegen for synthetic #define elements
Changed document filename to be the output filename (fixes include guard naming)
Removed "#pragma once" removal (by default)
Added a protective "extern C" around the majority of the header file, and removed it from the generated binding CPP
Fixed blank lines emitting indenting
Fixed invalid use of "static" in linkage specification [@rokups]
Added alignment for enum/structure members and function names
Added support for ImStr
Added auto-generation of variant functions that take const char* instead of ImStr
Suppressed generation of default argument variants for trivial cases and uncommon functions to reduce clutter
Fixed incorrect disambiguation of function pairs that appear in the #if/#else blocks of the same preprocessor conditional
Fixed incorrect generation of conditionals around code in #else blocks
Added support for (read: removal of) constexpr
Fixed disambiguation of default argument functions resulting in Ex functions with names that don't match their argument list (#11)
Reduced number of Ex functions (when trailing arguments are trivial to fill, e.g. flags = 0, an Ex functions is not warranted). (#10)
Split code_dom into multiple files for tidiness and refactored the modules a bit
Improved the header template system somewhat and added a header to all files (#18, #22)
Made it possible to configure types/names of "trivial" arguments that will not get default helpers generated (#24)
Changed order of Ex functions relative to the original (#23)
Added support for forcing disambiguation to disambiguate all variants of a function (#11)
Added support to tell disambiguation to prioritise certain argument types (#11)
Added function renaming and used it to tidy up ImGui_GetColorU32 and ImGui_IsRectVisible (#11, #25)
Added support for forward declaration of enums and enum storage types
Fixed issue where (void) to declarations of C functions with no arguments was omitted in some cases (#26) [@oskarnp]
Fixed issue where the JSON representation of anonymous unions was incorrect (thanks to [@oskarnp] for the heads-up)
Fixed regression where JSON output didn't include conditional struct fields (thanks to [@paralaxsd]) (#28)
Fixed template file location when executed from a different directory to the Dear Bindings root [@madebr]
Set regexp mode via parameters rather than inline to avoid triggering error check on Python 3.11 onwards (#31)
--- v0.03
Added alignment for comment indentation
Added command line arguments
Renamed templates to make them easier to match with source files
Added struct forward declarations to metadata
Added ImVector_Construct() and ImVector_Destruct() helpers
Added typedefs to the metadata output
Added parsed versions of complex types to the metadata output
Added marking of internal API elements
Fixed line comments on preprocessor directives getting treated as part of the directive
Added better #define parsing
Added defines to metadata output
Tidied up directory structure a bit
Fixed metadata conditionals not getting generated correctly for else blocks
Fixed spelling of "preceding" in metadata
Removed help reference to processing imgui_internal.h for now in case it confuses people
--- v0.02
Removed some more ImVector functions that don't compile correctly due to the lack of operator== on certain types
Removed ImNewWrapper on newer ImGui versions
Made LogTextV() only get added on ImGui version that don't supply it themselves
Renamed IMGUI_API to CIMGUI_API
Added (void) to declarations of C functions with no arguments
Fixed field declarations not identifying the IMGUI_API prefix
Made self parameters on const functions be const
Got rid of excessive use of struct qualifier and added autogenerated forward declarations to compensate
Removed unnecessary header files and made the stdbool.h include get added in a more sensible place
Changed ImVec2/ImVec4 to be treated as by-value types and avoid new() in their constructors
Removed hacky "original fully-qualified type" system and replaced it with "unmodified_element", which links all DOM elements back to a copy of the unmodified DOM
Changed stub code generation to include both the original and generated headers, and cast correctly when passing arguments around
Added lots of namespace-related shenanigans to deal with using namespaces to separate the C and C++ headers
Added by-value struct conversion functions
Added support for converting arrays of by-value types
Removed all of the ImVector functions as they're probably more dangerous than useful
Tidied up filename handling a bit
Added support for base class lists on class declarations
Added support for comments in a few more places
Added support for adding a name prefix to all loose functions
Make function name disambiguation aware of mutually-exclusive #ifdefs, and added manual exclusions
Fixed escaped character literals not getting parsed correctly
Fixed namespaced typenames not getting parsed correctly sometimes
Fixed #error and #undef not getting parsed
Made operator name parsing more generic and able to cope with things like "operator+=" without the previous ugly special-casing
Made it possible to have multiple header files in the DOM
Changed ImGui class prefix
Fixed function/structure removal not removing associated template DOM element
Added class member accessibility support
Removed IM_VEC2_CLASS_EXTRA/IM_VEC4_CLASS_EXTRA from generated file
Added metadata generator
Fixed comments getting incorrectly treated as part of the expression for preprocessor conditionals
Added generation of helper functions with defaulted arguments
Improved function name disambiguation to use minimal number of suffixes necessary to ensure uniqueness
Removed constructors/destructors that involve heap allocation