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

/home/pauldt/projects/IDEA/IDEA-ALL/IDEA-DEV/Core/PlanServer/Includes/PslTokenImpl.hh

Go to the documentation of this file.
00001 // -*- Mode: c++ -*-
00002 //      CVS: $Id: PslTokenImpl.hh,v 1.25 2005/11/16 21:42:04 rijsman Exp $
00003 //      Tag: $name$
00004 //     Info: $CVSROOT/IDEA-DEV/COPYRIGHT
00005 #ifndef PSL_TOKEN_IMPL_HEADER_
00006 #define PSL_TOKEN_IMPL_HEADER_
00007 
00008 #include "TimeBasics.hh"
00009 
00010 #include "PslContainers.hh"
00011 #include "TokenLocation.hh"
00012 
00013 namespace IDEA
00014 {
00015   class PslDatabase;
00016   class PslVariable;
00017 
00025   class PslTokenImpl
00026   {
00027     friend class PslToken;
00028   public:
00029     virtual ~PslTokenImpl();
00030 
00031     void endAt( const Time& time );
00032 
00033     virtual void commit() = 0;
00034     virtual bool isCommitted() const = 0;
00035     virtual bool canBeCommitted() const = 0;
00036     const std::string& getComRelayName() const;
00037     const PslDatabase* getDatabase() const;
00038     virtual Time getEarliestEndTime() const = 0;
00039     virtual Time getEarliestStartTime() const = 0;
00040     virtual Time getMaximumDuration() const = 0;
00041     virtual Time getMinimumDuration() const = 0;
00042     unsigned int getExternalTokenId( bool externalize );
00043     virtual int getId() const = 0;
00044     virtual Time getLatestEndTime() const = 0;
00045     virtual Time getLatestStartTime() const = 0;
00046     const std::string& getName() const;
00047     const PslParameter* getParameter( const std::string& compareString) const;
00048     const PslParameter* getParameter( int index ) const;
00049     PslParameterList getParameters() const;
00050     const PslPredicate* getPredicate() const;
00051     const PslParameter* getReturnStatusParameter() const;
00052     const PslParameter* getReturnStatusFlagParameter() const;
00053     const TokenLocation& getSourceLocation() const;
00054     const TokenLocation& getTargetLocation();
00055     const PslTimeline* getTimeline();
00056     bool hasDirectSuccessor( const PslTimeline* tl  ) const;
00057     virtual bool endsAtStart( const PslToken* token ) const = 0;
00058     virtual void setSuccessor( const PslToken* token ) const = 0;
00059     bool isControllable();
00060     bool isExecutable();
00061     bool isExecuting( const Time& t ) const;
00062     bool isGoal();
00066     bool isEnabled() const;
00070     void setEnabled( bool value );
00071     virtual void print( std::ostream& os ) const;
00072     bool returnsStatus() const;
00073     bool isAuthorized() const;
00080     virtual void setEarliestEndTime( const Time& value ) = 0;
00086     void constrainEndTime( const PslToken* token, const Time& value, int authority );
00092     void constrainStartTime( const PslToken* token, const Time& value, int authority );
00099     virtual void setLatestEndTime( const Time& value ) = 0;
00106     virtual void setLatestStartTime( const Time& value ) = 0;
00113     virtual void setEarliestStartTime( const Time& value ) = 0;
00114     void startAt( const Time& time );
00115     bool usesCPU() const;
00116     const PslVariable* getStartVariable();
00117     const PslVariable* getEndVariable();
00118     virtual void finalize();
00119     bool isFinalized() const;
00120     int getExternalId( const PslToken* token );
00125     virtual bool endsNoEarlierThanEnd(const PslToken * token) const = 0; 
00126   protected:
00127     PslTokenImpl( const PslDatabase* database, 
00128                   const PslTimeline* timeline,
00129                   const PslPredicate* predicate );
00130 
00131     PslTokenImpl( const PslDatabase* database, 
00132                   const PslTimeline* timeline,
00133                   const PslPredicate* predicate,
00134                   int tokenId,
00135                   const TokenLocation& source,
00136                   const std::string& comRelayName);
00137 
00138     PslTokenImpl( const PslDatabase* database, 
00139                   const PslPredicate* predicate,
00140                   int tokenId,
00141                   const TokenLocation& source,
00142                   const std::string& comRelayName);
00146     Int2PslParameterMap m_Parameters;
00147   private:
00148     virtual const PslTimeline* retrieveTimelineAllocation() const = 0;
00149 
00150     void activateActiveConstraints( const PslToken* token, int authority );
00151     void activateTimelineAssignedConstraints( int authority );
00152     void activateTimeConstraint( const PslToken* token, int authority );
00153 
00154     void deActivateActiveConstraints();
00155     void deActivateTimelineAssignedConstraints();
00156     void deActivateTimeConstraint();
00157 
00158     void createConstraints( const PslToken* token ); 
00159 
00160     void initialize( const PslToken* token );
00161 
00162     virtual void initializeExtended( const PslToken* token );
00163     
00168     virtual void createParameters( const PslToken* token ) = 0;
00169 
00170     virtual const PslVariable* createEndVariable() = 0;
00171 
00172     virtual const PslVariable* createStartVariable() = 0;
00173 
00174     const PslDatabase* m_Database;
00178     TokenLocation m_SourceLocation;
00182     std::string m_ComRelayName;
00186     const PslTimeline* m_Timeline; // see remarks in getTimeline application about this attribute
00190     const PslPredicate* m_Predicate;
00196     PslConstraint* m_TimeConstraint;
00197     PslConstraint* m_StartTimeConstraint;
00198     PslConstraint* m_EndTimeConstraint;
00199 
00200     const PslVariable* m_Start;
00201     const PslVariable* m_End;
00202 
00203     int m_ExternalId;
00204 
00208     //m_ParametersInitialized;
00209 
00213     bool m_Finalized;
00214     bool m_Enabled;
00215   };
00216 }
00217 
00218 
00219 
00220 #endif //PSL_TOKEN_IMPL_HEADER_

Contact information
© IDEA
Generated on Fri Feb 3 17:09:41 2006 for IDEA.