|
@@ -93,14 +93,14 @@ namespace artis {
|
|
|
|
|
|
virtual double compute() const = 0;
|
|
|
|
|
|
- virtual void dconf(typename Time::type t, typename Time::type e,
|
|
|
+ virtual void dconf(const typename Time::type& t, typename Time::type e,
|
|
|
const common::Bag<Time>& bag)
|
|
|
{
|
|
|
dint(t);
|
|
|
dext(t, e, bag);
|
|
|
}
|
|
|
|
|
|
- virtual void dint(typename Time::type /* time */)
|
|
|
+ virtual void dint(const typename Time::type& /* time */)
|
|
|
{
|
|
|
if (_state == RESPONSE) {
|
|
|
_last_output = _output_value;
|
|
@@ -108,19 +108,18 @@ namespace artis {
|
|
|
_state = WAIT;
|
|
|
}
|
|
|
|
|
|
- virtual void dext(typename Time::type t, typename Time::type e,
|
|
|
+ virtual void dext(const typename Time::type& t, typename Time::type e,
|
|
|
const common::Bag<Time>& bag)
|
|
|
{
|
|
|
std::for_each(bag.begin(), bag.end(),
|
|
|
[this, t, e](const common::ExternalEvent<Time>& event) {
|
|
|
if (event.on_port(RESET)) {
|
|
|
- IntegratorData data;
|
|
|
-
|
|
|
- event.data()(data);
|
|
|
- this->get(LAST_OUTPUT + 1).put(dynamic_cast<Dyn*>(this),
|
|
|
- data.value);
|
|
|
- _output_value = compute();
|
|
|
- _state = RESPONSE;
|
|
|
+ if (_input_number == 0) {
|
|
|
+ _output_value = compute();
|
|
|
+ _state = RESPONSE;
|
|
|
+ } else {
|
|
|
+ _state = INIT;
|
|
|
+ }
|
|
|
} else {
|
|
|
IntegratorData data;
|
|
|
|
|
@@ -151,7 +150,7 @@ namespace artis {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- virtual void start(typename Time::type /* time */)
|
|
|
+ virtual void start(const typename Time::type& /* time */)
|
|
|
{
|
|
|
_input_number = this->input_port_number() - 1;
|
|
|
if (_input_number == 0) {
|
|
@@ -162,7 +161,7 @@ namespace artis {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- virtual typename Time::type ta(typename Time::type /* time */)
|
|
|
+ virtual typename Time::type ta(const typename Time::type& /* time */)
|
|
|
{
|
|
|
switch (_state) {
|
|
|
case INIT:
|
|
@@ -175,7 +174,7 @@ namespace artis {
|
|
|
return Time::infinity;
|
|
|
}
|
|
|
|
|
|
- virtual common::Bag<Time> lambda(typename Time::type /* time */) const
|
|
|
+ virtual common::Bag<Time> lambda(const typename Time::type& /* time */) const
|
|
|
{
|
|
|
common::Bag<Time> msgs;
|
|
|
|