Fix techset parsing naming issues

This commit is contained in:
Jan 2022-03-27 16:21:06 +02:00
parent d8f490ec94
commit 99d5caf1f2
8 changed files with 35 additions and 29 deletions

View File

@ -15,7 +15,7 @@ using namespace IW4;
namespace IW4
{
class TechniqueZoneLoadingState final : IZoneAssetLoaderState
class TechniqueZoneLoadingState final : public IZoneAssetLoaderState
{
std::map<std::string, MaterialTechnique*> m_loaded_techniques;
@ -108,7 +108,7 @@ bool AssetLoaderTechniqueSet::LoadFromRaw(const std::string& assetName, ISearchP
if (!file.IsOpen())
return false;
const TechsetFileReader reader(*file.m_stream, techsetFileName, techniqueTypeNames, std::extent_v<decltype(techniqueTypeNames)>);
const techset::TechsetFileReader reader(*file.m_stream, techsetFileName, techniqueTypeNames, std::extent_v<decltype(techniqueTypeNames)>);
const auto techsetDefinition = reader.ReadTechsetDefinition();
if (techsetDefinition)

View File

@ -6,7 +6,7 @@ using namespace techset;
namespace techset
{
class SequenceTechniqueTypeName final : public Parser::sequence_t
class SequenceTechniqueTypeName final : public TechsetParser::sequence_t
{
static constexpr auto CAPTURE_TYPE_NAME = 1;
@ -22,7 +22,7 @@ namespace techset
}
protected:
void ProcessMatch(ParserState* state, SequenceResult<SimpleParserValue>& result) const override
void ProcessMatch(TechsetParserState* state, SequenceResult<SimpleParserValue>& result) const override
{
const auto& typeNameToken = result.NextCapture(CAPTURE_TYPE_NAME);
@ -34,7 +34,7 @@ namespace techset
}
};
class SequenceTechniqueName final : public Parser::sequence_t
class SequenceTechniqueName final : public TechsetParser::sequence_t
{
static constexpr auto CAPTURE_NAME = 1;
@ -53,7 +53,7 @@ namespace techset
}
protected:
void ProcessMatch(ParserState* state, SequenceResult<SimpleParserValue>& result) const override
void ProcessMatch(TechsetParserState* state, SequenceResult<SimpleParserValue>& result) const override
{
assert(!state->m_current_technique_types.empty());
@ -69,12 +69,12 @@ namespace techset
};
}
Parser::Parser(SimpleLexer* lexer, const char** validTechniqueTypeNames, const size_t validTechniqueTypeNameCount)
: AbstractParser(lexer, std::make_unique<ParserState>(validTechniqueTypeNames, validTechniqueTypeNameCount))
TechsetParser::TechsetParser(SimpleLexer* lexer, const char** validTechniqueTypeNames, const size_t validTechniqueTypeNameCount)
: AbstractParser(lexer, std::make_unique<TechsetParserState>(validTechniqueTypeNames, validTechniqueTypeNameCount))
{
}
const std::vector<Parser::sequence_t*>& Parser::GetTestsForState()
const std::vector<TechsetParser::sequence_t*>& TechsetParser::GetTestsForState()
{
static std::vector<sequence_t*> allTests({
new SequenceTechniqueTypeName(),
@ -87,7 +87,7 @@ const std::vector<Parser::sequence_t*>& Parser::GetTestsForState()
return m_state->m_current_technique_types.empty() ? techniqueTypeNameOnlyTests : allTests;
}
std::unique_ptr<TechsetDefinition> Parser::GetTechsetDefinition() const
std::unique_ptr<TechsetDefinition> TechsetParser::GetTechsetDefinition() const
{
return std::move(m_state->m_definition);
}

View File

@ -9,13 +9,13 @@
namespace techset
{
class Parser final : public AbstractParser<SimpleParserValue, ParserState>
class TechsetParser final : public AbstractParser<SimpleParserValue, TechsetParserState>
{
protected:
const std::vector<sequence_t*>& GetTestsForState() override;
public:
Parser(SimpleLexer* lexer, const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount);
TechsetParser(SimpleLexer* lexer, const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount);
_NODISCARD std::unique_ptr<TechsetDefinition> GetTechsetDefinition() const;
};
}

View File

@ -2,7 +2,7 @@
using namespace techset;
ParserState::ParserState(const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount)
TechsetParserState::TechsetParserState(const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount)
: m_definition(std::make_unique<TechsetDefinition>(validTechniqueTypeNameCount))
{
for (auto i = 0u; i < validTechniqueTypeNameCount; i++)
@ -11,7 +11,7 @@ ParserState::ParserState(const char** validTechniqueTypeNames, size_t validTechn
}
}
bool ParserState::FindTechniqueTypeIndex(const std::string& techniqueTypeName, size_t& techniqueTypeIndex) const
bool TechsetParserState::FindTechniqueTypeIndex(const std::string& techniqueTypeName, size_t& techniqueTypeIndex) const
{
const auto foundTechniqueType = m_valid_technique_type_names.find(techniqueTypeName);

View File

@ -8,14 +8,14 @@
namespace techset
{
class ParserState
class TechsetParserState
{
public:
std::map<std::string, size_t> m_valid_technique_type_names;
std::unique_ptr<TechsetDefinition> m_definition;
std::vector<size_t> m_current_technique_types;
ParserState(const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount);
TechsetParserState(const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount);
bool FindTechniqueTypeIndex(const std::string& techniqueTypeName, size_t& techniqueTypeIndex) const;
};

View File

@ -1,4 +1,5 @@
#pragma once
#include <string>
#include <vector>

View File

@ -6,6 +6,8 @@
#include "Parsing/Impl/CommentRemovingStreamProxy.h"
#include "Parsing/Impl/ParserSingleInputStream.h"
using namespace techset;
TechsetFileReader::TechsetFileReader(std::istream& stream, std::string fileName, const char** validTechniqueTypeNames, const size_t validTechniqueTypeNameCount)
: m_file_name(std::move(fileName)),
m_valid_technique_type_names(validTechniqueTypeNames),
@ -23,7 +25,7 @@ std::unique_ptr<techset::TechsetDefinition> TechsetFileReader::ReadTechsetDefini
lexerConfig.m_read_numbers = false;
const auto lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));
const auto parser = std::make_unique<techset::Parser>(lexer.get(), m_valid_technique_type_names, m_valid_technique_type_name_count);
const auto parser = std::make_unique<techset::TechsetParser>(lexer.get(), m_valid_technique_type_names, m_valid_technique_type_name_count);
const auto success = parser->Parse();
if (success)

View File

@ -7,6 +7,8 @@
#include "TechsetDefinition.h"
#include "Parsing/IParserLineStream.h"
namespace techset
{
class TechsetFileReader
{
std::string m_file_name;
@ -20,3 +22,4 @@ public:
_NODISCARD std::unique_ptr<techset::TechsetDefinition> ReadTechsetDefinition() const;
};
}