fix: make name of zone definition the target name by default

This commit is contained in:
Jan
2024-11-12 18:18:04 +01:00
parent aa8300052a
commit 2034db3330
8 changed files with 236 additions and 11 deletions

View File

@ -58,7 +58,7 @@ class LinkerImpl final : public Linker
return false;
}
ZoneDefinitionInputStream zoneDefinitionInputStream(*definitionStream.m_stream, definitionFileName, m_args.m_verbose);
ZoneDefinitionInputStream zoneDefinitionInputStream(*definitionStream.m_stream, source, definitionFileName, m_args.m_verbose);
zoneDefinitionInputStream.SetPreviouslySetGame(zoneDefinition.m_game);
includeDefinition = zoneDefinitionInputStream.ReadDefinition();
}
@ -147,7 +147,7 @@ class LinkerImpl final : public Linker
return nullptr;
}
ZoneDefinitionInputStream zoneDefinitionInputStream(*definitionStream.m_stream, definitionFileName, m_args.m_verbose);
ZoneDefinitionInputStream zoneDefinitionInputStream(*definitionStream.m_stream, targetName, definitionFileName, m_args.m_verbose);
zoneDefinition = zoneDefinitionInputStream.ReadDefinition();
}

View File

@ -7,8 +7,8 @@
#include "Sequence/SequenceZoneDefinitionInclude.h"
#include "Sequence/SequenceZoneDefinitionMetaData.h"
ZoneDefinitionParser::ZoneDefinitionParser(ZoneDefinitionLexer* lexer, const std::optional<GameId> maybeGame)
: AbstractParser(lexer, std::make_unique<ZoneDefinitionParserState>())
ZoneDefinitionParser::ZoneDefinitionParser(ZoneDefinitionLexer* lexer, std::string targetName, const std::optional<GameId> maybeGame)
: AbstractParser(lexer, std::make_unique<ZoneDefinitionParserState>(std::move(targetName)))
{
if (maybeGame)
m_state->SetGame(*maybeGame);

View File

@ -15,6 +15,6 @@ protected:
const std::vector<sequence_t*>& GetTestsForState() override;
public:
explicit ZoneDefinitionParser(ZoneDefinitionLexer* lexer, std::optional<GameId> maybeGame = std::nullopt);
ZoneDefinitionParser(ZoneDefinitionLexer* lexer, std::string targetName, std::optional<GameId> maybeGame = std::nullopt);
std::unique_ptr<ZoneDefinition> GetParsedValue();
};

View File

@ -1,9 +1,10 @@
#include "ZoneDefinitionParserState.h"
ZoneDefinitionParserState::ZoneDefinitionParserState()
ZoneDefinitionParserState::ZoneDefinitionParserState(std::string targetName)
: m_asset_name_resolver(nullptr),
m_definition(std::make_unique<ZoneDefinition>())
{
m_definition->m_name = std::move(targetName);
}
void ZoneDefinitionParserState::SetGame(const GameId game)

View File

@ -8,7 +8,7 @@
class ZoneDefinitionParserState
{
public:
ZoneDefinitionParserState();
explicit ZoneDefinitionParserState(std::string targetName);
void SetGame(GameId game);

View File

@ -9,8 +9,9 @@
#include <chrono>
#include <format>
ZoneDefinitionInputStream::ZoneDefinitionInputStream(std::istream& stream, std::string fileName, bool verbose)
: m_file_name(std::move(fileName)),
ZoneDefinitionInputStream::ZoneDefinitionInputStream(std::istream& stream, std::string targetName, std::string fileName, const bool verbose)
: m_target_name(std::move(targetName)),
m_file_name(std::move(fileName)),
m_verbose(verbose),
m_stream(nullptr),
m_previously_set_game(std::nullopt)
@ -46,7 +47,7 @@ std::unique_ptr<ZoneDefinition> ZoneDefinitionInputStream::ReadDefinition()
std::cout << std::format("Reading zone definition file: {}\n", m_file_name);
const auto lexer = std::make_unique<ZoneDefinitionLexer>(m_stream);
const auto parser = std::make_unique<ZoneDefinitionParser>(lexer.get(), m_previously_set_game);
const auto parser = std::make_unique<ZoneDefinitionParser>(lexer.get(), m_target_name, m_previously_set_game);
const auto start = std::chrono::steady_clock::now();
std::unique_ptr<ZoneDefinition> definition;

View File

@ -11,7 +11,7 @@
class ZoneDefinitionInputStream
{
public:
ZoneDefinitionInputStream(std::istream& stream, std::string fileName, bool verbose);
ZoneDefinitionInputStream(std::istream& stream, std::string targetName, std::string fileName, bool verbose);
void SetPreviouslySetGame(GameId game);
std::unique_ptr<ZoneDefinition> ReadDefinition();
@ -20,6 +20,7 @@ private:
bool OpenBaseStream(std::istream& stream);
void SetupStreamProxies();
std::string m_target_name;
std::string m_file_name;
bool m_verbose;
IParserLineStream* m_stream;