package org.yakindu.scr.realexpressions; public class RealExpressionsStatemachine implements IRealExpressionsStatemachine { protected class SCInterfaceImpl implements SCInterface { private boolean e1; public void raiseE1() { e1 = true; } private double myReal1; public double getMyReal1() { return myReal1; } public void setMyReal1(double value) { this.myReal1 = value; } protected double assignMyReal1(double value) { return this.myReal1 = value; } private double myReal2; public double getMyReal2() { return myReal2; } public void setMyReal2(double value) { this.myReal2 = value; } private double myFloat; public double getMyFloat() { return myFloat; } public void setMyFloat(double value) { this.myFloat = value; } private double myDouble; public double getMyDouble() { return myDouble; } public void setMyDouble(double value) { this.myDouble = value; } private boolean less; public boolean getLess() { return less; } public void setLess(boolean value) { this.less = value; } private boolean greater; public boolean getGreater() { return greater; } public void setGreater(boolean value) { this.greater = value; } private boolean equalOrLess; public boolean getEqualOrLess() { return equalOrLess; } public void setEqualOrLess(boolean value) { this.equalOrLess = value; } private boolean equalOrGreater; public boolean getEqualOrGreater() { return equalOrGreater; } public void setEqualOrGreater(boolean value) { this.equalOrGreater = value; } private boolean equal; public boolean getEqual() { return equal; } public void setEqual(boolean value) { this.equal = value; } private boolean notEqual; public boolean getNotEqual() { return notEqual; } public void setNotEqual(boolean value) { this.notEqual = value; } private boolean plus; public boolean getPlus() { return plus; } public void setPlus(boolean value) { this.plus = value; } private boolean minus; public boolean getMinus() { return minus; } public void setMinus(boolean value) { this.minus = value; } private boolean multiply; public boolean getMultiply() { return multiply; } public void setMultiply(boolean value) { this.multiply = value; } private boolean division; public boolean getDivision() { return division; } public void setDivision(boolean value) { this.division = value; } private boolean modulo; public boolean getModulo() { return modulo; } public void setModulo(boolean value) { this.modulo = value; } private double negat; public double getNegat() { return negat; } public void setNegat(double value) { this.negat = value; } private boolean complement; public boolean getComplement() { return complement; } public void setComplement(boolean value) { this.complement = value; } private double multiAssign; public double getMultiAssign() { return multiAssign; } public void setMultiAssign(double value) { this.multiAssign = value; } private double divAssign; public double getDivAssign() { return divAssign; } public void setDivAssign(double value) { this.divAssign = value; } private double plusAssign; public double getPlusAssign() { return plusAssign; } public void setPlusAssign(double value) { this.plusAssign = value; } private double minusAssign; public double getMinusAssign() { return minusAssign; } public void setMinusAssign(double value) { this.minusAssign = value; } private boolean moduloAssign; public boolean getModuloAssign() { return moduloAssign; } public void setModuloAssign(boolean value) { this.moduloAssign = value; } protected void clearEvents() { e1 = false; } } protected SCInterfaceImpl sCInterface; private boolean initialized = false; public enum State { main_region_StateA, main_region_StateB, $NullState$ }; private final State[] stateVector = new State[1]; private int nextStateIndex; public RealExpressionsStatemachine() { sCInterface = new SCInterfaceImpl(); } public void init() { this.initialized = true; for (int i = 0; i < 1; i++) { stateVector[i] = State.$NullState$; } clearEvents(); clearOutEvents(); sCInterface.setMyReal1(0.0); sCInterface.setMyReal2(0.0); sCInterface.setMyFloat(1.0); sCInterface.setMyDouble(2.0); sCInterface.setLess(false); sCInterface.setGreater(false); sCInterface.setEqualOrLess(false); sCInterface.setEqualOrGreater(false); sCInterface.setEqual(false); sCInterface.setNotEqual(false); sCInterface.setPlus(false); sCInterface.setMinus(false); sCInterface.setMultiply(false); sCInterface.setDivision(false); sCInterface.setModulo(false); sCInterface.setNegat(0.0); sCInterface.setComplement(false); sCInterface.setMultiAssign(2.2); sCInterface.setDivAssign(22.79); sCInterface.setPlusAssign(2.2); sCInterface.setMinusAssign(8.6); sCInterface.setModuloAssign(false); } public void enter() { if (!initialized) { throw new IllegalStateException( "The state machine needs to be initialized first by calling the init() function."); } enterSequence_main_region_default(); } public void exit() { exitSequence_main_region(); } /** * @see IStatemachine#isActive() */ public boolean isActive() { return stateVector[0] != State.$NullState$; } /** * Always returns 'false' since this state machine can never become final. * * @see IStatemachine#isFinal() */ public boolean isFinal() { return false; } /** * This method resets the incoming events (time events included). */ protected void clearEvents() { sCInterface.clearEvents(); } /** * This method resets the outgoing events. */ protected void clearOutEvents() { } /** * Returns true if the given state is currently active otherwise false. */ public boolean isStateActive(State state) { switch (state) { case main_region_StateA: return stateVector[0] == State.main_region_StateA; case main_region_StateB: return stateVector[0] == State.main_region_StateB; default: return false; } } public SCInterface getSCInterface() { return sCInterface; } public void raiseE1() { sCInterface.raiseE1(); } public double getMyReal1() { return sCInterface.getMyReal1(); } public void setMyReal1(double value) { sCInterface.setMyReal1(value); } public double getMyReal2() { return sCInterface.getMyReal2(); } public void setMyReal2(double value) { sCInterface.setMyReal2(value); } public double getMyFloat() { return sCInterface.getMyFloat(); } public void setMyFloat(double value) { sCInterface.setMyFloat(value); } public double getMyDouble() { return sCInterface.getMyDouble(); } public void setMyDouble(double value) { sCInterface.setMyDouble(value); } public boolean getLess() { return sCInterface.getLess(); } public void setLess(boolean value) { sCInterface.setLess(value); } public boolean getGreater() { return sCInterface.getGreater(); } public void setGreater(boolean value) { sCInterface.setGreater(value); } public boolean getEqualOrLess() { return sCInterface.getEqualOrLess(); } public void setEqualOrLess(boolean value) { sCInterface.setEqualOrLess(value); } public boolean getEqualOrGreater() { return sCInterface.getEqualOrGreater(); } public void setEqualOrGreater(boolean value) { sCInterface.setEqualOrGreater(value); } public boolean getEqual() { return sCInterface.getEqual(); } public void setEqual(boolean value) { sCInterface.setEqual(value); } public boolean getNotEqual() { return sCInterface.getNotEqual(); } public void setNotEqual(boolean value) { sCInterface.setNotEqual(value); } public boolean getPlus() { return sCInterface.getPlus(); } public void setPlus(boolean value) { sCInterface.setPlus(value); } public boolean getMinus() { return sCInterface.getMinus(); } public void setMinus(boolean value) { sCInterface.setMinus(value); } public boolean getMultiply() { return sCInterface.getMultiply(); } public void setMultiply(boolean value) { sCInterface.setMultiply(value); } public boolean getDivision() { return sCInterface.getDivision(); } public void setDivision(boolean value) { sCInterface.setDivision(value); } public boolean getModulo() { return sCInterface.getModulo(); } public void setModulo(boolean value) { sCInterface.setModulo(value); } public double getNegat() { return sCInterface.getNegat(); } public void setNegat(double value) { sCInterface.setNegat(value); } public boolean getComplement() { return sCInterface.getComplement(); } public void setComplement(boolean value) { sCInterface.setComplement(value); } public double getMultiAssign() { return sCInterface.getMultiAssign(); } public void setMultiAssign(double value) { sCInterface.setMultiAssign(value); } public double getDivAssign() { return sCInterface.getDivAssign(); } public void setDivAssign(double value) { sCInterface.setDivAssign(value); } public double getPlusAssign() { return sCInterface.getPlusAssign(); } public void setPlusAssign(double value) { sCInterface.setPlusAssign(value); } public double getMinusAssign() { return sCInterface.getMinusAssign(); } public void setMinusAssign(double value) { sCInterface.setMinusAssign(value); } public boolean getModuloAssign() { return sCInterface.getModuloAssign(); } public void setModuloAssign(boolean value) { sCInterface.setModuloAssign(value); } private boolean check_main_region_StateA_tr0_tr0() { return sCInterface.e1; } private void effect_main_region_StateA_tr0() { exitSequence_main_region_StateA(); enterSequence_main_region_StateB_default(); } /* Entry action for state 'StateA'. */ private void entryAction_main_region_StateA() { sCInterface.setMyReal1(5.3); sCInterface.setMyReal2(10.6); sCInterface.setMyFloat(3.3); sCInterface.setMyDouble(4.4); } /* Entry action for state 'StateB'. */ private void entryAction_main_region_StateB() { sCInterface.setLess(sCInterface.myReal1<sCInterface.myReal2); sCInterface.setGreater(sCInterface.myReal1>sCInterface.myReal2); sCInterface.setEqualOrLess(sCInterface.myReal1<=sCInterface.myReal2); sCInterface.setEqualOrGreater(sCInterface.myReal1>=sCInterface.myReal2); sCInterface.setEqual(sCInterface.myReal1==sCInterface.myReal2); sCInterface.setNotEqual(sCInterface.myReal1!=sCInterface.myReal2); sCInterface.setPlus((15.89<=(sCInterface.myReal1+sCInterface.myReal2) && (sCInterface.myReal1+sCInterface.myReal2)<=16.91)); sCInterface.setMinus((5.29<=(sCInterface.myReal2-sCInterface.myReal1) && (sCInterface.myReal1-sCInterface.myReal2)<=5.31)); sCInterface.setMultiply((56.17<=(sCInterface.myReal1*sCInterface.myReal2) && (sCInterface.myReal1*sCInterface.myReal2)<=56.19)); sCInterface.setDivision((1.9<=(sCInterface.myReal2/sCInterface.myReal1) && (sCInterface.myReal1/sCInterface.myReal2)<=2.1)); sCInterface.setModulo((-0.1<=(sCInterface.myReal2%sCInterface.myReal1) && (sCInterface.myReal1%sCInterface.myReal2)<=0.1)); sCInterface.setNegat(-sCInterface.myReal1); sCInterface.setMultiAssign(sCInterface.getMultiAssign() * sCInterface.myReal1); sCInterface.setDivAssign(sCInterface.getDivAssign() / sCInterface.myReal1); sCInterface.setPlusAssign(sCInterface.getPlusAssign() + sCInterface.myReal1); sCInterface.setMinusAssign(sCInterface.getMinusAssign() - sCInterface.myReal1); sCInterface.setModuloAssign((-0.1<=(sCInterface.assignMyReal1(sCInterface.getMyReal1() % sCInterface.myReal1)))); } /* 'default' enter sequence for state StateA */ private void enterSequence_main_region_StateA_default() { entryAction_main_region_StateA(); nextStateIndex = 0; stateVector[0] = State.main_region_StateA; } /* 'default' enter sequence for state StateB */ private void enterSequence_main_region_StateB_default() { entryAction_main_region_StateB(); nextStateIndex = 0; stateVector[0] = State.main_region_StateB; } /* 'default' enter sequence for region main region */ private void enterSequence_main_region_default() { react_main_region__entry_Default(); } /* Default exit sequence for state StateA */ private void exitSequence_main_region_StateA() { nextStateIndex = 0; stateVector[0] = State.$NullState$; } /* Default exit sequence for state StateB */ private void exitSequence_main_region_StateB() { nextStateIndex = 0; stateVector[0] = State.$NullState$; } /* Default exit sequence for region main region */ private void exitSequence_main_region() { switch (stateVector[0]) { case main_region_StateA: exitSequence_main_region_StateA(); break; case main_region_StateB: exitSequence_main_region_StateB(); break; default: break; } } /* The reactions of state StateA. */ private void react_main_region_StateA() { if (check_main_region_StateA_tr0_tr0()) { effect_main_region_StateA_tr0(); } } /* The reactions of state StateB. */ private void react_main_region_StateB() { } /* Default react sequence for initial entry */ private void react_main_region__entry_Default() { enterSequence_main_region_StateA_default(); } public void runCycle() { if (!initialized) throw new IllegalStateException( "The state machine needs to be initialized first by calling the init() function."); clearOutEvents(); for (nextStateIndex = 0; nextStateIndex < stateVector.length; nextStateIndex++) { switch (stateVector[nextStateIndex]) { case main_region_StateA: react_main_region_StateA(); break; case main_region_StateB: react_main_region_StateB(); break; default: // $NullState$ } } clearEvents(); } }