Chapter 10. eUML operators and basic helpers

The following table lists the supported operators:

Table 10.1. Operators and state machine helpers

eUML function / operatorDescriptionFunctor
&&Calls lazily Action1&& Action2And_
||Calls lazily Action1|| Action2Or_
!Calls lazily !Action1Not_
!=Calls lazily Action1 != Action2NotEqualTo_
==Calls lazily Action1 == Action2EqualTo_
>Calls lazily Action1 > Action2Greater_
>=Calls lazily Action1 >= Action2Greater_Equal_
<Calls lazily Action1 < Action2Less_
<=Calls lazily Action1 <= Action2Less_Equal_
&Calls lazily Action1 & Action2Bitwise_And_
|Calls lazily Action1 | Action2Bitwise_Or_
^Calls lazily Action1 ^ Action2Bitwise_Xor_
--Calls lazily --Action1 / Action1--Pre_Dec_ / Post_Dec_
++Calls lazily ++Action1 / Action1++Pre_Inc_ / Post_Inc_
/Calls lazily Action1 / Action2Divides_
/=Calls lazily Action1 /= Action2Divides_Assign_
*Calls lazily Action1 * Action2Multiplies_
*=Calls lazily Action1 *= Action2Multiplies_Assign_
+ (binary)Calls lazily Action1 + Action2Plus_
+ (unary)Calls lazily +Action1Unary_Plus_
+=Calls lazily Action1 += Action2Plus_Assign_
- (binary)Calls lazily Action1 - Action2Minus_
- (unary)Calls lazily -Action1Unary_Minus_
-=Calls lazily Action1 -= Action2Minus_Assign_
%Calls lazily Action1 % Action2Modulus_
%=Calls lazily Action1 %= Action2Modulus_Assign_
>>Calls lazily Action1 >> Action2ShiftRight_
>>=Calls lazily Action1 >>= Action2ShiftRight_Assign_
<<Calls lazily Action1 << Action2ShiftLeft_
<<=Calls lazily Action1 <<= Action2ShiftLeft_Assign_
[] (works on vector, map, arrays)Calls lazily Action1 [Action2]Subscript_
if_then_else_(Condition,Action1,Action2)Returns either the result of calling Action1 or the result of calling Action2If_Else_
if_then_(Condition,Action)Returns the result of calling Action if ConditionIf_Then_
while_(Condition, Body)While Condition(), calls Body(). Returns nothingWhile_Do_
do_while_(Condition, Body)Calls Body() while Condition(). Returns nothingDo_While_
for_(Begin,Stop,EndLoop,Body)Calls for(Begin;Stop;EndLoop){Body;}For_Loop_
process_(Event [,fsm1] [,fsm2] [,fsm3] [,fsm4])Processes Event on the current state machine (if no fsm specified) or on up to 4 state machines returned by an appropriate functor.Process_
process2_(Event, Data [,fsm1] [,fsm2] [,fsm3])Processes Event on the current state machine (if no fsm specified) or on up to 2 state machines returned by an appropriate functor. The event is copy-constructed from what Data() returns.Process2_
is_flag_(Flag [,fsm])Calls is_flag_active() on the current state machine or the one returned by calling fsm.Get_Flag_
event_ [(attribute name)]Returns the current event (as const reference)GetEvent_
source_ [(attribute name)]Returns the source state of the currently triggered transition (as reference). If an attribute name is provided, returns the attribute by reference.GetSource_
target_ [(attribute name)]Returns the target state of the currently triggered transition (as reference). If an attribute name is provided, returns the attribute by reference.GetTarget_
state_ [(attribute name)]Returns the source state of the currently active state (as reference). Valid inside a state entry/exit action. If an attribute name is provided, returns the attribute by reference.GetState_
fsm_ [(attribute name)]Returns the current state machine (as reference). Valid inside a state entry/exit action or a transition. If an attribute name is provided, returns the attribute by reference.GetFsm_
substate_(state_name [,fsm])Returns (as reference) the state state_name referenced in the current state machine or the one given as argument.SubState_


To use these functions, you need to include:

#include <msm/front/euml/euml.hpp>