2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-09-05 08:17:25 +00:00

parse struct and union sequences

This commit is contained in:
Jan
2021-02-18 21:55:13 +01:00
parent 57547854c4
commit fb55cdb468
24 changed files with 316 additions and 19 deletions

View File

@@ -2,8 +2,8 @@
#include "Parsing/Header/Sequence/SequenceNamespace.h"
HeaderParser::HeaderParser(HeaderLexer* lexer)
: AbstractParser(lexer, std::make_unique<HeaderParserState>())
HeaderParser::HeaderParser(HeaderLexer* lexer, const IPackValueSupplier* packValueSupplier)
: AbstractParser(lexer, std::make_unique<HeaderParserState>(packValueSupplier))
{
auto sequenceNamespace = std::make_unique<SequenceNamespace>();
}

View File

@@ -2,6 +2,7 @@
#include "HeaderLexer.h"
#include "HeaderParserState.h"
#include "Parsing/IPackValueSupplier.h"
#include "Parsing/Impl/AbstractParser.h"
#include "Persistence/IDataRepository.h"
@@ -11,7 +12,7 @@ protected:
const std::vector<sequence_t*>& GetTestsForState() override;
public:
explicit HeaderParser(HeaderLexer* lexer);
HeaderParser(HeaderLexer* lexer, const IPackValueSupplier* packValueSupplier);
void SaveToRepository(IDataRepository* repository) const;
};

View File

@@ -3,7 +3,9 @@
#include "Domain/Definition/EnumDefinition.h"
#include "Parsing/Header/Block/HeaderBlockNone.h"
HeaderParserState::HeaderParserState()
HeaderParserState::HeaderParserState(const IPackValueSupplier* packValueSupplier)
: m_pack_value_supplier(packValueSupplier)
{
m_blocks.push(std::make_unique<HeaderBlockNone>());

View File

@@ -9,6 +9,7 @@
#include "Domain/Definition/DataDefinition.h"
#include "Domain/Definition/EnumMember.h"
#include "Domain/Definition/ForwardDeclaration.h"
#include "Parsing/IPackValueSupplier.h"
#include "Utils/NamespaceBuilder.h"
#include "Parsing/Header/Block/IHeaderBlock.h"
#include "Persistence/IDataRepository.h"
@@ -27,9 +28,10 @@ class HeaderParserState
void AddBaseDataType(const BaseTypeDefinition* baseType);
public:
const IPackValueSupplier* const m_pack_value_supplier;
NamespaceBuilder m_namespace;
HeaderParserState();
explicit HeaderParserState(const IPackValueSupplier* packValueSupplier);
_NODISCARD IHeaderBlock* GetBlock() const;
void PushBlock(std::unique_ptr<IHeaderBlock> block);