Rangi42
e5b7e65e91
Use std::nothrow from <new> with every new allocation
2024-03-07 09:56:15 -05:00
Rangi42
104fd6c70d
Use automatic allocation for some parser values
2024-03-06 22:17:35 -05:00
Rangi42
35ec190664
Update Windows libpng to 1.6.43
2024-03-06 21:02:13 -05:00
Rangi42
8c173b4e95
Remove declaration for compatibility with macOS bison 2.3
...
We've required bision 3.0 since October 2022
2024-03-06 17:58:15 -05:00
Rangi42
94b724ae5f
Update to use winflexbison 2.5.25 (bison 3.8.2)
2024-03-06 17:56:16 -05:00
Rangi42
6d4a61f51d
Fix some numeric bases in RGBLINK output
2024-03-06 17:43:26 -05:00
Rangi42
75105016f7
Make sure that parsed subexpressions are fully defined
...
We were not initializing some expressions, and they were using
the values of the previous expressions instead. This just so
happened to not crash the tests, and to sometimes even give valid
results (although `BANK()` of a non-label symbol being $4B4E4142,
the ASCII balue of "BANK", was something we missed).
2024-03-06 16:00:55 -05:00
Rangi42
f419f206e5
Fix a latent bug with parsing macro args
...
This seems to only have worked by coincidence; `$$` was an
undefined value that happened to equal `$1` already.
2024-03-06 15:14:17 -05:00
Rangi42
82824a4bf2
Avoid using Bison's typed mid-rule actions
...
These work with `%union`, but will not work with C++ `variant`
2024-03-06 14:19:37 -05:00
Rangi42
d1652c0028
Refactor cases for simplicity, and remove redundant comments
2024-03-06 14:10:50 -05:00
Rangi42
053aa80951
Improve some const correctness in RGBASM
2024-03-06 13:53:03 -05:00
Rangi42
585c620945
Rename fail to sectError, since it increments nbSectErrors
2024-03-05 14:36:18 -05:00
Rangi42
bd88787cb3
Use FileStackNode constructor to avoid std::monostate possibility
2024-03-05 14:22:29 -05:00
Rangi42
74539f08ba
Add some more trailing commas
2024-03-04 22:53:11 -05:00
Rangi42
f2c875e71e
Avoid using std::get except in holds_alternative-asserting accessors
2024-03-03 23:33:23 -05:00
Rangi42
13904dc536
Remove EQUS callbacks for symbols
...
They're no longer used since `__FILE__` was removed
2024-03-03 21:26:44 -05:00
Rangi42
ba183e900b
Update contributors
2024-03-03 21:17:52 -05:00
Rangi42
930a5c3e44
Replace RGBLINK non-null pointers with references
2024-03-03 00:57:03 -05:00
Rangi42
538b253dfb
Replace RGBFIX non-null pointers with references
2024-03-03 00:57:03 -05:00
Rangi42
277ea9be28
Replace RGBASM non-null pointers with references
2024-03-03 00:57:03 -05:00
Rangi42
d812acff24
Check RGBGFX warning/error format strings with format_ macro
2024-03-02 23:17:54 -05:00
Rangi42
2e1b0b6421
Remove commented-out C-only macro features
2024-03-02 20:17:22 -05:00
Rangi42
52f8ecc347
We do not call malloc/free any more
2024-03-02 08:16:44 -05:00
Rangi42
19bb12754b
Use new allocation for expanding \#
2024-03-02 08:04:59 -05:00
Rangi42
dbcb82799e
Use std::vector for capture buffer
2024-03-02 06:46:11 -05:00
Rangi42
2069a95e0f
Use std::string for macro args
2024-03-02 05:23:15 -05:00
Rangi42
b130c2e27c
Use std::string for STRFMT spec and args
2024-03-02 05:09:43 -05:00
Rangi42
ba00cf5684
Use std::string for section names
2024-03-02 04:47:02 -05:00
Rangi42
b488d3a90f
Use std::optional<std::string> for lexer expansion names
2024-03-02 04:34:42 -05:00
Rangi42
e14ba664ea
Remove redundant (void) parameter declarations
2024-03-01 10:41:47 -05:00
Rangi42
91d22f180e
Reorganize the asm parser to be more like the linker script parser
...
Split the declarations into those required for the `%union` and
those only required for the `code`.
Only declare functions on top; define them at the bottom.
2024-02-29 16:23:53 -05:00
Rangi42
1210a7441f
Use std::visit with Visitor helper instead of std::holds_alternatve
2024-02-29 13:44:08 -05:00
Rangi42
cf08fed067
Use std::vector for SDCC object section data
2024-02-29 13:44:08 -05:00
Rangi42
c44b336e1b
Use std::vector for SDCC object line buffer
2024-02-29 13:44:08 -05:00
Rangi42
e90084ad06
Rename isWRA0Mode to isWRAM0Mode
2024-02-29 13:44:08 -05:00
Rangi42
cdb9315366
Use std::vector for rgbfix ROMX data
...
Statically links libstdc++ for 32-bit MinGW
2024-02-29 13:44:08 -05:00
Rangi42
2ff723f943
Use vec.data() instead of &vec[0]
...
In general `vec.data()` is always safe, whereas `&vec[0]`
may fail when `vec` is empty.
2024-02-29 13:44:08 -05:00
Rangi42
d1fa5ccd4d
Rename lexer_DeleteState to lexer_CleanupState
2024-02-29 13:44:08 -05:00
Rangi42
17df94c75b
Remove now-unnecessary cleanup functions
2024-02-29 13:44:08 -05:00
Rangi42
96f354026a
Use automatic allocation for section data
2024-02-29 13:44:08 -05:00
Rangi42
8fe6be19f1
Use automatic allocation for tryReadstring
2024-02-29 13:44:08 -05:00
Rangi42
002eed405b
Use automatic allocation for assertion error messages
2024-02-29 13:44:08 -05:00
Rangi42
ef1c1440a0
Use automatic allocation for symbol names
2024-02-29 13:44:08 -05:00
Rangi42
826512730c
Use automatic allocation for section symbols
2024-02-29 13:44:08 -05:00
Rangi42
5a26a48d11
Use automatic allocation for section names
2024-02-29 13:44:08 -05:00
Rangi42
3c0af94c5c
Use automatic allocation for patches
2024-02-29 13:44:08 -05:00
Rangi42
fc5ab8a14c
Clarify comment explaining how referenced works
2024-02-29 13:44:08 -05:00
Rangi42
ace45bfd90
Refactor to avoid repeating rpn_isKnown(expr)
2024-02-29 13:44:08 -05:00
Rangi42
d6681d3580
struct Section's src can be const
2024-02-29 13:44:08 -05:00
Rangi42
0cc49782ab
Use std::variant and automatic allocation for file stack node data
2024-02-29 13:44:08 -05:00
Rangi42
e1ac51d7da
Use std::vector's .size() for SDCC sections and symbols
2024-02-29 13:44:08 -05:00
Rangi42
c3eb532439
Use copy constructor for file stack node
2024-02-29 13:44:08 -05:00
Rangi42
18d4a81954
Use move semantics for the union stacks
2024-02-29 13:44:08 -05:00
Rangi42
7daa8759c9
Use std::variant for STRFMT arguments
2024-02-29 13:44:08 -05:00
Rangi42
beb1997378
Use std::unordered_map for the keyword dict
2024-02-29 13:44:08 -05:00
Rangi42
962398969b
Use std::string for PURGE args
2024-02-29 13:44:08 -05:00
Rangi42
0bed84174b
Use std::string for FOR loop variables
2024-02-29 13:44:08 -05:00
Rangi42
48b2e94aa3
Use std::string for symbol/section/node names and assertion messages
2024-02-29 13:44:08 -05:00
Rangi42
a24df27cd8
Use std::vector for charmap output
2024-02-29 13:44:08 -05:00
Rangi42
52ac98c294
Use std::vector for section data
2024-02-29 13:44:08 -05:00
Rangi42
4cd88ade54
Use automatic allocation for object file symbols
2024-02-29 13:44:08 -05:00
Rangi42
dead69eb2c
Use std::vector for section symbols
2024-02-29 13:44:08 -05:00
Rangi42
f47ce337bf
Use std::vector for reading object file symbols
2024-02-29 13:44:08 -05:00
Rangi42
9a51fbafb3
Use std::vector for file stack nodes
2024-02-29 13:44:08 -05:00
Rangi42
3d23f5bbb3
Use std::vector for reading object file sections
2024-02-29 13:44:08 -05:00
Rangi42
af055ecd27
Use automatic allocation for IF stacks and expansions
...
Switch to using `std::deque` for IF stacks (supports `.clear()`)
2024-02-29 13:44:08 -05:00
Rangi42
31836967fa
Use automatic allocation for lexer states
...
Lexer states are now owned by fstack contexts
2024-02-29 13:44:08 -05:00
Rangi42
514044496f
Use std::string for RPN error reasons
2024-02-29 13:44:08 -05:00
Rangi42
cf42d035f2
Use std::variant for file stack nodes
2024-02-29 13:44:08 -05:00
Rangi42
4b2294292a
Use std::string for target file name
2024-02-29 13:44:08 -05:00
Rangi42
0e19f6c0ae
Use automatic allocation for fstack nodes' iters/names
2024-02-29 13:44:08 -05:00
Rangi42
5075ac8887
Use std::vector for RPN expressions
2024-02-29 13:44:08 -05:00
Rangi42
d792ee4b61
Use std::vector for section patches
2024-02-29 13:44:08 -05:00
Rangi42
b207bff157
Use std::vector for fstack REPT nodes
2024-02-29 13:44:08 -05:00
Rangi42
53343d2fa6
Use automatic allocation for symbols
2024-02-29 13:44:08 -05:00
Rangi42
e98d1efee3
Use std::vector for include paths
2024-02-29 13:44:08 -05:00
Rangi42
e4764e37b1
Use std::stack for fstack contexts
2024-02-29 13:44:08 -05:00
Rangi42
b8e267e387
Use std::vector for SDAS file sections
2024-02-29 13:44:08 -05:00
Rangi42
17861a970f
Use std::vector for RPN data
2024-02-29 13:44:08 -05:00
Rangi42
a5ea25cde5
Use automatic allocation for RPN stack
2024-02-29 13:44:08 -05:00
Rangi42
843f3394c8
Use automatic allocation for DS args
2024-02-29 13:44:08 -05:00
Rangi42
b1aa98b43d
Use automatic allocation for PURGE args
2024-02-29 13:44:08 -05:00
Rangi42
6a23c5fd48
Use automatic allocation for STRFMT args
2024-02-29 13:44:08 -05:00
Rangi42
6b2c6c20bc
Use automatic allocation for macro args
2024-02-29 13:44:08 -05:00
Rangi42
a4ed7e1d18
Use automatic allocation for charmaps
2024-02-29 13:44:08 -05:00
Rangi42
1b8e588961
Use automatic allocation for patch RPN
2024-02-29 13:44:08 -05:00
Rangi42
dec1811d20
Use automatic allocation for section data
2024-02-29 13:44:08 -05:00
Rangi42
72e9f55368
Use automatic allocation for patches
2024-02-29 13:44:08 -05:00
Rangi42
9140180c85
Use automatic allocation for sections
2024-02-29 13:44:08 -05:00
Rangi42
e022adf4a0
Use automatic allocation for assertions
2024-02-29 13:44:08 -05:00
Rangi42
6e03504802
Use std::deque for expansions
2024-02-29 13:44:08 -05:00
Rangi42
003977a9fb
Use std::deque for unassigned sections
2024-02-29 13:44:08 -05:00
Rangi42
1afc8554c0
Use std::deque for file stack nodes
2024-02-29 13:44:08 -05:00
Rangi42
26a93a530b
Use std::deque for assertions
...
Also fix a memory leak
2024-02-29 13:44:08 -05:00
Rangi42
2df4fff6c9
Use std::vector for sorted symbols
2024-02-29 13:44:08 -05:00
Rangi42
b74b40abd2
Use std::deque for sorted sections
2024-02-29 13:44:08 -05:00
Rangi42
d53bba97e8
Remove our custom hashmap
2024-02-29 13:44:08 -05:00
Rangi42
95e7dac9a6
Use std::map for rgbasm charmaps
2024-02-29 13:44:08 -05:00
Rangi42
83d3a39dcd
Use std::map for rgbasm symbols
2024-02-29 13:44:08 -05:00
Rangi42
f44701c02d
Use std::map for rgblink symbols and sections
2024-02-29 13:44:08 -05:00