[ Event Handling | Reference Manual | Alphabetic Index ]

# events_after(++Events)

Set up a series of after events Events.

Events
  A list of the form Event-Time or Event-every(Time)

## Description

Events is a list of after events where each element of the list specifies one after event. Each element is either in the form of EventName-Time or EventName-every(Time) where the first form is equivalent to event_after(EventName, Time) and the second to event_after_every(EventName, Time). The difference between using a single events_after/1 and multiple calls to event_after/2, event_after/3 and event_after_every/2 to set up a series of after events is that with events_after/1, all the events are set up as a unit, and it is guaranteed that the relative orderings between the events are preserved, and that no after events will be raised until all the specified events have been set up.

The main use of events_after/1 is for restart event that have been cancelled previously with cancel_after_event/2.

See event_after/2, event_after/3 or event_after_every/2 for more details on after events.

### Modes and Determinism

- events_after(++) is det

### Exceptions

(4) instantiation fault
  Events is not instantiated.
(5) type error
  Events is not a list of after events of the form Event-Time or Event-every(Time), where Event is an atom or a handle and Time is a positive (non-breal) number.

## Examples

        % set event handlers to write the event name
        ?- set_event_handler(e1, writeln/1),
        	set_event_handler(e2, writeln/1).
        Yes (0.00s cpu)

        ?- events_after([e1-every(0.2), e2-0.5]),
        	repeat,fail.
        e1
        e1
        e2
        e1
        e1
        e1
        ^C
        interruption: type a, b, c, e, or h for help : ? a
        abort
        Aborting execution ...
        Abort

        % cancel further e1 events
        ?- cancel_after_event(e1, Cancelled).
        Cancelled = [e1 - every(0.2)]
        Yes (0.00s cpu)

        % e2 was already raised, nothing to cancel
        ?- cancel_after_event(e2, Cancelled).
        Cancelled = []
        Yes (0.00s cpu)

        % restart the cancelled events
        ?- events_after([e1 - every(0.2)]),
    	    repeat, fail.
        e1
        e1
        e1
        e1
        ...

## See Also

event_after / 2, event_after / 3, event_after_every / 2, cancel_after_event / 2, events_after / 1, event / 1, set_event_handler / 2, current_after_events / 1, event_create / 3, event_retrieve / 3, get_flag / 2