Unravel Engine C++ Reference
Loading...
Searching...
No Matches
unravel::asset_storage< T > Struct Template Reference

Manages storage and loading of assets of a specific type. More...

#include <asset_storage.h>

Inheritance diagram for unravel::asset_storage< T >:
unravel::basic_storage

Public Types

using request_container_t = std::unordered_map<std::string, asset_handle<T>>
 Container for asset requests.
 
template<typename F >
using callable = std::function<F>
 Type alias for callable functions.
 
using load_from_file_t = callable<bool(tpp::thread_pool& pool, asset_handle<T>&, const std::string&)>
 Function type for loading from file.
 
using predicate_t = callable<bool(const asset_handle<T>&)>
 Function type for loading from instance. Predicate function type.
 
using load_from_instance_t = callable<bool(tpp::thread_pool& pool, asset_handle<T>&, std::shared_ptr<T>)>
 

Public Member Functions

 ~asset_storage () override=default
 
void unload_handle (tpp::thread_pool &pool, asset_handle< T > &handle)
 Unloads a handle.
 
void unload_with_condition (tpp::thread_pool &pool, const predicate_t &predicate)
 Unloads assets that satisfy a condition.
 
void unload_all (tpp::thread_pool &pool) final
 Unloads all assets.
 
void unload_group (tpp::thread_pool &pool, const std::string &group) final
 Unloads all assets in a specified group.
 
void unload_single (tpp::thread_pool &pool, const std::string &key) final
 Unloads a single asset by its key.
 
auto get_with_condition (const predicate_t &predicate) const -> std::vector< asset_handle< T > >
 Gets assets that satisfy a condition.
 
auto get_group (const std::string &group) const -> std::vector< asset_handle< T > >
 Gets all assets in a specified group.
 
- Public Member Functions inherited from unravel::basic_storage
virtual ~basic_storage ()=default
 

Public Attributes

load_from_file_t load_from_file
 Function for loading assets from file.
 
load_from_instance_t load_from_instance
 Function for loading assets from instance.
 
request_container_t container
 Container for asset requests.
 
std::recursive_mutex container_mutex
 Mutex for container operations.
 

Detailed Description

template<typename T>
struct unravel::asset_storage< T >

Manages storage and loading of assets of a specific type.

Template Parameters
TThe type of the assets.

Definition at line 353 of file asset_storage.h.

Member Typedef Documentation

◆ callable

template<typename T >
template<typename F >
using unravel::asset_storage< T >::callable = std::function<F>

Type alias for callable functions.

Definition at line 359 of file asset_storage.h.

◆ load_from_file_t

template<typename T >
using unravel::asset_storage< T >::load_from_file_t = callable<bool(tpp::thread_pool& pool, asset_handle<T>&, const std::string&)>

Function type for loading from file.

Definition at line 362 of file asset_storage.h.

◆ load_from_instance_t

template<typename T >
using unravel::asset_storage< T >::load_from_instance_t = callable<bool(tpp::thread_pool& pool, asset_handle<T>&, std::shared_ptr<T>)>

Definition at line 366 of file asset_storage.h.

◆ predicate_t

template<typename T >
using unravel::asset_storage< T >::predicate_t = callable<bool(const asset_handle<T>&)>

Function type for loading from instance. Predicate function type.

Definition at line 365 of file asset_storage.h.

◆ request_container_t

template<typename T >
using unravel::asset_storage< T >::request_container_t = std::unordered_map<std::string, asset_handle<T>>

Container for asset requests.

Definition at line 356 of file asset_storage.h.

Constructor & Destructor Documentation

◆ ~asset_storage()

template<typename T >
unravel::asset_storage< T >::~asset_storage ( )
overridedefault

Member Function Documentation

◆ get_group()

template<typename T >
auto unravel::asset_storage< T >::get_group ( const std::string & group) const -> std::vector<asset_handle<T>>
inline

Gets all assets in a specified group.

Parameters
groupThe group to get assets from.
Returns
A vector of asset handles in the group.

Definition at line 476 of file asset_storage.h.

◆ get_with_condition()

template<typename T >
auto unravel::asset_storage< T >::get_with_condition ( const predicate_t & predicate) const -> std::vector<asset_handle<T>>
inline

Gets assets that satisfy a condition.

Parameters
predicateThe predicate function to determine which assets to get.
Returns
A vector of asset handles that satisfy the condition.

Definition at line 453 of file asset_storage.h.

◆ unload_all()

template<typename T >
void unravel::asset_storage< T >::unload_all ( tpp::thread_pool & pool)
inlinefinalvirtual

Unloads all assets.

Parameters
poolThe thread pool for unloading tasks.

Implements unravel::basic_storage.

Definition at line 408 of file asset_storage.h.

◆ unload_group()

template<typename T >
void unravel::asset_storage< T >::unload_group ( tpp::thread_pool & pool,
const std::string & group )
inlinefinalvirtual

Unloads all assets in a specified group.

Parameters
poolThe thread pool for unloading tasks.
groupThe group to unload.

Implements unravel::basic_storage.

Definition at line 422 of file asset_storage.h.

◆ unload_handle()

template<typename T >
void unravel::asset_storage< T >::unload_handle ( tpp::thread_pool & pool,
asset_handle< T > & handle )
inline

Unloads a handle.

Parameters
poolThe thread pool for unloading tasks.
handleThe handle to unload.

Definition at line 375 of file asset_storage.h.

◆ unload_single()

template<typename T >
void unravel::asset_storage< T >::unload_single ( tpp::thread_pool & pool,
const std::string & key )
inlinefinalvirtual

Unloads a single asset by its key.

Parameters
poolThe thread pool for unloading tasks.
keyThe key of the asset to unload.

Implements unravel::basic_storage.

Definition at line 438 of file asset_storage.h.

◆ unload_with_condition()

template<typename T >
void unravel::asset_storage< T >::unload_with_condition ( tpp::thread_pool & pool,
const predicate_t & predicate )
inline

Unloads assets that satisfy a condition.

Parameters
poolThe thread pool for unloading tasks.
predicateThe predicate function to determine which assets to unload.

Definition at line 386 of file asset_storage.h.

Member Data Documentation

◆ container

template<typename T >
request_container_t unravel::asset_storage< T >::container

Container for asset requests.

Definition at line 492 of file asset_storage.h.

◆ container_mutex

template<typename T >
std::recursive_mutex unravel::asset_storage< T >::container_mutex
mutable

Mutex for container operations.

Definition at line 494 of file asset_storage.h.

◆ load_from_file

template<typename T >
load_from_file_t unravel::asset_storage< T >::load_from_file

Function for loading assets from file.

Definition at line 488 of file asset_storage.h.

◆ load_from_instance

template<typename T >
load_from_instance_t unravel::asset_storage< T >::load_from_instance

Function for loading assets from instance.

Definition at line 490 of file asset_storage.h.


The documentation for this struct was generated from the following file: