GME  13
OclConstraint.h
Go to the documentation of this file.
00001 //###############################################################################################################################################
00002 //
00003 //      Object Constraint Language Generic Manager
00004 //      OCLConstraint.h
00005 //
00006 //###############################################################################################################################################
00007 
00008 #ifndef OCLConstraint_h
00009 #define OCLConstraint_h
00010 
00011 #include "OCLTree.h"
00012 
00013 namespace Ocl
00014 {
00015         class Constraint;
00016 
00017 //##############################################################################################################################################
00018 //
00019 //      C L A S S : Ocl::Constraint
00020 //
00021 //==============================================================================================================================================
00022 //
00023 //      D E S C R I P T I O N :
00024 //
00025 //##############################################################################################################################################
00026 
00027         class Constraint
00028         {
00029                 public :
00030                         typedef enum State
00031                                 {
00032                                         CS_UNREGISTERED = 0,
00033                                         CS_REGISTERED = 1,
00034                                         CS_DEFINED = 2,
00035                                         CS_CTX_PARSE_FAILED = 3,
00036                                         CS_CTX_PARSE_SUCCEEDED = 4,
00037                                         CS_CTX_CHECK_FAILED = 5,
00038                                         CS_CTX_CHECK_SUCCEEDED = 6,
00039                                         CS_PARSE_FAILED = 7,
00040                                         CS_PARSE_SUCCEEDED = 8,
00041                                         CS_CHECK_FAILED = 9,
00042                                         CS_CHECK_SUCCEEDED = 10,
00043                                         CS_CHECK_DEPENDENCY_FAILED = 11,
00044                                         CS_CHECK_DEPENDENCY_SUCCEEDED = 12,
00045                                         CS_EVAL_FAILED = 13,
00046                                         CS_EVAL_SUCCEEDED = 14
00047                                 };
00048 
00049                         typedef enum Stereotype
00050                                 {
00051                                         CS_INVARIANT = 20,
00052                                         CS_PRECONDITION = 21,
00053                                         CS_POSTCONDITION = 22,
00054                                         CS_ATTRIBUTEDEF = 23,
00055                                         CS_METHODDEF = 24
00056                                 };
00057 
00058                 private :
00059                         OclTree::TreeManager*                                   m_pManager;
00060                         OclTree::Constraint*                                            m_pCtxConstraint;
00061                         OclTree::Constraint*                                            m_pConstraint;
00062 
00063                         std::string                                                                             m_strText;
00064                         std::string                                                                             m_strName;
00065                         State                                                                           m_eState;
00066                         bool                                                                            m_bDynamic;
00067                         bool                                                                            m_bContextSucceeded;
00068 
00069                         OclCommon::ExceptionPool                                m_poolCtxExceptions;
00070                         OclCommon::ExceptionPool                                m_poolExceptions;
00071                         OclTree::ViolationVector                                        m_vecViolations;
00072                         std::string                                                             m_nmsp;
00073 
00074                 public :
00075                                                                                                                                 Constraint();
00076                                                                                                                                 Constraint( OclTree::TreeManager* pManager );
00077                                                                                                                                 Constraint( OclTree::TreeManager* pManager, const std::string& strName, const std::string& strText, bool bDynamic = false );
00078                         virtual                                                                                                 ~Constraint();
00079 
00080                                         State                                                                           Register( OclTree::TreeManager* pManager );
00081                                         State                                                                           Define( const std::string& strName, const std::string& strText = "", bool bDynamic = false );
00082 
00083                                         std::string                                                             GetDefinedName() const;
00084                                         State                                                                           GetState() const;
00085                                         bool                                                                            IsValid() const;
00086                                         bool                                                                            IsDefined() const;
00087                                         std::string                                                                     GetText() const;
00088                                         bool                                                                            IsDynamic() const;
00089 
00090                                         State                                                                           ParseContext();
00091 
00092                                         std::string                                                                     GetName() const;
00093                                         Stereotype                                                                      GetStereotype() const;
00094 
00095                                         State                                                                           CheckContext();
00096 
00097                                         std::string                                                             GetContextType() const;
00098                                         std::string                                                             GetReturnType() const;
00099                                         OclCommon::FormalParameterVector        GetFormalParameters() const;
00100                                         virtual std::string                                                     GetFullName() const;
00101                                         std::string                                                                     GetNamespace() const;
00102                                         void                                                                            SetNamespace( const std::string& nm);
00103                                         State Parse();
00104 
00105                                         State                                                                           Check( OclTree::TypeContextStack& ctxTypes );
00106 
00107                                         OclMeta::DependencySet                                  GetDependencySet() const;
00108                                         std::string                                                             PrintTree() const;
00109                                         std::string                                                             Print() const;
00110 
00111                                         State                                                                           SetDependencyResult( const OclMeta::DependencySet& setDependenies = OclMeta::DependencySet() );
00112                                         OclCommon::ExceptionPool                                GetExceptions();
00113                                         OclCommon::ExceptionPool                                GetExceptions( bool bContext );
00114 
00115 
00116                                         OclMeta::Object                                                         Evaluate( OclTree::ObjectContextStack& ctxObjects, bool bEnableLogicalShortCircuit = false, bool bEnableIteratorShortCircuit = false, bool bEnableTracking = true );
00117 
00118                                         OclTree::ViolationVector                                        GetViolations();
00119                                         void                                                                            ClearViolations();
00120 //udmoclpat_oclconstraint_h_1 __please do not remove or change this line__
00121         };
00122 }; // namespace Ocl
00123 
00124 #endif // OCLConstraint_h