Empirical
Classes | Namespaces | Typedefs | Enumerations
DataNode.h File Reference

DataNode objects track a specific type of data over the course of a run. More...

#include "../base/vector.h"
#include "../base/assert.h"
#include "../meta/IntPack.h"
#include "../tools/FunctionSet.h"
#include "../tools/IndexMap.h"
#include "../tools/string_utils.h"
#include "../tools/math.h"

Go to the source code of this file.

Classes

struct  emp::DataModInfo< MOD >
 
struct  emp::DataModInfo< data::Archive >
 
struct  emp::DataModInfo< data::FullRange >
 
struct  emp::DataModInfo< data::Stats >
 
struct  emp::DataModuleRequisiteAdd< MODS >
 
struct  emp::DataModuleRequisiteAdd<>
 
struct  emp::DataModuleRequisiteAdd< CUR_MOD, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, MODS >
 Generic form of DataNodeModule (should never be used; trigger error!) More...
 
class  emp::DataNodeModule< VAL_TYPE >
 Base form of DataNodeModule (available in ALL data nodes.) More...
 
class  emp::DataNodeModule< VAL_TYPE, data::Current, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Info, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Log, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Archive, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Range, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::FullRange, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Stats, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Histogram, MODS... >
 
class  emp::DataNodeModule< VAL_TYPE, data::Pull, MODS... >
 
class  emp::DataNode_Interface< VAL_TYPE, MOD_PACK >
 
class  emp::DataNode_Interface< VAL_TYPE, IntPack< IMODS... > >
 Outermost interface to all DataNode modules. More...
 
struct  emp::FormatDataMods< MODS >
 
class  emp::DataNode< VAL_TYPE, MODS >
 

Namespaces

 emp
 If we are in emscripten, make sure to include the header.
 

Typedefs

template<emp::data... MODS>
using emp::ModPack = emp::IntPack<(int) MODS... >
 A shortcut for converting DataNode mod ID's to IntPacks. More...
 
template<typename T , emp::data... MODS>
using emp::DataMonitor = DataNode< T, data::Current, data::Info, data::Range, data::Stats, MODS... >
 
template<typename T , emp::data... MODS>
using emp::DataLog = DataNode< T, data::Current, data::Info, data::Log, MODS... >
 
template<typename T , emp::data... MODS>
using emp::DataArchive = DataNode< T, data::Info, data::Archive, data::FullRange, MODS... >
 

Enumerations

enum  emp::data {
  emp::data::Current, emp::data::Info, emp::data::Log, emp::data::Archive,
  emp::data::Range, emp::data::FullRange, emp::data::Histogram, emp::data::Stats,
  emp::data::Pull, emp::data::SignalReset, emp::data::SignalData, emp::data::SignalDatum,
  emp::data::SignalRange, emp::data::SignalLimits, emp::data::UNKNOWN
}
 A set of modifiers are available do describe DataNode. More...
 

Detailed Description

DataNode objects track a specific type of data over the course of a run.

Note
This file is part of Empirical, https://github.com/devosoft/Empirical
Date
2016-2018

Collection: New data can be pushed or pulled. Add(VAL... v) pushes data to a node AddDatum(VAL v) pushes just one datum, but can be used as an action for a signal.

Process: What should happen on Reset() ?

Todo:
: The Archive data node should have Log as a requiste and then copy the current vals into the archive on reset. This change will also make it so that the size of the archive correctly reflects the number of resets.