Update of /cvsroot/pywin32/pywin32/com/TestSources/PyCOMTest
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28153/com/TestSources/PyCOMTest
Modified Files:
PyCOMImpl.cpp PyCOMImpl.h PyCOMTest.idl
Log Message:
pythoncom gets better support for 64bit integers, including in arrays.
Index: PyCOMTest.idl
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/TestSources/PyCOMTest/PyCOMTest.idl,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** PyCOMTest.idl 9 Jan 2009 01:24:54 -0000 1.20
--- PyCOMTest.idl 12 Jun 2009 07:48:33 -0000 1.21
***************
*** 207,210 ****
--- 207,212 ----
HRESULT SetBinSafeArray([in] SAFEARRAY(unsigned char) buf, [out, retval]int *resultSize);
HRESULT SetIntSafeArray([in] SAFEARRAY(int) ints, [out, retval]int *resultSize);
+ HRESULT SetLongLongSafeArray([in] SAFEARRAY(long long) ints, [out, retval]int *resultSize);
+ HRESULT SetULongLongSafeArray([in] SAFEARRAY(unsigned long long) ints, [out, retval]int *resultSize);
HRESULT SetVariantSafeArray([in] SAFEARRAY(VARIANT) vars, [out, retval]int *resultSize);
HRESULT GetSimpleSafeArray([out] SAFEARRAY(int)* ints);
***************
*** 228,231 ****
--- 230,240 ----
[optional, defaultvalue(1)] short sval,
[out,retval] SAFEARRAY(VARIANT) *pret );
+ // Trying (but failing) to find a bug related to SourceSafe's VSSItem's IDL defn. Note
+ // the lack of 'optional' even though a default is specified (which doesn't seem to
+ // have any effect, but seeing we are here...)
+ HRESULT TestOptionals3(
+ [in]double dval,
+ [in, defaultvalue(1)] short sval,
+ [out, retval] IPyCOMTest **ppout );
HRESULT GetStruct([out, retval]TestStruct1 *ret);
HRESULT DoubleString([in] BSTR inStr, [out, retval] BSTR *outStr);
Index: PyCOMImpl.h
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/TestSources/PyCOMTest/PyCOMImpl.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** PyCOMImpl.h 9 Jan 2009 01:24:54 -0000 1.17
--- PyCOMImpl.h 12 Jun 2009 07:48:33 -0000 1.18
***************
*** 73,76 ****
--- 73,78 ----
STDMETHOD(SetBinSafeArray)(SAFEARRAY* buf, int *retSize);
STDMETHOD(SetIntSafeArray)(SAFEARRAY* ints, int *retSize);
+ STDMETHOD(SetLongLongSafeArray)(SAFEARRAY* ints, int *retSize);
+ STDMETHOD(SetULongLongSafeArray)(SAFEARRAY* ints, int *retSize);
STDMETHOD(SetVariantSafeArray)(SAFEARRAY* vars, int *retSize);
STDMETHOD(GetSafeArrays)(SAFEARRAY** attrs,
***************
*** 92,95 ****
--- 94,98 ----
STDMETHOD(TestOptionals)(BSTR strArg, short sarg, long larg, double darg, SAFEARRAY **pRet);
STDMETHOD(TestOptionals2)(double dval, BSTR strval, short sval, SAFEARRAY **pRet);
+ STDMETHOD(TestOptionals3)(double dval, short sval, IPyCOMTest **outinterface2);
STDMETHOD(GetStruct)(TestStruct1 *ret);
STDMETHOD(DoubleString)(BSTR inStr, BSTR *outStr);
Index: PyCOMImpl.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/TestSources/PyCOMTest/PyCOMImpl.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** PyCOMImpl.cpp 9 Jan 2009 01:24:54 -0000 1.19
--- PyCOMImpl.cpp 12 Jun 2009 07:48:33 -0000 1.20
***************
*** 267,270 ****
--- 267,296 ----
}
+ STDMETHODIMP CPyCOMTest::SetLongLongSafeArray(SAFEARRAY* ints, int *resultSize)
+ {
+ UINT cDims = SafeArrayGetDim(ints);
+ *resultSize = 0;
+ long ub=0, lb=0;
+ if (cDims) {
+ SafeArrayGetUBound(ints, 1, &ub);
+ SafeArrayGetLBound(ints, 1, &lb);
+ *resultSize = ub - lb + 1;
+ }
+ return S_OK;
+ }
+
+ STDMETHODIMP CPyCOMTest::SetULongLongSafeArray(SAFEARRAY* ints, int *resultSize)
+ {
+ UINT cDims = SafeArrayGetDim(ints);
+ *resultSize = 0;
+ long ub=0, lb=0;
+ if (cDims) {
+ SafeArrayGetUBound(ints, 1, &ub);
+ SafeArrayGetLBound(ints, 1, &lb);
+ *resultSize = ub - lb + 1;
+ }
+ return S_OK;
+ }
+
STDMETHODIMP CPyCOMTest::SetVariantSafeArray(SAFEARRAY* vars, int *resultSize)
{
***************
*** 288,292 ****
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1] = { len, 0 };
! psa = SafeArrayCreate(VT_I4, 1, rgsabound);
if (psa==NULL)
return E_OUTOFMEMORY;
--- 314,318 ----
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1] = { len, 0 };
! psa = SafeArrayCreate(vt, 1, rgsabound);
if (psa==NULL)
return E_OUTOFMEMORY;
***************
*** 553,556 ****
--- 579,587 ----
}
+ HRESULT CPyCOMTest::TestOptionals3(double dval, short sval, IPyCOMTest **outinterface2)
+ {
+ return S_OK;
+ }
+
HRESULT CPyCOMTest::GetStruct(TestStruct1 *ret)
{
***************
*** 671,674 ****
--- 702,717 ----
SafeArrayDestroy(array);
+ CHECK_HR(MakeFillIntArray(&array, 5, VT_I8));
+ CHECK_HR(tester->CheckVariantSafeArray(&array, &result));
+ CHECK_TRUE(result==1);
+ CHECK_HR(tester->SetLongLongSafeArray(array, &result));
+ SafeArrayDestroy(array);
+
+ CHECK_HR(MakeFillIntArray(&array, 5, VT_UI8));
+ CHECK_HR(tester->CheckVariantSafeArray(&array, &result));
+ CHECK_TRUE(result==1);
+ CHECK_HR(tester->SetULongLongSafeArray(array, &result));
+ SafeArrayDestroy(array);
+
long lresult;
CHECK_HR(tester->put_LongProp(4));
|