diff options
Diffstat (limited to 'src/VBox/Main/include/VirtualBoxErrorInfoImpl.h')
| -rw-r--r-- | src/VBox/Main/include/VirtualBoxErrorInfoImpl.h | 77 |
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: */ |
