diff options
Diffstat (limited to 'loader/atlas-loader.hpp')
-rw-r--r-- | loader/atlas-loader.hpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/loader/atlas-loader.hpp b/loader/atlas-loader.hpp new file mode 100644 index 00000000..9fa82e49 --- /dev/null +++ b/loader/atlas-loader.hpp @@ -0,0 +1,32 @@ +#pragma once +#include "compat/defs.hpp" +#include "atlas-loader-fwd.hpp" +#include "policy.hpp" +#include <memory> + +namespace floormat::loader_detail { + +template<typename ATLAS, typename TRAITS> +class atlas_loader final +{ + [[fm_no_unique_address]] TRAITS t; + atlas_storage<ATLAS, TRAITS> s; + +public: + using Traits = TRAITS; + using Atlas = ATLAS; + using Cell = typename TRAITS::Cell; + + ~atlas_loader() noexcept = default; + fm_DECLARE_DELETED_COPY_ASSIGNMENT(atlas_loader); + fm_DECLARE_DELETED_MOVE_ASSIGNMENT(atlas_loader); + + atlas_loader(TRAITS&& traits); + atlas_loader() requires std::is_default_constructible_v<TRAITS>; + + ArrayView<const Cell> ensure_atlas_list(); + const std::shared_ptr<Atlas>& get_atlas(StringView name, loader_policy p); + const Cell& get_invalid_atlas(); +}; + +} // namespace floormat::loader_detail |