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

Go to the documentation of this file.
00001 // -*- Mode: c++ -*-
00002 //     File: $Source: /home/cvs/ISG-Repository/IDEA-DEV/Core/PlanServer/Includes/PslVariableImpl.hh,v $
00003 //      Tag: $Name: DR_01_11_06 $
00004 //      CVS: $Id: PslVariableImpl.hh,v 1.26 2005/12/30 22:15:02 rijsman Exp $
00005 //     Info: $CVSROOT/Idea3/Copyright.txt
00006 #ifndef PSL_DOMAIN_IMPL_HH
00007 #define PSL_DOMAIN_IMPL_HH
00008 
00009 #include <set>
00010 #include <iosfwd>
00011 
00012 #include "PslErrors.hh"
00013 #include "PslContainers.hh"
00014 #include "PslDataTypes.hh"
00015 
00016 namespace IDEA
00017 {
00018   class PslConstraint;
00019   class PslConstraintImpl;
00020   class PslDatabase;
00021   class PslLabelSet;
00022   class PslObject;
00023   class PslObjectClass;
00024 
00035   class PslVariableImpl
00036   {
00037     friend class PslVariable;
00038   public:
00042     int getId();
00046     const PslConstraint* addConstraint( const PslConstraintImpl* impl );
00047   protected:
00051     PslVariableImpl( const PslDatabase* database );
00055     PslVariableImpl( const PslDatabase* database, int id );
00056 
00060     virtual ~PslVariableImpl();
00061     
00065     virtual int getExtendedId() const = 0;
00069     bool write( std::string& value );
00073     bool read( const std::string& value );
00077     const PslConstraintList getConstraints() const;
00081     virtual bool hasIntersection( const PslVariable* variable ) const = 0;
00085     const PslDatabase* getDatabase() const;
00089     virtual void commit() = 0;
00093     virtual const std::string getName() const = 0;
00097     virtual void print(std::ostream &) const;
00101     virtual const PslDataType getDataType() const = 0;
00105     virtual bool isInterval() const = 0;
00109     virtual bool isEmpty() = 0;
00113     virtual bool isDynamic() = 0;
00117     virtual bool isSingleton() const = 0;
00122     virtual bool isEnumerated() const = 0;
00127     virtual bool isFinite() = 0;
00131     virtual int getSize() = 0;
00135     virtual int getIntSingleton() const = 0;
00139     virtual double getRealSingleton() const = 0;
00143     virtual bool getBoolSingleton() const = 0;
00147     virtual const std::string& getLabelSingleton() const = 0;
00151     virtual const PslObject* getObjectSingleton() const = 0;
00155     virtual const PslTimeline* getTimelineSingleton() const = 0;
00159     virtual std::set<int> getIntMembers() const = 0;
00163     virtual std::set<double> getRealMembers() const = 0;
00167     virtual std::set<bool> getBoolMembers() const = 0;
00168 
00169     virtual std::set<const PslObject*> getObjectMembers() const = 0;
00173     virtual bool hasIntMember(int) const = 0;
00177     virtual bool hasRealMember(double) const = 0;
00181     virtual bool hasBoolMember(bool) const = 0;
00185     virtual bool hasLabelMember( const std::string& ) const = 0;
00189     virtual int getIntMinimum() const = 0;
00193     virtual double getRealMinimum() const = 0;
00197     virtual bool getBoolMinimum() const = 0;
00201     virtual int getIntMaximum() const = 0;
00205     virtual double getRealMaximum() const = 0;
00209     virtual bool getBoolMaximum() const = 0;
00213     virtual StringSet getLabelMembers() const = 0;
00217     virtual StringSet getStringMembers() const = 0;
00221     virtual void reset() = 0;
00227     virtual bool conditionallyReset( const IntSet& authorities );
00231     virtual void setStatic() = 0;
00235     virtual void intersect(const PslVariable* other) = 0;
00239     virtual void insertString( const std::string& value ) = 0;
00245     virtual const PslConstraintImpl* constrainToInt(int, int ) = 0;
00251     virtual const PslConstraintImpl* constrainToReal( double, int ) = 0;
00257     virtual const PslConstraintImpl* constrainToBool( bool, int ) = 0;
00263     virtual const PslConstraintImpl* constrainToLabel( const std::string&, int  ) = 0;
00269     virtual const PslConstraintImpl* constrainToObject( const PslObject*, int  ) = 0;
00275     virtual const PslConstraintImpl* constrainToTimeline( const PslTimeline*, int  ) = 0;
00283     virtual const PslConstraintImpl* constrainToIntInterval( int, int, int ) = 0;
00291     virtual const PslConstraintImpl* constrainToRealInterval( double, double, int ) = 0;
00295     virtual void setToIntSingleton(int) = 0;
00299     virtual void setToRealSingleton(double) = 0;
00303     virtual void setToBoolSingleton(bool) = 0;
00307     virtual void setToLabelSingleton( const std::string& ) = 0;
00311     virtual void setToIntInterval(int min, int max) = 0;
00315     virtual void setToRealInterval(double min, double max) = 0;
00319     virtual void insertInt(int) = 0;
00323     virtual void insertReal(double) = 0;
00327     virtual void insertBool(bool) = 0;
00331     virtual void insertLabel( const std::string& ) = 0;
00335     virtual void removeInt(int) = 0;
00339     virtual void removeReal(double) = 0;
00343     virtual void removeBool(bool) = 0;
00347     virtual void removeLabel( const std::string& ) = 0;
00348     
00354     void removeConstraint( const PslConstraint* cnstr );
00355   private:
00359     PslVariableImpl();
00363     PslVariableImpl( const PslVariableImpl& );
00367     const PslDatabase* m_Database;
00368 
00369     Int2PslConstraintMap m_Constraints;
00373     template <class Type>
00374     Type getSingleton() const
00375     {
00376       PSL_ERROR( PslTypeUnknown );
00377     }
00381     template <class Type>
00382     void setMinimum( Type v) 
00383     {
00384       PSL_ERROR( PslTypeUnknown );
00385     }
00389     template <class Type>
00390     void setMaximum( Type v ) 
00391     {
00392       PSL_ERROR( PslTypeUnknown );
00393     }
00394     template <class Type>
00395     Type getMinimum() const
00396     {
00397       PSL_ERROR( PslTypeUnknown );
00398     }
00402     template <class Type>
00403     Type getMaximum() const
00404     {
00405       PSL_ERROR( PslTypeUnknown );
00406     }
00410     template <class Type>
00411     std::set<Type> getMembers() const
00412     {
00413       PSL_ERROR( PslTypeUnknown );
00414     }
00418     template <class Type>
00419     bool hasMember(const Type val) const
00420     {
00421       PSL_ERROR( PslTypeUnknown );
00422     }
00426     template <class Type>
00427     bool isOfType() const
00428     {
00429       PSL_ERROR( PslTypeUnknown );
00430     }
00434     template <class Type>
00435     void setToSingleton(Type newVal)
00436     {
00437       PSL_ERROR( PslTypeUnknown );
00438     }
00442     template <class Type>
00443     void setToInterval(Type min, Type max)
00444     {
00445       PSL_ERROR( PslTypeUnknown );
00446     }
00450     template <class Type>
00451     void setMembers(std::set<Type> newSet)
00452     {
00453       PSL_ERROR( PslTypeUnknown );
00454     }
00458     template <class Type>
00459     void insert(Type newVal)
00460     {
00461       PSL_ERROR( PslTypeUnknown );
00462     }
00466     template <class Type>
00467     void remove(Type newVal)
00468     {
00469       PSL_ERROR( PslTypeUnknown );
00470     }
00474     template <class Type>
00475     const PslConstraint* constrainTo(Type newVal, int authority)
00476     {
00477       PSL_ERROR( PslTypeUnknown );
00478     }
00482     template <class Type>
00483     const PslConstraint* constrainToInterval( Type min, Type max, int authority )
00484     {
00485       PSL_ERROR( PslTypeUnknown );
00486     }
00490     bool m_Enabled;
00494     int m_Id;
00495   };
00496 
00497   template<> int PslVariableImpl::getSingleton() const;
00498   template<> int PslVariableImpl::getMinimum() const;
00499   template<> int PslVariableImpl::getMaximum() const;
00500 
00501   template<> std::set<int> PslVariableImpl::getMembers() const;
00502   template<> bool PslVariableImpl::hasMember(int) const;
00503   template<> void PslVariableImpl::insert(int newVal);
00504   template<> void PslVariableImpl::remove(int oldVal);
00505   template<> void PslVariableImpl::setMinimum( int v );
00506   template<> void PslVariableImpl::setMaximum( int v );
00507   template<> void PslVariableImpl::setToInterval(int min, int max);
00508   template<> void PslVariableImpl::setToSingleton(int);
00509   template<> const PslConstraint* PslVariableImpl::constrainTo(int, int);
00510   template<> const PslConstraint* PslVariableImpl::constrainToInterval( int, int, int );
00511 
00512   template<> double PslVariableImpl::getSingleton() const;
00513   template<> double PslVariableImpl::getMinimum() const;
00514   template<> double PslVariableImpl::getMaximum() const;
00515   template<> std::set<double> PslVariableImpl::getMembers() const;
00516   template<> bool PslVariableImpl::hasMember(double) const;
00517   template<> void PslVariableImpl::setToSingleton(double);
00518   template<> void PslVariableImpl::insert(double newVal);
00519   template<> void PslVariableImpl::remove(double oldVal);
00520   template<> void PslVariableImpl::setMinimum( double v );
00521   template<> void PslVariableImpl::setMaximum( double v );
00522   template<> void PslVariableImpl::setToInterval(double min, double max);
00523   template<> const PslConstraint* PslVariableImpl::constrainTo(double, int);
00524   template<> const PslConstraint* PslVariableImpl::constrainToInterval( double, double, int );
00525 
00526   template<> bool PslVariableImpl::getSingleton() const;
00527   template<> bool PslVariableImpl::getMinimum() const;
00528   template<> bool PslVariableImpl::getMaximum() const;
00529   template<> std::set<bool> PslVariableImpl::getMembers() const;
00530   template<> bool PslVariableImpl::hasMember(bool) const;
00531   template<> void PslVariableImpl::setToSingleton(bool);
00532   template<> void PslVariableImpl::insert(bool newVal);
00533   template<> void PslVariableImpl::remove(bool oldVal);
00534   template<> const PslConstraint* PslVariableImpl::constrainTo(bool, int);
00535 
00536   template<> std::set< std::string > PslVariableImpl::getMembers() const;
00537   template<> const std::string& PslVariableImpl::getSingleton() const;
00538   template<> void PslVariableImpl::insert(const std::string& newVal);
00539   template<> const PslConstraint* PslVariableImpl::constrainTo( const std::string&, int  );
00540 
00541   template<> std::set< const PslObject* > PslVariableImpl::getMembers() const;
00542   template<> const PslObject* PslVariableImpl::getSingleton() const;  
00543   template<> const PslConstraint* PslVariableImpl::constrainTo( const PslObject*, int);
00544 
00545   template<> const PslTimeline* PslVariableImpl::getSingleton() const;  
00546   template<> const PslConstraint* PslVariableImpl::constrainTo( const PslTimeline*, int);
00547 }
00548 
00549 #endif // PSL_DOMAIN_IMPL_HH

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