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/Modules/PLASMA/GoalLoader/Includes/GoalTokenDecisionPoint.hh

Go to the documentation of this file.
00001 // -*- Mode: C++ -*-
00002 //      CVS: $Id: GoalTokenDecisionPoint.hh,v 1.13 2005/11/15 18:26:50 rijsman Exp $
00003 //      Tag: $name$
00004 //     Info: $CVSROOT/COPYRIGHT
00005 
00006 #ifndef GOAL_TOKEN_DECISION_POINT_HEADER_FILE_
00007 #define GOAL_TOKEN_DECISION_POINT_HEADER_FILE_
00008 
00009 #include "TokenDecisionPoint.hh"
00010 #include "PlanReader.hh"
00011 #include "PslDatabase.hh"
00012 #include "TimeBasics.hh"
00013 
00014 namespace IDEA
00015 {
00021   class ActiveTokenDecisionPoint: 
00022     public EUROPA::TokenDecisionPoint
00023   {
00024   public:
00028     ActiveTokenDecisionPoint(const EUROPA::DbClientId& dbClient, 
00029                              const EUROPA::TokenId& token, 
00030                              const EUROPA::OpenDecisionManagerId& odm, 
00031                              const EUROPA::TokenId& predecessor);
00035     virtual bool assign();
00036   protected:
00037     friend class GoalTokenDecision;
00038 
00042     virtual void initializeChoices();    
00043   private:
00047     EUROPA::TokenId m_predecessor;
00048   };
00049 
00055   class GoalTokenDecision: 
00056     public EUROPA::DecisionPoint
00057   {
00058   public:
00062     GoalTokenDecision(PlanReader::ObjectData const & object,
00063                       std::string const & attribute,
00064                       PlanReader::TokenData const & token,
00065                       const EUROPA::DbClientId& dbClient,
00066                       const PslDatabase *db,
00067                       const EUROPA::OpenDecisionManagerId& odm,
00068                       const int plannerAuthority,
00069                       const bool isFirstToken, const bool isLastToken,
00070                       const Time plannerHorizonStart,
00071                       const Time plannerHorizonEnd,
00072                       const GoalTokenDecision * previousDecision,
00073                       bool controlTimes=true, bool mergeFirstToken=true,
00074                       bool freezeTokenStartEndTimes = true,
00075                       bool useGeneralTimelines = false);
00079     virtual ~GoalTokenDecision() {}
00083     virtual bool assign();
00087     virtual bool retract();
00093     virtual bool hasRemainingChoices();
00097     virtual void print(std::ostream& os) const;
00098 
00099     void initialize();
00100   private:
00104     void adjustFirstNewTokenTimes(Time & earliestStartTime, 
00105                                   Time & latestStartTime, 
00106                                   Time & earliestEndTime);
00107 
00111     EUROPA::TokenDecisionPointId m_tokenDecision;
00115     EUROPA::TokenId m_token;
00119     PlanReader::ObjectData const m_object;
00123     std::string const m_attribute;
00127     PlanReader::TokenData const m_tokenData;
00131     const PslDatabase *m_db;
00135     EUROPA::OpenDecisionManagerId m_odm;
00136 
00137     EUROPA::ConstraintId m_StartConstraint;
00138     EUROPA::ConstraintId m_EndConstraint;
00142     const int m_plannerAuthority;
00146     const bool m_isFirstToken;
00150     const bool m_isLastToken;
00154     const Time m_plannerHorizonStart;
00158     const Time m_plannerHorizonEnd;
00162     const GoalTokenDecision * m_previousDecision;
00167     bool createTokenDecision();
00168     bool m_controlTimes;
00171     bool m_mergeFirstToken;
00180     bool m_restrictTokenTimesBaseDomains;
00188     bool m_useGeneralTimelines;
00194     void cropTokenEndTime(Time & latestEndTime);
00198     void adjustFirstTokenTimes(Time & earliestStartTime, 
00199                                Time & latestStartTime, 
00200                                Time & earliestEndTime);
00204     void adjustLastTokenTimes(Time & latestStartTime, 
00205                               Time & earliestEndTime);
00206   };
00207 
00211   typedef EUROPA::Id<GoalTokenDecision> GoalTokenDecisionId;
00212 }
00213 
00214 #endif //GOAL_TOKEN_DECISION_POINT_HEADER_FILE_

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