Package org.jcsp.lang

Class InlineAlternative


  • public class InlineAlternative
    extends Guard
    This class is experimental (i.e. not properly documented yet). It is intended to allow Alternatives to be nested.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Alternative alt
      If used as a top level ALT, the work will be delegated to this
      private int favourite
      Index to favour (fair / pri)
      private Guard[] guard
      The guards
      private InlineAlternative[] ialts
      Nested ALTs
      private long minAlarm
      Shortest alarm set by a timer
      static int MODE_ARBITRARY
      Flags to control behaviour of this ALT if used as a guard.
      static int MODE_FAIR
      Flags to control behaviour of this ALT if used as a guard.
      static int MODE_PRI
      Flags to control behaviour of this ALT if used as a guard.
      private boolean[] preconditions
      The preconditions set for the ALT when it is being used as a guard.
      private int selected
      Index last selected
      private int selectMode
      Mode of the select
      private int timeoutIndex
      Timeout index
      private CSTimer[] timers
      The timer guards
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) boolean disable()
      Disable this ALT as a guard within its parent ALT.
      (package private) boolean enable​(Alternative alt)
      Enable this ALT as a guard within its parent ALT.
      int fairSelect()
      Creates an Alternative (if needed) and delegates the call to it.
      Guard getGuardByIndex​(int index)
      Returns the guard object at a given index.
      int getSelected()
      Returns the index of the guard obtained by a call to select() or if this guard became ready within its parent ALT.
      Guard getSelectedGuard()
      Returns the actual guard object corresponding to the selected guard.
      int priSelect()
      Creates an Alternative (if needed) and delegates the call to it.
      int select()
      Creates an Alternative (if needed) and delegates the call to it.
      void setPreconditionByIndex​(int index, boolean on)
      Alters the precondition on a guard.
      void setPreconditions​(boolean[] precons)
      Establishes a precondition array that will be used by default in calls to select().
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • MODE_ARBITRARY

        public static final int MODE_ARBITRARY
        Flags to control behaviour of this ALT if used as a guard.
        See Also:
        Constant Field Values
      • MODE_FAIR

        public static final int MODE_FAIR
        Flags to control behaviour of this ALT if used as a guard.
        See Also:
        Constant Field Values
      • MODE_PRI

        public static final int MODE_PRI
        Flags to control behaviour of this ALT if used as a guard.
        See Also:
        Constant Field Values
      • alt

        private Alternative alt
        If used as a top level ALT, the work will be delegated to this
      • selectMode

        private int selectMode
        Mode of the select
      • selected

        private int selected
        Index last selected
      • favourite

        private int favourite
        Index to favour (fair / pri)
      • preconditions

        private boolean[] preconditions
        The preconditions set for the ALT when it is being used as a guard.
      • guard

        private final Guard[] guard
        The guards
      • timers

        private final CSTimer[] timers
        The timer guards
      • timeoutIndex

        private int timeoutIndex
        Timeout index
      • minAlarm

        private long minAlarm
        Shortest alarm set by a timer
    • Constructor Detail

      • InlineAlternative

        public InlineAlternative​(Guard[] guards)
        Creates a new one
      • InlineAlternative

        public InlineAlternative​(Guard[] guards,
                                 int mode)
        Creates a new one
    • Method Detail

      • getSelected

        public int getSelected()
        Returns the index of the guard obtained by a call to select() or if this guard became ready within its parent ALT.
      • setPreconditions

        public void setPreconditions​(boolean[] precons)
        Establishes a precondition array that will be used by default in calls to select(). This is useful when the ALT is used as a guard within another ALT.
      • setPreconditionByIndex

        public void setPreconditionByIndex​(int index,
                                           boolean on)
        Alters the precondition on a guard.
      • getSelectedGuard

        public Guard getSelectedGuard()
        Returns the actual guard object corresponding to the selected guard. For example it can return the channel or the ALT object.
      • getGuardByIndex

        public Guard getGuardByIndex​(int index)
        Returns the guard object at a given index. For example to obtain a channel or ALT object.
      • select

        public int select()
        Creates an Alternative (if needed) and delegates the call to it.
      • priSelect

        public int priSelect()
        Creates an Alternative (if needed) and delegates the call to it.
      • fairSelect

        public int fairSelect()
        Creates an Alternative (if needed) and delegates the call to it.
      • enable

        boolean enable​(Alternative alt)
        Enable this ALT as a guard within its parent ALT. This will enable all of its guards.
        Specified by:
        enable in class Guard
        Parameters:
        alt - the Alternative class that is controlling the selection
        Returns:
        true if and only if the event is ready
      • disable

        boolean disable()
        Disable this ALT as a guard within its parent ALT. This will disable all of its guards.
        Specified by:
        disable in class Guard
        Returns:
        true if and only if the event was ready