Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## umontreal.iro.lecuyer.simevents.eventlist
Interface EventList

All Superinterfaces:
  Iterable<Event>

All Known Implementing Classes:
  BinaryTree, DoublyLinked, Henriksen, RedblackTree, SplayTree

    public interface EventList

extends Iterable<Event>

An interface for implementations of event lists. Different implementations are provided in SSJ: doubly linked list, splay tree, Henrickson's method, etc. The events in the event list are objects of the class `Event`. The method `Sim.init` permits one to select the actual implementation used in a simulation.

To allow the user to print the event list, the `toString` method from the `Object` class should be reimplemented in all `EventList` implementations. It will return a string in the following format: ```Contents of the event list` event list class `:`'' for the first line and each subsequent line has format ``scheduled event time `:` event string''. The event string is obtained by calling the `toString` method of the event objects. The string should not end with the end-of-line character.

The following example is the event list of the bank example, printed at 10h30. See `examples.pdf` for more information.

     Contents of the event list SplayTree :
        10.51 : BankEv$Arrival@cfb549
        10.54 : BankEv$Departure@8a7efd
           11 : BankEv$3@86d4c1
           14 : BankEv$4@f9f9d8
           15 : BankEv$5@820dda

The event time (obtained by calling the `Event.time`) must not be modified by implementations of this interface because the `Event` class already takes care of that.

Method Summary
`void` | `add(Event ev)` Adds a new event in the event list, according to the time of `ev`.
`void` | `addAfter(Event ev, Event other)` Same as `add`, but adds the new event `ev` immediately after the event `other` in the list.
`void` | `addBefore(Event ev, Event other)` Same as `add`, but adds the new event `ev` immediately before the event `other` in the list.
`void` | `addFirst(Event ev)` Adds a new event at the beginning of the event list.
`void` | `clear()` Empties the event list, i.e., cancels all events.
`Event` | `getFirst()` Returns the first event in the event list.
`
`<E extends Event> E`
` | `getFirstOfClass(Class<E> cl)` Returns the first event of the class `E` (a subclass of `Event`) in the event list.
`Event` | `getFirstOfClass(String cl)` Returns the first event of the class `cl` (a subclass of `Event`) in the event list.
`boolean` | `isEmpty()` Returns `true` if and only if the event list is empty (no event is scheduled).
`ListIterator<Event>` | `listIterator()` Returns a list iterator over the elements of the class `Event` in this list.
`boolean` | `remove(Event ev)` Removes the event `ev` from the event list (cancels this event).
`Event` | `removeFirst()` Removes the first event from the event list (to cancel or execute this event).

Methods inherited from interface java.lang.Iterable
`iterator`

Method Detail

### isEmpty

    boolean isEmpty()

  Returns `true` if and only if the event list is empty (no event is scheduled).

  Returns:
    `true` if the event list is empty

### clear

    void clear()

  Empties the event list, i.e., cancels all events.

### add

    void add(Event ev)

  Adds a new event in the event list, according to the time of `ev`. If the event list contains events scheduled to happen at the same time as `ev`, `ev` must be added after all these events.

  Parameters:
    `ev` - event to be added

### addFirst

    void addFirst(Event ev)

  Adds a new event at the beginning of the event list. The given event `ev` will occur at the current simulation time.

  Parameters:
    `ev` - event to be added

### addBefore

    void addBefore(Event ev,
                   Event other)

  Same as `add`, but adds the new event `ev` immediately before the event `other` in the list.

  Parameters:
    `ev` - event to be added
    `other` - reference event before which `ev` will be added

### addAfter

    void addAfter(Event ev,
                  Event other)

  Same as `add`, but adds the new event `ev` immediately after the event `other` in the list.

  Parameters:
    `ev` - event to be added
    `other` - reference event after which `ev` will be added

### getFirst

    Event getFirst()

  Returns the first event in the event list. If the event list is empty, returns `null`.

  Returns:
    the first event in the event list, or `null` if the list is empty

### getFirstOfClass

    Event getFirstOfClass(String cl)

  Returns the first event of the class `cl` (a subclass of `Event`) in the event list. If no such event are found, returns `null`.

  Returns:
    the first event of class `cl`, or `null` if no such event exists in the list

### getFirstOfClass

    <E extends Event> E getFirstOfClass(Class<E> cl)

  Returns the first event of the class `E` (a subclass of `Event`) in the event list. If no such event are found, returns `null`.

  Returns:
    the first event of class `cl`, or `null` if no such event exists in the list

### listIterator

    ListIterator<Event> listIterator()

  Returns a list iterator over the elements of the class `Event` in this list.

  Returns:
    a list iterator over the elements of the class `Event` in this list

### remove

    boolean remove(Event ev)

  Removes the event `ev` from the event list (cancels this event). Returns `true` if and only if the event removal has succeeded.

  Parameters:
    `ev` - event to be removed
  Returns:
    `true` if the event was successfully removed from the list

### removeFirst

    Event removeFirst()

  Removes the first event from the event list (to cancel or execute this event). Returns the removed event. If the list is empty, then `null` is returned.

  Returns:
    the first event removed from the list, or `null` if the list is empty

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.