The simulation package provides the following classes: simulation (which contains the scheduler), event (representing the events), entity (representing processes consisting of events), generator (which provides a variety of random distribution functions), resource (to model passive objects conveniently), histogram (to plot the results of a simulation) and analysis (to perform statistical analyses on the results).
The class event (used in the simulation package) contains functions to determine the status of an event. For example, an event may be conditional (which means that it will be tried for each cycle of the scheduler) or pending (which means that its activation will be delayed until it becomes active or conditional).
The library also contains a class entity representing processes, or active objects. An entity may be regarded as a 'structured event', that is as an active object with phases in its life-cycle. In our approach, however, an explicit switch on the entity's phases must be included in the the definition of the event.