[commit] r2565 - trunk/GME/Meta

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Sat Nov 15 13:41:20 CST 2014


Author: ksmyth
Date: Sat Nov 15 13:41:20 2014
New Revision: 2565

Log:
Better ErrorInfo for MgaMetaModel and MgaMetaRole

Modified:
   trunk/GME/Meta/MgaMetaModel.cpp
   trunk/GME/Meta/MgaMetaModel.h
   trunk/GME/Meta/MgaMetaRole.h

Modified: trunk/GME/Meta/MgaMetaModel.cpp
==============================================================================
--- trunk/GME/Meta/MgaMetaModel.cpp	Thu Nov  6 09:47:29 2014	(r2564)
+++ trunk/GME/Meta/MgaMetaModel.cpp	Sat Nov 15 13:41:20 2014	(r2565)
@@ -25,26 +25,32 @@
 			CComBstrObj n;
 			(*i).GetStringValue(ATTRID_NAME, PutOut(n));
 			
-			if( equal(n, name))//if( n == name )
-				COMRETURN( ::QueryInterface(*i, p) );
+			if (equal(n, name)) {
+				HRESULT hr = ::QueryInterface(*i, p);
+				if (FAILED(hr))
+					COMTHROW(hr);
+				return hr;
+			}
 
 			++i;
 		}
 
 		if( inscope == VARIANT_FALSE )
-			COMRETURN(E_NOTFOUND);
+			COMTHROW(E_NOTFOUND);
 
 		CComObjPtr<IMgaMetaBase> parent;
 		COMTHROW( get_DefinedIn(PutOut(parent)) );
 		ASSERT( parent != NULL );
 
 		CComObjPtr<IMgaMetaFolder> folder;
-		if( SUCCEEDED(parent.QueryInterface(folder)) )
-			COMRETURN( folder->get_DefinedFCOByName(name, inscope, p) );
+		if( SUCCEEDED(parent.QueryInterface(folder)) ) {
+			*p = folder->DefinedFCOByName[name, inscope].Detach();
+			return S_OK;
+		}
 
 		CComObjPtr<IMgaMetaModel> model;
 		COMTHROW( parent.QueryInterface(model) );
-		COMRETURN( model->get_DefinedFCOByName(name, inscope, p) );
+		*p = model->DefinedFCOByName[name, inscope].Detach();
 	}
 	COMCATCH(;)
 }
@@ -68,13 +74,17 @@
 			CComBstrObj n;
 			(*i).GetStringValue(ATTRID_NAME, PutOut(n));
 			
-			if( equal(n, name))//if( n == name )
-				COMRETURN( ::QueryInterface(*i, p) );
+			if (equal(n, name)) {
+				HRESULT hr = ::QueryInterface(*i, p);
+				if (FAILED(hr))
+					COMTHROW(hr);
+				return hr;
+			}
 
 			++i;
 		}
 
-		COMRETURN(E_NOTFOUND);
+		COMTHROW(E_NOTFOUND);
 	}
 	COMCATCH(;)
 }
@@ -97,13 +107,16 @@
 			CComBstrObj n;
 			(*i).GetStringValue(ATTRID_NAME, PutOut(n));
 			
-			if( n == name )
-				COMRETURN( ::QueryInterface(*i, p) );
-
+			if( n == name ) {
+				HRESULT hr =::QueryInterface(*i, p);
+				if (FAILED(hr))
+					COMTHROW(hr);
+				return hr;
+			}
 			++i;
 		}
 
-		COMRETURN(E_NOTFOUND);
+		COMTHROW(E_NOTFOUND);
 	}
 	COMCATCH(;)
 }
