25 #ifndef __ETL__SMACH_H_
26 #define __ETL__SMACH_H_
38 #define SMACH_STATE_STACK_SIZE (32)
41 #pragma warning (disable:4786)
42 #pragma warning (disable:4290) // MSVC6 doesn't like function declarations with exception specs
46 #define ETL_MUTEX_LOCK()
60 template <
typename CON,
typename K=
int,
typename M=mutex_null>
123 {
return id<rhs.
id; }
127 {
return id==rhs.
id; }
161 virtual const char *
get_name()
const=0;
260 typename std::vector<event_def>::const_iterator iter(
find(
id.key));
267 event_result ret((state_context->*(iter->handler))(
id));
291 #ifdef ETL_MUTEX_LOCK
306 #ifdef ETL_MUTEX_LOCK
326 #ifdef ETL_MUTEX_LOCK
369 #ifdef ETL_MUTEX_LOCK
403 #ifdef ETL_MUTEX_LOCK
446 #ifdef ETL_MUTEX_LOCK
452 throw(std::overflow_error(
"smach<>::push_state(): state stack overflow!"));
457 return enter(nextstate);
482 #ifdef ETL_MUTEX_LOCK
489 throw(std::underflow_error(
"smach<>::pop_state(): stack is empty!"));
535 #ifdef ETL_MUTEX_LOCK
553 #ifdef ETL_MUTEX_LOCK