Alexandria 2.31.0
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
CachedProvider.cpp
Go to the documentation of this file.
1
25
26namespace Euclid {
27namespace XYDataset {
28
30
32 auto i = m_list_cache.find(group);
33 if (i == m_list_cache.end()) {
34 auto contents = m_provider->listContents(group);
35 i = m_list_cache.insert(std::make_pair(group, contents)).first;
36 }
37 return i->second;
38}
39
41 auto i = m_dataset.find(qualified_name);
42 if (i == m_dataset.end()) {
43 auto dataset = m_provider->getDataset(qualified_name);
44 i = m_dataset.insert(std::make_pair(qualified_name, std::move(dataset))).first;
45 }
46 if (i->second)
47 return std::unique_ptr<XYDataset>(new XYDataset(*i->second));
48 else
49 return nullptr;
50}
51
52std::string CachedProvider::getParameter(const QualifiedName& qualified_name, const std::string& key_word) {
53 return m_provider->getParameter(qualified_name, key_word);
54}
55
56} // namespace XYDataset
57} // namespace Euclid
std::string getParameter(const QualifiedName &qualified_name, const std::string &key_word) override
std::shared_ptr< XYDatasetProvider > m_provider
CachedProvider(std::shared_ptr< XYDatasetProvider > provider)
std::map< QualifiedName, std::unique_ptr< XYDataset > > m_dataset
std::vector< QualifiedName > listContents(const std::string &group) override
Virtual function to list all files contents in the "group" path.
std::unique_ptr< XYDataset > getDataset(const QualifiedName &qualified_name) override
Virtual function for getting from a qualified name the dataset of XYDataset type.
std::map< std::string, std::vector< QualifiedName > > m_list_cache
Represents a name qualified with a set of groups.
This module provides an interface for accessing two dimensional datasets (pairs of (X,...
Definition XYDataset.h:59
T insert(T... args)
T make_pair(T... args)
T move(T... args)