/******************************************************************/ /* 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 #include #include #include "errorMessage.h" template std::shared_ptr nodeCache::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 void nodeCache::add(const std::string& name, const std::shared_ptr& node) { _cache[name] = node; } template std::vector> nodeCache::unusedNodes(unsigned int maxCount) const { std::vector> 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 std::vector> nodeCache::allNodes(void) const { std::vector> 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_ */