[pywin32-checkins] /hgrepo/p/py/pywin32/pywin32: Handle some of the PROPVARIANT typ...
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: <pyw...@li...> - 2011-05-30 21:10:15
|
changeset aced4aa3ebde in /hgrepo/p/py/pywin32/pywin32 details: http://pywin32.hg.sourceforge.net/hgweb/pywin32/pywin32/hgrepo/p/py/pywin32/pywin32?cmd=changeset;node=aced4aa3ebde summary: Handle some of the PROPVARIANT types that include VT_VECTOR diffstat: com/win32com/src/extensions/PyIPropertyStorage.cpp | 31 +++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) diffs (50 lines): diff -r 75105957d17a -r aced4aa3ebde com/win32com/src/extensions/PyIPropertyStorage.cpp --- a/com/win32com/src/extensions/PyIPropertyStorage.cpp Mon May 30 15:28:19 2011 -0400 +++ b/com/win32com/src/extensions/PyIPropertyStorage.cpp Mon May 30 17:05:44 2011 -0400 @@ -126,8 +126,36 @@ return Py_None; } return PyString_FromString(pVar->pszVal); + case VT_LPSTR|VT_VECTOR: + { + PyObject *ret = PyList_New(pVar->calpstr.cElems); + if (ret==NULL) return NULL; + for (ULONG i=0; i<pVar->calpstr.cElems;i++){ + PyObject *elem=PyString_FromString(pVar->calpstr.pElems[i]); + if (elem==NULL){ + Py_DECREF(ret); + return NULL; + } + PyList_SET_ITEM(ret, i, elem); + } + return ret; + } case VT_LPWSTR: return PyWinObject_FromOLECHAR(pVar->pwszVal); + case VT_LPWSTR|VT_VECTOR: + { + PyObject *ret = PyList_New(pVar->calpwstr.cElems); + if (ret==NULL) return NULL; + for (ULONG i=0; i<pVar->calpwstr.cElems;i++){ + PyObject *elem=PyWinObject_FromWCHAR(pVar->calpwstr.pElems[i]); + if (elem==NULL){ + Py_DECREF(ret); + return NULL; + } + PyList_SET_ITEM(ret, i, elem); + } + return ret; + } case VT_CLSID: return PyWinObject_FromIID(*pVar->puuid); case VT_STREAM: @@ -136,6 +164,9 @@ case VT_STORAGE: case VT_STORED_OBJECT: return PyCom_PyObjectFromIUnknown(pVar->pStorage, IID_IStorage, TRUE); + case VT_VECTOR | VT_VARIANT: + return PyObject_FromPROPVARIANTs(pVar->capropvar.pElems, pVar->capropvar.cElems); + // case VT_UNKNOWN: // return PyCom_PyObjectFromIUnknown(pVar->punkVal, IID_IUnknown, TRUE); // case VT_DISPATCH: |