#include "LoggerProvider.hh" #include "MacroExt.hh" #include #include "../memories/instance_object.hpp" namespace logging { logging::LoggerProvider::LoggerProvider( std::pmr::memory_resource * mem, base::log_permit_flag global_permissions_, uint32_t on_cnt_ ) : loggers( collection::key_compare(), mem ), memory(mem), global_permissons(global_permissions_), global_on_count(on_cnt_) {} Logger * logging::LoggerProvider::get_logger(Logger::Id idx, base::log_permit_flag permissons_, std::pmr::memory_resource * allocator) { Logger * logger = nullptr; collection::iterator found = loggers.find(idx); if( found != loggers.end() ) { logger = found->second; } else { unsigned int allowed_options = ( global_permissons & permissons_ ); std::pmr::memory_resource * mr = (allocator != nullptr) ? allocator : std::pmr::get_default_resource(); logger = memories::instance_object(*mr, idx, allowed_options, global_on_count); loggers[idx] =logger; } return logger; } }