blob: b0ce0d50ee51ae028bc97400822c1d32c69ffc27 (
plain) (
tree)
|
|
/******************************************************************/
/* This file is part of the homework assignments for CSCI-427/527 */
/* at The College of William & Mary and authored by Pieter Peers. */
/* No part of this file, whether altered or in original form, can */
/* be distributed or used outside the context of CSCI-427/527 */
/* without consent of either the College of William & Mary or */
/* Pieter Peers. */
/******************************************************************/
#if defined(_SCENEIO_CACHE_H_) && !defined(_SCENEIO_CACHE_INLINE_H_)
#define _SCENEIO_CACHE_INLINE_H_
#include <string>
#include <memory>
#include <vector>
#include "errorMessage.h"
template<typename T>
std::shared_ptr<T> nodeCache<T>::get(const std::string& name) const
{
// see if node exists
auto ref_node = _cache.find(name);
// return nullptr if not.
if(ref_node == _cache.end()) return nullptr;
// return node.
else return ref_node->second;
}
template<typename T>
void nodeCache<T>::add(const std::string& name, const std::shared_ptr<T>& node)
{
_cache[name] = node;
}
template<typename T>
std::vector<std::shared_ptr<T>> nodeCache<T>::unusedNodes(unsigned int maxCount) const
{
std::vector<std::shared_ptr<T>> result;
// check each node if unique
for(auto itr=_cache.begin(); itr != _cache.end(); itr++)
if(itr->second.use_count() <= maxCount)
result.push_back(itr->second);
// done.
return result;
}
template<typename T>
std::vector<std::shared_ptr<T>> nodeCache<T>::allNodes(void) const
{
std::vector<std::shared_ptr<T>> result;
// check each node if unique
for(auto itr=_cache.begin(); itr != _cache.end(); itr++)
result.push_back(itr->second);
// done.
return result;
}
#endif /* _SCENEIO_CACHE_INLINE_H_ */
|