#pragma once #include "Domain/Definition/EnumDefinition.h" #include "Domain/Definition/StructDefinition.h" #include "Domain/Definition/TypedefDefinition.h" #include "Domain/Definition/UnionDefinition.h" #include "Domain/Environment/Architecture.h" #include "Domain/FastFile/FastFileBlock.h" #include "Domain/Information/StructureInformation.h" #include 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; virtual void Add(std::unique_ptr enumsDefinition) = 0; virtual void Add(std::unique_ptr structDefinition) = 0; virtual void Add(std::unique_ptr unionDefinition) = 0; virtual void Add(std::unique_ptr typedefDefinition) = 0; virtual void Add(std::unique_ptr structureInformation) = 0; virtual void Add(std::unique_ptr fastFileBlock) = 0; [[nodiscard]] virtual const std::string& GetGameName() const = 0; virtual void SetGame(std::string gameName) = 0; [[nodiscard]] virtual Architecture GetArchitecture() const = 0; virtual void SetArchitecture(Architecture architecture) = 0; [[nodiscard]] virtual const std::vector& GetAllEnums() const = 0; [[nodiscard]] virtual const std::vector& GetAllStructs() const = 0; [[nodiscard]] virtual const std::vector& GetAllUnions() const = 0; [[nodiscard]] virtual const std::vector& GetAllTypedefs() const = 0; [[nodiscard]] virtual const std::vector& GetAllStructureInformation() const = 0; [[nodiscard]] virtual const std::vector& GetAllFastFileBlocks() const = 0; [[nodiscard]] virtual DataDefinition* GetDataDefinitionByName(const std::string& name) const = 0; [[nodiscard]] virtual StructureInformation* GetInformationFor(const DefinitionWithMembers* definitionWithMembers) const = 0; [[nodiscard]] virtual EnumMember* GetEnumMemberByName(const std::string& name) const = 0; [[nodiscard]] virtual const FastFileBlock* GetFastFileBlockByName(const std::string& name) const = 0; };