VirtualBox

Changeset 29753 in vbox


Ignore:
Timestamp:
May 24, 2010 2:35:53 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
61942
Message:

VirtualBoxErrorInfoImp.h: A shot at fixing the #4966.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/VirtualBoxErrorInfoImpl.h

    r28800 r29753  
    11/** @file
    2  *
    3  * VirtualBoxErrorInfo COM classe definition
     2 * VirtualBoxErrorInfo COM class definition.
    43 */
    54
    65/*
    7  * Copyright (C) 2006-2007 Oracle Corporation
     6 * Copyright (C) 2006-2010 Oracle Corporation
    87 *
    98 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2423
    2524class ATL_NO_VTABLE VirtualBoxErrorInfo
    26     : public CComObjectRootEx <CComMultiThreadModel>
    27     , public IVirtualBoxErrorInfo
     25    : public CComObjectRootEx<CComMultiThreadModel>
     26    , VBOX_SCRIPTABLE_IMPL(IVirtualBoxErrorInfo)
     27#ifndef VBOX_WITH_XPCOM /* IErrorInfo doesn't inherit from IDispatch, ugly 3am hack: */
     28    , public IDispatch
     29#endif
    2830{
    2931public:
     
    3638        COM_INTERFACE_ENTRY(IErrorInfo)
    3739        COM_INTERFACE_ENTRY(IVirtualBoxErrorInfo)
     40        COM_INTERFACE_ENTRY(IDispatch)
    3841    END_COM_MAP()
    3942
    40 #if defined (RT_OS_WINDOWS)
     43#ifndef VBOX_WITH_XPCOM
    4144
    42     HRESULT init (IErrorInfo *aInfo);
     45    HRESULT init(IErrorInfo *aInfo);
    4346
    44     STDMETHOD(GetGUID) (GUID *guid);
    45     STDMETHOD(GetSource) (BSTR *source);
    46     STDMETHOD(GetDescription) (BSTR *description);
    47     STDMETHOD(GetHelpFile) (BSTR *pBstrHelpFile);
    48     STDMETHOD(GetHelpContext) (DWORD *pdwHelpContext);
     47    STDMETHOD(GetGUID)(GUID *guid);
     48    STDMETHOD(GetSource)(BSTR *source);
     49    STDMETHOD(GetDescription)(BSTR *description);
     50    STDMETHOD(GetHelpFile)(BSTR *pBstrHelpFile);
     51    STDMETHOD(GetHelpContext)(DWORD *pdwHelpContext);
    4952
    50 #else // !defined (RT_OS_WINDOWS)
     53    // IDispatch forwarding - 3am hack.
     54    typedef IDispatchImpl<IVirtualBoxErrorInfo, &IID_IVirtualBoxErrorInfo, &LIBID_VirtualBox, kTypeLibraryMajorVersion, kTypeLibraryMinorVersion> idi;
    5155
    52     HRESULT init (nsIException *aInfo);
     56    STDMETHOD(GetTypeInfoCount)(UINT *pcInfo)
     57    {
     58        return idi::GetTypeInfoCount(pcInfo);
     59    }
     60
     61    STDMETHOD(GetTypeInfo)(UINT iInfo, LCID Lcid, ITypeInfo **ppTypeInfo)
     62        {
     63        return idi::GetTypeInfo(iInfo, Lcid, ppTypeInfo);
     64        }
     65
     66        STDMETHOD(GetIDsOfNames)(REFIID rIID, LPOLESTR *papwszNames, UINT cNames, LCID Lcid, DISPID *paDispIDs)
     67        {
     68        return idi::GetIDsOfNames(rIID, papwszNames, cNames, Lcid, paDispIDs);
     69        }
     70
     71        STDMETHOD(Invoke)(DISPID idDispMember, REFIID rIID, LCID Lcid, WORD fw, DISPPARAMS *pDispParams,
     72                      VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *piErrArg)
     73        {
     74                return idi::Invoke(idDispMember, rIID, Lcid, fw, pDispParams, pVarResult, pExcepInfo, piErrArg);
     75        }
     76
     77#else // defined(VBOX_WITH_XPCOM)
     78
     79    HRESULT init(nsIException *aInfo);
    5380
    5481    NS_DECL_NSIEXCEPTION
     
    5683#endif
    5784
    58     VirtualBoxErrorInfo() : mResultCode (S_OK) {}
     85    VirtualBoxErrorInfo() : mResultCode(S_OK) {}
    5986
    6087    // public initializer/uninitializer for internal purposes only
    61     HRESULT init (HRESULT aResultCode, const GUID &aIID,
    62                   CBSTR aComponent, CBSTR aText,
    63                   IVirtualBoxErrorInfo *aNext = NULL);
     88    HRESULT init(HRESULT aResultCode, const GUID &aIID,
     89                 CBSTR aComponent, CBSTR aText,
     90                 IVirtualBoxErrorInfo *aNext = NULL);
    6491
    6592    // IVirtualBoxErrorInfo properties
    66     STDMETHOD(COMGETTER(ResultCode)) (LONG *aResultCode);
    67     STDMETHOD(COMGETTER(InterfaceID)) (BSTR *aIID);
    68     STDMETHOD(COMGETTER(Component)) (BSTR *aComponent);
    69     STDMETHOD(COMGETTER(Text)) (BSTR *aText);
    70     STDMETHOD(COMGETTER(Next)) (IVirtualBoxErrorInfo **aNext);
     93    STDMETHOD(COMGETTER(ResultCode))(LONG *aResultCode);
     94    STDMETHOD(COMGETTER(InterfaceID))(BSTR *aIID);
     95    STDMETHOD(COMGETTER(Component))(BSTR *aComponent);
     96    STDMETHOD(COMGETTER(Text))(BSTR *aText);
     97    STDMETHOD(COMGETTER(Next))(IVirtualBoxErrorInfo **aNext);
    7198
    7299private:
    73100    // FIXME: declare these here until VBoxSupportsTranslation base
    74101    //        is available in this class.
    75     static const char *tr (const char *a) { return a; }
     102    static const char *tr(const char *a) { return a; }
    76103    static HRESULT setError(HRESULT rc,
    77104                            const char * /* a */,
     
    86113};
    87114
    88 #endif // ____H_VIRTUALBOXERRORINFOIMPL
     115#endif // !____H_VIRTUALBOXERRORINFOIMPL
    89116
    90117/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette