@@ -46,64 +46,64 @@ namespace SCIRun {
4646namespace Dataflow {
4747namespace Networks {
4848
49- // / @todo: interface is getting bloated, segregate it.
50- class SCISHARE ModuleInterface : public ModuleInfoProvider, public ModuleDisplayInterface,
51- public ExecutableObject, public Core::Algorithms::AlgorithmCollaborator
49+ // Methods a module writer needs to know/use/override
50+ class SCISHARE ModuleUserInterface
5251 {
5352 public:
54- virtual ~ModuleInterface ();
55-
56- virtual ModuleStateHandle get_state () = 0;
57- virtual const ModuleStateHandle get_state () const = 0;
53+ virtual ~ModuleUserInterface () {}
5854
55+ // These two functions must be implemented:
5956 virtual void execute () = 0;
57+ virtual void setStateDefaults () = 0;
58+
59+ // These two functions must be understood and used correctly:
60+ virtual ModuleStateHandle get_state () = 0;
61+ virtual bool needToExecute () const = 0;
62+ };
6063
64+ // Methods for internal developer use/testing
65+ class SCISHARE ModuleInternalsInterface
66+ {
67+ public:
68+ virtual ~ModuleInternalsInterface () {}
69+ virtual const ModuleStateHandle cstate () const = 0;
6170 typedef boost::signals2::signal<void (bool )> ExecutionSelfRequestSignalType;
6271 virtual boost::signals2::connection connectExecuteSelfRequest (const ExecutionSelfRequestSignalType::slot_type& subscriber) = 0;
63-
6472 virtual ModuleExecutionState& executionState () = 0;
65-
6673 // / @todo for deserialization
6774 virtual void set_id (const std::string& id) = 0;
6875 virtual void set_state (ModuleStateHandle state) = 0;
69-
7076 virtual SCIRun::Core::Datatypes::DatatypeHandleOption get_input_handle (const PortId& id) = 0;
7177 virtual std::vector<SCIRun::Core::Datatypes::DatatypeHandleOption> get_dynamic_input_handles (const PortId& id) = 0;
7278 virtual void send_output_handle (const PortId& id, SCIRun::Core::Datatypes::DatatypeHandle data) = 0;
73-
7479 virtual void setLogger (SCIRun::Core::Logging::LoggerHandle log) = 0;
75- virtual SCIRun::Core::Logging::LoggerHandle getLogger () const override = 0;
76-
77- // / @todo functions
78- virtual SCIRun::Core::Algorithms::AlgorithmStatusReporter::UpdaterFunc getUpdaterFunc () const override = 0;
7980 virtual void setUpdaterFunc (SCIRun::Core::Algorithms::AlgorithmStatusReporter::UpdaterFunc func) = 0;
8081 virtual void setUiToggleFunc (UiToggleFunc func) = 0;
81-
82- // / @todo:
83- // need to hook up output ports for cached state.
84- virtual bool needToExecute () const = 0;
85-
8682 virtual ModuleReexecutionStrategyHandle getReexecutionStrategy () const = 0;
8783 virtual void setReexecutionStrategy (ModuleReexecutionStrategyHandle caching) = 0;
88-
89- virtual void setStateDefaults () = 0;
90-
9184 virtual Core::Algorithms::AlgorithmHandle getAlgorithm () const = 0;
92-
9385 virtual void portAddedSlot (const Networks::ModuleId& mid, const Networks::PortId& pid) {}
9486 virtual void portRemovedSlot (const Networks::ModuleId& mid, const Networks::PortId& pid) {}
9587 virtual void addPortConnection (const boost::signals2::connection& con) = 0;
96-
9788 virtual void enqueueExecuteAgain (bool upstream) = 0;
98-
9989 virtual const MetadataMap& metadata () const = 0;
100-
10190 virtual bool isStoppable () const = 0;
102-
10391 virtual bool executionDisabled () const = 0;
10492 virtual void setExecutionDisabled (bool disable) = 0;
10593 };
10694
95+ class SCISHARE ModuleInterface :
96+ public ModuleUserInterface,
97+ public ModuleInternalsInterface,
98+ public ModuleInfoProvider,
99+ public ModuleDisplayInterface,
100+ public ExecutableObject,
101+ public Core::Algorithms::AlgorithmCollaborator
102+ {
103+ public:
104+ virtual ~ModuleInterface ();
105+ };
106+
107107}}}
108108
109109#endif
0 commit comments