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

Add blocks and built in types to zcg cpp

This commit is contained in:
Jan
2021-02-14 00:53:23 +01:00
parent 216125739c
commit e40f1ec0b7
18 changed files with 384 additions and 25 deletions

View File

@ -0,0 +1,31 @@
#include "HeaderBlockEnum.h"
#include "Parsing/Header/Sequence/SequenceCloseBlock.h"
#include "Parsing/Header/Sequence/SequenceEnumMember.h"
HeaderBlockType HeaderBlockEnum::GetType()
{
return HeaderBlockType::UNION;
}
const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockEnum::GetTestsForBlock()
{
static std::vector<sequence_t*> tests({
new SequenceCloseBlock(),
new SequenceEnumMember()
});
return tests;
}
void HeaderBlockEnum::OnOpen()
{
}
void HeaderBlockEnum::OnClose()
{
}
void HeaderBlockEnum::OnChildBlockClose(IHeaderBlock* block)
{
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "IHeaderBlock.h"
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;
};

View File

@ -0,0 +1,41 @@
#include "HeaderBlockNamespace.h"
#include "Parsing/Header/Sequence/SequenceCloseBlock.h"
#include "Parsing/Header/Sequence/SequenceEnum.h"
#include "Parsing/Header/Sequence/SequenceForwardDecl.h"
#include "Parsing/Header/Sequence/SequenceNamespace.h"
#include "Parsing/Header/Sequence/SequenceStruct.h"
#include "Parsing/Header/Sequence/SequenceTypedef.h"
#include "Parsing/Header/Sequence/SequenceUnion.h"
HeaderBlockType HeaderBlockNamespace::GetType()
{
return HeaderBlockType::NAMESPACE;
}
const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockNamespace::GetTestsForBlock()
{
static std::vector<sequence_t*> tests({
new SequenceCloseBlock(),
new SequenceEnum(),
new SequenceForwardDecl(),
new SequenceNamespace(),
new SequenceStruct(),
new SequenceTypedef(),
new SequenceUnion()
});
return tests;
}
void HeaderBlockNamespace::OnOpen()
{
}
void HeaderBlockNamespace::OnClose()
{
}
void HeaderBlockNamespace::OnChildBlockClose(IHeaderBlock* block)
{
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "IHeaderBlock.h"
class HeaderBlockNamespace 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;
};

View File

@ -0,0 +1,39 @@
#include "HeaderBlockNone.h"
#include "Parsing/Header/Sequence/SequenceEnum.h"
#include "Parsing/Header/Sequence/SequenceForwardDecl.h"
#include "Parsing/Header/Sequence/SequenceNamespace.h"
#include "Parsing/Header/Sequence/SequenceStruct.h"
#include "Parsing/Header/Sequence/SequenceTypedef.h"
#include "Parsing/Header/Sequence/SequenceUnion.h"
HeaderBlockType HeaderBlockNone::GetType()
{
return HeaderBlockType::NONE;
}
const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockNone::GetTestsForBlock()
{
static std::vector<sequence_t*> tests({
new SequenceEnum(),
new SequenceForwardDecl(),
new SequenceNamespace(),
new SequenceStruct(),
new SequenceTypedef(),
new SequenceUnion()
});
return tests;
}
void HeaderBlockNone::OnOpen()
{
}
void HeaderBlockNone::OnClose()
{
}
void HeaderBlockNone::OnChildBlockClose(IHeaderBlock* block)
{
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "IHeaderBlock.h"
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;
};

View File

@ -0,0 +1,37 @@
#include "HeaderBlockStruct.h"
#include "Parsing/Header/Sequence/SequenceCloseBlock.h"
#include "Parsing/Header/Sequence/SequenceEnum.h"
#include "Parsing/Header/Sequence/SequenceStruct.h"
#include "Parsing/Header/Sequence/SequenceUnion.h"
#include "Parsing/Header/Sequence/SequenceVariable.h"
HeaderBlockType HeaderBlockStruct::GetType()
{
return HeaderBlockType::STRUCT;
}
const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockStruct::GetTestsForBlock()
{
static std::vector<sequence_t*> tests({
new SequenceCloseBlock(),
new SequenceEnum(),
new SequenceStruct(),
new SequenceUnion(),
new SequenceVariable()
});
return tests;
}
void HeaderBlockStruct::OnOpen()
{
}
void HeaderBlockStruct::OnClose()
{
}
void HeaderBlockStruct::OnChildBlockClose(IHeaderBlock* block)
{
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "IHeaderBlock.h"
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;
};

View File

@ -0,0 +1,37 @@
#include "HeaderBlockUnion.h"
#include "Parsing/Header/Sequence/SequenceCloseBlock.h"
#include "Parsing/Header/Sequence/SequenceEnum.h"
#include "Parsing/Header/Sequence/SequenceStruct.h"
#include "Parsing/Header/Sequence/SequenceUnion.h"
#include "Parsing/Header/Sequence/SequenceVariable.h"
HeaderBlockType HeaderBlockUnion::GetType()
{
return HeaderBlockType::UNION;
}
const std::vector<IHeaderBlock::sequence_t*>& HeaderBlockUnion::GetTestsForBlock()
{
static std::vector<sequence_t*> tests({
new SequenceCloseBlock(),
new SequenceEnum(),
new SequenceStruct(),
new SequenceUnion(),
new SequenceVariable()
});
return tests;
}
void HeaderBlockUnion::OnOpen()
{
}
void HeaderBlockUnion::OnClose()
{
}
void HeaderBlockUnion::OnChildBlockClose(IHeaderBlock* block)
{
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "IHeaderBlock.h"
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;
};

View File

@ -0,0 +1,38 @@
#pragma once
#include <vector>
#include "Parsing/Sequence/AbstractSequence.h"
#include "Parsing/Header/Impl/HeaderParserState.h"
enum class HeaderBlockType
{
NONE,
NAMESPACE,
ENUM,
STRUCT,
UNION
};
class HeaderParserValue;
class HeaderParserState;
class IHeaderBlock
{
public:
typedef AbstractSequence<HeaderParserValue, HeaderParserState> sequence_t;
IHeaderBlock() = default;
virtual ~IHeaderBlock() = default;
IHeaderBlock(const IHeaderBlock& other) = default;
IHeaderBlock(IHeaderBlock&& other) noexcept = default;
IHeaderBlock& operator=(const IHeaderBlock& other) = default;
IHeaderBlock& operator=(IHeaderBlock&& other) noexcept = default;
virtual HeaderBlockType GetType() = 0;
virtual const std::vector<sequence_t*>& GetTestsForBlock() = 0;
virtual void OnOpen() = 0;
virtual void OnClose() = 0;
virtual void OnChildBlockClose(IHeaderBlock* block) = 0;
};