213template<
class T,
class U>
227#define TOPSTATE(TOP) \
228 struct TOP : public ::Macho::Link< TOP, ::Macho::TopBase< TOP > >
231#define SUBSTATE(STATE, SUPERSTATE) \
232 struct STATE : public ::Macho::Link< STATE, SUPERSTATE >
241 S(::Macho::_StateInstance & instance) : ::Macho::Link<S, SUPER>(instance) { \
243 using MustDeriveFromLink = ::CheckSameType< ::Macho::Link<S, SUPER>, LINK>::Check; \
246 static const char * _state_name() { return #S; } \
248 Box & box() { return *static_cast<Box *>(_box()); } \
249 friend class ::_VS8_Bug_101615;
252#define DEEPHISTORY() \
255 void _saveHistory(::Macho::_StateInstance & self, ::Macho::_StateInstance & , ::Macho::_StateInstance & deep) override\
256 { self.setHistory(&deep); SELF::SUPER::_setHistorySuper(self, deep); } \
259 void _setHistorySuper(::Macho::_StateInstance & self, ::Macho::_StateInstance & deep) override\
260 { self.setHistorySuper(deep); } \
262 static_assert(true, "dummy for extra semicolon warning")
268 virtual void _saveHistory(::Macho::_StateInstance & self, ::Macho::_StateInstance & shallow, ::Macho::_StateInstance & deep) \
269 { self.setHistory(&shallow); SELF::SUPER::_setHistorySuper(self, deep); } \
272 virtual void _setHistorySuper(::Macho::_StateInstance & self, ::Macho::_StateInstance & deep) \
273 { self.setHistorySuper(deep); } \
275 static_assert(true, "dummy for extra semicolon warning")
278#define PERSISTENT() \
280 virtual void _deleteBox(::Macho::_StateInstance & instance) {} \
306 using ID =
unsigned int;
322 place = ::operator
new(
sizeof(B));
337 static_cast<B *
>(box)->~B();
342#ifdef MACHO_SNAPSHOTS
344 void * _cloneBox(
void * other) {
346 return new B(*
static_cast<B *
>(other));
358#ifdef MACHO_SNAPSHOTS
360 void * _cloneBox<_EmptyBox>(
void * other);
396 : _myStateInstance(instance)
408 template<
class S,
class P1>
411 template<
class S,
class P1,
class P2>
412 void setState(
const P1 & p1,
const P2 & p2);
414 template<
class S,
class P1,
class P2,
class P3>
415 void setState(
const P1 & p1,
const P2 & p2,
const P3 & p3);
417 template<
class S,
class P1,
class P2,
class P3,
class P4>
418 void setState(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4);
420 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5>
421 void setState(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5);
423 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
424 void setState(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5,
const P6 & p6);
462 virtual void exit() {}
465 virtual void entry() {}
472 virtual void init() {}
482 template<
class C,
class P>
527 template<
class C,
class P>
534 using TOP =
typename P::TOP;
545 return key() == other || SUPER::isChild(other);
549 return static_cast<_KeyData *
>(other)->childPredicate(
key());
583 template<
class U,
class V>
596 friend class ::TestAccess;
607 this->_setHistorySuper(self, deep);
658#ifdef MACHO_SNAPSHOTS
678 virtual const char *
name() = 0;
685#ifdef MACHO_SNAPSHOTS
686 virtual void cloneBox(
void *
box) = 0;
759 assert(
false);
return nullptr;
764#ifdef MACHO_SNAPSHOTS
765 virtual void cloneBox(
void *
box) {}
768 const char *
name()
override {
return "Root"; }
784 template<
class C,
class P>
795 using Box =
typename S::Box;
802 const char *
name()
override {
return S::_state_name(); }
827#ifdef MACHO_SNAPSHOTS
828 virtual void cloneBox(
void *
box) {
859 template<
class TOP,
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
861 using Signature = R (TOP::*)(P1, P2, P3, P4, P5, P6);
864 _Event6(Signature handler,
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5,
const P6 & p6)
876 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
891 template<
class TOP,
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
893 using Signature = R (TOP::*)(P1, P2, P3, P4, P5);
896 _Event5(Signature handler,
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5)
907 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
921 template<
class TOP,
class R,
class P1,
class P2,
class P3,
class P4>
923 using Signature = R (TOP::*)(P1, P2, P3, P4);
926 _Event4(Signature handler,
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4)
936 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
949 template<
class TOP,
class R,
class P1,
class P2,
class P3>
951 using Signature = R (TOP::*)(P1, P2, P3);
954 _Event3(Signature handler,
const P1 & p1,
const P2 & p2,
const P3 & p3)
963 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
975 template<
class TOP,
class R,
class P1,
class P2>
977 using Signature = R (TOP::*)(P1, P2);
980 _Event2(Signature handler,
const P1 & p1,
const P2 & p2)
988 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
999 template<
class TOP,
class R,
class P1>
1001 using Signature = R (TOP::*)(P1);
1011 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
1021 template<
class TOP,
class R>
1023 using Signature = R (TOP::*)();
1032 TOP & behaviour =
static_cast<TOP &
>(instance.
specification());
1041 template<
class TOP,
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1042 inline IEvent<TOP> *
Event(R (TOP::*handler)(P1, P2, P3, P4, P5, P6), const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5, const P6 & p6) {
1043 return new _Event6<TOP, R, P1, P2, P3, P4, P5, P6>(handler, p1, p2, p3, p4, p5, p6);
1047 template<
class TOP,
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
1048 inline IEvent<TOP> *
Event(R (TOP::*handler)(P1, P2, P3, P4, P5), const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5) {
1049 return new _Event5<TOP, R, P1, P2, P3, P4, P5>(handler, p1, p2, p3, p4, p5);
1053 template<
class TOP,
class R,
class P1,
class P2,
class P3,
class P4>
1054 inline IEvent<TOP> *
Event(R (TOP::*handler)(P1, P2, P3, P4), const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4) {
1058 template<
class TOP,
class R,
class P1,
class P2,
class P3>
1059 inline IEvent<TOP> *
Event(R (TOP::*handler)(P1, P2, P3), const P1 & p1, const P2 & p2, const P3 & p3) {
1063 template<
class TOP,
class R,
class P1,
class P2>
1068 template<
class TOP,
class R,
class P1>
1073 template<
class TOP,
class R>
1087 template<
class S,
class P1>
1093 template<
class S,
class P1,
class P2>
1096 behaviour.init(p1, p2);
1099 template<
class S,
class P1,
class P2,
class P3>
1102 behaviour.init(p1, p2, p3);
1105 template<
class S,
class P1,
class P2,
class P3,
class P4>
1108 behaviour.init(p1, p2, p3, p4);
1111 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5>
1114 behaviour.init(p1, p2, p3, p4, p5);
1117 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1120 behaviour.init(p1, p2, p3, p4, p5, p6);
1157 void destroy()
override {}
1166 instance.
init(
false);
1176 instance.
init(
true);
1187 instance.
init(
true);
1202 template<
class S,
class P1>
1222 template<
class S,
class P1,
class P2>
1244 template<
class S,
class P1,
class P2,
class P3>
1268 template<
class S,
class P1,
class P2,
class P3,
class P4>
1294 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5>
1297 _Initializer5(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5)
1310 ::_VS8_Bug_101615::execute<S, P1, P2, P3, P4, P5>(instance,
myParam1,
myParam2,
myParam3,
myParam4,
myParam5);
1322 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1325 _Initializer6(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5,
const P6 & p6)
1335 return new _Initializer6<S, P1, P2, P3, P4, P5, P6>(
myParam1,
myParam2,
myParam3,
myParam4,
myParam5,
myParam6);
1339 _VS8_Bug_101615::execute<S, P1, P2, P3, P4, P5, P6>(instance,
myParam1,
myParam2,
myParam3,
myParam4,
myParam5,
myParam6);
1379 "There is already a state transition pending!");
1423#ifdef MACHO_SNAPSHOTS
1435 template<
class C,
class P>
1455 friend class ::TestAccess;
1509 if (
this == &other)
return *
this;
1533 return static_cast<_KeyData *
>(k)->childPredicate(
key());
1567 return Alias(S::key());
1570 template<
class S,
class P1>
1575 template<
class S,
class P1,
class P2>
1580 template<
class S,
class P1,
class P2,
class P3>
1585 template<
class S,
class P1,
class P2,
class P3,
class P4>
1586 Alias State(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4) {
1590 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5>
1591 Alias State(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5) {
1592 return Alias(S::key(),
new _Initializer5<S, P1, P2, P3, P4, P5>(p1, p2, p3, p4, p5));
1595 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1596 Alias State(
const P1 & p1,
const P2 & p2,
const P3 & p3,
const P4 & p4,
const P5 & p5,
const P6 & p6) {
1597 return Alias(S::key(),
new _Initializer6<S, P1, P2, P3, P4, P5, P6>(p1, p2, p3, p4, p5, p6));
1617#ifdef MACHO_SNAPSHOTS
1619 class Snapshot :
public _MachineBase {
1621 Snapshot(Machine<TOP> & machine);
1624 free(Machine<TOP>::theStateCount);
1628 friend class Machine<TOP>;
1630 Snapshot(
const Snapshot<TOP> & other);
1631 Snapshot & operator=(
const Snapshot<TOP> & other);
1661 return static_cast<TOP *
>(& (myMachine.myCurrentState->specification()) );
1672 static_assert(
static_cast<MustDeriveFromTopBase*
>(
nullptr)==
nullptr,
"dummy");
1675 start(TOP::_getInstance(*
this));
1684 static_assert(
static_cast<MustDeriveFromTopBase*
>(
nullptr)==
nullptr,
"dummy");
1690#ifdef MACHO_SNAPSHOTS
1692 Machine(
const Snapshot<TOP> & snapshot) {
1694 copy(snapshot.myInstances, theStateCount);
1698 Machine<TOP> & operator=(
const Snapshot<TOP> & snapshot) {
1704 free(theStateCount);
1705 copy(snapshot.myInstances, theStateCount);
1712 current->restore(*current);
1721 free(theStateCount);
1740 if (destroy)
delete event;
1746 const typename TOP::Box &
box()
const {
1752 template<
class C,
class P>
1759#ifdef MACHO_SNAPSHOTS
1760 friend class Snapshot<TOP>;
1766 static ID theStateCount;
1792 template<
class S,
class P1>
1799 template<
class S,
class P1,
class P2>
1806 template<
class S,
class P1,
class P2,
class P3>
1813 template<
class S,
class P1,
class P2,
class P3,
class P4>
1820 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5>
1824 m.
setPendingState(instance,
new _Initializer5<S, P1, P2, P3, P4, P5>(p1, p2, p3, p4, p5));
1827 template<
class S,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
1831 m.
setPendingState(instance,
new _Initializer6<S, P1, P2, P3, P4, P5, P6>(p1, p2, p3, p4, p5, p6));
1866 _myStateInstance.machine().setPendingEvent(event);
1872 return static_cast<Machine<TOP> &
>(this->_myStateInstance.machine());
1878 template<
class C,
class P>
1880 : P(P::_getInstance(instance.machine()))
1883 , _myStateInstance(instance)
1887 template<
class C,
class P>
1889 return _myStateInstance.box();
1893 template<
class C,
class P>
1899 template<
class C,
class P>
1900 inline _StateInstance & Link<C, P>::_getInstance(_MachineBase & machine) {
1903 if (instance ==
nullptr)
1905 instance =
new _SubstateInstance<C>(machine, &P::_getInstance(machine));
1910 template<
class C,
class P>
1916 template<
class C,
class P>
1921 template<
class C,
class P>
1924 if (instance !=
nullptr)
1928 template<
class C,
class P>
1931 if (instance !=
nullptr)
1935 template<
class C,
class P>
1940 if (instance !=
nullptr)
1941 history = instance->
history();
1943 return history !=
nullptr ? history->
key() : key();
1946 template<
class C,
class P>
1952 template<
class C,
class P>
1954 return Alias(key());
1960#ifdef MACHO_SNAPSHOTS
_KeyData * key() const
Definition Macho.h:1550
Alias & operator=(const Alias &other)
Definition Macho.h:1508
Key myStateKey
Definition Macho.h:1554
bool isChild(Key k) const
Definition Macho.h:1528
~Alias()
Definition Macho.h:1519
Alias(Key key, _Initializer *init)
Definition Macho.h:1496
_Initializer * myInitializer
Definition Macho.h:1557
void setState(_MachineBase &machine) const
Alias(const Alias &other)
Definition Macho.h:1503
ID id() const
Definition Macho.h:1540
bool isParent(Key k) const
Definition Macho.h:1532
const char * name() const
Definition Macho.h:1536
Alias(Key key, bool history=false)
Definition Macho.h:1484
static void clearHistoryDeep(const _MachineBase &machine)
Definition Macho.h:1929
static bool isCurrent(const _MachineBase &machine)
Definition Macho.h:1911
static bool isParent(Key other)
Definition Macho.h:548
void entry() override
Definition Macho.h:574
friend class Link
Definition Macho.h:584
static bool isCurrentDirect(const _MachineBase &machine)
Definition Macho.h:1917
P SUPER
Definition Macho.h:531
typename P::TOP TOP
Definition Macho.h:534
void exit() override
Definition Macho.h:576
void * _box()
Definition Macho.h:1888
void init() override
Definition Macho.h:575
static Key key()
Definition Macho.h:1947
static void clearHistory(const _MachineBase &machine)
Definition Macho.h:1922
static Alias history(const _MachineBase &machine)
Definition Macho.h:1936
static bool isChild(Key other)
Definition Macho.h:544
static Alias alias()
Definition Macho.h:1953
Machine()
Definition Macho.h:1668
~Machine() override
Definition Macho.h:1719
void dispatch(IEvent< TOP > *event, bool destroy=true)
Definition Macho.h:1736
const TOP::Box & box() const
Definition Macho.h:1746
AfterAdvice operator->()
Definition Macho.h:1727
Machine(const Alias &state)
Definition Macho.h:1680
static const ID value
Definition Macho.h:620
T TOP
Definition Macho.h:509
TopBase(_StateInstance &instance)
Definition Macho.h:512
void dispatch(IEvent< TOP > *event)
Definition Macho.h:1864
const Machine< TOP > & machine()
Definition Macho.h:1871
_Initializer * clone() override
Definition Macho.h:1190
const _MachineBase & myMachine
Definition Macho.h:1197
_AdaptingInitializer(const _MachineBase &machine)
Definition Macho.h:1184
void execute(_StateInstance &instance) override
Definition Macho.h:1186
Key adapt(Key key) override
void execute(_StateInstance &instance) override
Definition Macho.h:1165
static _EmptyBox theEmptyBox
Definition Macho.h:313
void dispatch(_StateInstance &instance) override
Definition Macho.h:1031
_Event0(Signature handler)
Definition Macho.h:1026
Signature myHandler
Definition Macho.h:1036
Signature myHandler
Definition Macho.h:1015
_Event1(Signature handler, const P1 &p1)
Definition Macho.h:1004
P1 myParam1
Definition Macho.h:1016
void dispatch(_StateInstance &instance) override
Definition Macho.h:1010
P1 myParam1
Definition Macho.h:993
P2 myParam2
Definition Macho.h:994
_Event2(Signature handler, const P1 &p1, const P2 &p2)
Definition Macho.h:980
Signature myHandler
Definition Macho.h:992
void dispatch(_StateInstance &instance)
Definition Macho.h:987
P3 myParam3
Definition Macho.h:970
_Event3(Signature handler, const P1 &p1, const P2 &p2, const P3 &p3)
Definition Macho.h:954
P1 myParam1
Definition Macho.h:968
Signature myHandler
Definition Macho.h:967
void dispatch(_StateInstance &instance)
Definition Macho.h:962
P2 myParam2
Definition Macho.h:969
void dispatch(_StateInstance &instance)
Definition Macho.h:935
_Event4(Signature handler, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4)
Definition Macho.h:926
P4 myParam4
Definition Macho.h:944
P2 myParam2
Definition Macho.h:942
P1 myParam1
Definition Macho.h:941
Signature myHandler
Definition Macho.h:940
P3 myParam3
Definition Macho.h:943
P1 myParam1
Definition Macho.h:912
P2 myParam2
Definition Macho.h:913
P4 myParam4
Definition Macho.h:915
Signature myHandler
Definition Macho.h:911
_Event5(Signature handler, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5)
Definition Macho.h:896
P5 myParam5
Definition Macho.h:916
P3 myParam3
Definition Macho.h:914
void dispatch(_StateInstance &instance)
Definition Macho.h:906
void dispatch(_StateInstance &instance)
Definition Macho.h:875
_Event6(Signature handler, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5, const P6 &p6)
Definition Macho.h:864
P3 myParam3
Definition Macho.h:883
P4 myParam4
Definition Macho.h:884
P1 myParam1
Definition Macho.h:881
P6 myParam6
Definition Macho.h:886
Signature myHandler
Definition Macho.h:880
P5 myParam5
Definition Macho.h:885
P2 myParam2
Definition Macho.h:882
void execute(_StateInstance &instance) override
Definition Macho.h:1175
virtual void dispatch(_StateInstance &)=0
virtual ~_IEventBase()=default
void execute(_StateInstance &instance) override
Definition Macho.h:1213
P1 myParam1
Definition Macho.h:1218
_Initializer * clone() override
Definition Macho.h:1209
_Initializer1(const P1 &p1)
Definition Macho.h:1205
_Initializer2(const P1 &p1, const P2 &p2)
Definition Macho.h:1225
_Initializer * clone() override
Definition Macho.h:1230
void execute(_StateInstance &instance) override
Definition Macho.h:1234
P1 myParam1
Definition Macho.h:1239
P2 myParam2
Definition Macho.h:1240
P1 myParam1
Definition Macho.h:1262
P2 myParam2
Definition Macho.h:1263
_Initializer * clone() override
Definition Macho.h:1253
_Initializer3(const P1 &p1, const P2 &p2, const P3 &p3)
Definition Macho.h:1247
void execute(_StateInstance &instance) override
Definition Macho.h:1257
P3 myParam3
Definition Macho.h:1264
_Initializer * clone() override
Definition Macho.h:1278
P3 myParam3
Definition Macho.h:1289
_Initializer4(const P1 &p1, const P2 &p2, const P3 &p3, P4 &p4)
Definition Macho.h:1271
P1 myParam1
Definition Macho.h:1287
P2 myParam2
Definition Macho.h:1288
P4 myParam4
Definition Macho.h:1290
void execute(_StateInstance &instance) override
Definition Macho.h:1282
P3 myParam3
Definition Macho.h:1316
P4 myParam4
Definition Macho.h:1317
_Initializer5(const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5)
Definition Macho.h:1297
P5 myParam5
Definition Macho.h:1318
void execute(_StateInstance &instance) override
Definition Macho.h:1309
P1 myParam1
Definition Macho.h:1314
P2 myParam2
Definition Macho.h:1315
_Initializer * clone() override
Definition Macho.h:1305
P1 myParam1
Definition Macho.h:1343
P2 myParam2
Definition Macho.h:1344
_Initializer * clone() override
Definition Macho.h:1334
P6 myParam6
Definition Macho.h:1348
P4 myParam4
Definition Macho.h:1346
_Initializer6(const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5, const P6 &p6)
Definition Macho.h:1325
void execute(_StateInstance &instance) override
Definition Macho.h:1338
P3 myParam3
Definition Macho.h:1345
P5 myParam5
Definition Macho.h:1347
virtual ~_Initializer()=default
virtual Key adapt(Key key)
Definition Macho.h:1144
virtual _Initializer * clone()=0
virtual void execute(_StateInstance &instance)=0
virtual void destroy()
Definition Macho.h:1142
const _StateInstance * getInstance(ID id) const
Definition Macho.h:1402
_StateInstance * myPendingState
Definition Macho.h:1461
void allocate(unsigned int count)
void * myPendingBox
Definition Macho.h:1465
void setState(_StateInstance &instance, _Initializer *init)
friend class _StateInstance
Definition Macho.h:1452
class Alias currentState() const
_StateInstance *& getInstance(ID id)
Definition Macho.h:1397
void start(const Alias &state)
_Initializer * myPendingInit
Definition Macho.h:1462
void setPendingEvent(_IEventBase *event)
Definition Macho.h:1386
void start(_StateInstance &instance)
void setState(const Alias &state)
_StateInstance * myCurrentState
Definition Macho.h:1458
void free(unsigned int count)
void setPendingState(_StateInstance &instance, _Initializer *init)
Definition Macho.h:1377
_IEventBase * myPendingEvent
Definition Macho.h:1467
_StateInstance ** myInstances
Definition Macho.h:1470
void clearHistoryDeep(unsigned int count, const _StateInstance &instance) const
_RootInstance(_MachineBase &machine, _StateInstance *parent)
Definition Macho.h:746
const char * name() override
Definition Macho.h:768
void deleteBox() override
Definition Macho.h:763
ID id() override
Definition Macho.h:753
friend class _StateSpecification
Definition Macho.h:744
Key key() override
Definition Macho.h:757
void createBox() override
Definition Macho.h:762
_StateInstance * create(_MachineBase &machine, _StateInstance *parent) override
Definition Macho.h:771
virtual ~_StateInstance()
virtual _StateInstance * create(_MachineBase &machine, _StateInstance *parent)=0
void setBox(void *box)
Definition Macho.h:690
void exit(_StateInstance &next)
virtual void deleteBox()=0
void * myBoxPlace
Definition Macho.h:736
void setHistory(_StateInstance *history) const
Definition Macho.h:722
void shutdown()
Definition Macho.h:666
_MachineBase & machine()
Definition Macho.h:717
void entry(_StateInstance &previous, bool first=true)
void setHistorySuper(_StateInstance &deep)
Definition Macho.h:652
_StateInstance * myHistory
Definition Macho.h:733
bool isChild(const _StateInstance &instance)
Definition Macho.h:703
virtual const char * name()=0
_MachineBase & myMachine
Definition Macho.h:731
void * box()
Definition Macho.h:712
_StateInstance(_MachineBase &machine, _StateInstance *parent)
void restore(_StateInstance &instance)
Definition Macho.h:670
_StateSpecification & specification()
Definition Macho.h:707
void * myBox
Definition Macho.h:735
virtual void createBox()=0
void saveHistory(_StateInstance &shallow, _StateInstance &deep)
Definition Macho.h:646
_StateInstance * myParent
Definition Macho.h:734
_StateSpecification * mySpecification
Definition Macho.h:732
_StateInstance * history() const
Definition Macho.h:726
static bool isChild(Key)
Definition Macho.h:390
friend class _StateInstance
Definition Macho.h:485
void setStateDirect(typename S::Box *box=0)
Definition Macho.h:1853
virtual void _setHistorySuper(_StateInstance &, _StateInstance &)
Definition Macho.h:458
void setStateBox(typename S::Box *box=0)
Definition Macho.h:1844
void setState(const class Alias &state)
void setState(_StateInstance ¤t)
void setStateHistory()
Definition Macho.h:1836
virtual void _restore(_StateInstance ¤t)
virtual ~_StateSpecification()=default
void setState()
Definition Macho.h:1786
_StateSpecification(_StateInstance &instance)
Definition Macho.h:395
_StateInstance * create(_MachineBase &machine, _StateInstance *parent) override
Definition Macho.h:813
Key key() override
Definition Macho.h:808
const char * name() override
Definition Macho.h:802
typename S::Box Box
Definition Macho.h:795
ID id() override
Definition Macho.h:804
void deleteBox() override
Definition Macho.h:822
_SubstateInstance(_MachineBase &machine, _StateInstance *parent)
Definition Macho.h:787
void createBox() override
Definition Macho.h:817
~_SubstateInstance() override
Definition Macho.h:797
static void execute(Macho::_StateInstance &instance, const P1 &p1)
Definition Macho.h:1088
static void execute(Macho::_StateInstance &instance, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5, const P6 &p6)
Definition Macho.h:1118
static void execute(Macho::_StateInstance &instance, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4)
Definition Macho.h:1106
static void execute(Macho::_StateInstance &instance, const P1 &p1, const P2 &p2)
Definition Macho.h:1094
static void execute(Macho::_StateInstance &instance, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5)
Definition Macho.h:1112
static void execute(Macho::_StateInstance &instance, const P1 &p1, const P2 &p2, const P3 &p3)
Definition Macho.h:1100
void _deleteBox< _EmptyBox >(void *&box, void *&place)
void * _createBox< _EmptyBox >(void *&place)
static _HistoryInitializer _theHistoryInitializer
Definition Macho.h:1355
IEvent< TOP > * Event(R(TOP::*handler)(P1, P2, P3, P4, P5, P6), const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5, const P6 &p6)
Definition Macho.h:1042
void * _createBox(void *&place)
Definition Macho.h:320
void * Key
Definition Macho.h:302
Alias StateHistory(const _MachineBase &machine)
Definition Macho.h:1604
unsigned int ID
Definition Macho.h:306
static _DefaultInitializer _theDefaultInitializer
Definition Macho.h:1354
Alias State()
Definition Macho.h:1566
void _deleteBox(void *&box, void *&place)
Definition Macho.h:333
bool Check
Definition Macho.h:219
TOP * operator->()
Definition Macho.h:1660
~AfterAdvice()
Definition Macho.h:1657
AfterAdvice(Machine< TOP > &m)
Definition Macho.h:1654
const NameFn name
Definition Macho.h:377
const Generator instanceGenerator
Definition Macho.h:372
const char *(*)() NameFn
Definition Macho.h:369
bool(*)(Key) Predicate
Definition Macho.h:368
_StateInstance &(*)(_MachineBase &) Generator
Definition Macho.h:367
const ID id
Definition Macho.h:378
const Predicate childPredicate
Definition Macho.h:375