34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
/*
|
|
* 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;
|
|
|
|
}
|