Utopia 2
Framework for studying models of complex & adaptive systems.
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Variables
Defaults

Provides default implementations for the datamanager's requirements. More...

Collaboration diagram for Defaults:

Namespaces

namespace  Utopia::DataIO::Default
 

Classes

struct  Utopia::DataIO::Default::DefaultExecutionProcess
 Functor representing what is considered the most widely used execution process for writing data. More...
 
struct  Utopia::DataIO::Default::Decider< Model >
 Common interface for all deciders (and triggers, for that matter). Every decider/Trigger must inherit from this, and implement its virtual functions 'bool operator()(Model&)' and 'void set_from_cfg(const Config&)'. More...
 
struct  Utopia::DataIO::Default::IntervalDecider< Model >
 A decider that returns true when within certain time intervals. More...
 
struct  Utopia::DataIO::Default::OnceDecider< Model >
 Decider which only returns true at a certain time. More...
 
struct  Utopia::DataIO::Default::AlwaysDecider< Model >
 Decider which always returns true. More...
 
struct  Utopia::DataIO::Default::CompositeDecider< Model, Deciders >
 Combines a number of deciders; returns true if any of them is true. More...
 

Typedefs

using Utopia::DataIO::Default::DefaultBaseGroupBuilder = std::function< std::shared_ptr< HDFGroup >(std::shared_ptr< HDFGroup > &&) >
 Type of the default group builder.
 
template<typename Model >
using Utopia::DataIO::Default::DefaultDataWriter = std::function< void(std::shared_ptr< HDFDataset > &, Model &) >
 Type of the default data writer.
 
template<typename Model >
using Utopia::DataIO::Default::DefaultBuilder = std::function< std::shared_ptr< HDFDataset >(std::shared_ptr< HDFGroup > &, Model &) >
 Type of the default dataset builder.
 
template<typename Model >
using Utopia::DataIO::Default::DefaultAttributeWriterGroup = std::function< void(std::shared_ptr< HDFGroup > &, Model &) >
 Type of the default attribute writer for groups.
 
template<typename Model >
using Utopia::DataIO::Default::DefaultAttributeWriterDataset = std::function< void(std::shared_ptr< HDFDataset > &, Model &) >
 Type of the default attribute writer for datasets.
 
template<typename Model >
using Utopia::DataIO::Default::DefaultWriteTask = WriteTask< DefaultBaseGroupBuilder, DefaultDataWriter< Model >, DefaultBuilder< Model >, DefaultAttributeWriterGroup< Model >, DefaultAttributeWriterDataset< Model > >
 A default WriteTask definition.
 
template<typename Model >
using Utopia::DataIO::Default::DefaultDecidermap = std::unordered_map< std::string, std::function< std::shared_ptr< Decider< Model > >() > >
 
template<typename Model >
using Utopia::DataIO::Default::Trigger = Decider< Model >
 
template<typename Model >
using Utopia::DataIO::Default::IntervalTrigger = IntervalDecider< Model >
 
template<typename Model >
using Utopia::DataIO::Default::BuildOnceTrigger = OnceDecider< Model >
 
template<typename Model >
using Utopia::DataIO::Default::BuildAlwaysTrigger = AlwaysDecider< Model >
 
template<typename Model , typename... Deciders>
using Utopia::DataIO::Default::CompositeTrigger = CompositeDecider< Model, Deciders... >
 
template<typename Model >
using Utopia::DataIO::Default::DefaultTriggermap = DefaultDecidermap< Model >
 

Variables

template<typename Model >
static DefaultDecidermap< ModelUtopia::DataIO::Default::default_deciders
 Map that names the deciders supplied by default such that they can be addressed in a config file.
 
template<typename Model >
static DefaultTriggermap< ModelUtopia::DataIO::Default::default_triggers = default_deciders< Model >
 Default trigger factories. Equal to deciders because while the task they fullfill is different, their functionality is not.
 

Detailed Description

Provides default implementations for the datamanager's requirements.

// endgroup DataManager

Here, default implementations for common deciders, triggers and write tasks for the ::DataManager are defined, as well as a default execution process which is to run the actual writer tasks.

Typedef Documentation

◆ BuildAlwaysTrigger

◆ BuildOnceTrigger

◆ CompositeTrigger

template<typename Model , typename... Deciders>
using Utopia::DataIO::Default::CompositeTrigger = typedef CompositeDecider< Model, Deciders... >

◆ DefaultAttributeWriterDataset

Type of the default attribute writer for datasets.

◆ DefaultAttributeWriterGroup

Type of the default attribute writer for groups.

◆ DefaultBaseGroupBuilder

using Utopia::DataIO::Default::DefaultBaseGroupBuilder = typedef std::function< std::shared_ptr< HDFGroup >(std::shared_ptr< HDFGroup >&&) >

Type of the default group builder.

◆ DefaultBuilder

template<typename Model >
using Utopia::DataIO::Default::DefaultBuilder = typedef std::function< std::shared_ptr< HDFDataset >( std::shared_ptr< HDFGroup >&, Model&) >

Type of the default dataset builder.

◆ DefaultDataWriter

template<typename Model >
using Utopia::DataIO::Default::DefaultDataWriter = typedef std::function< void(std::shared_ptr< HDFDataset >&, Model&) >

Type of the default data writer.

◆ DefaultDecidermap

template<typename Model >
using Utopia::DataIO::Default::DefaultDecidermap = typedef std::unordered_map< std::string, std::function< std::shared_ptr< Decider< Model > >() > >

◆ DefaultTriggermap

◆ DefaultWriteTask

A default WriteTask definition.

This uses the other Default-prefixed builders and writers from this namespace.

Template Parameters
ModelThe type of the model that is made available to each callable

◆ IntervalTrigger

◆ Trigger

The function to decide whether a writer's builder will be triggered - default signature These are only aliases for the deciders to avoid copy pasta. Keep this in mind if messing with types!

Variable Documentation

◆ default_deciders

template<typename Model >
DefaultDecidermap<Model> Utopia::DataIO::Default::default_deciders
static
Initial value:
{
{ std::string("always"),
[]() { return std::make_shared< AlwaysDecider< Model > >(); } },
{ std::string("once"),
[]() { return std::make_shared< OnceDecider< Model > >(); } },
{ std::string("interval"),
[]() { return std::make_shared< IntervalDecider< Model > >(); } }
}

Map that names the deciders supplied by default such that they can be addressed in a config file.

This map does not provide decider objects or pointers to them in itself, but functions which create shared_pointers to a particular decider function. This is made such that we can use dynamic polymorphism and do not have to resort to tuples.

Template Parameters
ModelA model type for which the deciders shall be employed.
420 {
421 { std::string("always"),
422 []() { return std::make_shared< AlwaysDecider< Model > >(); } },
423 { std::string("once"),
424 []() { return std::make_shared< OnceDecider< Model > >(); } },
425 { std::string("interval"),
426 []() { return std::make_shared< IntervalDecider< Model > >(); } }
427};

◆ default_triggers

template<typename Model >
DefaultTriggermap<Model> Utopia::DataIO::Default::default_triggers = default_deciders< Model >
static

Default trigger factories. Equal to deciders because while the task they fullfill is different, their functionality is not.

Template Parameters
ModelModeltype the triggers shall be used with