[commit] r2062 - in trunk/GME: Common Gme MgaUtil Parser
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Wed Sep 26 08:53:32 CDT 2012
Author: ksmyth
Date: Wed Sep 26 08:53:32 2012
New Revision: 2062
Log:
SetErrorInfo in the xme parser
Modified:
trunk/GME/Common/CommonError.cpp
trunk/GME/Common/CommonError.h
trunk/GME/Gme/GMEApp.cpp
trunk/GME/MgaUtil/MgaResolver.cpp
trunk/GME/MgaUtil/MgaResolver.h
trunk/GME/Parser/GenParser.cpp
trunk/GME/Parser/MetaParser.h
trunk/GME/Parser/MgaDumper.h
trunk/GME/Parser/MgaParser.cpp
trunk/GME/Parser/MgaParser.h
trunk/GME/Parser/StdAfx.cpp
trunk/GME/Parser/StdAfx.h
Modified: trunk/GME/Common/CommonError.cpp
==============================================================================
--- trunk/GME/Common/CommonError.cpp Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Common/CommonError.cpp Wed Sep 26 08:53:32 2012 (r2062)
@@ -101,7 +101,7 @@
OLESTR("Invalid long value in XML file")
};
-void SetErrorInfo(LPOLESTR desc)
+void throw_com_error(HRESULT hr, LPCOLESTR desc)
{
ASSERT( desc != NULL );
@@ -109,7 +109,30 @@
{
CComObjPtr<ICreateErrorInfo> errorinfo;
COMTHROW( CreateErrorInfo(PutOut(errorinfo)) );
- COMTHROW( errorinfo->SetDescription(desc) );
+ COMTHROW( errorinfo->SetDescription(const_cast<LPOLESTR>(desc)) );
+ COMTHROW( errorinfo->SetSource(OLESTR("GME")) );
+
+ CComObjPtr<IErrorInfo> errorinfo2;
+ COMTHROW( QueryInterface(errorinfo, errorinfo2) );
+ COMTHROW( SetErrorInfo(0, errorinfo2) );
+
+ throw _com_error(hr, errorinfo2, true);
+ }
+ catch(hresult_exception &)
+ {
+ // do nothing
+ }
+}
+
+void SetErrorInfo(LPCOLESTR desc)
+{
+ ASSERT( desc != NULL );
+
+ try
+ {
+ CComObjPtr<ICreateErrorInfo> errorinfo;
+ COMTHROW( CreateErrorInfo(PutOut(errorinfo)) );
+ COMTHROW( errorinfo->SetDescription(const_cast<LPOLESTR>(desc)) );
COMTHROW( errorinfo->SetSource(OLESTR("GME")) );
CComObjPtr<IErrorInfo> errorinfo2;
Modified: trunk/GME/Common/CommonError.h
==============================================================================
--- trunk/GME/Common/CommonError.h Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Common/CommonError.h Wed Sep 26 08:53:32 2012 (r2062)
@@ -134,7 +134,9 @@
// --------------------------- Common Error Codes
-void SetErrorInfo(LPOLESTR desc) NOTHROW;
+
+void throw_com_error(HRESULT hr, LPCOLESTR desc);
+void SetErrorInfo(LPCOLESTR desc) NOTHROW;
void SetErrorInfo(HRESULT hr, LPOLESTR desc2 = NULL) NOTHROW;
bool GetErrorInfo(BSTR *p) NOTHROW;
void GetErrorInfo(HRESULT hr, BSTR *p) NOTHROW;
Modified: trunk/GME/Gme/GMEApp.cpp
==============================================================================
--- trunk/GME/Gme/GMEApp.cpp Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Gme/GMEApp.cpp Wed Sep 26 08:53:32 2012 (r2062)
@@ -2250,7 +2250,7 @@
if( CMainFrame::theInstance) CMainFrame::theInstance->m_console.Message( CString( _T("Importing ")) + file_name + _T("..."), 1);
IMgaParser2Ptr parser2 = (IMgaParser*)parser;
if (parser2 && m_pMainWnd)
- COMTHROW(parser2->ParseProject2(theApp.mgaProject,PutInBstr(fullPath), (ULONGLONG)(m_pMainWnd->GetSafeHwnd())));
+ parser2->__ParseProject2(theApp.mgaProject,_bstr_t(fullPath), (ULONGLONG)(m_pMainWnd->GetSafeHwnd()));
else
COMTHROW(parser->ParseProject(theApp.mgaProject,PutInBstr(fullPath)) );
Modified: trunk/GME/MgaUtil/MgaResolver.cpp
==============================================================================
--- trunk/GME/MgaUtil/MgaResolver.cpp Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/MgaUtil/MgaResolver.cpp Wed Sep 26 08:53:32 2012 (r2062)
@@ -5,6 +5,7 @@
#include "MgaResolver.h"
#include "DialogList.h"
#include "AlterNmspDlg.h"
+#include "CommonError.h"
/////////////////////////////////////////////////////////////////////////////
@@ -260,6 +261,7 @@
// since not interactive, exit
if (! this->mb_is_interactive) {
+ SetErrorInfo(CString(L"Could not resolve folder for kind '") + kind + "'");
return RESOLV_ERR_get_FolderByStr;
}
@@ -283,7 +285,7 @@
MGACOLL_ITERATE_END;
if ((cdl.DoModal() != IDOK) || (cdl.mn_selection_index == LB_ERR)) {
-// AfxMessageBox("no items chosen from dialog");
+ SetErrorInfo(L"No item chosen from dialog");
return RESOLV_ERR_get_FolderByStr;
}
@@ -304,34 +306,23 @@
}
// #pragma bookmark (note: insert helpful message box here get_FolderByStr[] )
- if (this->mb_is_interactive) {
+ CComBSTR parfolder_name;
+ COMTHROW( parent->get_Name(&parfolder_name) );
- CComBSTR parfolder_name;
- COMTHROW( parent->get_Name(&parfolder_name) );
+ CComBSTR parmfolder_name;
+ COMTHROW( parent_mfolder->get_Name(&parmfolder_name) );
- CComBSTR parmfolder_name;
- COMTHROW( parent_mfolder->get_Name(&parmfolder_name) );
-
- CString sz_format;
- sz_format.Format( _T("Paradigm violation! Parent folder %s of type %s\n")
- _T("cannot contain a child folder\n")
- _T("of type %s"),
- (BSTR) parfolder_name, (BSTR) parmfolder_name,
- kind
- );
-
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
-
- }
+ CString sz_format;
+ sz_format.Format( _T("Paradigm violation: parent folder %s of type %s\n")
+ _T("cannot contain a child folder\n")
+ _T("of type %s"),
+ (BSTR) parfolder_name, (BSTR) parmfolder_name,
+ kind
+ );
+ CComPtr<IMgaProject> mgaProject;
+ COMTHROW(parent->get_Project(&mgaProject));
+ SetErrorInfo(sz_format);
return RESOLV_ERR_get_FolderByStr;
@@ -461,36 +452,23 @@
if (_fs_ct == 0) {
// #pragma bookmark (note: insert helpful message box here get_KindByStr[1] )
- if (this->mb_is_interactive) {
-
- CComBSTR parent_name;
- COMTHROW( parent->get_Name(&parent_name) );
-
- CComBSTR mparent_name;
- COMTHROW( parent_mf->get_Name(&mparent_name) );
-
- CString sz_format;
+ CComBSTR parent_name;
+ COMTHROW( parent->get_Name(&parent_name) );
- sz_format.Format( _T("%sParent folder %s\n")
- _T("of type %s\n")
- _T("cannot have any children."),
- sentence,
- (BSTR) parent_name,
- (BSTR) mparent_name
- );
+ CComBSTR mparent_name;
+ COMTHROW( parent_mf->get_Name(&mparent_name) );
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
+ CString sz_format;
+ sz_format.Format( _T("%sParent folder %s\n")
+ _T("of type %s\n")
+ _T("cannot have any children."),
+ sentence,
+ (BSTR) parent_name,
+ (BSTR) mparent_name
+ );
+ SetErrorInfo(sz_format);
- }
return RESOLV_ERR_get_KindByStr;
}
@@ -523,46 +501,34 @@
if (valid_obj_map.GetCount() == 0) {
// #pragma bookmark (note: insert helpful message box here get_KindByStr[1] )
- if (this->mb_is_interactive) {
+ CComBSTR parent_name;
+ COMTHROW( parent->get_Name(&parent_name) );
- CComBSTR parent_name;
- COMTHROW( parent->get_Name(&parent_name) );
+ CComBSTR mparent_name;
+ COMTHROW( parent_mf->get_Name(&mparent_name) );
- CComBSTR mparent_name;
- COMTHROW( parent_mf->get_Name(&mparent_name) );
+ CString sz_format;
+ CString sz_format_tmp;
- CString sz_format;
- CString sz_format_tmp;
-
- sz_format_tmp.Format( _T("Paradigm Violation! Parent folder %s\n")
- _T("of type %s\n")
- _T("cannot have any children\n"),
- (BSTR) parent_name,
- (BSTR) mparent_name
- );
- sz_format += sz_format_tmp;
+ sz_format_tmp.Format( _T("Paradigm Violation: parent folder %s\n")
+ _T("of type %s\n")
+ _T("cannot have any children\n"),
+ (BSTR) parent_name,
+ (BSTR) mparent_name
+ );
+ sz_format += sz_format_tmp;
- if (objtype != OBJTYPE_NULL) {
- sz_format_tmp.Format( _T("of object type %s\n"),
- helper_ObjTypeStr(objtype)
- );
- sz_format += sz_format_tmp;
- }
+ if (objtype != OBJTYPE_NULL) {
+ sz_format_tmp.Format( _T("of object type %s\n"),
+ helper_ObjTypeStr(objtype)
+ );
+ sz_format += sz_format_tmp;
+ }
- sz_format += sentence;
+ sz_format += sentence;
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
+ SetErrorInfo(sz_format);
-
- }
return RESOLV_ERR_get_KindByStr;
}
@@ -593,7 +559,10 @@
}
if (!this->mb_is_interactive)
+ {
+ SetErrorInfo(CString(L"Could not resolve kind '") + kind + L"'");
return RESOLV_ERR_get_KindByStr;
+ }
// update mapping
this->map_put_KindByStr(parent_mf.p, kind, objtype, *p);
@@ -605,12 +574,13 @@
// if not interactive, we have to quit-- no more choices!
if (!this->mb_is_interactive) {
+ SetErrorInfo(CString(L"Could not resolve kind '") + kind + L"'");
return RESOLV_ERR_get_KindByStr;
}
if ((cdl.DoModal() != IDOK) || (cdl.mn_selection_index == LB_ERR)) {
// #pragma bookmark (note: insert helpful message box here get_KindByStr[1] )
-// AfxMessageBox(_T("no items chosen from dialog"));
+ SetErrorInfo(_T("No item chosen from dialog"));
return RESOLV_ERR_get_KindByStr;
}
@@ -899,6 +869,7 @@
return S_OK;
}
if (!this->mb_is_interactive) {
+ SetErrorInfo(CString(L"Could not resolve kind '") + kind + L"'");
return RESOLV_ERR_get_RoleByStr;
}
@@ -1025,12 +996,14 @@
// we have a fork in the road-- if no user input, we can't resolve
if (!this->mb_is_interactive) {
+ SetErrorInfo(CString(L"Could not resolve kind '") + kind + L"'");
return RESOLV_ERR_get_RoleByStr;
}
+ INT_PTR dlgResult;
if ((cdl.m_sz_prelist.GetCount() != 0)
&&
- (cdl.DoModal() == IDOK)
+ ((dlgResult = cdl.DoModal()) == IDOK)
&&
(cdl.mn_selection_index != LB_ERR)) {
@@ -1056,6 +1029,11 @@
return S_OK;
}
+ if (dlgResult == IDCANCEL)
+ {
+ SetErrorInfo(CString(L"Parsing cancelled"));
+ return RESOLV_ERR_get_RoleByStr;
+ }
} // if objtype match
@@ -1065,49 +1043,36 @@
// #pragma bookmark (note: insert helpful message box here get_AttrByStr[] )
- if (this->mb_is_interactive) {
+ CComBSTR parent_name;
+ COMTHROW( parent->get_Name(&parent_name) );
- CComBSTR parent_name;
- COMTHROW( parent->get_Name(&parent_name) );
+ CComBSTR mparent_name;
+ COMTHROW( parent_meta_fco->get_Name(&mparent_name) );
- CComBSTR mparent_name;
- COMTHROW( parent_meta_fco->get_Name(&mparent_name) );
+ CString sz_format;
+ CString sz_format_tmp;
- CString sz_format;
- CString sz_format_tmp;
+ sz_format_tmp.Format( _T("Paradigm Violation: cannot create within parent model '%s' ")
+ _T("of type '%s' a child"),
+ (BSTR) parent_name,
+ (BSTR) mparent_name);
+ sz_format+=sz_format_tmp;
- sz_format_tmp.Format( _T("Paradigm Violation! Cannot create within parent model '%s' ")
- _T("of type '%s' a child"),
- (BSTR) parent_name,
- (BSTR) mparent_name);
+ if (CString(kind) != _T("")) {
+ sz_format_tmp.Format(_T(" with kind '%s'"), kind);
sz_format+=sz_format_tmp;
+ }
- if (CString(kind) != _T("")) {
- sz_format_tmp.Format(_T(" with kind '%s'"), kind);
- sz_format+=sz_format_tmp;
- }
-
- if (objtype != OBJTYPE_NULL) {
- sz_format_tmp.Format(_T(" of type %s"), helper_ObjTypeStr(objtype));
- sz_format+=sz_format_tmp;
- }
-
- if (CString(aspect) != _T("")) {
- sz_format_tmp.Format(_T(" in aspect '%s'"), aspect);
- sz_format+=sz_format_tmp;
- }
-
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
+ if (objtype != OBJTYPE_NULL) {
+ sz_format_tmp.Format(_T(" of type %s"), helper_ObjTypeStr(objtype));
+ sz_format+=sz_format_tmp;
+ }
+ if (CString(aspect) != _T("")) {
+ sz_format_tmp.Format(_T(" in aspect '%s'"), aspect);
+ sz_format+=sz_format_tmp;
}
+ SetErrorInfo(sz_format);
return RESOLV_ERR_get_RoleByStr;
}
@@ -1185,6 +1150,7 @@
// since not interactive, exit
if (! this->mb_is_interactive) {
+ SetErrorInfo(CString(L"Could not resolve attribute '") + kind + L"'");
return RESOLV_ERR_get_AttrByStr;
}
@@ -1218,6 +1184,7 @@
}
else if( dlgres == IDCANCEL )
{
+ SetErrorInfo(CString(L"Could not resolve attribute '") + kind + L"'");
return RESOLV_ERR_get_AttrByStr;
}
@@ -1240,39 +1207,25 @@
}
// #pragma bookmark (note: insert helpful message box here get_AttrByStr[] )
- if (this->mb_is_interactive) {
-
- CString sz_format;
- CComBSTR name;
- CComBSTR meta_name;
- objtype_enum objtype;
-
- COMTHROW( parent->get_ObjType(&objtype) );
- COMTHROW( parent->get_Name(&name) );
- COMTHROW( parent_metafco->get_Name(&meta_name) );
+ CString sz_format;
+ CComBSTR name;
+ CComBSTR meta_name;
+ objtype_enum objtype;
+
+ COMTHROW( parent->get_ObjType(&objtype) );
+ COMTHROW( parent->get_Name(&name) );
+ COMTHROW( parent_metafco->get_Name(&meta_name) );
- sz_format.Format( _T("No such attribute %s\n")
- _T("can be found in %s %s\n")
- _T("of kind %s"),
- kind,
- helper_ObjTypeStr(objtype),
- name.m_str,
- meta_name.m_str
- );
-
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
-
-
- }
+ sz_format.Format( _T("No such attribute %s\n")
+ _T("can be found in %s %s\n")
+ _T("of kind %s"),
+ kind,
+ helper_ObjTypeStr(objtype),
+ name.m_str,
+ meta_name.m_str
+ );
+ SetErrorInfo(sz_format);
return RESOLV_ERR_get_AttrByStr;
@@ -1324,8 +1277,13 @@
p
);
- return ((hr == RESOLV_ERR_get_RoleByStr) ? RESOLV_ERR_get_RoleByMeta :
- hr);
+ if (SUCCEEDED(hr)) {
+ return hr;
+ }
+ else {
+ SetErrorInfo(CString(L"Could not resolve role for kind '") + sz_kind + L"'");
+ return ((hr == RESOLV_ERR_get_RoleByStr) ? RESOLV_ERR_get_RoleByMeta : hr);
+ }
}
@@ -1497,12 +1455,14 @@
// if (valid_role_count == 0)
// return RESOLV_ERR_get_ConnRoleByMeta;
+ SetErrorInfo(CString(L"Could not resolve connection role"));
return RESOLV_ERR_get_ConnRoleByMeta;
}
if (valid_role_count > 0) {
if ((cdl.DoModal() != IDOK) || (cdl.mn_selection_index == LB_ERR)) {
+ SetErrorInfo(CString(L"Cancelled by user"));
return E_ABORT;
} else {
@@ -1600,7 +1560,7 @@
CString sz_format_tmp;
sz_format_tmp.Format(
- _T("Paradigm violation! Cannot make connection for \n")
+ _T("Paradigm violation: cannot make connection for \n")
_T("source: %s (%s)"),
sz_src_name, sz_src_role_name
);
@@ -1650,16 +1610,7 @@
);
sz_format += sz_format_tmp;
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
-
+ SetErrorInfo(sz_format);
return RESOLV_ERR_get_ConnRoleByMeta;
}
@@ -1790,10 +1741,11 @@
if (!this->mb_is_interactive) {
- if (valid_role_count == 0) {
- return RESOLV_ERR_get_ConnRoleByMeta;
- }
+ //if (valid_role_count == 0) {
+ // return RESOLV_ERR_get_ConnRoleByMeta;
+ //}
+ SetErrorInfo(CString(L"Could not resolve reference role'"));
return RESOLV_ERR_get_ConnRoleByMeta;
}
@@ -1901,16 +1853,7 @@
);
sz_format += sz_format_tmp;
- CComPtr<IMgaProject> mgaProject;
- COMTHROW(parent->get_Project(&mgaProject));
- CComPtr<IGMEOLEApp> pGME = get_GME(mgaProject);
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- if (pGME) {
- COMTHROW(pGME->ConsoleMessage(CComBSTR(sz_format), MSG_ERROR));
- }
- else {
- AfxMessageBox(sz_format, MB_ICONSTOP | MB_OK);
- }
+ SetErrorInfo(sz_format);
return RESOLV_ERR_get_ConnRoleByMeta;
Modified: trunk/GME/MgaUtil/MgaResolver.h
==============================================================================
--- trunk/GME/MgaUtil/MgaResolver.h Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/MgaUtil/MgaResolver.h Wed Sep 26 08:53:32 2012 (r2062)
@@ -166,7 +166,8 @@
class ATL_NO_VTABLE CMgaResolver :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMgaResolver, &__uuidof(MgaResolver)>,
- public IDispatchImpl<IMgaResolver, &__uuidof(IMgaResolver), &__uuidof(__MGAUtilLib)>
+ public IDispatchImpl<IMgaResolver, &__uuidof(IMgaResolver), &__uuidof(__MGAUtilLib)>,
+ public ISupportErrorInfoImpl<&__uuidof(IMgaResolver)>
{
public:
CMgaResolver() : mb_is_interactive(true), mb_use_sticky(false)
@@ -183,6 +184,7 @@
BEGIN_COM_MAP(CMgaResolver)
COM_INTERFACE_ENTRY(IMgaResolver)
COM_INTERFACE_ENTRY(IDispatch)
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
public:
Modified: trunk/GME/Parser/GenParser.cpp
==============================================================================
--- trunk/GME/Parser/GenParser.cpp Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/GenParser.cpp Wed Sep 26 08:53:32 2012 (r2062)
@@ -178,7 +178,7 @@
fireStartFunction(namestr, attributes);
}
- catch(hresult_exception &)
+ catch (hresult_exception &)
{
if( locator != NULL )
{
@@ -194,6 +194,26 @@
throw;
}
+ catch (_com_error& e)
+ {
+ std::tstring str;
+ if( locator != NULL )
+ {
+ err_line = locator->getLineNumber();
+ err_column = locator->getColumnNumber();
+
+ // we compose and set the error message for exceptions
+ // [which come from the MGA layer because of meta incompatibility]
+ Format(str, _T("In file %s at line %d, char %d: "), xmlfile.c_str(), err_line, err_column);
+ errorinfo = str.c_str();
+ }
+ if (e.Description() != _bstr_t())
+ {
+ errorinfo = (str + static_cast<const TCHAR*>(e.Description())).c_str();
+ throw_com_error(e.Error(), e.Description());
+ }
+ throw hresult_exception(e.Error());
+ }
}
@@ -240,7 +260,25 @@
throw;
}
+ catch (_com_error& e)
+ {
+ std::tstring str;
+ if( locator != NULL )
+ {
+ err_line = locator->getLineNumber();
+ err_column = locator->getColumnNumber();
+ // we compose and set the error message for exceptions
+ // [which come from the MGA layer because of meta incompatibility]
+ Format(str, _T("In file %s at line %d, char %d: "), xmlfile.c_str(), err_line, err_column);
+ errorinfo = str.c_str();
+ }
+ if (e.Description() != _bstr_t())
+ {
+ errorinfo = (str + static_cast<const TCHAR*>(e.Description())).c_str();
+ }
+ throw hresult_exception(e.Error());
+ }
}
void CGenParser::characters(const XMLCh* const chars, const XMLSize_t length)
Modified: trunk/GME/Parser/MetaParser.h
==============================================================================
--- trunk/GME/Parser/MetaParser.h Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/MetaParser.h Wed Sep 26 08:53:32 2012 (r2062)
@@ -13,9 +13,9 @@
class ATL_NO_VTABLE CMgaMetaParser :
public CComObjectRootEx<CComSingleThreadModel>,
- public CComCoClass<CMgaMetaParser, &CLSID_MgaMetaParser>,
- public ISupportErrorInfoImpl<&IID_IMgaMetaParser>,
- public IDispatchImpl<IMgaMetaParser, &IID_IMgaMetaParser, &LIBID_MGAParserLib, 1, 1>,
+ public CComCoClass<CMgaMetaParser, &__uuidof(MgaMetaParser)>,
+ public ISupportErrorInfoImpl<&__uuidof(IMgaMetaParser)>,
+ public IDispatchImpl<IMgaMetaParser, &__uuidof(IMgaMetaParser), &__uuidof(__MGAParserLib), 1, 1>,
public IGMEVersionInfoImpl,
public CGenParser
{
@@ -34,7 +34,7 @@
COM_INTERFACE_ENTRY(IMgaMetaParser)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
- COM_INTERFACE_ENTRY_IID(IID_IGMEVersionInfo, IGMEVersionInfoImpl)
+ COM_INTERFACE_ENTRY_IID(__uuidof(IGMEVersionInfo), IGMEVersionInfoImpl)
END_COM_MAP()
// ------- Methods
Modified: trunk/GME/Parser/MgaDumper.h
==============================================================================
--- trunk/GME/Parser/MgaDumper.h Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/MgaDumper.h Wed Sep 26 08:53:32 2012 (r2062)
@@ -35,9 +35,9 @@
class ATL_NO_VTABLE CMgaDumper :
public CComObjectRootEx<CComSingleThreadModel>,
- public CComCoClass<CMgaDumper, &CLSID_MgaDumper>,
- public ISupportErrorInfoImpl2<&IID_IMgaDumper, &IID_IMgaDumper2>,
- public IDispatchImpl<IMgaDumper2, &IID_IMgaDumper2, &LIBID_MGAParserLib, 1, 1>,
+ public CComCoClass<CMgaDumper, &__uuidof(MgaDumper)>,
+ public ISupportErrorInfoImpl2<&__uuidof(IMgaDumper), &_uuidof(IMgaDumper2)>,
+ public IDispatchImpl<IMgaDumper2, &__uuidof(IMgaDumper2), &__uuidof(__MGAParserLib), 1, 1>,
public IGMEVersionInfoImpl
{
public:
@@ -56,7 +56,7 @@
COM_INTERFACE_ENTRY2(IDispatch, IMgaDumper2)
COM_INTERFACE_ENTRY(IMgaDumper2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
- COM_INTERFACE_ENTRY_IID(IID_IGMEVersionInfo, IGMEVersionInfoImpl)
+ COM_INTERFACE_ENTRY_IID(__uuidof(IGMEVersionInfo), IGMEVersionInfoImpl)
END_COM_MAP()
// ------- Methods
Modified: trunk/GME/Parser/MgaParser.cpp
==============================================================================
--- trunk/GME/Parser/MgaParser.cpp Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/MgaParser.cpp Wed Sep 26 08:53:32 2012 (r2062)
@@ -316,6 +316,17 @@
return e.hr;
}
+ catch(_com_error &e)
+ {
+ CloseAll();
+ clear_GME( m_GME);
+
+ ASSERT( FAILED(e.hr) );
+ if (e.Description() != _bstr_t())
+ SetErrorInfo(e.Description());
+
+ return e.Error();
+ }
return S_OK;
}
@@ -1102,9 +1113,9 @@
GetPrevObj(prev);
CComObjPtr<IMgaMetaRole> role;
- COMTHROW( resolver->get_RoleByStr(prev,
+ role = resolver->RoleByStr[prev.p,
PutInBstrAttr(attributes, _T("kind")), OBJTYPE_MODEL,
- PutInBstrAttr(attributes, _T("role")), NULL, PutOut(role)) );
+ PutInBstrAttr(attributes, _T("role")), _bstr_t()];
ASSERT( role != NULL );
if( deriv.from != NULL )
Modified: trunk/GME/Parser/MgaParser.h
==============================================================================
--- trunk/GME/Parser/MgaParser.h Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/MgaParser.h Wed Sep 26 08:53:32 2012 (r2062)
@@ -30,9 +30,9 @@
class ATL_NO_VTABLE CMgaParser :
public CComObjectRootEx<CComSingleThreadModel>,
- public CComCoClass<CMgaParser, &CLSID_MgaParser>,
- public ISupportErrorInfoImpl3<&IID_IMgaParser, &IID_IMgaParser2, &IID_IMgaParser3>,
- public IDispatchImpl<IMgaParser3, &IID_IMgaParser3, &LIBID_MGAParserLib, 1, 1>,
+ public CComCoClass<CMgaParser, &__uuidof(MgaParser)>,
+ public ISupportErrorInfoImpl3<&__uuidof(IMgaParser), &__uuidof(IMgaParser2), &__uuidof(IMgaParser3)>,
+ public IDispatchImpl<IMgaParser3, &__uuidof(IMgaParser3), &__uuidof(__MGAParserLib), 1, 1>,
public IGMEVersionInfoImpl,
public CGenParser
{
@@ -52,7 +52,7 @@
COM_INTERFACE_ENTRY(IMgaParser2)
COM_INTERFACE_ENTRY2(IMgaParser3, IMgaParser3)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
- COM_INTERFACE_ENTRY_IID(IID_IGMEVersionInfo, IGMEVersionInfoImpl)
+ COM_INTERFACE_ENTRY_IID(__uuidof(IGMEVersionInfo), IGMEVersionInfoImpl)
END_COM_MAP()
// ------- Methods
Modified: trunk/GME/Parser/StdAfx.cpp
==============================================================================
--- trunk/GME/Parser/StdAfx.cpp Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/StdAfx.cpp Wed Sep 26 08:53:32 2012 (r2062)
@@ -7,3 +7,5 @@
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#endif
+
+#import "MgaUtilLib.tlb" implementation_only no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
Modified: trunk/GME/Parser/StdAfx.h
==============================================================================
--- trunk/GME/Parser/StdAfx.h Mon Sep 24 10:37:07 2012 (r2061)
+++ trunk/GME/Parser/StdAfx.h Wed Sep 26 08:53:32 2012 (r2062)
@@ -30,7 +30,36 @@
#define ASSERT ATLASSERT
-#include "ParserLib.h"
+// Imports
+#define wireHWND HWND
+
+#import "CoreLib.tlb" no_implementation no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+#import "MetaLib.tlb" no_implementation no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+#import "MgaLib.tlb" no_implementation no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+#import "MgaUtilLib.tlb" no_implementation no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+#import "ParserLib.tlb" no_implementation no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+#import "GMELib.tlb" no_implementation no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+
+#include "CommonImport.h"
+
+#define cpp_quote(x)
+#include "Interfaceversion.h"
+#undef cpp_quote
+typedef GMEInterfaceVersion_enum GMEInterfaceVersion;
+
+// Don't load the MIDL-generated headers
+#define __Core_h__
+#define __Meta_h__
+#define __Mga_h__
+#define __MgaUtil_h__
+#define __MgaUtilLib_h__
+#define __Parser_h__
+#define __Gme_h__
+#define __GmeLib_h__
+#define IID_IMgaDataSource __uuidof(IMgaDataSource)
+#define ATTVAL_ENUM _attval_enum
+// End Imports
+
#include "CommonSmart.h"
#include "CommonStl.h"
#define GLOBAL_ID_STR "guid"
More information about the gme-commit
mailing list