Alexandria  2.27.0
SDC-CH common library for the Euclid project
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CachedProvider.cpp
Go to the documentation of this file.
1 
25 
26 namespace Euclid {
27 namespace 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 
52 std::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::map< QualifiedName, std::unique_ptr< XYDataset > > m_dataset
std::unique_ptr< XYDataset > getDataset(const QualifiedName &qualified_name) override
Virtual function for getting from a qualified name the dataset of XYDataset type. ...
STL class.
std::vector< QualifiedName > listContents(const std::string &group) override
Virtual function to list all files contents in the &quot;group&quot; path.
T make_pair(T...args)
CachedProvider(std::shared_ptr< XYDatasetProvider > provider)
T move(T...args)
std::shared_ptr< XYDatasetProvider > m_provider
STL class.
STL class.
std::string getParameter(const QualifiedName &qualified_name, const std::string &key_word) override
This module provides an interface for accessing two dimensional datasets (pairs of (X...
Definition: XYDataset.h:59
std::map< std::string, std::vector< QualifiedName > > m_list_cache
Represents a name qualified with a set of groups.
Definition: QualifiedName.h:66