// This file declares the IShellFolder Interface and Gateway for Python.
// Generated by makegw.py
// ---------------------------------------------------
//
// Interface Declaration

class PyIShellFolder : public PyIUnknown
{
public:
	MAKE_PYCOM_CTOR(PyIShellFolder);
	static IShellFolder *GetI(PyObject *self);
	static PyComEnumProviderTypeObject type;

	// The Python methods
	static PyObject *ParseDisplayName(PyObject *self, PyObject *args);
	static PyObject *EnumObjects(PyObject *self, PyObject *args);
	static PyObject *BindToObject(PyObject *self, PyObject *args);
	static PyObject *BindToStorage(PyObject *self, PyObject *args);
	static PyObject *CompareIDs(PyObject *self, PyObject *args);
	static PyObject *CreateViewObject(PyObject *self, PyObject *args);
	static PyObject *GetAttributesOf(PyObject *self, PyObject *args);
	static PyObject *GetUIObjectOf(PyObject *self, PyObject *args);
	static PyObject *GetDisplayNameOf(PyObject *self, PyObject *args);
	static PyObject *SetNameOf(PyObject *self, PyObject *args);

protected:
	PyIShellFolder(IUnknown *pdisp);
	~PyIShellFolder();
};
// ---------------------------------------------------
//
// Gateway Declaration

class PyGShellFolder : public PyGatewayBase, public IShellFolder
{
protected:
	PyGShellFolder(PyObject *instance) : PyGatewayBase(instance) { ; }
	PYGATEWAY_MAKE_SUPPORT2(PyGShellFolder, IShellFolder, IID_IShellFolder, PyGatewayBase)



	// IShellFolder
	STDMETHOD(ParseDisplayName)(
		HWND hwndOwner,
		LPBC pbcReserved,
		LPOLESTR lpszDisplayName,
		ULONG * pchEaten,
		LPITEMIDLIST *ppidl,
		ULONG __RPC_FAR * pdwAttributes);

	STDMETHOD(EnumObjects)(
		HWND hwndOwner,
		DWORD grfFlags,
		IEnumIDList __RPC_FAR ** ppeidl);

	STDMETHOD(BindToObject)(
		LPCITEMIDLIST pidl,
		LPBC pbcReserved,
		REFIID riid,
		void ** out);

	STDMETHOD(BindToStorage)(
		LPCITEMIDLIST pidl,
		LPBC pbcReserved,
		REFIID riid,
		void **out);

	STDMETHOD(CompareIDs)(
		LPARAM lparam,
		LPCITEMIDLIST pidl1,
		LPCITEMIDLIST pidl2);

	STDMETHOD(CreateViewObject)(
		HWND hwndOwner,
		REFIID riid,
		void ** out);

	STDMETHOD(GetAttributesOf)(
		UINT cidl,
		LPCITEMIDLIST *apidl,
		ULONG __RPC_FAR * rgfInOut);

	STDMETHOD(GetUIObjectOf)(
		HWND hwndOwner,
		UINT cidl,
		LPCITEMIDLIST *apidl,
		REFIID riid,
		UINT *rgfReserved,
		void ** out);

	STDMETHOD(GetDisplayNameOf)(
		LPCITEMIDLIST pidl,
		SHGDNF uFlags,
		STRRET __RPC_FAR * out);

	STDMETHOD(SetNameOf)(
		HWND hwnd,
		LPCITEMIDLIST pidl,
		LPCOLESTR pszName,
		SHGDNF uFlags,
		LPITEMIDLIST *ppidlOut);

};
