ICOMization of remaining interfaces.
diff --git a/include/shlobj.h b/include/shlobj.h
index a89da1b..4ff1a7d 100644
--- a/include/shlobj.h
+++ b/include/shlobj.h
@@ -18,14 +18,10 @@
#include "commctrl.h"
#include "prsht.h"
-#define STDMETHOD(xfn) HRESULT (CALLBACK *fn##xfn)
-#define STDMETHOD_(type,xfn) type (CALLBACK *fn##xfn)
-#define PURE
-#define FAR
-#define THIS_ THIS,
-
-/* foreward declaration of the objects*/
-typedef struct tagSHELLICON *LPSHELLICON, IShellIcon;
+/*****************************************************************************
+ * Predeclare interfaces
+ */
+typedef struct IShellIcon IShellIcon, *LPSHELLICON;
/*****************************************************************************
@@ -67,42 +63,6 @@
#define CFSTR_PASTESUCCEEDED "Paste Succeeded"
#define CFSTR_INDRAGLOOP "InShellDragLoop"
-/**************************************************************************
- * IDLList "Item ID List List"
- *
- * NOTES
- * interal data holder for IDataObject
- */
-typedef struct tagLPIDLLIST *LPIDLLIST, IDLList;
-
-#define THIS LPIDLLIST me
-
-typedef enum
-{ State_UnInit=1,
- State_Init=2,
- State_OutOfMem=3
-} IDLListState;
-
-typedef struct IDLList_VTable
-{ STDMETHOD_(UINT, GetState)(THIS);
- STDMETHOD_(LPITEMIDLIST, GetElement)(THIS_ UINT nIndex);
- STDMETHOD_(UINT, GetCount)(THIS);
- STDMETHOD_(BOOL, StoreItem)(THIS_ LPITEMIDLIST pidl);
- STDMETHOD_(BOOL, AddItems)(THIS_ LPITEMIDLIST *apidl, UINT cidl);
- STDMETHOD_(BOOL, InitList)(THIS);
- STDMETHOD_(void, CleanList)(THIS);
-} IDLList_VTable,*LPIDLLIST_VTABLE;
-
-struct tagLPIDLLIST
-{ LPIDLLIST_VTABLE lpvtbl;
- HDPA dpa;
- UINT uStep;
-};
-
-extern LPIDLLIST IDLList_Constructor (UINT uStep);
-extern void IDLList_Destructor(LPIDLLIST me);
-#undef THIS
-
/************************************************************************
* IShellView interface
@@ -119,23 +79,23 @@
* IShellIcon interface
*/
-#define THIS LPSHELLICON me
+#define ICOM_INTERFACE IShellIcon
+#define IShellIcon_METHODS \
+ ICOM_METHOD3(HRESULT, GetIconOf, LPCITEMIDLIST,pidl, UINT,flags, LPINT,lpIconIndex)
+#define IShellIcon_IMETHODS \
+ IUnknown_IMETHODS \
+ IShellIcon_METHODS
+ICOM_DEFINE(IShellIcon, IUnknown)
+#undef ICOM_INTERFACE
-typedef struct IShellIcon_VTable
-{ /*** IUnknown methods ***/
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
-
- /*** IShellIcon methods ***/
- STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex) PURE;
-} IShellIcon_VTable,*LPSHELLICON_VTABLE;
-
-struct tagSHELLICON
-{ LPSHELLICON_VTABLE lpvtbl;
- DWORD ref;
-};
-#undef THIS
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IShellIcon_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IShellIcon_AddRef(p) ICOM_CALL (AddRef,p)
+#define IShellIcon_Release(p) ICOM_CALL (Release,p)
+/*** IShellIcon methods ***/
+#define IShellIcon_GetIconOf(p,a,b,c) ICOM_CALL3(GetIconOf,p,a,b,c)
+#endif
/****************************************************************************
* Shell Execute API
@@ -438,11 +398,4 @@
/**********************************************************************/
-#undef PURE
-#undef FAR
-#undef THIS
-#undef THIS_
-#undef STDMETHOD
-#undef STDMETHOD_
-
#endif /* __WINE_SHLOBJ_H */