/* * Copyright (C) 1998 François Gouget * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __WINE_OBJBASE_H #define __WINE_OBJBASE_H #define _OBJBASE_H_ #include "unknwn.h" /* the following depend only on obj_base.h */ #include "wine/obj_base.h" #include "wine/obj_misc.h" #include "wine/obj_channel.h" #include "wine/obj_clientserver.h" #include "wine/obj_storage.h" /* the following depend on obj_storage.h */ #include "wine/obj_marshal.h" #include "wine/obj_moniker.h" #include "wine/obj_propertystorage.h" /* the following depend on obj_moniker.h */ #include "wine/obj_dataobject.h" #include "wine/obj_dragdrop.h" #ifndef RC_INVOKED /* For compatibility only, at least for now */ #include #endif #ifndef INITGUID #include "cguid.h" #endif #ifdef __cplusplus extern "C" { #endif HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid); #ifdef __cplusplus } #endif #ifndef __WINE__ /* These macros are msdev's way of defining COM objects. * They are provided here for use by Winelib developpers. */ #define FARSTRUCT #define HUGEP #define WINOLEAPI STDAPI #define WINOLEAPI_(type) STDAPI_(type) #if defined(__cplusplus) && !defined(CINTERFACE) #define interface struct #define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method #define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method #define PURE = 0 #define THIS_ #define THIS void #define DECLARE_INTERFACE(iface) interface iface #define DECLARE_INTERFACE_(iface, baseiface) interface iface : public baseiface #define BEGIN_INTERFACE #define END_INTERFACE #else #define interface struct #define STDMETHOD(method) HRESULT STDMETHODCALLTYPE (*method) #define STDMETHOD_(type,method) type STDMETHODCALLTYPE (*method) #define PURE #define THIS_ INTERFACE FAR* This, #define THIS INTERFACE FAR* This #ifdef CONST_VTABLE #undef CONST_VTBL #define CONST_VTBL const #define DECLARE_INTERFACE(iface) \ typedef interface iface { const struct iface##Vtbl FAR* lpVtbl; } iface; \ typedef const struct iface##Vtbl iface##Vtbl; \ const struct iface##Vtbl #else #undef CONST_VTBL #define CONST_VTBL #define DECLARE_INTERFACE(iface) \ typedef interface iface { struct iface##Vtbl FAR* lpVtbl; } iface; \ typedef struct iface##Vtbl iface##Vtbl; \ struct iface##Vtbl #endif #define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE(iface) #define BEGIN_INTERFACE #define END_INTERFACE #endif /* __cplusplus && !CINTERFACE */ #endif /* __WINE__ */ #endif /* __WINE_OBJBASE_H */