GME
13
|
00001 //############################################################################################################################################### 00002 // 00003 // Object Constraint Language Generic Manager 00004 // GMEConstraintEx.h 00005 // 00006 //############################################################################################################################################### 00007 00008 #ifndef GMEConstraintEx_h 00009 #define GMEConstraintEx_h 00010 00011 #include "StdAfx.h" 00012 #include "OCLConstraint.h" 00013 #include "OCLCommon.h" 00014 #include "OCLType.h" 00015 #include "OCLRefCount.h" 00016 #include "mga.h" 00017 #include "meta.h" 00018 00019 namespace OclGme 00020 { 00021 class ConstraintBase; 00022 class Constraint; 00023 class ConstraintFunction; 00024 00025 typedef OclCommon::RCSmart<Constraint> SpConstraint; 00026 typedef OclCommon::RCSmart<ConstraintFunction> SpConstraintFunction; 00027 00028 00029 typedef std::vector<SpConstraint> ConstraintVector; 00030 typedef std::vector<SpConstraintFunction> ConstraintFunctionVector; 00031 00032 //############################################################################################################################################## 00033 // 00034 // C L A S S : OclGme::ConstraintBase <<< + Ocl::Constraint 00035 // 00036 //============================================================================================================================================== 00037 // 00038 // D E S C R I P T I O N : 00039 // 00040 //############################################################################################################################################## 00041 00042 class ConstraintBase 00043 : public Ocl::Constraint 00044 { 00045 public : 00046 typedef enum Type { CT_CRITICAL_META = 0, CT_NON_CRITICAL_META = 1, CT_CRITICAL_USER = 2, CT_NON_CRITICAL_USER = 3, CT_CRITICAL_LIBRARY = 4, CT_NON_CRITICAL_LIBRARY = 5, CT_ATTRIBUTE_META = 6, CT_ATTRIBUTE_USER = 7, CT_METHOD_META = 8, CT_METHOD_USER = 9 }; 00047 typedef enum Location { CL_META = 0, CL_PROJECT = 1, CL_LIBRARY }; 00048 00049 private : 00050 Type m_eType; 00051 Location m_eLocation; 00052 StringVector m_vecLibraryPath; 00053 protected : 00054 CComPtr<IMgaConstraint> m_spConstraint; 00055 CComPtr<IMgaRegNode> m_spRegNode; 00056 CComPtr<IMgaFCO> m_spFCO; 00057 00058 public : 00059 ConstraintBase(); 00060 virtual ~ConstraintBase(); 00061 00062 Type GetType() const; 00063 Location GetLocation() const; 00064 StringVector GetLibraryPath() const; 00065 virtual std::string GetFullName() const; 00066 bool GetContextAndName( std::string& strContext, std::string& strName ) const; 00067 protected : 00068 void SetType( Type eType, const StringVector& vecLibraryPath = StringVector() ); 00069 }; 00070 00071 //############################################################################################################################################## 00072 // 00073 // C L A S S : OclGme::Constraint <<< + OclGme::ConstraintBase 00074 // 00075 //============================================================================================================================================== 00076 // 00077 // D E S C R I P T I O N : 00078 // 00079 //############################################################################################################################################## 00080 00081 class Constraint 00082 : public ConstraintBase, public OclCommon::ReferenceCountable< Constraint > 00083 { 00084 public : 00085 typedef enum EnableInfo { CE_NONE = 0, CE_ENABLED = 1, CE_ENABLED_INHERITED = 2, CE_ENABLED_READONLY = 3, CE_DISABLED = 4, CE_DISABLED_INHERITED = 5, CE_DISABLED_READONLY = 6 }; 00086 00087 private : 00088 unsigned long m_ulEventMask; 00089 long m_lPriority; 00090 constraint_depth_enum m_eDepth; 00091 std::string m_strMessage; 00092 std::string m_strExpression; 00093 00094 public : 00095 Constraint( const std::string& strName, const std::string& strContextType, const std::string& strExpression, const std::string& strMessage, unsigned long ulEventMask, long lPriority, constraint_depth_enum eDepth, bool bFieldsMandatory = true ); 00096 Constraint( const std::string& strContextType, CComPtr<IMgaFCO> spFCO, bool bFieldsMandatory = true ); 00097 Constraint( const std::string& strContextType, CComPtr<IMgaConstraint> spConstraint ); 00098 Constraint( CComPtr<IMgaRegNode> spRegNode, const StringVector& vecLibPath ); 00099 virtual ~Constraint(); 00100 00101 unsigned long GetEventMask() const; 00102 long GetPriority() const; 00103 constraint_depth_enum GetDepth() const; 00104 std::string GetMessage() const; 00105 std::string GetExpression() const; 00106 00107 EnableInfo GetEnableInfo( CComPtr<IMgaObject> spObject ) const; 00108 Ocl::Constraint::State Write( CComPtr<IMgaRegNode> spRegNode ); 00109 }; 00110 00111 //############################################################################################################################################## 00112 // 00113 // C L A S S : OclGme::ConstraintFunction <<< + OclGme::ConstraintBase, OclCommon::ReferenceCountable< ConstraintFunction > 00114 // 00115 //============================================================================================================================================== 00116 // 00117 // D E S C R I P T I O N : 00118 // 00119 //############################################################################################################################################## 00120 00121 class ConstraintFunction 00122 : public ConstraintBase, public OclCommon::ReferenceCountable< ConstraintFunction > 00123 { 00124 00125 private : 00126 std::string m_strParameterList; 00127 std::string m_strExpression; // func body 00128 00129 public : 00130 ConstraintFunction( const std::string& strName, const std::string& strContextType, const std::string& strParameterList, const std::string& strReturnType, bool bIsAttribute, const std::string& strExpression, bool bFieldsMandatory = true ); 00131 ConstraintFunction( CComPtr<IMgaFCO> spFCO, bool bFieldsMandatory = true ); 00132 ConstraintFunction( CComPtr<IMgaConstraint> spConstraint ); 00133 ConstraintFunction( CComPtr<IMgaRegNode> spRegNode ); 00134 00135 std::string GetParameterList() const; 00136 std::string GetExpression() const; 00137 00138 Ocl::Constraint::State Write( CComPtr<IMgaRegNode> spRegNode ); 00139 private : 00140 void ReadFromOldFormat(); 00141 void ReadFromNewFormat(); 00142 }; 00143 00144 }; // namespace OclGme 00145 00146 #endif // GMEConstraintEx_h