Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

PsnFrameScheduler Class Reference

the basic frame scheduler, where each scheduled object is queued on the appropriate frame for multifrequential execution More...

#include <PsnFrameScheduler.h>

Inheritance diagram for PsnFrameScheduler:

Inheritance graph
[legend]
Collaboration diagram for PsnFrameScheduler:

Collaboration graph
[legend]
List of all members.

Public Methods

 PsnFrameScheduler (unsigned int numberOfSteps)
 constructor, specifying the numeber of different simulation stpes in a simualtion cycle

virtual ~PsnFrameScheduler ()
 destructor

virtual void addToScheduable (PsnReferenceObjectHandle *ref, unsigned int when)
 add an object to the list of scheduable objects

virtual void removeFromScheduable (PsnReferenceObjectHandle *ref)
 remove an object from the list of scheduable objects

virtual void schedule (PsnReferenceObjectHandle *ref)
 mark an object as active

virtual void unschedule (PsnReferenceObjectHandle *ref)
 mark an object as inactive

virtual void runStep (unsigned int which)
 run the scheduler for a certain simulation step


Protected Attributes

PsnDoubleList ** Frames
 tha data strcuture associated to the scheduler


Detailed Description

the basic frame scheduler, where each scheduled object is queued on the appropriate frame for multifrequential execution

Definition at line 25 of file PsnFrameScheduler.h.


Constructor & Destructor Documentation

PsnFrameScheduler::PsnFrameScheduler unsigned int    numberOfSteps
 

constructor, specifying the numeber of different simulation stpes in a simualtion cycle

Definition at line 25 of file PsnFrameScheduler.cxx.

References PsnScheduler::_numberOfSteps, and Frames.

00025                                                                :
00026    PsnScheduler(numberOfSteps)
00027 {
00028    Frames = new PsnDoubleList *[_numberOfSteps];
00029    for(int i = 0 ; i < _numberOfSteps ; i++) {
00030 
00031       Frames[i]=new PsnDoubleList();
00032 
00033    }  
00034 }

PsnFrameScheduler::~PsnFrameScheduler   [virtual]
 

destructor

Definition at line 36 of file PsnFrameScheduler.cxx.

References PsnScheduler::_numberOfSteps, and Frames.

00036                                        {
00037    if (Frames!=NULL) {
00038       for(int i = 0 ; i <_numberOfSteps ; i ++) {
00039          if(Frames[ i ]!=NULL) delete Frames[i];
00040       }
00041       delete [] Frames;
00042    }
00043 }


Member Function Documentation

void PsnFrameScheduler::addToScheduable PsnReferenceObjectHandle   ref,
unsigned int    when
[virtual]
 

add an object to the list of scheduable objects

Parameters:
ref the reference handler of the added object
when the index in the cycle of the simulation step where the object should be added

Implements PsnScheduler.

Reimplemented in PsnBenchScheduler, and PsnReactFrameScheduler.

Definition at line 46 of file PsnFrameScheduler.cxx.

References Frames, and PsnDoubleList::insert().

Referenced by PsnBenchScheduler::addToScheduable().

00046                                                                                           {
00047 
00048    Frames[when]->insert(ref) ;
00049    
00050 }

void PsnFrameScheduler::removeFromScheduable PsnReferenceObjectHandle   ref [virtual]
 

remove an object from the list of scheduable objects

Implements PsnScheduler.

Reimplemented in PsnBenchScheduler, and PsnReactFrameScheduler.

Definition at line 52 of file PsnFrameScheduler.cxx.

References PsnScheduler::_numberOfSteps, Frames, and remove().

Referenced by PsnBenchScheduler::removeFromScheduable().

00052                                                                             {
00053 
00054    for (int i = 0 ; i < _numberOfSteps ; i++ ) {
00055 
00056       Frames[i] -> remove ( ref ) ;
00057    }
00058 }

void PsnFrameScheduler::runStep unsigned int    which [virtual]
 

run the scheduler for a certain simulation step

Parameters:
which the index in the cycle of the step to be run

Implements PsnScheduler.

Reimplemented in PsnBenchScheduler, and PsnReactFrameScheduler.

Definition at line 83 of file PsnFrameScheduler.cxx.

References PsnDoubleList::begin(), Frames, PsSimulatedObject::getName(), PsnObjectHandle::getSimulatedObject(), PsnDoubleListElement::listeElem, and PsnDoubleList::next().

00084 {
00085 #if defined (_DEBUGSCHEDULER) || defined (_DEBUGEXEC)
00086    cerr<<"PsnFrameScheduler::runStep: Running step "<<which<<endl;
00087 #endif
00088    PsnDoubleListElement * pListe ;
00089    for (pListe = Frames [which]->begin () ;
00090         pListe != NULL ; 
00091         pListe = Frames[which]->next (pListe)) {
00092 #if defined (_DEBUGSCHEDULER) || defined (_DEBUGEXEC)
00093       cerr<<"Calling compute of object "<<(*pListe).listeElem->getSimulatedObject ().getName()<<" ";
00094 #endif
00095       (*pListe).listeElem->compute () ;
00096 #if defined (_DEBUGSCHEDULER) || defined (_DEBUGEXEC)
00097       cerr<<"done "<<endl;
00098 #endif
00099    }
00100 
00101 }

void PsnFrameScheduler::schedule PsnReferenceObjectHandle   ref [virtual]
 

mark an object as active

Implements PsnScheduler.

Reimplemented in PsnReactFrameScheduler.

Definition at line 60 of file PsnFrameScheduler.cxx.

References PsnScheduler::_numberOfSteps, and Frames.

00060                                                                {
00061 
00062    for (int i = 0 ; i < _numberOfSteps ; i++ ) {
00063 
00064       Frames[i] -> activate ( ref ) ;
00065 
00066    }
00067 
00068 
00069 }

void PsnFrameScheduler::unschedule PsnReferenceObjectHandle   ref [virtual]
 

mark an object as inactive

Implements PsnScheduler.

Reimplemented in PsnReactFrameScheduler.

Definition at line 71 of file PsnFrameScheduler.cxx.

References PsnScheduler::_numberOfSteps, and Frames.

00071                                                                  {
00072 
00073    for (int i = 0 ; i < _numberOfSteps ; i++ ) {
00074 
00075       Frames[i] -> suspend ( ref ) ;
00076 
00077    }
00078 
00079 
00080 }


Member Data Documentation

PsnDoubleList* * PsnFrameScheduler::Frames [protected]
 

tha data strcuture associated to the scheduler

Definition at line 57 of file PsnFrameScheduler.h.

Referenced by addToScheduable(), PsnFrameScheduler(), removeFromScheduable(), runStep(), PsnBenchScheduler::runStep(), schedule(), unschedule(), and ~PsnFrameScheduler().


The documentation for this class was generated from the following files:
logo OpenMask

Documentation generated on Mon Nov 25 15:26:01 2002

Generated with doxygen 1.2.12 by Dimitri van Heesch ,   1997-2001