30 #ifndef DATAFLOW_NETWORK_MODULE_H
31 #define DATAFLOW_NETWORK_MODULE_H
33 #include <boost/noncopyable.hpp>
34 #include <boost/static_assert.hpp>
35 #include <boost/lexical_cast.hpp>
36 #include <boost/atomic.hpp>
60 const std::string& version =
"1.0");
73 static void resetInstanceCount();
75 bool has_ui()
const {
return has_ui_; }
76 void setUiVisible(
bool visible);
77 virtual size_t num_input_ports()
const;
78 virtual size_t num_output_ports()
const;
80 virtual bool hasInputPort(
const PortId&
id)
const;
81 virtual bool hasOutputPort(
const PortId&
id)
const;
84 virtual std::vector<InputPortHandle> findInputPortsWithName(
const std::string&
name)
const;
85 virtual std::vector<OutputPortHandle> findOutputPortsWithName(
const std::string&
name)
const;
86 virtual std::vector<InputPortHandle> inputPorts()
const;
87 virtual std::vector<OutputPortHandle> outputPorts()
const;
90 virtual void do_execute() throw();
95 virtual ExecutionState executionState() const;
96 virtual
void setExecutionState(ExecutionState state);
104 virtual
void setLogger(SCIRun::Core::Logging::
LoggerHandle log);
105 virtual SCIRun::Core::Logging::
LoggerHandle getLogger() const;
106 virtual
void error(const std::
string&
msg)
const { errorSignal_(id_); getLogger()->error(msg); }
107 virtual void warning(
const std::string&
msg)
const { getLogger()->warning(msg); }
108 virtual void remark(
const std::string&
msg)
const { getLogger()->remark(msg); }
109 virtual void status(
const std::string&
msg)
const { getLogger()->status(msg); }
115 virtual boost::signals2::connection connectExecuteBegins(
const ExecuteBeginsSignalType::slot_type& subscriber);
116 virtual boost::signals2::connection connectExecuteEnds(
const ExecuteEndsSignalType::slot_type& subscriber);
117 virtual boost::signals2::connection connectErrorListener(
const ErrorSignalType::slot_type& subscriber);
119 virtual void addPortConnection(
const boost::signals2::connection& con)
override;
123 virtual bool needToExecute()
const;
130 bool oport_connected(
const PortId&
id)
const;
132 template <
class Type,
size_t N>
145 if (id_.name.empty())
149 operator std::string()
const
157 template <
class Type,
size_t N>
163 template <
class Type,
size_t N>
170 template <
class T,
size_t N>
171 boost::shared_ptr<T> getRequiredInput(
const StaticPortName<T,N>& port);
173 template <
class T,
size_t N>
174 boost::optional<boost::shared_ptr<T>> getOptionalInput(
const StaticPortName<T,N>& port);
176 template <
class T,
size_t N>
177 std::vector<boost::shared_ptr<T>> getRequiredDynamicInputs(
const DynamicPortName<T,N>& port);
179 template <
class T,
size_t N>
180 std::vector<boost::shared_ptr<T>> getOptionalDynamicInputs(
const DynamicPortName<T,N>& port);
182 template <
class T,
class D,
size_t N>
183 void sendOutput(
const StaticPortName<T,N>& port, boost::shared_ptr<D>
data);
185 template <
class T,
size_t N>
203 typedef boost::function<SCIRun::Dataflow::Networks::DatatypeSinkInterface*()>
SinkMaker;
204 typedef boost::function<SCIRun::Dataflow::Networks::DatatypeSourceInterface*()>
SourceMaker;
205 static void use_sink_type(
SinkMaker func);
209 boost::shared_ptr<Module> module_;
244 virtual void removeInputPort(
const PortId&
id);
248 boost::shared_ptr<T> getRequiredInputAtIndex(
const PortId&
id);
250 boost::optional<boost::shared_ptr<T>> getOptionalInputAtIndex(
const PortId&
id);
254 boost::atomic<bool> inputsChanged_;
255 bool inputsChanged()
const;
270 boost::atomic<ExecutionState> executionState_;
271 std::vector<boost::shared_ptr<boost::signals2::scoped_connection>> portConnections_;
276 static int instanceCount_;
281 boost::shared_ptr<T> Module::getRequiredInputAtIndex(
const PortId&
id)
283 auto inputOpt = get_input_handle(
id);
287 return checkInput<T>(inputOpt, id);
290 template <
class T,
size_t N>
293 return getRequiredInputAtIndex<T>(port.
toId());
297 boost::optional<boost::shared_ptr<T>> Module::getOptionalInputAtIndex(
const PortId&
id)
299 auto inputOpt = get_input_handle(
id);
301 return boost::optional<boost::shared_ptr<T>>();
303 return checkInput<T>(inputOpt, id);
306 template <
class T,
size_t N>
309 auto handleOptions = get_dynamic_input_handles(port.
id_);
310 std::vector<boost::shared_ptr<T>> handles;
312 auto end = handleOptions.end() - 1;
313 std::transform(handleOptions.begin(), end, std::back_inserter(handles), check);
319 template <
class T,
size_t N>
322 auto handleOptions = get_dynamic_input_handles(port.
id_);
323 std::vector<boost::shared_ptr<T>> handles;
325 auto end = handleOptions.end() - 1;
326 std::transform(handleOptions.begin(), end, std::back_inserter(handles), check);
330 template <
class T,
size_t N>
333 return getOptionalInputAtIndex<T>(port.
id_);
336 template <
class T,
class D,
size_t N>
339 const bool datatypeForThisPortMustBeCompatible = boost::is_base_of<T,D>::value;
340 BOOST_STATIC_ASSERT(datatypeForThisPortMustBeCompatible);
341 send_output_handle(port.
id_, data);
344 template <
class T,
size_t N>
356 boost::shared_ptr<T>
data = boost::dynamic_pointer_cast<T>(*inputOpt);
359 std::ostringstream ostr;
360 ostr <<
"Wrong datatype on port #" <<
id.name <<
"; expected " <<
typeid(T).
name() <<
" but received " <<
typeid(*inputOpt).name();
371 virtual void execute()
override;
373 virtual void portRemovedSlot(
const ModuleId& mid,
const PortId& pid)
override;
375 virtual void portRemovedSlotImpl(
const PortId& pid) = 0;
378 bool asyncConnected_;
396 template <
typename Base>
402 template <
typename Base>
424 template <
class PortTypeTag>
428 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name);
431 template <
class PortTypeTag0,
class PortTypeTag1>
435 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name,
const std::string& port1Name)
444 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2>
448 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name)
456 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3>
460 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name)
468 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4>
472 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name)
480 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4,
class PortTypeTag5>
484 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name,
const std::string& port5Name)
492 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4,
class PortTypeTag5,
class PortTypeTag6>
496 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name,
const std::string& port5Name,
const std::string& port6Name)
498 auto ports =
Has6InputPorts<PortTypeTag0, PortTypeTag1, PortTypeTag2, PortTypeTag3, PortTypeTag4, PortTypeTag5>::inputPortDescription(port0Name, port1Name, port2Name, port3Name, port4Name, port5Name);
504 template <
class PortTypeTag>
508 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name);
511 template <
class PortTypeTag0,
class PortTypeTag1>
515 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name)
524 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2>
528 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name)
536 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3>
540 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name)
548 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4>
552 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name)
560 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4,
class PortTypeTag5>
564 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name,
const std::string& port5Name)
572 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4,
class PortTypeTag5,
class PortTypeTag6>
576 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name,
const std::string& port5Name,
const std::string& port6Name)
578 auto ports =
Has6OutputPorts<PortTypeTag0, PortTypeTag1, PortTypeTag2, PortTypeTag3, PortTypeTag4, PortTypeTag5>::outputPortDescription(port0Name, port1Name, port2Name, port3Name, port4Name, port5Name);
584 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4,
class PortTypeTag5,
class PortTypeTag6,
class PortTypeTag7>
588 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name,
const std::string& port5Name,
const std::string& port6Name,
const std::string& port7Name)
590 auto ports =
Has7OutputPorts<PortTypeTag0, PortTypeTag1, PortTypeTag2, PortTypeTag3, PortTypeTag4, PortTypeTag5, PortTypeTag6>::outputPortDescription(port0Name, port1Name, port2Name, port3Name, port4Name, port5Name, port6Name);
596 template <
class PortTypeTag0,
class PortTypeTag1,
class PortTypeTag2,
class PortTypeTag3,
class PortTypeTag4,
class PortTypeTag5,
class PortTypeTag6,
class PortTypeTag7,
class PortTypeTag8>
600 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputPortDescription(
const std::string& port0Name,
const std::string& port1Name,
const std::string& port2Name,
const std::string& port3Name,
const std::string& port4Name,
const std::string& port5Name,
const std::string& port6Name,
const std::string& port7Name,
const std::string& port8Name)
602 auto ports =
Has8OutputPorts<PortTypeTag0, PortTypeTag1, PortTypeTag2, PortTypeTag3, PortTypeTag4, PortTypeTag5, PortTypeTag6, PortTypeTag7>::outputPortDescription(port0Name, port1Name, port2Name, port3Name, port4Name, port5Name, port6Name, port7Name);
608 #define PORT_SPEC(type) template <>\
609 class Has1InputPort<type ##PortTag> : public NumInputPorts<1>\
612 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription> inputPortDescription(const std::string& port0Name)\
614 std::vector<SCIRun::Dataflow::Networks::InputPortDescription> ports;\
615 ports.push_back(SCIRun::Dataflow::Networks::PortDescription(SCIRun::Dataflow::Networks::PortId(0, port0Name), #type, false)); \
620 class Has1OutputPort<type ##PortTag> : public NumOutputPorts<1>\
623 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription> outputPortDescription(const std::string& port0Name)\
625 std::vector<SCIRun::Dataflow::Networks::OutputPortDescription> ports;\
626 ports.push_back(SCIRun::Dataflow::Networks::PortDescription(SCIRun::Dataflow::Networks::PortId(0, port0Name), #type, false)); \
631 class Has1InputPort<DynamicPortTag<type ## PortTag>> : public NumInputPorts<1>\
634 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription> inputPortDescription(const std::string& port0Name)\
636 std::vector<SCIRun::Dataflow::Networks::InputPortDescription> ports;\
637 ports.push_back(SCIRun::Dataflow::Networks::PortDescription(SCIRun::Dataflow::Networks::PortId(0, port0Name), #type, true)); \
642 class Has1InputPort<AsyncDynamicPortTag<type ## PortTag>> : public NumInputPorts<1>\
645 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription> inputPortDescription(const std::string& port0Name)\
647 std::vector<SCIRun::Dataflow::Networks::InputPortDescription> ports;\
648 ports.push_back(SCIRun::Dataflow::Networks::PortDescription(SCIRun::Dataflow::Networks::PortId(0, port0Name), #type, true)); \
662 #define ATTACH_NAMESPACE(type) Core::Datatypes::type
663 #define ATTACH_NAMESPACE2(type) SCIRun::Core::Datatypes::type
665 #define INPUT_PORT(index, name, type) static std::string inputPort ## index ## Name() { return #name; } \
666 StaticPortName< ATTACH_NAMESPACE(type), index > name;
668 #define INPUT_PORT_DYNAMIC(index, name, type) static std::string inputPort ## index ## Name() { return #name; } \
669 DynamicPortName< ATTACH_NAMESPACE(type), index > name;
671 #define OUTPUT_PORT(index, name, type) static std::string outputPort ## index ## Name() { return #name; } \
672 StaticPortName< ATTACH_NAMESPACE(type), index> name;
674 #define INITIALIZE_PORT(nameObj) do{ nameObj.id_.name = #nameObj; }while(0);
678 template <
size_t numPorts,
class ModuleType>
681 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
683 return std::vector<SCIRun::Dataflow::Networks::InputPortDescription>();
687 template <
class ModuleType>
690 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
692 return ModuleType::inputPortDescription(ModuleType::inputPort0Name());
696 template <
class ModuleType>
699 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
701 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name());
705 template <
class ModuleType>
708 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
710 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name());
714 template <
class ModuleType>
717 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
719 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name(), ModuleType::inputPort3Name());
723 template <
class ModuleType>
726 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
728 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name(), ModuleType::inputPort3Name(), ModuleType::inputPort4Name());
732 template <
class ModuleType>
735 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
737 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name(), ModuleType::inputPort3Name(), ModuleType::inputPort4Name(), ModuleType::inputPort5Name());
741 template <
class ModuleType>
744 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
746 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name(), ModuleType::inputPort3Name(), ModuleType::inputPort4Name(), ModuleType::inputPort5Name(), ModuleType::inputPort6Name());
750 template <
class ModuleType>
753 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
755 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name(), ModuleType::inputPort3Name(), ModuleType::inputPort4Name(), ModuleType::inputPort5Name(), ModuleType::inputPort6Name(), ModuleType::inputPort7Name());
759 template <
class ModuleType>
762 static std::vector<SCIRun::Dataflow::Networks::InputPortDescription>
inputs()
764 return ModuleType::inputPortDescription(ModuleType::inputPort0Name(), ModuleType::inputPort1Name(), ModuleType::inputPort2Name(), ModuleType::inputPort3Name(), ModuleType::inputPort4Name(), ModuleType::inputPort5Name(), ModuleType::inputPort6Name(), ModuleType::inputPort7Name(), ModuleType::inputPort8Name());
768 template <
size_t numPorts,
class ModuleType>
771 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
773 return std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>();
777 template <
class ModuleType>
780 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
782 return ModuleType::outputPortDescription(ModuleType::outputPort0Name());
786 template <
class ModuleType>
789 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
791 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name());
795 template <
class ModuleType>
798 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
800 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name());
804 template <
class ModuleType>
807 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
809 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name(), ModuleType::outputPort3Name());
813 template <
class ModuleType>
816 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
818 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name(), ModuleType::outputPort3Name(), ModuleType::outputPort4Name());
822 template <
class ModuleType>
825 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
827 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name(), ModuleType::outputPort3Name(), ModuleType::outputPort4Name(), ModuleType::outputPort5Name());
831 template <
class ModuleType>
834 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
836 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name(), ModuleType::outputPort3Name(), ModuleType::outputPort4Name(), ModuleType::outputPort5Name(), ModuleType::outputPort6Name());
840 template <
class ModuleType>
843 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
845 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name(), ModuleType::outputPort3Name(), ModuleType::outputPort4Name(), ModuleType::outputPort5Name(), ModuleType::outputPort6Name(), ModuleType::outputPort7Name());
849 template <
class ModuleType>
852 static std::vector<SCIRun::Dataflow::Networks::OutputPortDescription>
outputs()
854 return ModuleType::outputPortDescription(ModuleType::outputPort0Name(), ModuleType::outputPort1Name(), ModuleType::outputPort2Name(), ModuleType::outputPort3Name(), ModuleType::outputPort4Name(), ModuleType::outputPort5Name(), ModuleType::outputPort6Name(), ModuleType::outputPort7Name(), ModuleType::outputPort8Name());
boost::shared_ptr< T > getRequiredInput(const StaticPortName< T, N > &port)
Definition: Module.h:291
boost::optional< DatatypeHandle > DatatypeHandleOption
Definition: DatatypeFwd.h:47
boost::optional< boost::shared_ptr< T > > getOptionalInput(const StaticPortName< T, N > &port)
Definition: Module.h:331
virtual SCIRun::Core::Algorithms::AlgorithmStatusReporter::UpdaterFunc getUpdaterFunc() const
Definition: Module.h:111
#define msg(m)
Definition: PiecewiseInterp.h:55
#define private
Definition: Thread_none.cc:52
virtual void status(const std::string &msg) const
Definition: Module.h:109
boost::shared_ptr< LegacyLoggerInterface > LoggerHandle
Definition: LoggerFwd.h:42
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name, const std::string &port3Name)
Definition: Module.h:540
Definition: AlgorithmBase.h:52
void sendOutput(const StaticPortName< T, N > &port, boost::shared_ptr< D > data)
Definition: Module.h:337
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:690
std::string get_packagename() const
Definition: Module.h:65
Definition: AlgorithmBase.h:296
Definition: LoggerInterface.h:43
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:798
std::string name
Definition: ModuleDescription.h:51
boost::signals2::signal< void(const ModuleId &)> ExecuteEndsSignalType
Definition: ExecutableObject.h:42
Definition: ModuleStateInterface.h:105
PortNameBase(const PortId &id)
Definition: Module.h:135
Definition: ModuleDescription.h:99
Definition: ModuleInterface.h:134
ModuleId get_id() const
Definition: Module.h:66
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name, const std::string &port3Name, const std::string &port4Name, const std::string &port5Name, const std::string &port6Name)
Definition: Module.h:576
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name)
Definition: Module.h:515
#define MODULE_ERROR_WITH_TYPE(type, message)
Definition: ModuleInterface.h:141
Definition: ModuleInterface.h:81
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:789
Definition: AlgorithmBase.h:219
virtual void setUiToggleFunc(UiToggleFunc func)
Definition: Module.h:113
boost::function< class Module *()> ModuleMaker
Definition: ModuleDescription.h:108
boost::function< void(double)> UpdaterFunc
Definition: AlgorithmBase.h:155
Base type
Definition: Module.h:399
boost::shared_ptr< ModuleStateInterface > ModuleStateHandle
Definition: NetworkFwd.h:75
boost::function< SCIRun::Dataflow::Networks::DatatypeSourceInterface *()> SourceMaker
Definition: Module.h:204
#define SCISHARE
Definition: share.h:39
virtual void set_id(const std::string &id)
Definition: Module.h:70
boost::shared_ptr< OutputPortInterface > OutputPortHandle
Definition: NetworkFwd.h:80
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:780
boost::shared_ptr< ModuleStateInterfaceFactory > ModuleStateFactoryHandle
Definition: NetworkFwd.h:76
virtual void remark(const std::string &msg) const
Definition: Module.h:108
boost::error_info< struct tag_error_message, std::string > ErrorMessage
Definition: Exception.h:52
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name)
virtual bool hasDynamicPorts() const
Definition: Module.h:125
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:771
boost::shared_ptr< InputPortInterface > InputPortHandle
Definition: NetworkFwd.h:79
boost::shared_ptr< AlgorithmFactory > AlgorithmFactoryHandle
Definition: AlgorithmFwd.h:42
bool has_ui() const
Definition: Module.h:75
Definition: BoostGraphExampleTests.cc:86
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:699
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:843
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:816
std::vector< boost::shared_ptr< T > > getRequiredDynamicInputs(const DynamicPortName< T, N > &port)
Definition: Module.h:307
ModuleId id_
Definition: Module.h:220
std::vector< boost::shared_ptr< T > > getOptionalDynamicInputs(const DynamicPortName< T, N > &port)
Definition: Module.h:320
Definition: ModuleInterface.h:137
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:834
const char * name[]
Definition: BoostGraphExampleTests.cc:87
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:807
DynamicPortName(const PortId &id=PortId(0,"[not defined yet]"))
Definition: Module.h:166
std::string get_categoryname() const
Definition: Module.h:64
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name)
Definition: Module.h:528
Definition: ModuleDescription.h:77
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:852
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name, const std::string &port3Name, const std::string &port4Name, const std::string &port5Name)
Definition: Module.h:564
dictionary data
Definition: eabLatVolData.py:11
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name, const std::string &port3Name, const std::string &port4Name)
Definition: Module.h:552
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputs()
Definition: Module.h:825
static Core::Algorithms::AlgorithmFactoryHandle defaultAlgoFactory_
Definition: Module.h:216
virtual Core::Algorithms::AlgorithmHandle getAlgorithm() const
Definition: Module.h:121
LegacyState
Definition: Module.h:225
std::string get_module_name() const
Definition: Module.h:63
void update_state(LegacyState)
Definition: Module.h:231
boost::signals2::signal< void(const ModuleId &)> ErrorSignalType
Definition: ExecutableObject.h:43
LockingHandle< Datatype > DatatypeHandle
Definition: Datatype.h:71
boost::signals2::signal< void(const ModuleId &)> ExecuteBeginsSignalType
Definition: ExecutableObject.h:41
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name, const std::string &port3Name, const std::string &port4Name, const std::string &port5Name, const std::string &port6Name, const std::string &port7Name, const std::string &port8Name)
Definition: Module.h:600
Definition: ModuleInterface.h:136
PortId id_
Definition: Module.h:154
static std::vector< SCIRun::Dataflow::Networks::OutputPortDescription > outputPortDescription(const std::string &port0Name, const std::string &port1Name, const std::string &port2Name, const std::string &port3Name, const std::string &port4Name, const std::string &port5Name, const std::string &port6Name, const std::string &port7Name)
Definition: Module.h:588
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:708
boost::shared_ptr< ModuleInterface > ModuleHandle
Definition: NetworkFwd.h:74
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:717
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:726
virtual const ModuleLookupInfo & get_info() const
Definition: Module.h:69
virtual bool hasDynamicPorts() const override
Definition: Module.h:370
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:735
boost::shared_ptr< AlgorithmBase > AlgorithmHandle
Definition: AlgorithmFwd.h:39
boost::function< void(bool)> UiToggleFunc
Definition: ModuleInterface.h:78
Name AlgorithmParameterName
Definition: AlgorithmBase.h:70
static ModuleStateFactoryHandle defaultStateFactory_
Definition: Module.h:215
ModuleLookupInfo info_
Definition: Module.h:219
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:744
Base type
Definition: Module.h:405
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:753
Definition: ModuleDescription.h:45
PortId toId() const
Definition: Module.h:143
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:762
Definition: ModuleInterface.h:135
MatrixBase< double > Matrix
Definition: MatrixFwd.h:40
boost::shared_ptr< Datatype > DatatypeHandle
Definition: DatatypeFwd.h:44
void sendOutputFromAlgorithm(const StaticPortName< T, N > &port, const Core::Algorithms::AlgorithmOutput &output)
Definition: Module.h:345
virtual void warning(const std::string &msg) const
Definition: Module.h:107
static std::vector< SCIRun::Dataflow::Networks::InputPortDescription > inputs()
Definition: Module.h:681
boost::shared_ptr< T > get(const Name &name) const
Definition: AlgorithmBase.h:182
boost::function< SCIRun::Dataflow::Networks::DatatypeSinkInterface *()> SinkMaker
Definition: Module.h:203
StaticPortName(const PortId &id=PortId(0,"[not defined yet]"))
Definition: Module.h:160