/* * ResourceHolder.cpp * * Created on: 22 нояб. 2018 г. * Author: titov */ #include "ResourceHolder.hpp" systemic::ResourceHolder::ResourceHolder( std::size_t max_size, std::pmr::memory_resource* record_allocator, std::pmr::memory_resource* record_guard_allocator, NotificationInterface & herald ) : size_limit(max_size), record_allocator(record_allocator), record_guard_allocator(record_guard_allocator ? record_guard_allocator : record_allocator), records( std::less< ResourceRecord::Info >(), std::pmr::polymorphic_allocator< ResourceRecord::Data >(record_allocator) ), herald(herald) {} void * systemic::ResourceHolder::getRecord( const std::type_info & obj_type, Id id, Tag tag ) { ResourceRecord::Info record_info(&obj_type, id, tag); ResourceRecordMap::iterator iter = records.find(record_info); if( iter != records.end() ) return iter->second; else return nullptr; }