NT4/private/oleauto/tests/sdisptst/sdisptst.h
2020-09-30 17:12:29 +02:00

121 lines
3.0 KiB
C++

/***
*sdisptst.h
*
* Copyright (C) 1992, Microsoft Corporation. All Rights Reserved.
* Information Contained Herein Is Proprietary and Confidential.
*
*Purpose:
* Master/Global include for the IDispatch test server.
*
*Revision History:
*
* [00] 29-Oct-92 bradlo: Created (added this nice header).
*
*Implementation Notes:
*
*****************************************************************************/
#ifndef _SDISPTST_H_ /* { */
#define _SDISPTST_H_
#include "common.h"
#include "clsid.h"
#include "testhelp.h"
#include "resource.h"
// REVIEW: not sure what the following should be for win32
#ifndef EXPORT
#define EXPORT __export
#endif
// calling convention madness -
//
// For both win16 and win32, Ole2 specifies a "standard" method
// calling convention. On both platforms the c/c++ compiler has
// at least one other major calling convention that we support
// in the TypeInfo driven implementation of Invoke, so we have added
// the notion of an "alternate" calling convention - as defined below.
//
#if OE_WIN32
# define CC_STDMETH CC_STDCALL
# define CC_ALTMETH CC_CDECL
# define ALTMETHODCALLTYPE __cdecl
#elif OE_MAC68K
# if HC_MPW
# define CC_STDMETH CC_MPWCDECL
# define CC_ALTMETH CC_MPWPASCAL
# define ALTMETHODCALLTYPE pascal
# else
# define CC_STDMETH CC_CDECL
# define CC_ALTMETH CC_MACPASCAL
# define ALTMETHODCALLTYPE __pascal
# endif
#elif OE_MACPPC
# define CC_STDMETH CC_CDECL
# define CC_ALTMETH CC_STDCALL
# define ALTMETHODCALLTYPE __stdcall
#else /* OE_WIN16 */
# define CC_STDMETH CC_CDECL
# define CC_ALTMETH CC_PASCAL
# define ALTMETHODCALLTYPE __pascal
#endif
#define ALTMETHOD_(TYPE, METHOD) virtual TYPE ALTMETHODCALLTYPE EXPORT METHOD
#define ALTMETHOD(METHOD) ALTMETHOD_(HRESULT, METHOD)
#define ALTMETHODIMP_(TYPE) TYPE ALTMETHODCALLTYPE EXPORT
#define ALTMETHODIMP ALTMETHODIMP_(HRESULT)
extern unsigned int g_fVerbose;
extern unsigned int IncObjectCount(void);
extern unsigned int DecObjectCount(void);
EXTERN_C void DoPrintf(char *sz, ...);
STDAPI InitOle(void);
STDAPI UninitOle(void);
// the following probably belongs elsewhere, but...
#ifdef __cplusplus /* { */
// A generic class factory implementation shared by all objects
// exposed by Sdisptst.
//
class CClassFactory : public IClassFactory
{
public:
static HRESULT Create(
HRESULT (*pfnCreate)(IUnknown FAR* punkOuter, IUnknown FAR* FAR* ppunk),
IClassFactory FAR* FAR* ppcf);
// IUnknown methods
//
STDMETHOD(QueryInterface)(REFIID iid, void FAR* FAR* ppv);
STDMETHOD_(unsigned long, AddRef)(void);
STDMETHOD_(unsigned long, Release)(void);
STDMETHOD(CreateInstance)(
IUnknown FAR* punkOuter, REFIID riid, void FAR* FAR* ppv);
#if OE_MAC
STDMETHOD(LockServer)(unsigned long fLock);
#else
STDMETHOD(LockServer)(BOOL fLock);
#endif
protected:
CClassFactory();
private:
unsigned long m_refs;
HRESULT (*m_pfnCreate)(IUnknown FAR* punkOuter, IUnknown FAR* FAR* ppunk);
};
#endif /* } */
#endif /* } */