#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.32.1.6535.66c005ced modeling language!

from enum import Enum, auto

class A_Guard():
    #------------------------
    # MEMBER VARIABLES
    #------------------------
    #A_Guard State Machines
    class Status(Enum):
        def _generate_next_value_(name, start, count, last_values):
            return name
        def __str__(self):
            return str(self.value)
        S1 = auto()
        S2 = auto()
        S3 = auto()

    #------------------------
    # CONSTRUCTOR
    #------------------------
    def __init__(self):
        self._status = None
        self.setStatus(A_Guard.Status.S1)

    #------------------------
    # INTERFACE
    #------------------------
    def getStatusFullName(self):
        answer = self._status.__str__()
        return answer

    def getStatus(self):
        return self._status

    def e1(self, myB):
        wasEventProcessed = False
        aStatus = self._status
        if aStatus == A_Guard.Status.S1 :
            if self.checkGuard1(myB) :
                self.setStatus(A_Guard.Status.S2)
                wasEventProcessed = True
        else :
            # Other states do respond to this event
            pass
        return wasEventProcessed

    def e2(self, myB, mySecondB):
        wasEventProcessed = False
        aStatus = self._status
        if aStatus == A_Guard.Status.S2 :
            if self.checkGuard1(myB) :
                self.setStatus(A_Guard.Status.S3)
                wasEventProcessed = True
        elif aStatus == A_Guard.Status.S3 :
            if self.checkGuard2(myB, mySecondB) :
                self.setStatus(A_Guard.Status.S1)
                wasEventProcessed = True
        else :
            # Other states do respond to this event
            pass
        return wasEventProcessed

    def setStatus(self, aStatus):
        self._status = aStatus

    def delete(self):
        pass


    def checkGuard1(self, myB):
        return True


    def checkGuard2(self, myB, mySecondB):
        return True

