Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2006-07-25 04:22:19 +0400
committerDanny Smith <dannysmith@users.sourceforge.net>2006-07-25 04:22:19 +0400
commitd2d223b5802d14e040edec3bff7a10b5eb15d96b (patch)
treed59dc3b926d78d2c98285dfbd41ffc91fd43a8cd /winsup/w32api/include
parente7a8c11c0fa11eb9eac20a1fc279bcce03b77409 (diff)
* 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'
Diffstat (limited to 'winsup/w32api/include')
-rw-r--r--winsup/w32api/include/aclui.h2
-rw-r--r--winsup/w32api/include/basetyps.h27
-rw-r--r--winsup/w32api/include/comcat.h8
-rw-r--r--winsup/w32api/include/commdlg.h8
-rw-r--r--winsup/w32api/include/directx/d3d9.h34
-rw-r--r--winsup/w32api/include/docobj.h4
-rw-r--r--winsup/w32api/include/mshtml.h36
-rw-r--r--winsup/w32api/include/oaidl.h30
-rw-r--r--winsup/w32api/include/objfwd.h84
-rw-r--r--winsup/w32api/include/objidl.h4
-rw-r--r--winsup/w32api/include/ocidl.h36
-rw-r--r--winsup/w32api/include/olectl.h34
-rw-r--r--winsup/w32api/include/oleidl.h36
-rw-r--r--winsup/w32api/include/shlobj.h4
-rw-r--r--winsup/w32api/include/shlwapi.h16
-rw-r--r--winsup/w32api/include/vfw.h10
-rw-r--r--winsup/w32api/include/windows.h7
-rw-r--r--winsup/w32api/include/ws2spi.h2
18 files changed, 196 insertions, 186 deletions
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 <objbase.h>
#include <commctrl.h>
#include <accctrl.h>
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 <unknwn.h> /* for LPUNKNOWN */
#include <prsht.h> /* 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 <ole2.h>
-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 <objbase.h>
#include <shlobj.h>
#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 <mmsystem.h>
#endif
-#if !defined (_OLE2_H) && !defined (__OBJC__)
+#if !defined (_OLE2_H) && !defined (_OBJC_NO_COM)
#include <ole2.h>
#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 <ole2.h>
#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