diff options
author | Alon Zakai <azakai@google.com> | 2024-04-03 08:22:08 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-03 08:22:08 -0700 |
commit | 58f06ccd1e94953292057bb61dc670bfcee0dd05 (patch) | |
tree | 45a27d2d57b06e11584e7afad5a6933dc6105ab4 /src/wasm/literal.cpp | |
parent | 35df5043764b41d7c23d15db5518cfe8becb3564 (diff) | |
download | binaryen-58f06ccd1e94953292057bb61dc670bfcee0dd05.tar.gz binaryen-58f06ccd1e94953292057bb61dc670bfcee0dd05.tar.bz2 binaryen-58f06ccd1e94953292057bb61dc670bfcee0dd05.zip |
[NFC] Generalize and simplify wasm-delegations-fields.h (#6465)
This removes the hard-coded generation of a switch and cases, and allows the user
to define the boilerplate at the start and end of the main output, and of what is
generated for each expression. By default we still emit a switch and cases.
Also standardize the output by never emitting ; unnecessarily, which we were
inconsistent about.
This serves two goals: First, it will make using embind on Binaryen simpler as
embind needs to generate C++ template logic for each expression, and not a
switch (and we cannot have extra ; in embind notation). Second, this makes
the format much simple to parse, which is a stepping stone for #6460, e.g.
before we had
case Expression::Id::LoopId: {
DELEGATE_START(Loop);
DELEGATE_FIELD_CHILD(Loop, body);
DELEGATE_FIELD_SCOPE_NAME_DEF(Loop, name);
DELEGATE_END(Loop);
break;
}
and now we have
DELEGATE_FIELD_CASE_START(Loop)
DELEGATE_FIELD_CHILD(Loop, body)
DELEGATE_FIELD_SCOPE_NAME_DEF(Loop, name)
DELEGATE_FIELD_CASE_END(Loop)
The main part of this diff was autogenerated by this python:
for l in x.splitlines():
if l.startswith(' case'):
id = l.split(':')[4][:-2]
print(f'DELEGATE_FIELD_CASE_START({id})')
if l.startswith(' DELEGATE_FIELD'):
print(l)
if l.startswith(' DELEGATE_END'):
id = l[17:-2]
print(f'DELEGATE_FIELD_CASE_END({id})')
print()
Diffstat (limited to 'src/wasm/literal.cpp')
0 files changed, 0 insertions, 0 deletions