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/PslDatabaseImpl.hh

Go to the documentation of this file.
00001 // -*- Mode: C++ -*-
00002 //      CVS: $Id: PslDatabaseImpl.hh,v 1.15 2005/12/30 22:15:00 rijsman Exp $
00003 //      Tag: $name$
00004 //     Info: $CVSROOT/IDEA-DEV/COPYRIGHT
00005 #ifndef PLANSERVER_DATABASE_IMPL_HEADER_
00006 #define PLANSERVER_DATABASE_IMPL_HEADER_
00007 
00008 #include "PslConstantTypes.hh"
00009 #include "PslContainers.hh"
00010 #include "PslDataTypes.hh"
00011 #include "PslTrueFalseVariable.hh"
00012 
00013 #include "ThreadTools.hh"
00014 #include "TimeBasics.hh"
00015 #include "TokenLocation.hh"
00016 #include "Utilities.hh"
00017 
00018 namespace IDEA
00019 {
00020   class PslConstant;
00021   class PslConstantImpl;
00022   class PslDatabase;
00023   class PslLabelSet;
00024   class PslModelManager;
00025   class PslObject;
00026   class PslObjectImpl;
00027   class PslObjectClass;
00028   class PslPredicate;
00029   class PslTimeline;
00030   class PslToken;
00031   class PslTokenImpl;
00032   class PslVariable;
00033   class PslVariableImpl;
00034   class PslOutputFilter;
00035 
00048   class PslDatabaseImpl
00049   {
00050     friend class PslDatabase;
00051   public:
00055     virtual ~PslDatabaseImpl();
00056 
00057     void resetContent();
00058 
00059     const std::string& getAgentName() const;
00060 
00061     void setAgentName( const std::string& name );
00062 
00063 
00064     const PslToken* createToken( const PslDatabase* database,
00065                                  const PslTimeline* timeline, 
00066                                  const PslPredicate* predicate,
00067                                  const Time& earliestStart,
00068                                  const Time& latestStart,
00069                                  const Time& earliestEnd,
00070                                  const Time& latestEnd,
00071                                  unsigned int externalTokenId,
00072                                  const TokenLocation& source,
00073                                  const std::string& comRelayName);
00074 
00078     const PslToken* getToken( int uid );
00082     void removeToken( const PslTokenImpl* token );
00083     void removeVariable( const PslVariable* var );
00084 
00090     PslConstant* createConstant( const std::string& name, double value, const PslConstantType& type );
00095     PslObject* createObject( const PslDatabase* database, const PslObjectClass* objectClass, const std::string& objectName );
00099     const PslVariable* createVariable( const PslDatabase* database, int lb, int ub, const std::string& name );
00100     const PslVariable* createVariable( const PslDatabase* database, int value, const std::string& name );
00101     const PslVariable* createVariable( const PslDatabase* database, const PslDataType& type, const std::string& name );
00102     const PslVariable* createVariable( const PslDatabase* database, double lb, double ub, const std::string& name );
00103     const PslVariable* createVariable( const PslDatabase* database, double value, const std::string& name );
00104     const PslVariable* createVariable( const PslDatabase* database, const PslLabelSet* ls, const std::string& name );
00105 
00106     const PslVariable* createBoolVariable( const PslDatabase* database, const std::string& name );
00110     const PslVariable* getVariable( int key ); 
00114     PslConstant* getConstant( const std::string& name );
00118     const PslModelManager* getModelManager();
00122     const std::string& getName() const;
00126     PslObject* getObject( const std::string& name );
00130     const PslObjectList getObjects();
00137     const PslVariable* getTimeVariable();
00143     void setTime( const Time& time );
00147     void setPendingMessages( bool value );
00151     const PslTrueFalseVariable* getPendingMessageVariable() const;
00158     const Time getTime();
00162     void lock( const std::string& location );
00166     void unLock( const std::string& location );
00170     virtual void print( std::ostream& os );
00174     void setPrintFilter(PslOutputFilter* filter, bool deleteInstance );
00178     virtual bool isConsistent() = 0;
00185     virtual void setActiveUpdate() = 0;
00190     virtual void setPassiveUpdate() = 0;
00191 
00192     virtual int externalize( const PslToken* token );
00196     const PslToken* getExternalizedToken( int id );
00197   protected:
00201     PslDatabaseImpl( const PslModelManager* modelManager, 
00202                      const std::string& agentName,
00203                      const std::string& name );
00209     const PslToken* addToken( PslTokenImpl* impl );
00213     const PslVariable* addVariable( PslVariableImpl* impl );
00214   private:
00218     virtual void archive( const Time& t ) = 0;
00222     virtual const Time getTimeExtended();
00226     void initialize( const PslDatabase* database );
00230     virtual void initializeExtended( const PslDatabase* database );
00234     void createTimeVariable( const PslDatabase* database );
00238     void createPendingMessagesVariable( const PslDatabase* database );
00239 
00240     typedef std::map< std::string, PslConstant* > String2Constant;
00241 
00242     String2Constant m_Constants;
00243 
00244     typedef std::map< std::string, PslObject* > String2Object;
00245     
00246     String2Object m_Objects;
00247 
00248     const PslModelManager* m_ModelManager;
00249     std::string m_Name;
00250     std::string m_AgentName;
00251 
00252     typedef std::map< int, PslVariable* > Int2PslVariable;
00253 
00254     Int2PslVariable m_Variables;
00255 
00256     typedef std::map< int, PslToken* > Int2PslToken;
00257     
00258     Int2PslToken m_Tokens;
00259 
00260 //     typedef std::map< int, PslConstraint* > Int2PslConstraint;
00261 
00262 //     Int2PslConstraint m_Constraints;
00263 
00264     const PslVariable* m_TimeVariable;
00265     PslTrueFalseVariable* m_PendingMessageVariable;
00266     RecursiveThreadMutex m_Mutex;
00267     bool m_DeleteFilter;
00268     PslOutputFilter* m_PrintFilter;
00269   };
00270 }
00271 
00272 #endif // PLANSERVER_DATABASE_IMPL_HEADER_

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