From 75bd0bf441c903784a44b4e3d20fe83519057112 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Wed, 11 Feb 2026 12:03:15 +0100 Subject: [PATCH] AssetContainer concept --- .../Include/Engine/BigFile/Asset/Asset.hpp | 4 +-- .../Engine/BigFile/Asset/AssetContainer.hpp | 32 +++++++++++++++++ .../EngineTests/BigFile/Asset/AssetA.hpp | 36 +++++++++++++++++++ 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/AssetContainer.hpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/BigFile/Asset/AssetA.hpp diff --git a/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/Asset.hpp b/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/Asset.hpp index 41dd8f5..e547421 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/Asset.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/Asset.hpp @@ -17,8 +17,8 @@ namespace Bigfoot { template concept FlatAssetConcept = requires(FLAT_ASSET p_flatAsset) { - requires std::is_base_of_v<::flatbuffers::Table, FLAT_ASSET>; - requires std::derived_from; + requires std::is_base_of_v<::flatbuffers::Table, FLAT_ASSET> && + std::derived_from; { FLAT_ASSET::GetFullyQualifiedName() } -> std::convertible_to; { p_flatAsset.asset_header() } -> std::same_as; diff --git a/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/AssetContainer.hpp b/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/AssetContainer.hpp new file mode 100644 index 0000000..039479d --- /dev/null +++ b/Bigfoot/Sources/Engine/Include/Engine/BigFile/Asset/AssetContainer.hpp @@ -0,0 +1,32 @@ +/********************************************************************* + * \file AssetContainer.hpp + * + * \author Romain BOULLARD + * \date February 2026 + *********************************************************************/ +#ifndef BIGFOOT_ENGINE_ASSETCONTAINER_HPP +#define BIGFOOT_ENGINE_ASSETCONTAINER_HPP +#include + +#include + +#include + +namespace Bigfoot +{ +template +concept BigfootAssetConcept = requires(ASSET p_asset) { + requires FlatAssetConcept && + std::constructible_from>; +}; + +template +class AssetContainer +{ + public: + + private: +}; +} // namespace Bigfoot + +#endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/BigFile/Asset/AssetA.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/BigFile/Asset/AssetA.hpp new file mode 100644 index 0000000..3be16c3 --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/BigFile/Asset/AssetA.hpp @@ -0,0 +1,36 @@ +/********************************************************************* + * \file AssetA.hpp + * + * \author Romain BOULLARD + * \date February 2026 + *********************************************************************/ +#ifndef BIGFOOT_ENGINETESTS_ASSETA_HPP +#define BIGFOOT_ENGINETESTS_ASSETA_HPP +#include + +#include + +namespace Bigfoot +{ +class AssetA +{ + public: + using FLAT_ASSET = Flat::AssetA; + + AssetA(const FlatAssetWrapper& p_flatAsset); + + AssetA(const AssetA& p_assetA) = default; + AssetA(AssetA&& p_assetA) = default; + + ~AssetA() = default; + + AssetA& operator=(const AssetA& p_assetA) = default; + AssetA& operator=(AssetA&& p_assetA) = default; + + private: +}; + +using AssetAContainer = AssetContainer; +} // namespace Bigfoot + +#endif