7#include <unordered_map>
11template <
class ResourceT,
class... Args>
14 return load( r, args... );
28template <
class ResourceT>
33 std::shared_ptr<ResourceT>
get(
const std::string& name )
35 auto it =
cache.find( name );
36 return it !=
cache.end() ? it->second :
nullptr;
40 template <
class... Args>
41 std::shared_ptr<ResourceT>
load(
const std::string& name, Args... args )
43 auto rPtr = std::make_shared<ResourceT>();
45 cache[name] = std::move( rPtr );
64 std::vector<std::string> names;
65 names.reserve(
cache.size() );
66 for (
auto& el :
cache ) {
67 names.push_back( el.first );
72 std::unordered_map<std::string, std::shared_ptr<ResourceT>>
cache;
resource cache class, represents a container for a resource type organized by name (string)
Definition: resource.h:30
std::unordered_map< std::string, std::shared_ptr< ResourceT > > cache
Definition: resource.h:72
std::shared_ptr< ResourceT > get(const std::string &name)
Definition: resource.h:33
std::shared_ptr< ResourceT > load(const std::string &name, Args... args)
Definition: resource.h:41
std::vector< std::string > getNames()
Definition: resource.h:62
bool loadResource(ResourceT &r, Args... args)
Definition: resource.h:12