2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-09-03 15:27:25 +00:00

Add Repository Implementation for ZCG cpp

This commit is contained in:
Jan
2021-02-08 17:06:00 +01:00
parent 3b716965a5
commit 6c45c99687
3 changed files with 145 additions and 16 deletions

View File

@@ -4,24 +4,36 @@
#include "Utils/ClassUtils.h"
#include "Domain/Definition/EnumDefinition.h"
#include "Domain/Definition/StructDefinition.h"
#include "Domain/Definition/TypedefDefinition.h"
#include "Domain/Definition/UnionDefinition.h"
#include "Domain/Information/StructureInformation.h"
#include "Domain/FastFile/FastFileBlock.h"
class IDataRepository
{
public:
IDataRepository() = default;
virtual ~IDataRepository() = default;
IDataRepository(const IDataRepository& other) = default;
IDataRepository(IDataRepository&& other) noexcept = default;
IDataRepository& operator=(const IDataRepository& other) = default;
IDataRepository& operator=(IDataRepository&& other) noexcept = default;
/*
* IEnumerable<DataTypeEnum> GetAllEnums();
IEnumerable<DataTypeStruct> GetAllStructs();
IEnumerable<DataTypeUnion> GetAllUnions();
IEnumerable<DataTypeTypedef> GetAllTypedefs();
IEnumerable<StructureInformation> GetAllStructureInformation();
IEnumerable<FastFileBlock> GetAllFastFileBlocks();
*/
_NODISCARD const std::vector<EnumDefinition*>& GetAllEnums() const;
_NODISCARD const std::vector<EnumDefinition*>& GetAllStructs() const;
_NODISCARD const std::vector<EnumDefinition*>& GetAllUnions() const;
_NODISCARD const std::vector<EnumDefinition*>& GetAllTypedefs() const;
_NODISCARD const std::vector<EnumDefinition*>& GetAllStructureInformation() const;
_NODISCARD const std::vector<EnumDefinition*>& GetAllFastFileBlocks() const;
virtual void Add(std::unique_ptr<EnumDefinition> enumsDefinition) = 0;
virtual void Add(std::unique_ptr<StructDefinition> structDefinition) = 0;
virtual void Add(std::unique_ptr<UnionDefinition> unionDefinition) = 0;
virtual void Add(std::unique_ptr<TypedefDefinition> typedefDefinition) = 0;
virtual void Add(std::unique_ptr<StructureInformation> structureInformation) = 0;
virtual void Add(std::unique_ptr<FastFileBlock> fastFileBlock) = 0;
_NODISCARD virtual const std::vector<EnumDefinition*>& GetAllEnums() const = 0;
_NODISCARD virtual const std::vector<StructDefinition*>& GetAllStructs() const = 0;
_NODISCARD virtual const std::vector<UnionDefinition*>& GetAllUnions() const = 0;
_NODISCARD virtual const std::vector<TypedefDefinition*>& GetAllTypedefs() const = 0;
_NODISCARD virtual const std::vector<StructureInformation*>& GetAllStructureInformation() const = 0;
_NODISCARD virtual const std::vector<FastFileBlock*>& GetAllFastFileBlocks() const = 0;
_NODISCARD virtual DataDefinition* GetDataDefinitionByName(const std::string& name) const = 0;
_NODISCARD virtual StructureInformation* GetInformationFor(DefinitionWithMembers* definitionWithMembers) const = 0;
};