// @pymethod object|PyIEnumSTATPROPSETSTG|Next|Retrieves a specified number of items in the enumeration sequence. PyObject *PyIEnumSTATPROPSETSTG::Next(PyObject *self, PyObject *args) { long celt = 1; // @pyparm int|num|1|Number of items to retrieve. if ( !PyArg_ParseTuple(args, "|l:Next", &celt) ) return NULL; IEnumSTATPROPSETSTG *pIESTATPROPSETSTG = GetI(self); if ( pIESTATPROPSETSTG == NULL ) return NULL; STATPROPSETSTG *rgVar = new STATPROPSETSTG[celt]; if ( rgVar == NULL ) { PyErr_SetString(PyExc_MemoryError, "allocating result STATPROPSETSTGs"); return NULL; } int i; /* for ( i = celt; i--; ) // *** possibly init each structure element??? */ ULONG celtFetched = 0; PY_INTERFACE_PRECALL; HRESULT hr = pIESTATPROPSETSTG->Next(celt, rgVar, &celtFetched); PY_INTERFACE_POSTCALL; if ( HRESULT_CODE(hr) != ERROR_NO_MORE_ITEMS && FAILED(hr) ) { delete [] rgVar; return PyCom_BuildPyException(hr); } PyObject *result = PyTuple_New(celtFetched); if ( result != NULL ) { for ( i = celtFetched; i--; ) { PyObject *ob=PyCom_PyObjectFromSTATPROPSETSTG(&(rgVar[i])); if (ob == NULL) { Py_DECREF(result); result = NULL; break; } PyTuple_SET_ITEM(result, i, ob); } } delete [] rgVar; return result; }
// @pymethod tuple|PyIPropertyStorage|Stat|Returns various infomation about the property set // @rdesc Returns a tuple representing a STATPROPSETSTG struct. PyObject *PyIPropertyStorage::Stat(PyObject *self, PyObject *args) { IPropertyStorage *pIPS = GetI(self); if ( pIPS == NULL ) return NULL; if ( !PyArg_ParseTuple(args, ":Stat") ) return NULL; STATPROPSETSTG p; HRESULT hr; PY_INTERFACE_PRECALL; hr = pIPS->Stat( &p ); PY_INTERFACE_POSTCALL; if ( FAILED(hr) ) return PyCom_BuildPyException(hr, pIPS, IID_IPropertyStorage); return PyCom_PyObjectFromSTATPROPSETSTG(&p); }