31 #ifndef DATAFLOW_NETWORK_MODULE_STATE_INTERFACE_H
32 #define DATAFLOW_NETWORK_MODULE_STATE_INTERFACE_H
36 #include <boost/signals2/signal.hpp>
37 #include <boost/optional.hpp>
38 #include <boost/any.hpp>
39 #include <boost/atomic.hpp>
53 typedef std::vector<SCIRun::Core::Algorithms::AlgorithmParameterName>
Keys;
60 virtual bool containsKey(
const Name&
name)
const = 0;
61 virtual Keys getKeys()
const = 0;
68 virtual void setTransientValue(
const std::string&
name,
const TransientValue& value,
bool fireSignal) = 0;
69 virtual void fireTransientStateChangeSignal() = 0;
73 virtual boost::signals2::connection connect_state_changed(state_changed_sig_t::slot_function_type subscriber) = 0;
89 return boost::any_cast<T>(x);
91 catch (boost::bad_any_cast&)
102 return x ? any_cast_or_default_<T>(*x) : T();
111 void resetStateChanged();
112 bool newStatePresent()
const;
114 boost::atomic<bool> stateChanged_;
Definition: AlgorithmBase.h:52
Definition: ModuleStateInterface.h:105
boost::variant< int, double, std::string, bool, AlgoOption, std::vector< Variable > > Value
Definition: AlgorithmBase.h:99
boost::shared_ptr< ModuleStateInterface > ModuleStateHandle
Definition: NetworkFwd.h:75
#define SCISHARE
Definition: share.h:39
SCIRun::Core::Algorithms::AlgorithmParameter Value
Definition: ModuleStateInterface.h:55
const char * name[]
Definition: BoostGraphExampleTests.cc:87
boost::any TransientValue
Definition: ModuleStateInterface.h:65
T optional_any_cast_or_default(const boost::optional< boost::any > &x)
Definition: ModuleStateInterface.h:100
boost::signals2::signal< void()> state_changed_sig_t
Definition: ModuleStateInterface.h:71
std::vector< SCIRun::Core::Algorithms::AlgorithmParameterName > Keys
Definition: ModuleStateInterface.h:53
Definition: ModuleStateInterface.h:76
Definition: ModuleStateInterface.h:48
Definition: AlgorithmBase.h:88
T any_cast_or_default_(const boost::any &x)
Definition: ModuleStateInterface.h:85
boost::optional< TransientValue > TransientValueOption
Definition: ModuleStateInterface.h:66
SCIRun::Core::Algorithms::AlgorithmParameterName Name
Definition: ModuleStateInterface.h:54