5#ifndef SAMPLE_HANDLER_SAMPLE_HANDLER_HH
6#define SAMPLE_HANDLER_SAMPLE_HANDLER_HH
20#include <boost/iterator/transform_iterator.hpp>
134 void add (std::shared_ptr<Sample> sample);
298 void save (
const std::string& directory)
const;
313 void load (
const std::string& directory);
445 const std::string& value);
463 typedef boost::transform_iterator<
512 std::span<std::shared_ptr<Sample>>
samples ();
528 std::map<std::string,std::shared_ptr<Sample>>
m_named;
void save(const std::string &directory) const
save the list of samples to the given directory
void swap(SampleHandler &a, SampleHandler &b)
standard swap
void add(const Sample &sample)
add a copy of the sample to the handler
void remove(const Sample *sample)
remove the given sample
void setMetaString(const std::string &name, const std::string &value)
set the meta-data string with the given name for all samples.
void printContent() const
print the debugging output to the screen
iterator begin() const
the begin iterator to use
void testInvariant() const
test the invariant of this object
std::size_t size() const
the number of samples contained
Sample * get(const std::string &name)
get the sample with the given name
Sample * at(std::size_t index) const
the sample with the given index
boost::transform_iterator< SamplePtrToRawSample, std::vector< std::shared_ptr< Sample > >::const_iterator > iterator
the iterator to use
SampleHandler find(const std::string &tags) const
find all samples which have at least one of the given tags.
SampleHandler()
standard constructor
bool check_complete(const SampleHandler &source) const
whether we have all samples from the source SampleHandler.
~SampleHandler()
standard destructor
SampleHandler findByName(const std::string &pattern) const
find samples by pattern on the name
Sample * findBySource(const std::string &name) const
find a sample by the name in the source sample handler
Sample * operator[](std::size_t index) const
the sample with the given index
void print() const
print the debugging output to the screen
void setMetaString(const std::string &pattern, const std::string &name, const std::string &value)
set the meta-data double with the given name for samples matching a pattern.
std::span< std::shared_ptr< Sample > > samples()
the samples accessed via smart pointer
SampleHandler & operator=(const SampleHandler &that)
standard assignment operator
void addWithPrefix(const SampleHandler &sh, const std::string &prefix)
add all samples from the given SampleHandler to this one, with prefix prepended to their name
void remove(const std::string &name)
remove the given sample
void setMetaDouble(const std::string &name, double value)
set the meta-data double with the given name for all samples.
std::vector< std::shared_ptr< Sample > > m_samples
the list of samples managed
void updateLocation(const std::string &from, const std::string &to)
update all file references starting with from to to
void setMetaDouble(const std::string &pattern, const std::string &name, double value)
set the meta-data double with the given name for samples matching a pattern.
const Sample * get(const std::string &name) const
get the sample with the given name
iterator end() const
the end iterator to use
void load(const std::string &directory)
load all the samples from the given directory
SampleHandler find(const TagList &tags) const
find all samples which have at least one of the given tags.
void add(std::shared_ptr< Sample > sample)
add a sample to the handler
std::string dbg(const SampleHandler &obj, unsigned verbosity=0)
the debugging info of this object
void fetchDefaults(const SampleHandler &source)
fetch the meta-data for all that samples that don't have it in this sample.
SampleHandler(const SampleHandler &that)
standard copy constructor
void fetch(const SampleHandler &source)
fetch the meta-data for all samples that are also in the source sample handler.
void add(const SampleHandler &sh)
add all samples from the given SampleHandler to this one
std::map< std::string, std::shared_ptr< Sample > > m_named
the list of samples by name
a base class that manages a set of files belonging to a particular data set and the associated meta-d...
A class that manages a list of tags for identifying samples.
std::vector< std::string > tags
This module provides a lot of global definitions, forward declarations and includes that are used by ...
functor mapping a shared_ptr<Sample> to the raw Sample* it points to.
Sample * operator()(const std::shared_ptr< Sample > &p) const