GME  13
OCLCommonEx.h
Go to the documentation of this file.
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