Ejemplo n.º 1
0
// @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;
}
Ejemplo n.º 2
0
// @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);
}