2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-07-01 08:41:52 +00:00

Add blocks to header parsing state that manipulate which sequences are valid

This commit is contained in:
Jan
2021-02-14 10:27:47 +01:00
parent 3f08be0564
commit e685348abd
18 changed files with 79 additions and 33 deletions

View File

@ -18,14 +18,14 @@ const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockEnum::GetTestsForBlock(
return tests;
}
void HeaderBlockEnum::OnOpen()
void HeaderBlockEnum::OnOpen(HeaderParserState* state)
{
}
void HeaderBlockEnum::OnClose()
void HeaderBlockEnum::OnClose(HeaderParserState* state)
{
}
void HeaderBlockEnum::OnChildBlockClose(IHeaderBlock* block)
void HeaderBlockEnum::OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block)
{
}

View File

@ -7,7 +7,7 @@ class HeaderBlockEnum final : public IHeaderBlock
public:
HeaderBlockType GetType() override;
const std::vector<sequence_t*>& GetTestsForBlock() override;
void OnOpen() override;
void OnClose() override;
void OnChildBlockClose(IHeaderBlock* block) override;
void OnOpen(HeaderParserState* state) override;
void OnClose(HeaderParserState* state) override;
void OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block) override;
};

View File

@ -8,6 +8,11 @@
#include "Parsing/Header/Sequence/SequenceTypedef.h"
#include "Parsing/Header/Sequence/SequenceUnion.h"
HeaderBlockNamespace::HeaderBlockNamespace(std::string namespaceName)
: m_namespace_name(std::move(namespaceName))
{
}
HeaderBlockType HeaderBlockNamespace::GetType()
{
return HeaderBlockType::NAMESPACE;
@ -28,14 +33,16 @@ const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockNamespace::GetTestsForB
return tests;
}
void HeaderBlockNamespace::OnOpen()
void HeaderBlockNamespace::OnOpen(HeaderParserState* state)
{
state->m_namespace.Push(m_namespace_name);
}
void HeaderBlockNamespace::OnClose()
void HeaderBlockNamespace::OnClose(HeaderParserState* state)
{
state->m_namespace.Pop();
}
void HeaderBlockNamespace::OnChildBlockClose(IHeaderBlock* block)
void HeaderBlockNamespace::OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block)
{
}

View File

@ -4,10 +4,14 @@
class HeaderBlockNamespace final : public IHeaderBlock
{
std::string m_namespace_name;
public:
explicit HeaderBlockNamespace(std::string namespaceName);
HeaderBlockType GetType() override;
const std::vector<sequence_t*>& GetTestsForBlock() override;
void OnOpen() override;
void OnClose() override;
void OnChildBlockClose(IHeaderBlock* block) override;
void OnOpen(HeaderParserState* state) override;
void OnClose(HeaderParserState* state) override;
void OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block) override;
};

View File

@ -26,14 +26,14 @@ const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockNone::GetTestsForBlock(
return tests;
}
void HeaderBlockNone::OnOpen()
void HeaderBlockNone::OnOpen(HeaderParserState* state)
{
}
void HeaderBlockNone::OnClose()
void HeaderBlockNone::OnClose(HeaderParserState* state)
{
}
void HeaderBlockNone::OnChildBlockClose(IHeaderBlock* block)
void HeaderBlockNone::OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block)
{
}

View File

@ -7,7 +7,7 @@ class HeaderBlockNone final : public IHeaderBlock
public:
HeaderBlockType GetType() override;
const std::vector<sequence_t*>& GetTestsForBlock() override;
void OnOpen() override;
void OnClose() override;
void OnChildBlockClose(IHeaderBlock* block) override;
void OnOpen(HeaderParserState* state) override;
void OnClose(HeaderParserState* state) override;
void OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block) override;
};

View File

@ -24,14 +24,14 @@ const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockStruct::GetTestsForBloc
return tests;
}
void HeaderBlockStruct::OnOpen()
void HeaderBlockStruct::OnOpen(HeaderParserState* state)
{
}
void HeaderBlockStruct::OnClose()
void HeaderBlockStruct::OnClose(HeaderParserState* state)
{
}
void HeaderBlockStruct::OnChildBlockClose(IHeaderBlock* block)
void HeaderBlockStruct::OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block)
{
}

View File

@ -7,7 +7,7 @@ class HeaderBlockStruct final : public IHeaderBlock
public:
HeaderBlockType GetType() override;
const std::vector<sequence_t*>& GetTestsForBlock() override;
void OnOpen() override;
void OnClose() override;
void OnChildBlockClose(IHeaderBlock* block) override;
void OnOpen(HeaderParserState* state) override;
void OnClose(HeaderParserState* state) override;
void OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block) override;
};

View File

@ -24,14 +24,14 @@ const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockUnion::GetTestsForBlock
return tests;
}
void HeaderBlockUnion::OnOpen()
void HeaderBlockUnion::OnOpen(HeaderParserState* state)
{
}
void HeaderBlockUnion::OnClose()
void HeaderBlockUnion::OnClose(HeaderParserState* state)
{
}
void HeaderBlockUnion::OnChildBlockClose(IHeaderBlock* block)
void HeaderBlockUnion::OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block)
{
}

View File

@ -7,7 +7,7 @@ class HeaderBlockUnion final : public IHeaderBlock
public:
HeaderBlockType GetType() override;
const std::vector<sequence_t*>& GetTestsForBlock() override;
void OnOpen() override;
void OnClose() override;
void OnChildBlockClose(IHeaderBlock* block) override;
void OnOpen(HeaderParserState* state) override;
void OnClose(HeaderParserState* state) override;
void OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block) override;
};

View File

@ -32,7 +32,7 @@ public:
virtual const std::vector<sequence_t*>& GetTestsForBlock() = 0;
virtual void OnOpen() = 0;
virtual void OnClose() = 0;
virtual void OnChildBlockClose(IHeaderBlock* block) = 0;
virtual void OnOpen(HeaderParserState* state) = 0;
virtual void OnClose(HeaderParserState* state) = 0;
virtual void OnChildBlockClose(HeaderParserState* state, IHeaderBlock* block) = 0;
};