GME
13
|
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