39 <
class RegionContainerImpl
41 ,
class EventArgs =
void
53 <
class RegionContainerImpl
78 <
class RegionContainerImpl
98 <
class RegionContainerImpl
128 <
class RegionContainerImpl
163 <
class RegionContainerImpl
180 <
class RegionContainerImpl
193 <
class RegionContainerImpl
200 <
class RegionContainerImpl
215 <
class RegionContainerImpl
258 virtual void enterRegion(RegionContainerImpl* context) = 0;
263 virtual void exitRegion(RegionContainerImpl* context) = 0;
279 virtual void startDoRegion(RegionContainerImpl* context) = 0;
284 virtual void endDoRegion(RegionContainerImpl* context) = 0;
309 template<
class RegionImpl>
312 return static_cast<RegionImpl*
>(
this);
336 <
class RegionContainerImpl
464 ,
class RegionContainerImpl
469 :
public RegionBase<RegionContainerImpl,IInnerState,EventArgs>
494 (
static_cast<Implementation*
>(
this)->*eventHandler)(context,
this,eventArgs);
516 (state->*eventHandler)(context,
this,eventArgs);
530 ,
class RegionContainerImpl
535 :
public RegionBase<RegionContainerImpl,IInnerState,EventArgs>
562 (
static_cast<Implementation*
>(
this)->*eventHandler)(context,
this);
576 RegionContainerImpl* regionContainerContext =
static_cast<RegionContainerImpl*
>(context);
584 (state->*eventHandler)(context,
this);
596 ,
class RegionContainerImpl
614 ,
class RegionContainerImpl
652 ,
class RegionContainerImpl
654 ,
class EventArgs = void
664 < Region<RegionImpl,RegionContainerImpl,IInnerState,EventArgs,HistoryType,StateThreadType,TimeDurationType,SemaphoreType,MutexType,EventQueueType>
665 , RegionContainerImpl
669 < Region<RegionImpl,RegionContainerImpl,IInnerState,EventArgs,HistoryType,StateThreadType,TimeDurationType,SemaphoreType,MutexType,EventQueueType>
670 , RegionContainerImpl
677 , StateMachine<RegionImpl, IInnerState>
681 , RegionContainerImpl
704 , RegionContainerImpl
720 , RegionContainerImpl
733 , RegionContainerImpl
820 Region(RegionContainerImpl* argRegionContainer, TimeDurationType argDoActionFrequency = TimeDurationType::Zero)
823 , eventDispatchQueue()
824 , checkEventFrequency(argDoActionFrequency)
905 if(!RegionThreadImpl::isSelf(static_cast<StateImplementationBase*>(
this)->
getStateThread()))
912 internalInitialize(force);
924 if(!RegionThreadImpl::isSelf(static_cast<StateImplementationBase*>(
this)->
getStateThread()))
931 internalFinalize(finalizeSubStateMachines);
968 unblockEventsAvailable();
977 if(!RegionThreadImpl::isSelf(static_cast<StateImplementationBase*>(
this)->
getStateThread()))
986 eventDispatchQueue.push_back(dispatchedEvent);
989 virtual void enterRegion(RegionContainerImpl* context)
991 static_cast<StateBase<RegionContainerImpl,IInnerState>*
>(
this)->entry(context);
994 virtual void exitRegion(RegionContainerImpl* context)
996 static_cast<StateBase<RegionContainerImpl,IInnerState>*
>(
this)->exit(context);
999 virtual void startDoRegion(RegionContainerImpl* context)
1002 static_cast<StateBase<RegionContainerImpl,IInnerState>*
>(
this)->startDo(context);
1005 virtual void endDoRegion(RegionContainerImpl* context)
1007 static_cast<StateBase<RegionContainerImpl,IInnerState>*
>(
this)->endDo(context);
1010 virtual void finalizeRegion(
bool recursive)
1012 static_cast<RegionImpl*
>(
this)->
finalize(recursive);
1015 virtual bool initializeRegion(
bool recursive)
1017 static_cast<RegionImpl*
>(
this)->
initialize(recursive);
1018 return static_cast<RegionImpl*
>(
this)->
isReady();
1021 virtual bool isRegionInitialized()
1026 virtual bool isRegionFinalized()
1028 return static_cast<RegionImpl*
>(
this)->
isFinalized();
1031 virtual bool isRegionThreadRunning()
const
1036 virtual void joinRegionThread()
1041 virtual void internalInitialize(
bool recursive)
1046 virtual void internalFinalize(
bool recursive)
1054 void unblockEventsAvailable()
1056 eventDispatchQueue.unblock();
1059 bool checkEventsAvailable()
1061 return eventDispatchQueue.waitForEvents(checkEventFrequency);
1066 if(checkEventsAvailable())
1068 while(!eventDispatchQueue.empty())
1071 eventDispatchQueue.pop_front();
1084 EventQueueType eventDispatchQueue;
1085 TimeDurationType checkEventFrequency;