ptolemy.actor.sched
Class ScheduleElement

java.lang.Object
  extended by ptolemy.actor.sched.ScheduleElement
Direct Known Subclasses:
Firing, Schedule

public abstract class ScheduleElement
extends java.lang.Object

This is an abstract base class for a schedule element. Instances of the Schedule and Firing subclasses are used to construct a static schedule. A schedule can be thought of as a structure that consists of an iteration count and a list of schedule elements. A schedule element can contain an actor, or it can contain another schedule. It is usually required that, all of the lowest-level schedule elements must contain an actor. It is up to the scheduler to enforce this, however. The Schedule class is a schedule element that contains a schedule. The Firing class is a schedule element that contains an actor. Therefore, the top-level schedule element must be an instance of Schedule, and all of the lowest-level elements must each be an instance of Firing.

This base class implements the getIterationCount() and setIterationCount() methods, which return and set the iteration count for this schedule element. A default value of 1 is used for the iteration count.

Since:
Ptolemy II 1.0
Version:
$Id: ScheduleElement.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Brian K. Vogel
See Also:
Firing, Schedule
Accepted Rating:
Yellow (chf)
Proposed Rating:
Green (vogel)

Field Summary
private  int _iterationCount
           
protected  ScheduleElement _parent
          The parent schedule of this schedule.
private  long _scheduleVersion
           
 
Constructor Summary
ScheduleElement()
          Construct a schedule element with an iteration count of 1 and with no parent schedule element.
 
Method Summary
protected  long _getVersion()
          Return the current version of this schedule element.
protected  void _incrementVersion()
          Increment the version of this schedule element and if this schedule element has a parent schedule, increment the version of the parent schedule as well.
abstract  java.util.Iterator actorIterator()
          Return the actor invocation sequence of the schedule in the form of a sequence of actors.
abstract  java.util.Iterator firingIterator()
          Return the actor invocation sequence in the form of a sequence of firings.
 int getIterationCount()
          Return the iteration count for this schedule.
 void setIterationCount(int count)
          Set the iteration count for this schedule.
 void setParent(ScheduleElement parent)
          Set the parent schedule element of this schedule element to the specified schedule element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_parent

protected ScheduleElement _parent
The parent schedule of this schedule. Null means this schedule has no parent.


_iterationCount

private int _iterationCount

_scheduleVersion

private long _scheduleVersion
Constructor Detail

ScheduleElement

public ScheduleElement()
Construct a schedule element with an iteration count of 1 and with no parent schedule element. The constructor that takes a parameter should be used when constructing a schedule element that is contained by another schedule element.

Method Detail

actorIterator

public abstract java.util.Iterator actorIterator()
Return the actor invocation sequence of the schedule in the form of a sequence of actors. All of the lowest-level nodes should be an instance of Actor. Otherwise, the returned iterator will contain null elements.

Returns:
An iterator over a sequence of actors.

firingIterator

public abstract java.util.Iterator firingIterator()
Return the actor invocation sequence in the form of a sequence of firings. All of the lowest-level nodes should be an instance of Firing, which references an actor and an iteration count. Otherwise, the returned iterator will contain null elements.

Returns:
An iterator over a sequence of firings.

getIterationCount

public int getIterationCount()
Return the iteration count for this schedule. This method returns the iteration count that was set by setIterationCount(). If setIterationCount() was never invoked, then a value of one is returned.

Returns:
The iteration count for this schedule.
See Also:
setIterationCount(int)

setIterationCount

public void setIterationCount(int count)
Set the iteration count for this schedule. The getIterationCount() method will return the value set by this method. If this method is not invoked, a default value of one will be used.

Parameters:
count - The iteration count for this schedule.
See Also:
getIterationCount()

setParent

public void setParent(ScheduleElement parent)
Set the parent schedule element of this schedule element to the specified schedule element. If this schedule element is added to another schedule element (the parent), then the add() method of the parent will invoke this method. This association is used to notify the parent schedule element when changes are made to this schedule element.

Parameters:
parent - The parent schedule element of this schedule element.

_getVersion

protected long _getVersion()
Return the current version of this schedule element. The version changes whenever a structural change is made to this schedule element.

Returns:
The current version of this schedule element.

_incrementVersion

protected void _incrementVersion()
Increment the version of this schedule element and if this schedule element has a parent schedule, increment the version of the parent schedule as well. This method will therefore cause a version update to propagate up to all parent schedule elements. This method is called when a structure change is made to this schedule element, and is also called by the immediate children of this schedule element when they are modified.