Alexandria  2.16
Please provide a description of the project.
CachedProvider.cpp
Go to the documentation of this file.
1 
25 
26 namespace Euclid {
27 namespace XYDataset {
28 
29 
31  : m_provider(provider)
32 {
33 }
34 
35 
37  auto i = m_list_cache.find(group);
38  if (i == m_list_cache.end()) {
39  auto contents = m_provider->listContents(group);
40  i = m_list_cache.insert(std::make_pair(group, contents)).first;
41  }
42  return i->second;
43 }
44 
45 
47  auto i = m_dataset.find(qualified_name);
48  if (i == m_dataset.end()) {
49  auto dataset = m_provider->getDataset(qualified_name);
50  i = m_dataset.insert(std::make_pair(qualified_name, std::move(dataset))).first;
51  }
52  if (i->second)
53  return std::unique_ptr<XYDataset>(new XYDataset(*i->second));
54  else
55  return nullptr;
56 }
57 
58 std::string CachedProvider::getParameter(const QualifiedName& qualified_name, const std::string& key_word){
59  return m_provider->getParameter(qualified_name, key_word);
60 }
61 
62 } // namespace XYDataset
63 } // 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 "group" 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