Package org.jcsp.lang

Class InlineAlternative

java.lang.Object
org.jcsp.lang.Guard
org.jcsp.lang.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
    If used as a top level ALT, the work will be delegated to this
    private int
    Index to favour (fair / pri)
    private final Guard[]
    The guards
    private final InlineAlternative[]
    Nested ALTs
    private long
    Shortest alarm set by a timer
    static final int
    Flags to control behaviour of this ALT if used as a guard.
    static final int
    Flags to control behaviour of this ALT if used as a guard.
    static final int
    Flags to control behaviour of this ALT if used as a guard.
    private boolean[]
    The preconditions set for the ALT when it is being used as a guard.
    private int
    Index last selected
    private int
    Mode of the select
    private int
    Timeout index
    private final CSTimer[]
    The timer guards
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new one
    InlineAlternative(Guard[] guards, int mode)
    Creates a new one
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) boolean
    Disable this ALT as a guard within its parent ALT.
    (package private) boolean
    Enable this ALT as a guard within its parent ALT.
    int
    Creates an Alternative (if needed) and delegates the call to it.
    getGuardByIndex(int index)
    Returns the guard object at a given index.
    int
    Returns the index of the guard obtained by a call to select() or if this guard became ready within its parent ALT.
    Returns the actual guard object corresponding to the selected guard.
    int
    Creates an Alternative (if needed) and delegates the call to it.
    int
    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 org.jcsp.lang.Guard

    schedule

    Methods inherited from class java.lang.Object

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

    • MODE_ARBITRARY

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

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

      public static final int MODE_PRI
      Flags to control behaviour of this ALT if used as a guard.
      See Also:
    • 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
    • ialts

      private final InlineAlternative[] ialts
      Nested ALTs
    • timeoutIndex

      private int timeoutIndex
      Timeout index
    • minAlarm

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

    • InlineAlternative

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

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

    • 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