Update of /cvsroot/pywin32/pywin32/com/win32com/src/extensions
In directory sc8-pr-cvs1:/tmp/cvs-serv5588/extensions
Modified Files:
PyIEnumCATEGORYINFO.cpp PyIEnumConnectionPoints.cpp
PyIEnumConnections.cpp PyIEnumFORMATETC.cpp PyIEnumGUID.cpp
PyIEnumSTATPROPSETSTG.cpp PyIEnumSTATPROPSTG.cpp
PyIEnumSTATSTG.cpp PyIEnumVARIANT.cpp
PyIPropertySetStorage.cpp PyIPropertyStorage.cpp
Log Message:
Roger inspired me to do tp_iter support in a far more generic way.
Should be possible to make all Enums and Providers support tp_iter()
simply by declaring the correct type - no implementation of the
iter()/iternext() should be necessary.
All enums in the core package should now support Enums correctly
(a few more could possibly be nominated as Enum providers though.
Index: PyIEnumCATEGORYINFO.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumCATEGORYINFO.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PyIEnumCATEGORYINFO.cpp 10 Jan 2003 02:47:13 -0000 1.4
--- PyIEnumCATEGORYINFO.cpp 2 Nov 2003 05:26:13 -0000 1.5
***************
*** 11,15 ****
PyIEnumCATEGORYINFO::PyIEnumCATEGORYINFO(IUnknown *pDisp) :
! PyIUnknown(pDisp)
{
ob_type = &type;
--- 11,15 ----
PyIEnumCATEGORYINFO::PyIEnumCATEGORYINFO(IUnknown *pDisp) :
! PyIEnum(pDisp)
{
ob_type = &type;
***************
*** 145,149 ****
};
! PyComTypeObject PyIEnumCATEGORYINFO::type("PyIEnumCATEGORYINFO",
&PyIUnknown::type, // @base PyIEnumCATEGORYINFO|PyIUnknown
sizeof(PyIEnumCATEGORYINFO),
--- 145,149 ----
};
! PyComEnumTypeObject PyIEnumCATEGORYINFO::type("PyIEnumCATEGORYINFO",
&PyIUnknown::type, // @base PyIEnumCATEGORYINFO|PyIUnknown
sizeof(PyIEnumCATEGORYINFO),
Index: PyIEnumConnectionPoints.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumConnectionPoints.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PyIEnumConnectionPoints.cpp 24 Nov 1999 10:03:51 -0000 1.1
--- PyIEnumConnectionPoints.cpp 2 Nov 2003 05:26:13 -0000 1.2
***************
*** 14,18 ****
PyIEnumConnectionPoints::PyIEnumConnectionPoints(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 14,18 ----
PyIEnumConnectionPoints::PyIEnumConnectionPoints(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 148,152 ****
};
! PyComTypeObject PyIEnumConnectionPoints::type("PyIEnumConnectionPoints",
&PyIUnknown::type, // @base PyIEnumConnectionPoints|PyIUnknown
sizeof(PyIEnumConnectionPoints),
--- 148,152 ----
};
! PyComEnumTypeObject PyIEnumConnectionPoints::type("PyIEnumConnectionPoints",
&PyIUnknown::type, // @base PyIEnumConnectionPoints|PyIUnknown
sizeof(PyIEnumConnectionPoints),
Index: PyIEnumConnections.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumConnections.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PyIEnumConnections.cpp 19 Nov 1999 04:03:23 -0000 1.2
--- PyIEnumConnections.cpp 2 Nov 2003 05:26:13 -0000 1.3
***************
*** 14,18 ****
PyIEnumConnections::PyIEnumConnections(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 14,18 ----
PyIEnumConnections::PyIEnumConnections(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 141,145 ****
};
! PyComTypeObject PyIEnumConnections::type("PyIEnumConnections",
&PyIUnknown::type, // @base PyIEnumConnections|PyIUnknown
sizeof(PyIEnumConnections),
--- 141,145 ----
};
! PyComEnumTypeObject PyIEnumConnections::type("PyIEnumConnections",
&PyIUnknown::type, // @base PyIEnumConnections|PyIUnknown
sizeof(PyIEnumConnections),
Index: PyIEnumFORMATETC.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumFORMATETC.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PyIEnumFORMATETC.cpp 31 Oct 2003 06:55:12 -0000 1.4
--- PyIEnumFORMATETC.cpp 2 Nov 2003 05:26:13 -0000 1.5
***************
*** 16,20 ****
PyIEnumFORMATETC::PyIEnumFORMATETC(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 16,20 ----
PyIEnumFORMATETC::PyIEnumFORMATETC(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 28,58 ****
{
return (IEnumFORMATETC *)PyIUnknown::GetI(self);
- }
-
- PyObject *
- PyIEnumFORMATETC::iter()
- {
- Py_INCREF(this);
- return this;
- }
-
- PyObject *
- PyIEnumFORMATETC::iternext()
- {
- ULONG celtFetched = 0;
- FORMATETC ret;;
- IEnumFORMATETC *peidl = GetI(this);
- if ( peidl == NULL )
- return NULL;
- PY_INTERFACE_PRECALL;
- HRESULT hr = peidl->Next(1, &ret, &celtFetched);
- PY_INTERFACE_POSTCALL;
- if ( HRESULT_CODE(hr) != ERROR_NO_MORE_ITEMS && FAILED(hr) )
- return PyCom_BuildPyException(hr,peidl, IID_IEnumFORMATETC);
- if (celtFetched==0) {
- PyErr_SetNone(PyExc_StopIteration);
- return NULL;
- }
- return PyObject_FromFORMATETC(&ret);
}
--- 28,31 ----
Index: PyIEnumGUID.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumGUID.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PyIEnumGUID.cpp 31 Oct 2003 07:20:58 -0000 1.3
--- PyIEnumGUID.cpp 2 Nov 2003 05:26:13 -0000 1.4
***************
*** 11,15 ****
PyIEnumGUID::PyIEnumGUID(IUnknown *pDisp) :
! PyIUnknown(pDisp)
{
ob_type = &type;
--- 11,15 ----
PyIEnumGUID::PyIEnumGUID(IUnknown *pDisp) :
! PyIEnum(pDisp)
{
ob_type = &type;
***************
*** 140,144 ****
};
! PyComTypeObject PyIEnumGUID::type("PyIEnumGUID",
&PyIUnknown::type, // @base PyIEnumGUID|PyIUnknown
sizeof(PyIEnumGUID),
--- 140,144 ----
};
! PyComEnumTypeObject PyIEnumGUID::type("PyIEnumGUID",
&PyIUnknown::type, // @base PyIEnumGUID|PyIUnknown
sizeof(PyIEnumGUID),
Index: PyIEnumSTATPROPSETSTG.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumSTATPROPSETSTG.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PyIEnumSTATPROPSETSTG.cpp 30 Oct 2003 06:32:26 -0000 1.1
--- PyIEnumSTATPROPSETSTG.cpp 2 Nov 2003 05:26:13 -0000 1.2
***************
*** 16,20 ****
PyIEnumSTATPROPSETSTG::PyIEnumSTATPROPSETSTG(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 16,20 ----
PyIEnumSTATPROPSETSTG::PyIEnumSTATPROPSETSTG(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 148,152 ****
};
! PyComTypeObject PyIEnumSTATPROPSETSTG::type("PyIEnumSTATPROPSETSTG",
&PyIUnknown::type,
sizeof(PyIEnumSTATPROPSETSTG),
--- 148,152 ----
};
! PyComEnumTypeObject PyIEnumSTATPROPSETSTG::type("PyIEnumSTATPROPSETSTG",
&PyIUnknown::type,
sizeof(PyIEnumSTATPROPSETSTG),
Index: PyIEnumSTATPROPSTG.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumSTATPROPSTG.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PyIEnumSTATPROPSTG.cpp 24 Nov 1999 10:03:00 -0000 1.3
--- PyIEnumSTATPROPSTG.cpp 2 Nov 2003 05:26:13 -0000 1.4
***************
*** 16,20 ****
PyIEnumSTATPROPSTG::PyIEnumSTATPROPSTG(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 16,20 ----
PyIEnumSTATPROPSTG::PyIEnumSTATPROPSTG(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 153,157 ****
};
! PyComTypeObject PyIEnumSTATPROPSTG::type("PyIEnumSTATPROPSTG",
&PyIUnknown::type,
sizeof(PyIEnumSTATPROPSTG),
--- 153,157 ----
};
! PyComEnumTypeObject PyIEnumSTATPROPSTG::type("PyIEnumSTATPROPSTG",
&PyIUnknown::type,
sizeof(PyIEnumSTATPROPSTG),
Index: PyIEnumSTATSTG.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumSTATSTG.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PyIEnumSTATSTG.cpp 19 Nov 1999 04:03:23 -0000 1.2
--- PyIEnumSTATSTG.cpp 2 Nov 2003 05:26:13 -0000 1.3
***************
*** 14,18 ****
PyIEnumSTATSTG::PyIEnumSTATSTG(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 14,18 ----
PyIEnumSTATSTG::PyIEnumSTATSTG(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 155,159 ****
};
! PyComTypeObject PyIEnumSTATSTG::type("PyIEnumSTATSTG",
&PyIUnknown::type, // @base PyIEnumStatSTG|PyIUnknown
sizeof(PyIEnumSTATSTG),
--- 155,159 ----
};
! PyComEnumTypeObject PyIEnumSTATSTG::type("PyIEnumSTATSTG",
&PyIUnknown::type, // @base PyIEnumStatSTG|PyIUnknown
sizeof(PyIEnumSTATSTG),
Index: PyIEnumVARIANT.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIEnumVARIANT.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** PyIEnumVARIANT.cpp 31 Oct 2003 06:55:12 -0000 1.5
--- PyIEnumVARIANT.cpp 2 Nov 2003 05:26:13 -0000 1.6
***************
*** 4,8 ****
PyIEnumVARIANT::PyIEnumVARIANT(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 4,8 ----
PyIEnumVARIANT::PyIEnumVARIANT(IUnknown *pdisp):
! PyIEnum(pdisp)
{
ob_type = &type;
***************
*** 11,45 ****
PyIEnumVARIANT::~PyIEnumVARIANT()
{
- }
-
- PyObject *
- PyIEnumVARIANT::iter()
- {
- Py_INCREF(this);
- return this;
- }
-
- PyObject *
- PyIEnumVARIANT::iternext()
- {
- IEnumVARIANT *pIEVARIANT = GetI(this);
- if ( pIEVARIANT == NULL )
- return NULL;
-
- VARIANT var;
- VariantInit(&var);
- ULONG celtFetched;
- PY_INTERFACE_PRECALL;
- HRESULT hr = pIEVARIANT->Next(1, &var, &celtFetched);
- PY_INTERFACE_POSTCALL;
- if ( FAILED(hr) )
- return PyCom_BuildPyException(hr);
- if (celtFetched==0) {
- PyErr_SetNone(PyExc_StopIteration);
- return NULL;
- }
- PyObject *ret = PyCom_PyObjectFromVariant(&var);
- VariantClear(&var);
- return ret;
}
--- 11,14 ----
Index: PyIPropertySetStorage.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIPropertySetStorage.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PyIPropertySetStorage.cpp 19 Nov 1999 04:03:23 -0000 1.2
--- PyIPropertySetStorage.cpp 2 Nov 2003 05:26:13 -0000 1.3
***************
*** 14,18 ****
PyIPropertySetStorage::PyIPropertySetStorage(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 14,18 ----
PyIPropertySetStorage::PyIPropertySetStorage(IUnknown *pdisp):
! PyIEnumProvider(pdisp)
{
ob_type = &type;
***************
*** 146,153 ****
};
! PyComTypeObject PyIPropertySetStorage::type("PyIPropertySetStorage",
&PyIUnknown::type,
sizeof(PyIPropertySetStorage),
PyIPropertySetStorage_methods,
! GET_PYCOM_CTOR(PyIPropertySetStorage));
#endif // NO_PYCOM_IPROPERTYSETSTORAGE
--- 146,154 ----
};
! PyComEnumProviderTypeObject PyIPropertySetStorage::type("PyIPropertySetStorage",
&PyIUnknown::type,
sizeof(PyIPropertySetStorage),
PyIPropertySetStorage_methods,
! GET_PYCOM_CTOR(PyIPropertySetStorage),
! "Enum");
#endif // NO_PYCOM_IPROPERTYSETSTORAGE
Index: PyIPropertyStorage.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIPropertyStorage.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** PyIPropertyStorage.cpp 31 Oct 2003 02:44:08 -0000 1.6
--- PyIPropertyStorage.cpp 2 Nov 2003 05:26:13 -0000 1.7
***************
*** 247,251 ****
PyIPropertyStorage::PyIPropertyStorage(IUnknown *pdisp):
! PyIUnknown(pdisp)
{
ob_type = &type;
--- 247,251 ----
PyIPropertyStorage::PyIPropertyStorage(IUnknown *pdisp):
! PyIEnumProvider(pdisp)
{
ob_type = &type;
***************
*** 334,337 ****
--- 334,338 ----
PyObject_FreePROPSPECs(pProps, cProps);
PyObject_FreePROPVARIANTs(pVals, cVals);
+ return NULL;
}
***************
*** 673,681 ****
};
! PyComTypeObject PyIPropertyStorage::type("PyIPropertyStorage",
&PyIUnknown::type,
sizeof(PyIPropertyStorage),
PyIPropertyStorage_methods,
! GET_PYCOM_CTOR(PyIPropertyStorage));
#endif // NO_PYCOM_IPROPERTYSTORAGE
--- 674,683 ----
};
! PyComEnumProviderTypeObject PyIPropertyStorage::type("PyIPropertyStorage",
&PyIUnknown::type,
sizeof(PyIPropertyStorage),
PyIPropertyStorage_methods,
! GET_PYCOM_CTOR(PyIPropertyStorage),
! "Enum");
#endif // NO_PYCOM_IPROPERTYSTORAGE
|