wip: multiple variants in zonecode

This commit is contained in:
Jan Laupetin
2026-08-19 19:36:15 +02:00
parent cdaeb19bcb
commit 6d44ed0568
53 changed files with 392 additions and 276 deletions
@@ -16,7 +16,7 @@
#include "Parsing/Commands/Sequence/SequenceSetBlock.h"
#include "Parsing/Commands/Sequence/SequenceString.h"
#include "Parsing/Commands/Sequence/SequenceUse.h"
#include "Parsing/Commands/Sequence/SequenceWordSize.h"
#include "Parsing/Commands/Sequence/SequenceVariant.h"
CommandsParser::CommandsParser(CommandsLexer* lexer, IDataRepository* targetRepository)
: AbstractParser(lexer, std::make_unique<CommandsParserState>(targetRepository)),
@@ -43,7 +43,7 @@ const std::vector<CommandsParser::sequence_t*>& CommandsParser::GetTestsForState
new SequenceSetBlock(),
new SequenceString(),
new SequenceUse(),
new SequenceWordSize(),
new SequenceVariant(),
});
return tests;
@@ -74,9 +74,9 @@ void CommandsParserState::AddBlock(std::unique_ptr<FastFileBlock> block) const
m_repository->Add(std::move(block));
}
void CommandsParserState::SetWordSize(const WordSize wordSize) const
void CommandsParserState::AddGameVariant(std::string variantName, const WordSize wordSize, const std::endian endianness) const
{
m_repository->SetWordSize(wordSize);
m_repository->AddGameVariant(std::make_unique<GameVariant>(std::move(variantName), wordSize, endianness));
}
void CommandsParserState::SetGame(std::string gameName) const
@@ -13,8 +13,8 @@ public:
[[nodiscard]] const IDataRepository* GetRepository() const;
void AddBlock(std::unique_ptr<FastFileBlock> block) const;
void SetWordSize(WordSize wordSize) const;
void SetGame(std::string gameName) const;
void AddGameVariant(std::string variantName, WordSize wordSize, std::endian endianness) const;
[[nodiscard]] StructureInformation* GetInUse() const;
void SetInUse(StructureInformation* structure);