diff options
author | Joachim Lingner <jl@openoffice.org> | 2012-02-23 12:38:36 +0000 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2012-02-24 15:20:29 +0100 |
commit | 9a440f8aa8eacb39eeaec03ffddf3612b3964f32 (patch) | |
tree | 545ac7e0f6065aef85a0d01d0f1604fa9fbfb973 | |
parent | 466cb51bc3a27c0ec19d0c841d7376ab2eae3f9a (diff) |
default conversion of sequences is now again SAFEARRAY of VARIANTs #fdo46165
cws jl166 patch: #i117010# default conversion of sequences is now again SAFEARRAY of VARIANTs
Signed-off-by: Michael Meeks <michael.meeks@suse.com>
-rw-r--r-- | extensions/source/ole/unoconversionutilities.hxx | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/extensions/source/ole/unoconversionutilities.hxx b/extensions/source/ole/unoconversionutilities.hxx index b6ac7f1caff0..1aae11920f06 100644 --- a/extensions/source/ole/unoconversionutilities.hxx +++ b/extensions/source/ole/unoconversionutilities.hxx @@ -1318,47 +1318,32 @@ SAFEARRAY* UnoConversionUtilities<T>::createUnoSequenceWrapper(const Any& rSeq) typelib_TypeDescription* pSeqElementDesc= NULL; TYPELIB_DANGER_GET( &pSeqElementDesc, pSeqElementTypeRef); + sal_Int32 nElementSize= pSeqElementDesc->nSize; + n= punoSeq->nElements; - // try to find VARIANT type that is related to the UNO type of the sequence elements - // the sequence as a sequence element should be handled in a special way - VARTYPE eTargetElementType = VT_EMPTY; - if ( pSeqElementDesc->eTypeClass != TypeClass_SEQUENCE ) - eTargetElementType = mapTypeClassToVartype( static_cast< TypeClass >( pSeqElementDesc->eTypeClass ) ); + SAFEARRAYBOUND rgsabound[1]; + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = n; + VARIANT oleElement; + long safeI[1]; - if ( eTargetElementType != VT_EMPTY ) - pArray = createUnoSequenceWrapper( rSeq, eTargetElementType ); + pArray = SafeArrayCreate(VT_VARIANT, 1, rgsabound); - if ( !pArray ) - { - sal_Int32 nElementSize= pSeqElementDesc->nSize; - n= punoSeq->nElements; - - SAFEARRAYBOUND rgsabound[1]; - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = n; - VARIANT oleElement; - long safeI[1]; - - pArray = SafeArrayCreate(VT_VARIANT, 1, rgsabound); - - Any unoElement; - // sal_uInt8 * pSeqData= (sal_uInt8*) punoSeq->pElements; - sal_uInt8 * pSeqData= (sal_uInt8*) punoSeq->elements; + Any unoElement; + sal_uInt8 * pSeqData= (sal_uInt8*) punoSeq->elements; - for (sal_uInt32 i = 0; i < n; i++) - { - unoElement.setValue( pSeqData + i * nElementSize, pSeqElementDesc); - VariantInit(&oleElement); + for (sal_uInt32 i = 0; i < n; i++) + { + unoElement.setValue( pSeqData + i * nElementSize, pSeqElementDesc); + VariantInit(&oleElement); - anyToVariant(&oleElement, unoElement); + anyToVariant(&oleElement, unoElement); - safeI[0] = i; - SafeArrayPutElement(pArray, safeI, &oleElement); + safeI[0] = i; + SafeArrayPutElement(pArray, safeI, &oleElement); - VariantClear(&oleElement); - } + VariantClear(&oleElement); } - TYPELIB_DANGER_RELEASE( pSeqElementDesc); return pArray; |