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

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

	// The Python methods
	static PyObject *ReadMultiple(PyObject *self, PyObject *args);
	static PyObject *WriteMultiple(PyObject *self, PyObject *args);
	static PyObject *DeleteMultiple(PyObject *self, PyObject *args);
	static PyObject *ReadPropertyNames(PyObject *self, PyObject *args);
	static PyObject *WritePropertyNames(PyObject *self, PyObject *args);
	static PyObject *DeletePropertyNames(PyObject *self, PyObject *args);
	static PyObject *Commit(PyObject *self, PyObject *args);
	static PyObject *Revert(PyObject *self, PyObject *args);
	static PyObject *Enum(PyObject *self, PyObject *args);
	static PyObject *SetTimes(PyObject *self, PyObject *args);
	static PyObject *SetClass(PyObject *self, PyObject *args);
	static PyObject *Stat(PyObject *self, PyObject *args);

protected:
	PyIPropertyStorage(IUnknown *pdisp);
	~PyIPropertyStorage();
};

// ---------------------------------------------------
//
// Gateway Declaration

class PyGPropertyStorage : public PyGatewayBase, public IPropertyStorage
{
protected:
	PyGPropertyStorage(PyObject *instance) : PyGatewayBase(instance) { ; }
	PYGATEWAY_MAKE_SUPPORT2(PyGPropertyStorage, IPropertyStorage, IID_IPropertyStorage, PyGatewayBase)



	// IPropertyStorage
	STDMETHOD(ReadMultiple)(
		ULONG cpspec,
		const PROPSPEC rgpspec[],
		PROPVARIANT rgpropvar[]);

	STDMETHOD(WriteMultiple)(
		ULONG cpspec,
		const PROPSPEC rgpspec[],
		const PROPVARIANT rgpropvar[],
		PROPID propidNameFirst);

	STDMETHOD(DeleteMultiple)(
		ULONG cpspec,
		const PROPSPEC rgpspec[]);

	STDMETHOD(ReadPropertyNames)(
		ULONG cpropid,
		const PROPID rgpropid[],
		LPOLESTR rglpwstrName[]);

	STDMETHOD(WritePropertyNames)(
		ULONG cpropid,
		const PROPID rgpropid[],
		const LPOLESTR rglpwstrName[]);

	STDMETHOD(DeletePropertyNames)(
		ULONG cpropid,
		const PROPID rgpropid[]);

	STDMETHOD(Commit)(
		DWORD grfCommitFlags);

	STDMETHOD(Revert)(
		void);

	STDMETHOD(Enum)(
		IEnumSTATPROPSTG ** ppenum);

	STDMETHOD(SetTimes)(
		const FILETIME * pctime,
		const FILETIME * patime,
		const FILETIME * pmtime);

	STDMETHOD(SetClass)(
		REFCLSID clsid);

	STDMETHOD(Stat)(
		STATPROPSETSTG * pstatpsstg);

};