Commit Graph

797 Commits

Author SHA1 Message Date
Sylvie
5681be1fd8 Use automatic allocation and std::move for RPN bytes (#1336) 2024-03-09 11:12:34 -05:00
Sylvie
4a7d333891 Use std::unique_ptr for rgblink sections (#1337) 2024-03-09 11:12:01 -05:00
Sylvie
53537cf9af Remove now-unnecessary enum keyword (#1338)
C++ does not need it
2024-03-08 19:40:41 -05:00
Rangi42
75cc12bb3d Use std::optional for fstack paths 2024-03-07 21:41:02 -05:00
Rangi42
aed172071b Replace some macros with static functions or constants 2024-03-07 16:10:05 -05:00
Rangi42
097b7c3baf Use std::string for symbol names 2024-03-07 12:40:33 -05:00
Rangi42
bf45ebb178 Run clang-format to fix some inconsistent style 2024-03-07 11:52:53 -05:00
Rangi42
84bedc7bbe Use automatic allocation for RPN reasons 2024-03-07 09:58:45 -05:00
Sylvie
292adb27a3 Adapt the RGBASM parser to C++ (#1333)
This uses variants instead of a `%union`, and "complete symbols"
that can call complex constructors.
2024-03-06 20:40:36 -05:00
Rangi42
053aa80951 Improve some const correctness in RGBASM 2024-03-06 13:53:03 -05:00
Rangi42
bd88787cb3 Use FileStackNode constructor to avoid std::monostate possibility 2024-03-05 14:22:29 -05:00
Sylvie
e74073e480 Run clang-format on everything (#1332) 2024-03-04 14:22:49 -05:00
Sylvie
b004648a13 Use std::variant for symbol values (#1331) 2024-03-04 08:55:33 -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
Sylvie
447c561aaa Use std::variant for symbol values (#1330) 2024-03-03 21:16:36 -05:00
Sylvie
f8dab23e8f Use uncommented sizes for pointer-to-array arguments (#1329)
This is syntactically valid despite not being enforced, and
is a feature we already use elsewhere.
2024-03-03 19:43:08 -05:00
Sylvie
8cf446b14c Use std::variant for lexer mmap/buffer state (#1328) 2024-03-03 18:45:50 -05:00
Evie
6b67c82b94 Implement -c #none (#1301)
Also adds a test case for round-tripping `-r` with `-c #none`.
2024-03-03 18:45:33 -05:00
Rangi42
930a5c3e44 Replace RGBLINK 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
Sylvie
a71e4086a2 Use std::string_view for macro bodies (#1326)
This removes the last use of `strdup`

This required making a lot of related pointers be `const`.
That in turn conflicted with the need to `munmap()` a pointer
eventually, which was similar to the need to eventually `free()`
an `Expansion`'s contents, so I used the same solution of a
`union`. That lets us normally use the `const` pointer for
`const` correctness, and the non-`const` one for the not-really-
mutating destruction cases.
2024-03-02 13:21:28 -05:00
Rangi42
2069a95e0f Use std::string for macro args 2024-03-02 05:23:15 -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
Sylvie
1ac3c0262f Refactor structs to use methods instead of functions (#1322) 2024-03-01 13:11:45 -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
Sylvie
043db49676 Replace NULL with nullptr (#1321) 2024-02-29 15:06:33 -05:00
Sylvie
eff8c324c8 Remove now-unnecessary struct keyword (#1320)
C++ acts like structs are `typedef`ed by default

We do have to keep `struct stat`, since there's ambiguity
with the function also called `stat`.
2024-02-29 14:41:58 -05:00
Rangi42
1210a7441f Use std::visit with Visitor helper instead of std::holds_alternatve 2024-02-29 13:44:08 -05:00
Rangi42
e90084ad06 Rename isWRA0Mode to isWRAM0Mode 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
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
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
7daa8759c9 Use std::variant for STRFMT arguments 2024-02-29 13:44:08 -05:00
Rangi42
962398969b Use std::string for PURGE args 2024-02-29 13:44:08 -05:00