From d2d223b5802d14e040edec3bff7a10b5eb15d96b Mon Sep 17 00:00:00 2001 From: Danny Smith Date: Tue, 25 Jul 2006 00:22:19 +0000 Subject: [PATCH] * include/aclui.h: Replace __OBJC__ guard with _OBJC_NO_COM. * include/basetyps.h: Likewise. (_COM_interface): New define. (interface): Define to _COM_interface, conditional on !__OBJC__. Replace 'interface' with '_COM_interface', throughout. * include/comcat.h: Replace 'interface' with '_COM_interface', throughout. * include/commdlg.h: Replace __OBJC__ guard with _OBJC_NO_COM. * include/docobj.h: Replace 'interface' with '_COM_interface', throughout. * include/mshtml.h: Likewise. * include/oaidl.h: Likewise. * include/objfwd.h: Likewise. * include/objidl.h: Likewise. * include/ocidl.h: Likwise. * include/olectl.h: Likewise. * include/oleidl.h: Likewise. * include/shlobj.h: Likewise. * include/shlwapi.h: Replace __OBJC__ guard with _OBJC_NO_COM. * include/vfw.h: Likewise. * include/windows.h. Likewise. Add comment. * include/directx/d3d9.h: Replace 'interface' with '_COM_interface', throughout. * lib/test.c: Replace __OBJC__ guard with _OBJC_NO_COM. Add test for conflict with '@interface' --- winsup/w32api/ChangeLog | 30 +++++++++- winsup/w32api/include/aclui.h | 2 +- winsup/w32api/include/basetyps.h | 27 +++++---- winsup/w32api/include/comcat.h | 8 +-- winsup/w32api/include/commdlg.h | 8 +-- winsup/w32api/include/directx/d3d9.h | 34 +++++------ winsup/w32api/include/docobj.h | 4 +- winsup/w32api/include/mshtml.h | 36 ++++++------ winsup/w32api/include/oaidl.h | 30 +++++----- winsup/w32api/include/objfwd.h | 84 ++++++++++++++-------------- winsup/w32api/include/objidl.h | 4 +- winsup/w32api/include/ocidl.h | 36 ++++++------ winsup/w32api/include/olectl.h | 34 +++++------ winsup/w32api/include/oleidl.h | 36 ++++++------ winsup/w32api/include/shlobj.h | 4 +- winsup/w32api/include/shlwapi.h | 16 +++--- winsup/w32api/include/vfw.h | 10 ++-- winsup/w32api/include/windows.h | 7 ++- winsup/w32api/include/ws2spi.h | 2 +- winsup/w32api/lib/test.c | 18 ++++-- 20 files changed, 238 insertions(+), 192 deletions(-) diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog index 340002535..2b2dc8bf2 100644 --- a/winsup/w32api/ChangeLog +++ b/winsup/w32api/ChangeLog @@ -1,3 +1,31 @@ +2006-07-25 Danny Smith + + * include/aclui.h: Replace __OBJC__ guard with _OBJC_NO_COM. + * include/basetyps.h: Likewise. + (_COM_interface): New define. + (interface): Define to _COM_interface, conditional on !__OBJC__. + Replace 'interface' with '_COM_interface', throughout. + * include/comcat.h: Replace 'interface' with '_COM_interface', throughout. + * include/commdlg.h: Replace __OBJC__ guard with _OBJC_NO_COM. + * include/docobj.h: Replace 'interface' with '_COM_interface', throughout. + * include/mshtml.h: Likewise. + * include/oaidl.h: Likewise. + * include/objfwd.h: Likewise. + * include/objidl.h: Likewise. + * include/ocidl.h: Likwise. + * include/olectl.h: Likewise. + * include/oleidl.h: Likewise. + * include/shlobj.h: Likewise. + * include/shlwapi.h: Replace __OBJC__ guard with _OBJC_NO_COM. + * include/vfw.h: Likewise. + * include/windows.h. Likewise. Add comment. + * include/directx/d3d9.h: Replace 'interface' with '_COM_interface', + throughout. + + * lib/test.c: Replace __OBJC__ guard with _OBJC_NO_COM. + Add test for conflict with '@interface' + + 2006-07-22 ipsoner * include/wincrypt.h (szOID_RSA, szOID_PKCS, szOID_RSA_HASH, @@ -61,7 +89,7 @@ 2006-07-22 Chris Sutcliffe - * lib/uuid.c: Remove. + * lib/uuid.c: Remove. 2006-07-20 Elias Naur diff --git a/winsup/w32api/include/aclui.h b/winsup/w32api/include/aclui.h index 7502d9162..144711f00 100644 --- a/winsup/w32api/include/aclui.h +++ b/winsup/w32api/include/aclui.h @@ -4,7 +4,7 @@ #pragma GCC system_header #endif -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM #include #include #include diff --git a/winsup/w32api/include/basetyps.h b/winsup/w32api/include/basetyps.h index ac6015381..7c38b3943 100644 --- a/winsup/w32api/include/basetyps.h +++ b/winsup/w32api/include/basetyps.h @@ -4,7 +4,7 @@ #pragma GCC system_header #endif -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM_ # ifdef __cplusplus # define EXTERN_C extern "C" # else @@ -40,7 +40,14 @@ # define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE # define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE # define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE -# define interface struct +/* Newer MS compilers support the __interface keyword, but + that has a specific meaning that is enforced by the compiler. + For now, just get 'interface' out of the global namespace + for __OBJC__ */ +# define _COM_interface struct +# ifndef __OBJC__ +# define interface _COM_interface +# endif # if defined(__cplusplus) && !defined(CINTERFACE) # define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m # define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m @@ -52,11 +59,11 @@ g++ vtables are now COM-compatible by default */ # if defined(__GNUC__) && __GNUC__ < 3 && !defined(NOCOMATTRIBUTE) -# define DECLARE_INTERFACE(i) interface __attribute__((com_interface)) i -# define DECLARE_INTERFACE_(i,b) interface __attribute__((com_interface)) i : public b +# define DECLARE_INTERFACE(i) _COM_interface __attribute__((com_interface)) i +# define DECLARE_INTERFACE_(i,b) _COM_interface __attribute__((com_interface)) i : public b # else -# define DECLARE_INTERFACE(i) interface i -# define DECLARE_INTERFACE_(i,b) interface i : public b +# define DECLARE_INTERFACE(i) _COM_interface i +# define DECLARE_INTERFACE_(i,b) _COM_interface i : public b # endif # else # define STDMETHOD(m) HRESULT(STDMETHODCALLTYPE *m) @@ -68,7 +75,7 @@ # define CONST_VTABLE # endif # define DECLARE_INTERFACE(i) \ - typedef interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \ + typedef _COM_interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \ typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \ CONST_VTABLE struct i##Vtbl # define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i) @@ -76,7 +83,7 @@ # define BEGIN_INTERFACE # define END_INTERFACE -# define FWD_DECL(i) typedef interface i i +# define FWD_DECL(i) typedef _COM_interface i i # if defined(__cplusplus) && !defined(CINTERFACE) # define IENUM_THIS(T) # define IENUM_THIS_(T) @@ -97,7 +104,7 @@ } # define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T) -#endif /* __OBJC__ */ +#endif /* _OBJC_NO_COM_ */ #ifdef _GUID_DEFINED # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead @@ -169,4 +176,4 @@ typedef unsigned long PROPID; #define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n #define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) #endif -#endif +#endif diff --git a/winsup/w32api/include/comcat.h b/winsup/w32api/include/comcat.h index 2ca9a5fbb..b5d982b7e 100644 --- a/winsup/w32api/include/comcat.h +++ b/winsup/w32api/include/comcat.h @@ -16,7 +16,7 @@ extern "C"{ #endif EXTERN_C const IID IID_IEnumGUID; -typedef interface IEnumGUID *LPENUMGUID; +typedef _COM_interface IEnumGUID *LPENUMGUID; #define INTERFACE IEnumGUID DECLARE_INTERFACE_(IEnumGUID,IUnknown) @@ -79,13 +79,13 @@ EXTERN_C const CATID CATID_DesignTimeUIActivatableControl; #define IID_IEnumCLSID IID_IEnumGUID EXTERN_C const IID IID_ICatInformation; -typedef interface ICatInformation *LPCATINFORMATION; +typedef _COM_interface ICatInformation *LPCATINFORMATION; EXTERN_C const IID IID_ICatRegister; -typedef interface ICatRegister *LPCATREGISTER; +typedef _COM_interface ICatRegister *LPCATREGISTER; EXTERN_C const IID IID_IEnumCATEGORYINFO; -typedef interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO; +typedef _COM_interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO; EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr; diff --git a/winsup/w32api/include/commdlg.h b/winsup/w32api/include/commdlg.h index dfce3cf8f..4c38774c2 100644 --- a/winsup/w32api/include/commdlg.h +++ b/winsup/w32api/include/commdlg.h @@ -466,7 +466,7 @@ typedef struct tagPDW { HANDLE hPrintTemplate; HANDLE hSetupTemplate; } PRINTDLGW,*LPPRINTDLGW; -#if (WINVER >= 0x0500) && !defined (__OBJC__) +#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM) #include /* for LPUNKNOWN */ #include /* for HPROPSHEETPAGE */ typedef struct tagPRINTPAGERANGE { @@ -540,7 +540,7 @@ BOOL WINAPI PrintDlgA(LPPRINTDLGA); BOOL WINAPI PrintDlgW(LPPRINTDLGW); HWND WINAPI ReplaceTextA(LPFINDREPLACEA); HWND WINAPI ReplaceTextW(LPFINDREPLACEW); -#if (WINVER >= 0x0500) && !defined (__OBJC__) +#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM) HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA); HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW); #endif /* WINVER >= 0x0500 */ @@ -569,7 +569,7 @@ typedef PRINTDLGW PRINTDLG,*LPPRINTDLG; #define PageSetupDlg PageSetupDlgW #define PrintDlg PrintDlgW #define ReplaceText ReplaceTextW -#if (WINVER >= 0x0500) && !defined (__OBJC__) +#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM) typedef PRINTDLGEXW PRINTDLGEX, *LPPRINTDLGEX; #define PrintDlgEx PrintDlgExW #endif /* WINVER >= 0x0500 */ @@ -597,7 +597,7 @@ typedef PRINTDLGA PRINTDLG,*LPPRINTDLG; #define PageSetupDlg PageSetupDlgA #define PrintDlg PrintDlgA #define ReplaceText ReplaceTextA -#if (WINVER >= 0x0500) && !defined (__OBJC__) +#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM) typedef PRINTDLGEXA PRINTDLGEX, *LPPRINTDLGEX; #define PrintDlgEx PrintDlgExA #endif /* WINVER >= 0x0500 */ diff --git a/winsup/w32api/include/directx/d3d9.h b/winsup/w32api/include/directx/d3d9.h index 0a9a0a5f7..920c1294e 100644 --- a/winsup/w32api/include/directx/d3d9.h +++ b/winsup/w32api/include/directx/d3d9.h @@ -98,23 +98,23 @@ extern const GUID IID_IDirect3DQuery9; }; #endif -typedef interface IDirect3D9 IDirect3D9; -typedef interface IDirect3DDevice9 IDirect3DDevice9; -typedef interface IDirect3DVolume9 IDirect3DVolume9; -typedef interface IDirect3DSwapChain9 IDirect3DSwapChain9; -typedef interface IDirect3DResource9 IDirect3DResource9; -typedef interface IDirect3DSurface9 IDirect3DSurface9; -typedef interface IDirect3DVertexBuffer9 IDirect3DVertexBuffer9; -typedef interface IDirect3DIndexBuffer9 IDirect3DIndexBuffer9; -typedef interface IDirect3DBaseTexture9 IDirect3DBaseTexture9; -typedef interface IDirect3DCubeTexture9 IDirect3DCubeTexture9; -typedef interface IDirect3DTexture9 IDirect3DTexture9; -typedef interface IDirect3DVolumeTexture9 IDirect3DVolumeTexture9; -typedef interface IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9; -typedef interface IDirect3DVertexShader9 IDirect3DVertexShader9; -typedef interface IDirect3DPixelShader9 IDirect3DPixelShader9; -typedef interface IDirect3DStateBlock9 IDirect3DStateBlock9; -typedef interface IDirect3DQuery9 IDirect3DQuery9; +typedef _COM_interface IDirect3D9 IDirect3D9; +typedef _COM_interface IDirect3DDevice9 IDirect3DDevice9; +typedef _COM_interface IDirect3DVolume9 IDirect3DVolume9; +typedef _COM_interface IDirect3DSwapChain9 IDirect3DSwapChain9; +typedef _COM_interface IDirect3DResource9 IDirect3DResource9; +typedef _COM_interface IDirect3DSurface9 IDirect3DSurface9; +typedef _COM_interface IDirect3DVertexBuffer9 IDirect3DVertexBuffer9; +typedef _COM_interface IDirect3DIndexBuffer9 IDirect3DIndexBuffer9; +typedef _COM_interface IDirect3DBaseTexture9 IDirect3DBaseTexture9; +typedef _COM_interface IDirect3DCubeTexture9 IDirect3DCubeTexture9; +typedef _COM_interface IDirect3DTexture9 IDirect3DTexture9; +typedef _COM_interface IDirect3DVolumeTexture9 IDirect3DVolumeTexture9; +typedef _COM_interface IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9; +typedef _COM_interface IDirect3DVertexShader9 IDirect3DVertexShader9; +typedef _COM_interface IDirect3DPixelShader9 IDirect3DPixelShader9; +typedef _COM_interface IDirect3DStateBlock9 IDirect3DStateBlock9; +typedef _COM_interface IDirect3DQuery9 IDirect3DQuery9; #undef INTERFACE #define INTERFACE IDirect3D9 diff --git a/winsup/w32api/include/docobj.h b/winsup/w32api/include/docobj.h index 77761c547..e6666bf7b 100644 --- a/winsup/w32api/include/docobj.h +++ b/winsup/w32api/include/docobj.h @@ -70,8 +70,8 @@ typedef struct _tagOLECMD { DWORD cmdf; } OLECMD; -typedef interface IOleInPlaceSite *LPOLEINPLACESITE; -typedef interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS; +typedef _COM_interface IOleInPlaceSite *LPOLEINPLACESITE; +typedef _COM_interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS; EXTERN_C const IID IID_IContinueCallback; EXTERN_C const IID IID_IEnumOleDocumentViews; diff --git a/winsup/w32api/include/mshtml.h b/winsup/w32api/include/mshtml.h index 91ff19815..a91eefa03 100644 --- a/winsup/w32api/include/mshtml.h +++ b/winsup/w32api/include/mshtml.h @@ -8,24 +8,24 @@ extern "C" { #endif -typedef interface IHTMLElementCollection *LPHTMLELEMENTCOLLECTION; -typedef interface IHTMLElement *LPHTMLELEMENT; -typedef interface IHTMLSelectionObject *LPHTMLSELECTIONOBJECT; -typedef interface IHTMLFramesCollection *LPHTMLFRAMESCOLLECTION; -typedef interface IHTMLLocation *LPHTMLLOCATION; -typedef interface IHTMLWindow2 *LPHTMLWINDOW2; -typedef interface IHTMLStyleSheetsCollection *LPHTMLSTYLESHEETSCOLLECTION; -typedef interface IHTMLStyleSheet *LPHTMLSTYLESHEET; -typedef interface IHTMLStyle *LPHTMLSTYLE; -typedef interface IHTMLFiltersCollection *LPHTMLFILTERSCOLLECTION; -typedef interface IHTMLLinkElement *LPHTMLLINKELEMENT; -typedef interface IHTMLImgElement *LPHTMLIMGELEMENT; -typedef interface IHTMLImageElementFactory *LPHTMLIMAGEELEMENTFACTORY; -typedef interface IHTMLEventObj *LPHTMLEVENTOBJ; -typedef interface IHTMLScreen *LPHTMLSCREEN; -typedef interface IHTMLOptionElementFactory *LPHTMLOPTIONELEMENTFACTORY; -typedef interface IOmHistory *LPOMHISTORY; -typedef interface IOmNavigator *LPOMNAVIGATOR; +typedef _COM_interface IHTMLElementCollection *LPHTMLELEMENTCOLLECTION; +typedef _COM_interface IHTMLElement *LPHTMLELEMENT; +typedef _COM_interface IHTMLSelectionObject *LPHTMLSELECTIONOBJECT; +typedef _COM_interface IHTMLFramesCollection *LPHTMLFRAMESCOLLECTION; +typedef _COM_interface IHTMLLocation *LPHTMLLOCATION; +typedef _COM_interface IHTMLWindow2 *LPHTMLWINDOW2; +typedef _COM_interface IHTMLStyleSheetsCollection *LPHTMLSTYLESHEETSCOLLECTION; +typedef _COM_interface IHTMLStyleSheet *LPHTMLSTYLESHEET; +typedef _COM_interface IHTMLStyle *LPHTMLSTYLE; +typedef _COM_interface IHTMLFiltersCollection *LPHTMLFILTERSCOLLECTION; +typedef _COM_interface IHTMLLinkElement *LPHTMLLINKELEMENT; +typedef _COM_interface IHTMLImgElement *LPHTMLIMGELEMENT; +typedef _COM_interface IHTMLImageElementFactory *LPHTMLIMAGEELEMENTFACTORY; +typedef _COM_interface IHTMLEventObj *LPHTMLEVENTOBJ; +typedef _COM_interface IHTMLScreen *LPHTMLSCREEN; +typedef _COM_interface IHTMLOptionElementFactory *LPHTMLOPTIONELEMENTFACTORY; +typedef _COM_interface IOmHistory *LPOMHISTORY; +typedef _COM_interface IOmNavigator *LPOMNAVIGATOR; EXTERN_C const IID IID_IHTMLLinkElement; #define INTERFACE IHTMLLinkElement diff --git a/winsup/w32api/include/oaidl.h b/winsup/w32api/include/oaidl.h index 3fc043488..8aecd1bde 100644 --- a/winsup/w32api/include/oaidl.h +++ b/winsup/w32api/include/oaidl.h @@ -58,21 +58,21 @@ extern "C" { #define IMPLTYPEFLAG_FRESTRICTED 4 #define IMPLTYPEFLAG_FDEFAULTVTABLE 8 -typedef interface ITypeLib *LPTYPELIB; -typedef interface ITypeLib2 *LPTYPELIB2; -typedef interface ICreateTypeInfo *LPCREATETYPEINFO; -typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2; -typedef interface ICreateTypeLib *LPCREATETYPELIB; -typedef interface ICreateTypeLib2 *LPCREATETYPELIB2; -typedef interface ITypeComp *LPTYPECOMP; -typedef interface ITypeInfo *LPTYPEINFO; -typedef interface ITypeInfo2 *LPTYPEINFO2; -typedef interface IErrorInfo *LPERRORINFO; -typedef interface IDispatch *LPDISPATCH; -typedef interface IEnumVARIANT *LPENUMVARIANT; -typedef interface ICreateErrorInfo *LPCREATEERRORINFO; -typedef interface ISupportErrorInfo *LPSUPPORTERRORINFO; -typedef interface IRecordInfo *LPRECORDINFO; +typedef _COM_interface ITypeLib *LPTYPELIB; +typedef _COM_interface ITypeLib2 *LPTYPELIB2; +typedef _COM_interface ICreateTypeInfo *LPCREATETYPEINFO; +typedef _COM_interface ICreateTypeInfo2 *LPCREATETYPEINFO2; +typedef _COM_interface ICreateTypeLib *LPCREATETYPELIB; +typedef _COM_interface ICreateTypeLib2 *LPCREATETYPELIB2; +typedef _COM_interface ITypeComp *LPTYPECOMP; +typedef _COM_interface ITypeInfo *LPTYPEINFO; +typedef _COM_interface ITypeInfo2 *LPTYPEINFO2; +typedef _COM_interface IErrorInfo *LPERRORINFO; +typedef _COM_interface IDispatch *LPDISPATCH; +typedef _COM_interface IEnumVARIANT *LPENUMVARIANT; +typedef _COM_interface ICreateErrorInfo *LPCREATEERRORINFO; +typedef _COM_interface ISupportErrorInfo *LPSUPPORTERRORINFO; +typedef _COM_interface IRecordInfo *LPRECORDINFO; extern const IID IID_ITypeLib; extern const IID IID_ITypeLib2; diff --git a/winsup/w32api/include/objfwd.h b/winsup/w32api/include/objfwd.h index 8fede73aa..41d80d649 100644 --- a/winsup/w32api/include/objfwd.h +++ b/winsup/w32api/include/objfwd.h @@ -9,48 +9,48 @@ #ifdef __cplusplus extern "C" { #endif -typedef interface IMoniker *LPMONIKER; -typedef interface IStream *LPSTREAM; -typedef interface IMarshal *LPMARSHAL; -typedef interface IMalloc *LPMALLOC; -typedef interface IMallocSpy *LPMALLOCSPY; -typedef interface IMessageFilter *LPMESSAGEFILTER; -typedef interface IPersist *LPPERSIST; -typedef interface IPersistStream *LPPERSISTSTREAM; -typedef interface IRunningObjectTable *LPRUNNINGOBJECTTABLE; -typedef interface IBindCtx *LPBINDCTX,*LPBC; -typedef interface IAdviseSink *LPADVISESINK; -typedef interface IAdviseSink2 *LPADVISESINK2; -typedef interface IDataObject *LPDATAOBJECT; -typedef interface IDataAdviseHolder *LPDATAADVISEHOLDER; -typedef interface IEnumMoniker *LPENUMMONIKER; -typedef interface IEnumFORMATETC *LPENUMFORMATETC; -typedef interface IEnumSTATDATA *LPENUMSTATDATA; -typedef interface IEnumSTATSTG *LPENUMSTATSTG; -typedef interface IEnumSTATPROPSTG LPENUMSTATPROPSTG; -typedef interface IEnumString *LPENUMSTRING; -typedef interface IEnumUnknown *LPENUMUNKNOWN; -typedef interface IStorage *LPSTORAGE; -typedef interface IPersistStorage *LPPERSISTSTORAGE; -typedef interface ILockBytes *LPLOCKBYTES; -typedef interface IStdMarshalInfo *LPSTDMARSHALINFO; -typedef interface IExternalConnection *LPEXTERNALCONNECTION; -typedef interface IRunnableObject *LPRUNNABLEOBJECT; -typedef interface IROTData *LPROTDATA; -typedef interface IPersistFile *LPPERSISTFILE; -typedef interface IRootStorage *LPROOTSTORAGE; -typedef interface IRpcChannelBuffer *LPRPCCHANNELBUFFER; -typedef interface IRpcProxyBuffer *LPRPCPROXYBUFFER; -typedef interface IRpcStubBuffer *LPRPCSTUBBUFFER; -typedef interface IPropertyStorage *LPPROPERTYSTORAGE; -typedef interface IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; -typedef interface IPropertySetStorage *LPPROPERTYSETSTORAGE; -typedef interface IClientSecurity *LPCLIENTSECURITY; -typedef interface IServerSecurity *LPSERVERSECURITY; -typedef interface IClassActivator *LPCLASSACTIVATOR; -typedef interface IFillLockBytes *LPFILLLOCKBYTES; -typedef interface IProgressNotify *LPPROGRESSNOTIFY; -typedef interface ILayoutStorage *LPLAYOUTSTORAGE; +typedef _COM_interface IMoniker *LPMONIKER; +typedef _COM_interface IStream *LPSTREAM; +typedef _COM_interface IMarshal *LPMARSHAL; +typedef _COM_interface IMalloc *LPMALLOC; +typedef _COM_interface IMallocSpy *LPMALLOCSPY; +typedef _COM_interface IMessageFilter *LPMESSAGEFILTER; +typedef _COM_interface IPersist *LPPERSIST; +typedef _COM_interface IPersistStream *LPPERSISTSTREAM; +typedef _COM_interface IRunningObjectTable *LPRUNNINGOBJECTTABLE; +typedef _COM_interface IBindCtx *LPBINDCTX,*LPBC; +typedef _COM_interface IAdviseSink *LPADVISESINK; +typedef _COM_interface IAdviseSink2 *LPADVISESINK2; +typedef _COM_interface IDataObject *LPDATAOBJECT; +typedef _COM_interface IDataAdviseHolder *LPDATAADVISEHOLDER; +typedef _COM_interface IEnumMoniker *LPENUMMONIKER; +typedef _COM_interface IEnumFORMATETC *LPENUMFORMATETC; +typedef _COM_interface IEnumSTATDATA *LPENUMSTATDATA; +typedef _COM_interface IEnumSTATSTG *LPENUMSTATSTG; +typedef _COM_interface IEnumSTATPROPSTG LPENUMSTATPROPSTG; +typedef _COM_interface IEnumString *LPENUMSTRING; +typedef _COM_interface IEnumUnknown *LPENUMUNKNOWN; +typedef _COM_interface IStorage *LPSTORAGE; +typedef _COM_interface IPersistStorage *LPPERSISTSTORAGE; +typedef _COM_interface ILockBytes *LPLOCKBYTES; +typedef _COM_interface IStdMarshalInfo *LPSTDMARSHALINFO; +typedef _COM_interface IExternalConnection *LPEXTERNALCONNECTION; +typedef _COM_interface IRunnableObject *LPRUNNABLEOBJECT; +typedef _COM_interface IROTData *LPROTDATA; +typedef _COM_interface IPersistFile *LPPERSISTFILE; +typedef _COM_interface IRootStorage *LPROOTSTORAGE; +typedef _COM_interface IRpcChannelBuffer *LPRPCCHANNELBUFFER; +typedef _COM_interface IRpcProxyBuffer *LPRPCPROXYBUFFER; +typedef _COM_interface IRpcStubBuffer *LPRPCSTUBBUFFER; +typedef _COM_interface IPropertyStorage *LPPROPERTYSTORAGE; +typedef _COM_interface IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; +typedef _COM_interface IPropertySetStorage *LPPROPERTYSETSTORAGE; +typedef _COM_interface IClientSecurity *LPCLIENTSECURITY; +typedef _COM_interface IServerSecurity *LPSERVERSECURITY; +typedef _COM_interface IClassActivator *LPCLASSACTIVATOR; +typedef _COM_interface IFillLockBytes *LPFILLLOCKBYTES; +typedef _COM_interface IProgressNotify *LPPROGRESSNOTIFY; +typedef _COM_interface ILayoutStorage *LPLAYOUTSTORAGE; #ifdef __cplusplus } #endif diff --git a/winsup/w32api/include/objidl.h b/winsup/w32api/include/objidl.h index 4ac935a12..8d7040467 100644 --- a/winsup/w32api/include/objidl.h +++ b/winsup/w32api/include/objidl.h @@ -458,7 +458,7 @@ DECLARE_ENUMERATOR(STATPROPSETSTG); DECLARE_ENUMERATOR(STATPROPSTG); DECLARE_ENUMERATOR(STATSTG); DECLARE_ENUMERATOR_(IEnumString,LPOLESTR); -DECLARE_ENUMERATOR_(IEnumMoniker,interface IMoniker*); +DECLARE_ENUMERATOR_(IEnumMoniker,_COM_interface IMoniker*); DECLARE_ENUMERATOR_(IEnumUnknown,IUnknown*); EXTERN_C const IID IID_ISequentialStream; @@ -854,7 +854,7 @@ DECLARE_INTERFACE_(IPSFactoryBuffer,IUnknown) STDMETHOD(CreateStub)(THIS_ REFIID,LPUNKNOWN,LPRPCSTUBBUFFER*) PURE; }; #undef INTERFACE -typedef interface IPSFactoryBuffer *LPPSFACTORYBUFFER; +typedef _COM_interface IPSFactoryBuffer *LPPSFACTORYBUFFER; EXTERN_C const IID IID_ILockBytes; #define INTERFACE ILockBytes diff --git a/winsup/w32api/include/ocidl.h b/winsup/w32api/include/ocidl.h index 0e6398742..79f6b43d4 100644 --- a/winsup/w32api/include/ocidl.h +++ b/winsup/w32api/include/ocidl.h @@ -10,16 +10,16 @@ extern "C" { #include -typedef interface IErrorLog *LPERRORLOG; -typedef interface IPropertyBag *LPPROPERTYBAG; -typedef interface IPropertyBag2 *LPPROPERTYBAG2; -typedef interface IEnumConnections *LPENUMCONNECTIONS; -typedef interface IConnectionPoint *LPCONNECTIONPOINT; -typedef interface IEnumConnectionPoints *LPENUMCONNECTIONPOINTS; -typedef interface IPropertyPageSite *LPPROPERTYPAGESITE; -typedef interface IFont *LPFONT; -typedef interface IFontDisp *LPFONTDISP; -typedef interface IOleUndoManager *LPOLEUNDOMANAGER; +typedef _COM_interface IErrorLog *LPERRORLOG; +typedef _COM_interface IPropertyBag *LPPROPERTYBAG; +typedef _COM_interface IPropertyBag2 *LPPROPERTYBAG2; +typedef _COM_interface IEnumConnections *LPENUMCONNECTIONS; +typedef _COM_interface IConnectionPoint *LPCONNECTIONPOINT; +typedef _COM_interface IEnumConnectionPoints *LPENUMCONNECTIONPOINTS; +typedef _COM_interface IPropertyPageSite *LPPROPERTYPAGESITE; +typedef _COM_interface IFont *LPFONT; +typedef _COM_interface IFontDisp *LPFONTDISP; +typedef _COM_interface IOleUndoManager *LPOLEUNDOMANAGER; #ifndef OLE2ANSI typedef TEXTMETRICW TEXTMETRICOLE; @@ -73,21 +73,21 @@ typedef enum tagQACONTAINERFLAGS typedef struct tagQACONTAINER { ULONG cbSize; - interface IOleClientSite *pClientSite; - interface IAdviseSinkEx *pAdviseSink; - interface IPropertyNotifySink *pPropertyNotifySink; + _COM_interface IOleClientSite *pClientSite; + _COM_interface IAdviseSinkEx *pAdviseSink; + _COM_interface IPropertyNotifySink *pPropertyNotifySink; IUnknown *pUnkEventSink; DWORD dwAmbientFlags; OLE_COLOR colorFore; OLE_COLOR colorBack; - interface IFont *pFont; - interface IOleUndoManager *pUndoMgr; + _COM_interface IFont *pFont; + _COM_interface IOleUndoManager *pUndoMgr; DWORD dwAppearance; LONG lcid; HPALETTE hpal; - interface IBindHost *pBindHost; - interface IOleControlSite *pOleControlSite; - interface IServiceProvider *pServiceProvider; + _COM_interface IBindHost *pBindHost; + _COM_interface IOleControlSite *pOleControlSite; + _COM_interface IServiceProvider *pServiceProvider; } QACONTAINER; typedef struct tagQACONTROL { diff --git a/winsup/w32api/include/olectl.h b/winsup/w32api/include/olectl.h index f0b86bc32..f6e915fea 100644 --- a/winsup/w32api/include/olectl.h +++ b/winsup/w32api/include/olectl.h @@ -225,24 +225,24 @@ extern "C" { #define DISPID_PICT_HEIGHT 5 #define DISPID_PICT_RENDER 6 -typedef interface IOleControl *LPOLECONTROL; -typedef interface IOleControlSite *LPOLECONTROLSITE; -typedef interface ISimpleFrameSite *LPSIMPLEFRAMESITE; -typedef interface IPersistPropertyBag *LPPERSISTPROPERTYBAG; -typedef interface IPersistStreamInit *LPPERSISTSTREAMINIT; -typedef interface IPersistMemory *LPPERSISTMEMORY; -typedef interface IPropertyNotifySink* LPPROPERTYNOTIFYSINK; -typedef interface IProvideClassInfo *LPPROVIDECLASSINFO; -typedef interface IProvideClassInfo2 *LPPROVIDECLASSINFO2; -typedef interface IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER; -typedef interface IClassFactory2 *LPCLASSFACTORY2; -typedef interface ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; -typedef interface IPerPropertyBrowsing *LPPERPROPERTYBROWSING; -typedef interface IPropertyPage *LPPROPERTYPAGE; -typedef interface IPropertyPage2 *LPPROPERTYPAGE2; +typedef _COM_interface IOleControl *LPOLECONTROL; +typedef _COM_interface IOleControlSite *LPOLECONTROLSITE; +typedef _COM_interface ISimpleFrameSite *LPSIMPLEFRAMESITE; +typedef _COM_interface IPersistPropertyBag *LPPERSISTPROPERTYBAG; +typedef _COM_interface IPersistStreamInit *LPPERSISTSTREAMINIT; +typedef _COM_interface IPersistMemory *LPPERSISTMEMORY; +typedef _COM_interface IPropertyNotifySink* LPPROPERTYNOTIFYSINK; +typedef _COM_interface IProvideClassInfo *LPPROVIDECLASSINFO; +typedef _COM_interface IProvideClassInfo2 *LPPROVIDECLASSINFO2; +typedef _COM_interface IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER; +typedef _COM_interface IClassFactory2 *LPCLASSFACTORY2; +typedef _COM_interface ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; +typedef _COM_interface IPerPropertyBrowsing *LPPERPROPERTYBROWSING; +typedef _COM_interface IPropertyPage *LPPROPERTYPAGE; +typedef _COM_interface IPropertyPage2 *LPPROPERTYPAGE2; -typedef interface IPicture *LPPICTURE; -typedef interface IPictureDisp *LPPICTUREDISP; +typedef _COM_interface IPicture *LPPICTURE; +typedef _COM_interface IPictureDisp *LPPICTUREDISP; typedef long OLE_XPOS_PIXELS; typedef long OLE_YPOS_PIXELS; typedef long OLE_XSIZE_PIXELS; diff --git a/winsup/w32api/include/oleidl.h b/winsup/w32api/include/oleidl.h index e5962cfd6..bade579dd 100644 --- a/winsup/w32api/include/oleidl.h +++ b/winsup/w32api/include/oleidl.h @@ -12,24 +12,24 @@ extern "C" { #define MK_ALT 32 -typedef interface IParseDisplayName *LPPARSEDISPLAYNAME; -typedef interface IOleContainer *LPOLECONTAINER; -typedef interface IOleClientSite *LPOLECLIENTSITE; -typedef interface IOleObject *LPOLEOBJECT; -typedef interface IDropTarget *LPDROPTARGET; -typedef interface IDropSource *LPDROPSOURCE; -typedef interface IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; -typedef interface IEnumOLEVERB *LPENUMOLEVERB; -typedef interface IOleWindow *LPOLEWINDOW; -typedef interface IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; -typedef interface IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; -typedef interface IOleInPlaceFrame *LPOLEINPLACEFRAME; -typedef interface IOleAdviseHolder *LPOLEADVISEHOLDER; -typedef interface IViewObject *LPVIEWOBJECT; -typedef interface IViewObject2 *LPVIEWOBJECT2; -typedef interface IOleCache *LPOLECACHE; -typedef interface IOleCache2 *LPOLECACHE2; -typedef interface IOleCacheControl *LPOLECACHECONTROL; +typedef _COM_interface IParseDisplayName *LPPARSEDISPLAYNAME; +typedef _COM_interface IOleContainer *LPOLECONTAINER; +typedef _COM_interface IOleClientSite *LPOLECLIENTSITE; +typedef _COM_interface IOleObject *LPOLEOBJECT; +typedef _COM_interface IDropTarget *LPDROPTARGET; +typedef _COM_interface IDropSource *LPDROPSOURCE; +typedef _COM_interface IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; +typedef _COM_interface IEnumOLEVERB *LPENUMOLEVERB; +typedef _COM_interface IOleWindow *LPOLEWINDOW; +typedef _COM_interface IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; +typedef _COM_interface IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; +typedef _COM_interface IOleInPlaceFrame *LPOLEINPLACEFRAME; +typedef _COM_interface IOleAdviseHolder *LPOLEADVISEHOLDER; +typedef _COM_interface IViewObject *LPVIEWOBJECT; +typedef _COM_interface IViewObject2 *LPVIEWOBJECT2; +typedef _COM_interface IOleCache *LPOLECACHE; +typedef _COM_interface IOleCache2 *LPOLECACHE2; +typedef _COM_interface IOleCacheControl *LPOLECACHECONTROL; typedef enum tagBINDSPEED { diff --git a/winsup/w32api/include/shlobj.h b/winsup/w32api/include/shlobj.h index 1c41ac9d0..960910521 100644 --- a/winsup/w32api/include/shlobj.h +++ b/winsup/w32api/include/shlobj.h @@ -1102,8 +1102,8 @@ typedef IPersistFolder3 *LPPERSISTFOLDER3; #endif /* _WIN32_IE >= 0x0500 */ -typedef interface IShellBrowser *LPSHELLBROWSER; -typedef interface IShellView *LPSHELLVIEW; +typedef _COM_interface IShellBrowser *LPSHELLBROWSER; +typedef _COM_interface IShellView *LPSHELLVIEW; #define INTERFACE IShellBrowser DECLARE_INTERFACE_(IShellBrowser,IOleWindow) diff --git a/winsup/w32api/include/shlwapi.h b/winsup/w32api/include/shlwapi.h index 764af9517..fbb170ec7 100644 --- a/winsup/w32api/include/shlwapi.h +++ b/winsup/w32api/include/shlwapi.h @@ -8,7 +8,7 @@ extern "C" { #endif -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM #include #include #endif @@ -166,7 +166,7 @@ WINSHLWAPI LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD); WINSHLWAPI LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WCHAR); WINSHLWAPI LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD); WINSHLWAPI LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WCHAR); -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM WINSHLWAPI HRESULT WINAPI StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT); WINSHLWAPI HRESULT WINAPI StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT); WINSHLWAPI HRESULT WINAPI StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*); @@ -297,7 +297,7 @@ WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR); WINSHLWAPI void WINAPI PathUnquoteSpacesA(LPSTR); WINSHLWAPI void WINAPI PathUnquoteSpacesW(LPWSTR); WINSHLWAPI HRESULT WINAPI SHAutoComplete(HWND,DWORD); -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**); WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**); WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); @@ -318,7 +318,7 @@ WINSHLWAPI DWORD WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); WINSHLWAPI DWORD WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); WINSHLWAPI DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); WINSHLWAPI DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM WINSHLWAPI HRESULT WINAPI SHGetThreadRef(IUnknown**); WINSHLWAPI HRESULT WINAPI SHSetThreadRef(IUnknown*); WINSHLWAPI BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*); @@ -443,7 +443,7 @@ HRESULT WINAPI DllInstall(BOOL,LPCWSTR); #define StrPBrk StrPBrkW #define StrRChr StrRChrW #define StrRChrI StrRChrIW -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM #define StrRetToBuf StrRetToBufW #define StrRetToStr StrRetToStrW #endif @@ -509,7 +509,7 @@ HRESULT WINAPI DllInstall(BOOL,LPCWSTR); #define PathUnExpandEnvStrings PathUnExpandEnvStringsW #define PathUnmakeSystemFolder PathUnmakeSystemFolderW #define PathUnquoteSpaces PathUnquoteSpacesW -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM #define SHCreateStreamOnFile SHCreateStreamOnFileW #define SHOpenRegStream SHOpenRegStreamW #define SHOpenRegStream2 SHOpenRegStream2W @@ -585,7 +585,7 @@ HRESULT WINAPI DllInstall(BOOL,LPCWSTR); #define StrPBrk StrPBrkA #define StrRChr StrRChrA #define StrRChrI StrRChrIA -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM #define StrRetToBuf StrRetToBufA #define StrRetToStr StrRetToStrA #endif @@ -651,7 +651,7 @@ HRESULT WINAPI DllInstall(BOOL,LPCWSTR); #define PathUnExpandEnvStrings PathUnExpandEnvStringsA #define PathUnmakeSystemFolder PathUnmakeSystemFolderA #define PathUnquoteSpaces PathUnquoteSpacesA -#ifndef __OBJC__ +#ifndef _OBJC_NO_COM #define SHCreateStreamOnFile SHCreateStreamOnFileA #define SHOpenRegStream SHOpenRegStreamA #define SHOpenRegStream2 SHOpenRegStream2A diff --git a/winsup/w32api/include/vfw.h b/winsup/w32api/include/vfw.h index 842c4e982..755edfcc1 100644 --- a/winsup/w32api/include/vfw.h +++ b/winsup/w32api/include/vfw.h @@ -10,7 +10,7 @@ #ifndef _MMSYSTEM_H #include #endif -#if !defined (_OLE2_H) && !defined (__OBJC__) +#if !defined (_OLE2_H) && !defined (_OBJC_NO_COM) #include #endif @@ -633,7 +633,7 @@ typedef struct _AVICOMPRESSOPTIONS { DWORD dwInterleaveEvery; } AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS; -#if !defined (__OBJC__) +#if !defined (_OBJC_NO_COM) #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0); DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0); @@ -720,7 +720,7 @@ DECLARE_INTERFACE_(IGetFrame, IUnknown) }; #undef INTERFACE typedef IGetFrame *PGETFRAME; -#endif /* !defined (__OBJC__) */ +#endif /* !defined (_OBJC_NO_COM) */ DWORD VFWAPI VideoForWindowsVersion(VOID); LONG VFWAPI InitVFW(VOID); @@ -746,7 +746,7 @@ BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS,LPBITMAPINFO); void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS); LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS,UINT,LPVOID,BOOL*,LONG*); void VFWAPI ICCompressorFree(PCOMPVARS); -#if !defined (__OBJC__) +#if !defined (_OBJC_NO_COM) ULONG WINAPI AVIStreamAddRef(PAVISTREAM); ULONG WINAPI AVIStreamRelease(PAVISTREAM); HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*); @@ -811,7 +811,7 @@ HRESULT WINAPI AVIFileEndRecord(PAVIFILE); HRESULT WINAPI AVIClearClipboard(VOID); HRESULT WINAPI AVIGetFromClipboard(PAVIFILE*); HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE); -#endif /* __OBJC__ */ +#endif /* _OBJC_NO_COM */ #ifdef OFN_READONLY BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA); BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW); diff --git a/winsup/w32api/include/windows.h b/winsup/w32api/include/windows.h index dde83a316..97e037e90 100644 --- a/winsup/w32api/include/windows.h +++ b/winsup/w32api/include/windows.h @@ -106,11 +106,14 @@ #endif /* (_WIN32_WINNT >= 0x0400) */ #endif #ifndef NOGDI -#if !defined (__OBJC__) +/* In older versions we disallowed COM declarations in __OBJC__ + because of conflicts with @interface directive. Define _OBJC_NO_COM + to keep this behaviour. */ +#if !defined (_OBJC_NO_COM) #if (__GNUC__ >= 3) || defined (__WATCOMC__) #include #endif -#endif /* __OBJC__ */ +#endif /* _OBJC_NO_COM */ #endif #endif /* WIN32_LEAN_AND_MEAN */ diff --git a/winsup/w32api/include/ws2spi.h b/winsup/w32api/include/ws2spi.h index 4f7a01e9d..796171075 100644 --- a/winsup/w32api/include/ws2spi.h +++ b/winsup/w32api/include/ws2spi.h @@ -1,7 +1,7 @@ /* * ws2spi.h * - * Winsock 2 Service Provider interface. + * Winsock 2 Service Provider Interface. * * * THIS SOFTWARE IS NOT COPYRIGHTED diff --git a/winsup/w32api/lib/test.c b/winsup/w32api/lib/test.c index f4959b4fe..2db731ba0 100644 --- a/winsup/w32api/lib/test.c +++ b/winsup/w32api/lib/test.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -86,7 +85,8 @@ #include #include -#ifndef __OBJC__ /* problems with BOOL */ +#ifndef _OBJC_NO_COM +#include #include #include #include @@ -107,11 +107,19 @@ #include #include #include -#else -#undef BOOL #endif -#include +#ifdef __OBJC__ +#undef BOOL + +@interface class1 { + int e; +} +@end + +@implementation class1 +@end +#endif int main() {