@@ -299,13 +312,13 @@
 {
 	CHECK_OUT(p);
 
-	if( kind == NULL )
-		COMRETURN(E_POINTER);
-
 	ASSERT( metaprojectref != NULL );
 
 	COMTRY
 	{
+		if( kind == NULL )
+			COMTHROW(E_POINTER);
+
 		CCoreObjectPtr self(GetUnknown());
 		ASSERT( self != NULL );
 

Modified: trunk/GME/Meta/MgaMetaModel.h
==============================================================================
--- trunk/GME/Meta/MgaMetaModel.h	Thu Nov  6 09:47:29 2014	(r2564)
+++ trunk/GME/Meta/MgaMetaModel.h	Sat Nov 15 13:41:20 2014	(r2565)
@@ -12,7 +12,8 @@
 	public CComCoClass<CMgaMetaModel, &__uuidof(MgaMetaModel)>,
 	public CComObjectRootEx<CComSingleThreadModel>,
 	public IDispatchImpl<IMgaMetaModel, &__uuidof(IMgaMetaModel), &__uuidof(__MGAMetaLib)>,
-	public CMgaMetaFCO
+	public CMgaMetaFCO,
+	public ISupportErrorInfo
 {
 public:
 	IUnknown *GetUnknown() const { return (IMgaMetaModel*)this; }
@@ -25,10 +26,21 @@
 	COM_INTERFACE_ENTRY(IMgaMetaFCO)
 	COM_INTERFACE_ENTRY2(IMgaMetaBase, CMgaMetaBase)
 	COM_INTERFACE_ENTRY2(IDispatch, IMgaMetaModel)
+	COM_INTERFACE_ENTRY(ISupportErrorInfo)
 END_COM_MAP()
 
 DECLARE_MGAMETAFCO()
 
+	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
+	{
+		return (
+			IsEqualGUID(riid, __uuidof(IMgaMetaModel))
+			|| IsEqualGUID(riid, __uuidof(IMgaMetaFCO))
+			|| IsEqualGUID(riid, __uuidof(IMgaMetaBase))
+			|| IsEqualGUID(riid, __uuidof(IDispatch))
+			) ? S_OK : S_FALSE;
+	}
+
 public:
 	STDMETHOD(get_DefinedFCOs)(IMgaMetaFCOs **p)
 	{   return ComGetSortedCollValue<IMgaMetaFCO>(GetUnknown(), ATTRID_DEFFCO_PTR, p); }

Modified: trunk/GME/Meta/MgaMetaRole.h
==============================================================================
--- trunk/GME/Meta/MgaMetaRole.h	Thu Nov  6 09:47:29 2014	(r2564)
+++ trunk/GME/Meta/MgaMetaRole.h	Sat Nov 15 13:41:20 2014	(r2565)
@@ -12,7 +12,8 @@
 	public CComObjectRootEx<CComSingleThreadModel>,
 	public CComCoClass<CMgaMetaRole, &__uuidof(MgaMetaRole)>,
 	public IDispatchImpl<IMgaMetaRole, &__uuidof(IMgaMetaRole), &__uuidof(__MGAMetaLib)>,
-	public CMgaMetaBase
+	public CMgaMetaBase,
+	public ISupportErrorInfo
 {
 public:
 	IUnknown *GetUnknown() const { return (IMgaMetaRole*)this; }
@@ -24,10 +25,20 @@
 	COM_INTERFACE_ENTRY(IMgaMetaRole)
 	COM_INTERFACE_ENTRY2(IMgaMetaBase, CMgaMetaBase)
 	COM_INTERFACE_ENTRY2(IDispatch, IMgaMetaRole)
+	COM_INTERFACE_ENTRY(ISupportErrorInfo)
 END_COM_MAP()
 
 DECLARE_MGAMETABASE()
 
+	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
+	{
+		return (
+			IsEqualGUID(riid, __uuidof(IMgaMetaRole))
+			|| IsEqualGUID(riid, __uuidof(IMgaMetaBase))
+			|| IsEqualGUID(riid, __uuidof(IDispatch))
+			) ? S_OK : S_FALSE;
+	}
+
 public:
 	STDMETHOD(get_ParentModel)(IMgaMetaModel **p)
 	{ return ComGetPointerValue(GetUnknown(), ATTRID_ROLES_COLL, p); }


More information about the gme-commit mailing list