5template <
typename ITERABLE >
6inline ::collection::count __iterable_count(
const ITERABLE &
iterable)
24 template <
class TYPE,
class ARG_TYPE >
25 bool CreateSafeArray(array < TYPE, ARG_TYPE > & ar, VARIANT * pvar, VARTYPE vt)
27 pvar->vt = VT_ARRAY | vt;
28 SAFEARRAYBOUND rgsabound[1];
29 rgsabound[0].lLbound = 0;
30 rgsabound[0].cElements = get_size();
31 pvar->parray = SafeArrayCreate(vt, 1, rgsabound);
32 if(pvar->parray ==
nullptr)
34 for(::i32 i = 0; i < get_size(); i++)
36 SafeArrayPutElement(pvar->parray, (
long *) &i, &ar.element_at(i));
40 template <
class TYPE,
class ARG_TYPE >
41 bool CopySafeArray(array < TYPE, ARG_TYPE > & ar, VARIANT * ::payload)
44 ASSERT(pvar->vt == (VT_ARRAY | VT_I4));
48 if(1 != (uiDim = SafeArrayGetDim(pvar->parray)))
58 if(FAILED(hr = SafeArrayGetLBound(pvar->parray, uiDim, &lLBound)))
63 if(FAILED(hr = SafeArrayGetUBound(pvar->parray, uiDim, &lUBound)))
69 for(::i32 i = lLBound; i <= lUBound; i++)
71 SafeArrayGetElement(pvar->parray, (
long *) &i, &dw);
Definition iterable.h:4040