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:
@ -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)
|
||||
{
|
||||
}
|
@ -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;
|
||||
};
|
@ -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)
|
||||
{
|
||||
}
|
@ -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;
|
||||
};
|
@ -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)
|
||||
{
|
||||
}
|
@ -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;
|
||||
};
|
@ -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)
|
||||
{
|
||||
}
|
@ -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;
|
||||
};
|
@ -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)
|
||||
{
|
||||
}
|
@ -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;
|
||||
};
|
38
src/ZoneCodeGeneratorLib/Parsing/Header/Block/IHeaderBlock.h
Normal file
38
src/ZoneCodeGeneratorLib/Parsing/Header/Block/IHeaderBlock.h
Normal 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;
|
||||
};
|
Reference in New Issue
Block a user