summaryrefslogtreecommitdiff
path: root/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Main/include/VirtualBoxErrorInfoImpl.h')
-rw-r--r--src/VBox/Main/include/VirtualBoxErrorInfoImpl.h77
1 files changed, 52 insertions, 25 deletions
diff --git a/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h b/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h
index b439124b2..186bfed48 100644
--- a/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h
+++ b/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h
@@ -1,10 +1,9 @@
/** @file
- *
- * VirtualBoxErrorInfo COM classe definition
+ * VirtualBoxErrorInfo COM class definition.
*/
/*
- * Copyright (C) 2006-2007 Oracle Corporation
+ * Copyright (C) 2006-2010 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -23,8 +22,11 @@
using namespace com;
class ATL_NO_VTABLE VirtualBoxErrorInfo
- : public CComObjectRootEx <CComMultiThreadModel>
- , public IVirtualBoxErrorInfo
+ : public CComObjectRootEx<CComMultiThreadModel>
+ , VBOX_SCRIPTABLE_IMPL(IVirtualBoxErrorInfo)
+#ifndef VBOX_WITH_XPCOM /* IErrorInfo doesn't inherit from IDispatch, ugly 3am hack: */
+ , public IDispatch
+#endif
{
public:
@@ -35,44 +37,69 @@ public:
BEGIN_COM_MAP(VirtualBoxErrorInfo)
COM_INTERFACE_ENTRY(IErrorInfo)
COM_INTERFACE_ENTRY(IVirtualBoxErrorInfo)
+ COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
-#if defined (RT_OS_WINDOWS)
+#ifndef VBOX_WITH_XPCOM
+
+ HRESULT init(IErrorInfo *aInfo);
+
+ STDMETHOD(GetGUID)(GUID *guid);
+ STDMETHOD(GetSource)(BSTR *source);
+ STDMETHOD(GetDescription)(BSTR *description);
+ STDMETHOD(GetHelpFile)(BSTR *pBstrHelpFile);
+ STDMETHOD(GetHelpContext)(DWORD *pdwHelpContext);
+
+ // IDispatch forwarding - 3am hack.
+ typedef IDispatchImpl<IVirtualBoxErrorInfo, &IID_IVirtualBoxErrorInfo, &LIBID_VirtualBox, kTypeLibraryMajorVersion, kTypeLibraryMinorVersion> idi;
+
+ STDMETHOD(GetTypeInfoCount)(UINT *pcInfo)
+ {
+ return idi::GetTypeInfoCount(pcInfo);
+ }
+
+ STDMETHOD(GetTypeInfo)(UINT iInfo, LCID Lcid, ITypeInfo **ppTypeInfo)
+ {
+ return idi::GetTypeInfo(iInfo, Lcid, ppTypeInfo);
+ }
- HRESULT init (IErrorInfo *aInfo);
+ STDMETHOD(GetIDsOfNames)(REFIID rIID, LPOLESTR *papwszNames, UINT cNames, LCID Lcid, DISPID *paDispIDs)
+ {
+ return idi::GetIDsOfNames(rIID, papwszNames, cNames, Lcid, paDispIDs);
+ }
- STDMETHOD(GetGUID) (GUID *guid);
- STDMETHOD(GetSource) (BSTR *source);
- STDMETHOD(GetDescription) (BSTR *description);
- STDMETHOD(GetHelpFile) (BSTR *pBstrHelpFile);
- STDMETHOD(GetHelpContext) (DWORD *pdwHelpContext);
+ STDMETHOD(Invoke)(DISPID idDispMember, REFIID rIID, LCID Lcid, WORD fw, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *piErrArg)
+ {
+ return idi::Invoke(idDispMember, rIID, Lcid, fw, pDispParams, pVarResult, pExcepInfo, piErrArg);
+ }
-#else // !defined (RT_OS_WINDOWS)
+#else // defined(VBOX_WITH_XPCOM)
- HRESULT init (nsIException *aInfo);
+ HRESULT init(nsIException *aInfo);
NS_DECL_NSIEXCEPTION
#endif
- VirtualBoxErrorInfo() : mResultCode (S_OK) {}
+ VirtualBoxErrorInfo() : mResultCode(S_OK) {}
// public initializer/uninitializer for internal purposes only
- HRESULT init (HRESULT aResultCode, const GUID &aIID,
- CBSTR aComponent, CBSTR aText,
- IVirtualBoxErrorInfo *aNext = NULL);
+ HRESULT init(HRESULT aResultCode, const GUID &aIID,
+ CBSTR aComponent, CBSTR aText,
+ IVirtualBoxErrorInfo *aNext = NULL);
// IVirtualBoxErrorInfo properties
- STDMETHOD(COMGETTER(ResultCode)) (LONG *aResultCode);
- STDMETHOD(COMGETTER(InterfaceID)) (BSTR *aIID);
- STDMETHOD(COMGETTER(Component)) (BSTR *aComponent);
- STDMETHOD(COMGETTER(Text)) (BSTR *aText);
- STDMETHOD(COMGETTER(Next)) (IVirtualBoxErrorInfo **aNext);
+ STDMETHOD(COMGETTER(ResultCode))(LONG *aResultCode);
+ STDMETHOD(COMGETTER(InterfaceID))(BSTR *aIID);
+ STDMETHOD(COMGETTER(Component))(BSTR *aComponent);
+ STDMETHOD(COMGETTER(Text))(BSTR *aText);
+ STDMETHOD(COMGETTER(Next))(IVirtualBoxErrorInfo **aNext);
private:
// FIXME: declare these here until VBoxSupportsTranslation base
// is available in this class.
- static const char *tr (const char *a) { return a; }
+ static const char *tr(const char *a) { return a; }
static HRESULT setError(HRESULT rc,
const char * /* a */,
const char * /* b */,
@@ -85,6 +112,6 @@ private:
ComPtr<IVirtualBoxErrorInfo> mNext;
};
-#endif // ____H_VIRTUALBOXERRORINFOIMPL
+#endif // !____H_VIRTUALBOXERRORINFOIMPL
/* vi: set tabstop=4 shiftwidth=4 expandtab: */