GME
13
|
00001 //############################################################################################################################################### 00002 // 00003 // Object Constraint Language Generic Manager 00004 // OCLGMECMFacade.h 00005 // 00006 //############################################################################################################################################### 00007 00008 #ifndef OCLGMECMFacade_h 00009 #define OCLGMECMFacade_h 00010 00011 #include "GMEConstraintEx.h" 00012 #include "OCLCommonEx.h" 00013 00014 namespace OclGmeCM 00015 { 00016 struct FuncItem 00017 { 00018 std::string text; 00019 int serial; 00020 }; 00021 00022 typedef std::map<std::string, FuncItem> FuncDesc; 00023 00024 struct EvaluationRecord 00025 { 00026 OclMeta::Object spObject; 00027 OclTree::ViolationVector vecViolations; 00028 OclGme::SpConstraint spConstraint; 00029 FuncDesc calledFunctions; 00030 }; 00031 00032 struct EvaluationInfo 00033 { 00034 bool bEnabledSCLogical; 00035 bool bEnabledSCIterator; 00036 bool bEnabledTracking; 00037 int iViolationCount; 00038 int iModelDepth; 00039 }; 00040 00041 typedef std::vector< EvaluationRecord > EvaluationRecordVector; 00042 00043 class ConstraintDefinitionFactory; 00044 00045 //############################################################################################################################################## 00046 // 00047 // C L A S S : OclGmeCM::Facade 00048 // 00049 //============================================================================================================================================== 00050 // 00051 // D E S C R I P T I O N : 00052 // 00053 //############################################################################################################################################## 00054 00055 class Facade 00056 { 00057 private : 00058 CComPtr<IMgaProject> m_spProject; 00059 OclTree::TreeManager* m_pTreeManager; 00060 00061 OclGme::ConstraintFunctionVector m_vecMetaConstraintFunctions; 00062 OclGme::ConstraintFunctionVector m_vecUserConstraintFunctions; 00063 00064 bool m_bViolationDlgExpanded; 00065 EvaluationInfo m_infoEvaluation; 00066 00067 public : 00068 OclGme::ConstraintVector m_vecMetaConstraints; 00069 OclGme::ConstraintVector m_vecUserConstraints; 00070 00071 public : 00072 bool m_bEnabled; 00073 bool m_bEnabledEvents; 00074 bool m_bEnabledInteractions; 00075 00076 public : 00077 Facade(); 00078 ~Facade(); 00079 void Initialize( CComPtr<IMgaProject> spProject ); 00080 void Finalize(); 00081 00082 CComPtr<IMgaMetaProject> GetMetaProject() const; 00083 CComPtr<IMgaProject> GetProject() const; 00084 OclTree::TreeManager* GetTreeManager() const; 00085 00086 EvaluationInfo GetEvaluationInfo() const; 00087 void SetEvaluationInfo( const EvaluationInfo& info ); 00088 00089 void LoadMetaConstraintFunctions( OclGme::ConstraintFunctionVector& vecFaileds ); 00090 void LoadUserConstraintFunctions( OclGme::ConstraintFunctionVector& vecFaileds ); 00091 void LoadMetaConstraints( OclGme::ConstraintVector& vecFaileds ); 00092 void LoadUserConstraints( OclGme::ConstraintVector& vecFaileds ); 00093 00094 HRESULT EvaluateAll(IUnknown **punk); 00095 HRESULT Evaluate( CComPtr<IMgaObject> spObject, IUnknown **punk); 00096 HRESULT Evaluate( const OclCommonEx::ObjectVector& vecObjects, IUnknown **punk); 00097 HRESULT Evaluate( CComPtr<IMgaObject> spObject, unsigned long ulCurrentEventMask); 00098 HRESULT EvaluateConstraints( EvaluationRecordVector& vecInputs, bool bShowProgress, IUnknown **punk ); 00099 private : 00100 void updateLineno(EvaluationRecord &rec); 00101 bool getConstraintFunctionText(std::string &name, std::string &text); 00102 void addFunctionTexts(EvaluationRecord &rec); 00103 void LoadConstraintFunctions( OclGme::ConstraintFunctionVector& vecFounds, OclGme::ConstraintFunctionVector& vecFaileds, OclGme::ConstraintFunctionVector& vecSucceededs ); 00104 std::string GetSignature( OclGme::SpConstraintFunction spCF ); 00105 void LoadConstraints( OclGme::ConstraintVector& vecFounds, OclGme::ConstraintVector& vecFaileds, OclGme::ConstraintVector& vecSucceededs ); 00106 00107 void GetObjectConstraints( CComPtr<IMgaObject> spObject, EvaluationRecordVector& vecInputs, unsigned long ulCurrentEventMask ); 00108 void SortByPriority( EvaluationRecordVector& vecInputs ) const; 00109 void CollectConstraints( CComPtr<IMgaObject> spObject, bool bRecursive, EvaluationRecordVector& vecInputs ); 00110 void CollectConstraints( CComPtr<IMgaObject> spObject, EvaluationRecordVector& vecInputs ); 00111 void CollectConstraints( CComPtr<IMgaObject> spObject, unsigned long ulCurrentEventMask, int iCheckedLevels, EvaluationRecordVector& vecInputs ); 00112 00113 friend ConstraintDefinitionFactory; 00114 }; 00115 00116 }; // namespace OclGmeCM 00117 00118 #endif // OCLGMECMFacade_h