[pywin32-checkins] pywin32/com/win32com/src oleargs.cpp,1.31,1.32
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Mark H. <mha...@us...> - 2005-12-19 04:46:55
|
Update of /cvsroot/pywin32/pywin32/com/win32com/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14231 Modified Files: oleargs.cpp Log Message: Add support for some missing variant types in the safe array support. Index: oleargs.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/oleargs.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** oleargs.cpp 20 Oct 2005 22:32:28 -0000 1.31 --- oleargs.cpp 19 Dec 2005 04:46:44 -0000 1.32 *************** *** 661,680 **** HRESULT hres = 0; switch (vt) { - case VT_VARIANT: { - VARIANT varValue; - VariantInit(&varValue); - hres = SafeArrayGetElement(psa, arrayIndices, &varValue); - if (FAILED(hres)) break; - subitem = PyCom_PyObjectFromVariant(&varValue); - VariantClear(&varValue); // clean this up - break; - } - case VT_UI1: { - unsigned char i1; - hres = SafeArrayGetElement(psa, arrayIndices, &i1); - if (FAILED(hres)) break; - subitem = PyInt_FromLong(i1); - break; - } case VT_I2: { short sh; --- 661,664 ---- *************** *** 684,688 **** break; } ! case VT_I4: { long ln; hres = SafeArrayGetElement(psa, arrayIndices, &ln); --- 668,673 ---- break; } ! case VT_I4: ! case VT_ERROR: { long ln; hres = SafeArrayGetElement(psa, arrayIndices, &ln); *************** *** 705,708 **** --- 690,707 ---- break; } + case VT_CY: { + CURRENCY c; + hres = SafeArrayGetElement(psa, arrayIndices, &c); + if (FAILED(hres)) break; + subitem = PyObject_FromCurrency(c); + break; + } + case VT_DATE: { + DATE dt; + hres = SafeArrayGetElement(psa, arrayIndices, &dt); + if (FAILED(hres)) break; + subitem = PyWinObject_FromDATE(dt); + break; + } case VT_BSTR: { BSTR str; *************** *** 711,715 **** subitem = PyWinObject_FromBstr(str); break; ! } case VT_DISPATCH: { IDispatch *pDisp; --- 710,714 ---- subitem = PyWinObject_FromBstr(str); break; ! } case VT_DISPATCH: { IDispatch *pDisp; *************** *** 719,722 **** --- 718,738 ---- break; } + // case VT_ERROR - handled above with I4 + case VT_BOOL: { + bool b1; + hres = SafeArrayGetElement(psa, arrayIndices, &b1); + if (FAILED(hres)) break; + subitem = PyBool_FromLong(b1); + break; + } + case VT_VARIANT: { + VARIANT varValue; + VariantInit(&varValue); + hres = SafeArrayGetElement(psa, arrayIndices, &varValue); + if (FAILED(hres)) break; + subitem = PyCom_PyObjectFromVariant(&varValue); + VariantClear(&varValue); // clean this up + break; + } case VT_UNKNOWN: { IUnknown *pUnk; *************** *** 726,736 **** break; } ! case VT_DATE: { ! DATE dt; ! hres = SafeArrayGetElement(psa, arrayIndices, &dt); if (FAILED(hres)) break; ! subitem = PyWinObject_FromDATE(dt); break; ! }; default: { TCHAR buf[200]; --- 742,785 ---- break; } ! // case VT_DECIMAL ! // case VT_RECORD ! ! case VT_I1: ! case VT_UI1: { ! unsigned char i1; ! hres = SafeArrayGetElement(psa, arrayIndices, &i1); if (FAILED(hres)) break; ! subitem = PyInt_FromLong(i1); break; ! } ! case VT_UI2: { ! unsigned short s1; ! hres = SafeArrayGetElement(psa, arrayIndices, &s1); ! if (FAILED(hres)) break; ! subitem = PyLong_FromUnsignedLong(s1); ! break; ! } ! case VT_UI4: { ! unsigned long l1; ! hres = SafeArrayGetElement(psa, arrayIndices, &l1); ! if (FAILED(hres)) break; ! subitem = PyLong_FromUnsignedLong(l1); ! break; ! } ! case VT_INT: { ! int i1; ! hres = SafeArrayGetElement(psa, arrayIndices, &i1); ! if (FAILED(hres)) break; ! subitem = PyLong_FromLong(i1); ! break; ! } ! case VT_UINT: { ! unsigned int i1; ! hres = SafeArrayGetElement(psa, arrayIndices, &i1); ! if (FAILED(hres)) break; ! subitem = PyLong_FromUnsignedLong(i1); ! break; ! } ! default: { TCHAR buf[200]; |