GME
13
|
00001 //############################################################################################################################################### 00002 // 00003 // Object Constraint Language Generic Manager 00004 // OCLCommonEx.h 00005 // 00006 //############################################################################################################################################### 00007 00008 #ifndef OCLCommonEx_h 00009 #define OCLCommonEx_h 00010 00011 #include "StdAfx.h" 00012 #include "OCLCommon.h" 00013 #include "OCLException.h" 00014 #include "OCLTree.h" 00015 #include "OCLFeature.h" 00016 #include "OCLType.h" 00017 #include "mga.h" 00018 #include "meta.h" 00019 00020 namespace OclCommonEx { 00021 00022 enum ErrorImage 00023 { 00024 IMG_SYNTACTICAL_ERROR = 0, 00025 IMG_SEMANTICAL_ERROR = 1, 00026 IMG_VIOLATION_ERROR = 2, 00027 IMG_VIOLATION_WARNING = 3 00028 }; 00029 00030 typedef CComObjPtr<IMgaObject> SPObject; 00031 typedef std::vector<SPObject> ObjectVector; 00032 typedef CComObjPtr<IMgaFCO> SPFCO; 00033 typedef std::vector<SPFCO> FCOVector; 00034 typedef CComObjPtr<IMgaMetaBase> SPMeta; 00035 typedef std::vector<SPMeta> MetaBaseVector; 00036 typedef CComObjPtr<IMgaConnPoint> SPCP; 00037 typedef std::vector<SPCP> CPVector; 00038 typedef CComObjPtr<IMgaMetaPointerSpec> SPPointer; 00039 typedef std::vector<SPPointer> PointerVector; 00040 typedef CComObjPtr<IMgaMetaModel> SPModel; 00041 typedef std::map< std::string, SPModel> ModelMap; 00042 00043 //############################################################################################################################################## 00044 // 00045 // F U N C T I O N S 00046 // 00047 //############################################################################################################################################## 00048 00049 std::string Convert( const CString& strIn ); 00050 00051 CString Convert( const std::string& strIn ); 00052 00053 bool ParseCardinality( const CString& strCardinality ); 00054 00055 std::string UpperFirst( const std::string& strValue ); 00056 std::string LowerFirst( const std::string& strValue ); 00057 CString UpperFirst( const CString& strValue ); 00058 CString LowerFirst( const CString& strValue ); 00059 00060 std::string GetConnPointRole( CComPtr<IMgaConnPoint> spCP ); 00061 00062 std::string GetObjectKind( CComPtr<IMgaObject> spObject ); 00063 std::string GetObjectDisplayedName(CComPtr<IMgaObject>& spObject); 00064 00065 std::string GetFCORole( CComPtr<IMgaFCO> spFCO ); 00066 00067 objtype_enum GetObjectType( CComPtr<IMgaObject> spObject ); 00068 objtype_enum GetObjectType( CComPtr<IMgaMetaBase> spObject ); 00069 00070 std::string GetObjectName( CComPtr<IMgaObject> spObject ); 00071 std::string GetObjectName( CComPtr<IMgaMetaBase> spObject ); 00072 00073 std::string ObjectTypeToString( objtype_enum eType ); 00074 objtype_enum StringToObjectType( const std::string& strType ); 00075 00076 bool IsInLibrary( CComPtr<IMgaObject> spObject ); 00077 StringVector GetLibraryPath( CComPtr<IMgaObject> spObject ); 00078 00079 std::string CreateType( const std::string& strKind, objtype_enum eType ); 00080 bool ResolveType( const std::string& strFullName, std::string& strKind, objtype_enum& eType ); 00081 00082 void AddAssociation( OclMeta::TypeManager* pManager, OclMeta::Association* pAssociation, OclMeta::AssociationVector& vecAssociations, bool bCantBeSet ); 00083 void AddAssociations( OclMeta::AssociationVector& vecAssociationsToAdd, OclMeta::AssociationVector& vecAssociations ); 00084 00085 //############################################################################################################################################## 00086 // 00087 // F U N C T I O N S 00088 // 00089 //############################################################################################################################################## 00090 00091 bool AddObject( CComPtr<IMgaFCO> spFCO, FCOVector& vecFCOs ); 00092 bool AddObject( CComPtr<IMgaObject> spObject, ObjectVector& vecObjects ); 00093 bool ContainsObject( CComPtr<IMgaFCO> spFCO, FCOVector& vecFCOs ); 00094 bool ContainsObject( CComPtr<IMgaObject> spObject, ObjectVector& vecObjects ); 00095 00096 // MetaModeling Time 00097 00098 bool IsAbstract( CComPtr<IMgaFCO> spFCO ); 00099 bool GetAllObjects( CComPtr<IMgaFCO>& spFCO, CComPtr<IMgaFCOs>& spRefs ); 00100 void GetAssociationEnds( CComPtr<IMgaFCO> spFCO, const std::string& strRole, const std::string& strKind, FCOVector& vecFCOs ); 00101 void GetAssociationEnds( CComPtr<IMgaFCO> spFCO, const std::string& strRole, const std::string& strKind, FCOVector& vecFCOs, FCOVector& vecConnections ); 00102 void GetInheritances( CComPtr<IMgaFCO> spFCO, const std::string& strInheritanceType, bool bIsParent, FCOVector& vecFCOs ); 00103 void GetEquivalences( CComPtr<IMgaFCO> spFCO, const std::string& strEquivalenceType, bool bToLeft, FCOVector& vecFCOs ); 00104 00105 // Modeling Time 00106 00107 void GetMetaObjects( CComPtr<IMgaMetaProject> spProject, const std::string& strName, objtype_enum eType, MetaBaseVector& vecMetaBases ); 00108 void GetDerivedObjects( CComPtr<IMgaProject> spProject, const std::string& strType, ObjectVector& vecObjects ); 00109 void GetKindObjects( CComPtr<IMgaProject> spProject, const std::string& strKind, ObjectVector& vecObjects ); 00110 void GetKindFolders( CComPtr<IMgaFolder> spFolder, const std::string& strKind, bool bKind, ObjectVector& vecObjects ); 00111 00112 std::string GetPointerRole( CComPtr<IMgaMetaPointerSpec> spPointer ); 00113 ModelMap GetModels( CComPtr<IMgaMetaProject> spProject ); 00114 StringVector GetPointerDescriptions( CComPtr<IMgaMetaPointerSpec> spPointer ); 00115 StringVector TranslateDescriptionsToKinds( ModelMap& mapModels, const StringVector& vecDescriptions ); 00116 00117 std::string GetObjectPath( CComPtr<IMgaObject> spObject ); 00118 std::string GetObjectDescription( CComPtr<IMgaObject> spObject ); 00119 std::string GetConnectionPointDescription( CComPtr<IMgaConnPoint> spCP ); 00120 00121 00122 00123 00124 }; // namespace OclCommonEx 00125 00126 #endif // OCLCommonEx