mirror of https://github.com/WerWolv/ImHex.git
parent
a4c5d0bb62
commit
3e5d6cf88c
|
@ -1334,11 +1334,14 @@ namespace hex::pl {
|
|||
[](auto &&offset) -> u8 { return static_cast<u8>(offset); }
|
||||
}, dynamic_cast<ASTNodeLiteral*>(literal)->getValue());
|
||||
|
||||
auto field = new PatternDataBitfieldField(evaluator->dataOffset(), bitOffset, bitSize, evaluator);
|
||||
field->setVariableName(name);
|
||||
// If a field is named padding, it was created through a padding expression and only advances the bit position
|
||||
if (name != "padding") {
|
||||
auto field = new PatternDataBitfieldField(evaluator->dataOffset(), bitOffset, bitSize, evaluator);
|
||||
field->setVariableName(name);
|
||||
fields.push_back(field);
|
||||
}
|
||||
|
||||
bitOffset += bitSize;
|
||||
fields.push_back(field);
|
||||
}
|
||||
evaluator->popScope();
|
||||
|
||||
|
|
|
@ -986,8 +986,9 @@ namespace hex::pl {
|
|||
if (MATCHES(sequence(IDENTIFIER, OPERATOR_INHERIT))) {
|
||||
auto name = getValue<Token::Identifier>(-2).get();
|
||||
bitfieldNode->addEntry(name, parseMathematicalExpression());
|
||||
}
|
||||
else if (MATCHES(sequence(SEPARATOR_ENDOFPROGRAM)))
|
||||
} else if (MATCHES(sequence(VALUETYPE_PADDING, OPERATOR_INHERIT))) {
|
||||
bitfieldNode->addEntry("padding", parseMathematicalExpression());
|
||||
} else if (MATCHES(sequence(SEPARATOR_ENDOFPROGRAM)))
|
||||
throwParseError("unexpected end of program", -2);
|
||||
else
|
||||
throwParseError("invalid bitfield member", 0);
|
||||
|
|
Loading…
Reference in New Issue