9 #ifndef __DIADES__AUTOMATA__EXPERIMENTAL__PARAMETRIZEDSYNCHRONISATION__HH__ 10 #define __DIADES__AUTOMATA__EXPERIMENTAL__PARAMETRIZEDSYNCHRONISATION__HH__ 18 namespace Experimental
32 template<
typename StateMachine>
40 return "Automata::Experimental::ParametrizedSynchronisation";
55 std::unordered_map<typename Ptr<Component>::ConstP, std::set<Event> >
_isSynchronized;
100 SR(components), _isSynchronized()
133 list<ComponentIterator> support;
138 if(it->containsEvent(e))
140 support.push_back(it);
143 require(
Exception, !support.empty(),
"synchronise (Parametrized): the event has no support");
145 std::for_each(support.begin(), support.end(),
163 template<
typename ComponentEventIterator>
165 synchronise(ComponentEventIterator begin, ComponentEventIterator end)
183 template<
typename ComponentEventIterator>
185 synchronise(ComponentEventIterator begin, ComponentEventIterator end,
bool relaxation)
192 std::for_each(begin, end,
195 evt.addEvent(*entry.first, entry.second);
196 _isSynchronized[entry.first].insert(entry.second);
227 for(
auto eventIt = it->eventBegin();
228 eventIt != it->eventEnd();
232 if(syncSet.find(*eventIt) == syncSet.end())
237 syncSet.insert(*eventIt);
271 _isSynchronized.clear();
282 _isSynchronized.clear();
bool init(const ComponentVector &components)
typename SyncEvent::Size Size
static ConstP get(const T &obj)
ParametrizedSynchronisation()=default
typename StateMachine::NullEventPropertyId NullEvent
typename SR::SyncEvent SyncEvent
SynchronisationEvent< Component > SyncEvent
typename SR::SynchronisationList SynchronisationList
ComponentIterator endOfComponents() const
typename SyncEvent::ComponentVector ComponentVector
ParametrizedSynchronisation & operator=(ParametrizedSynchronisation const &other)=default
#define ensure(Exception, expr, message)
virtual ~ParametrizedSynchronisation()=default
virtual void clearRules()
void synchronise(ComponentEventIterator begin, ComponentEventIterator end)
void synchronise(ComponentEventIterator begin, ComponentEventIterator end, bool relaxation)
typename SR::ComponentVector ComponentVector
ParametrizedSynchronisation(const ComponentVector &components)
typename SyncEvent::ComponentIterator ComponentIterator
std::list< SyncEvent > SynchronisationList
std::list< SyncEvent > _synchros
ComponentIterator beginOfComponents() const
#define require(Exception, expr, message)
Namespace of the Diades project.
_NullEventPropertyId NullEventPropertyId
ComponentVector _components
typename SR::Component Component
typename SyncEvent::Event Event
bool setComponentVector(const ComponentVector &components)
void synchronise(Event e)
typename SR::SynchronisationIterator SynchronisationIterator
std::unordered_map< typename Ptr< Component >::ConstP, std::set< Event > > _isSynchronized
virtual void clearRules()
typename SynchronisationList::iterator SynchronisationIterator