[Libreoffice-commits] core.git: 2 commits - bridges/source codemaker/source comphelper/source cppuhelper/source cppu/Library_cppu.mk cppu/source extensions/source include/com include/typelib odk/docs pyuno/source ridljar/com solenv/gdb stoc/source stoc/test udkapi/com winaccessibility/source wizards/com

Stephan Bergmann sbergman at redhat.com
Fri Jan 31 01:25:23 PST 2014


 bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx         |    2 
 bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx        |    2 
 bridges/source/cpp_uno/mingw_x86-64/abi.cxx              |    2 
 codemaker/source/cppumaker/cpputype.cxx                  |    2 
 comphelper/source/container/enumerablemap.cxx            |    2 
 comphelper/source/misc/anytostring.cxx                   |    2 
 cppu/Library_cppu.mk                                     |    1 
 cppu/source/cppu/compat.cxx                              |   47 +++
 cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx      |    3 
 cppu/source/typelib/static_types.cxx                     |   65 ----
 cppu/source/typelib/typelib.cxx                          |  201 --------------
 cppu/source/uno/assign.hxx                               |  163 -----------
 cppu/source/uno/constr.hxx                               |  116 --------
 cppu/source/uno/copy.hxx                                 |  207 ---------------
 cppu/source/uno/destr.hxx                                |   85 ------
 cppu/source/uno/eq.hxx                                   |   60 ----
 cppu/source/uno/prim.hxx                                 |   26 -
 cppu/source/uno/sequence.cxx                             |   95 ------
 cppuhelper/source/tdmgr.cxx                              |  102 -------
 extensions/source/ole/unoconversionutilities.hxx         |    7 
 extensions/source/propctrlr/formcomponenthandler.cxx     |    1 
 include/com/sun/star/uno/Sequence.h                      |    3 
 include/com/sun/star/uno/Type.h                          |   43 ---
 include/com/sun/star/uno/Type.hxx                        |  117 --------
 include/typelib/typeclass.h                              |   10 
 include/typelib/typedescription.h                        |  128 ---------
 odk/docs/idl/idl_chapter_refs.txt                        |    2 
 pyuno/source/module/pyuno.cxx                            |    5 
 pyuno/source/module/pyuno_type.cxx                       |    4 
 ridljar/com/sun/star/uno/Union.java                      |    8 
 solenv/gdb/libreoffice/util/uno.py                       |   10 
 stoc/source/corereflection/crarray.cxx                   |    8 
 stoc/source/corereflection/crefl.cxx                     |    2 
 stoc/source/typeconv/convert.cxx                         |   33 +-
 stoc/test/testconv.cxx                                   |    8 
 stoc/test/testintrosp.cxx                                |    2 
 udkapi/com/sun/star/reflection/XArrayTypeDescription.idl |    4 
 udkapi/com/sun/star/reflection/XUnionTypeDescription.idl |    5 
 udkapi/com/sun/star/uno/TypeClass.idl                    |    8 
 winaccessibility/source/UAccCOM/MAccessible.cxx          |    4 
 wizards/com/sun/star/wizards/common/NumericalHelper.java |   43 ---
 41 files changed, 109 insertions(+), 1529 deletions(-)

New commits:
commit a2c464868aca4bb38aa8afff635da56942b597ac
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Jan 31 10:18:17 2014 +0100

    [API CHANGE] Remove UNOIDL "array" and "union" vaporware remnants from cppu
    
    This leaves only aborting stubs (for SONAME stability) for
    
      typelib_static_array_type_init
      typelib_typedescription_newArray
      typelib_typedescription_newUnion
    
    and completely removes corresponding
    
      typelib_ArrayTypeDescription
      typelib_UnionTypeDescription
    
    structs and C++ inline
    
      getCppuArrayType*
    
    functions.  None of this should ever have been called by client code anyway, so
    while technically an API change it should not matter for practical purposes.
    
    Change-Id: I23769d104d545533bf578762b79994e269d78c22

diff --git a/cppu/Library_cppu.mk b/cppu/Library_cppu.mk
index c00fd8e..820e88f 100644
--- a/cppu/Library_cppu.mk
+++ b/cppu/Library_cppu.mk
@@ -31,6 +31,7 @@ $(eval $(call gb_Library_add_cobjects,cppu,\
 ))
 
 $(eval $(call gb_Library_add_exception_objects,cppu,\
+	cppu/source/cppu/compat \
 	cppu/source/cppu/cppu_opt \
 	cppu/source/threadpool/current \
 	cppu/source/threadpool/jobqueue \
diff --git a/cppu/source/cppu/compat.cxx b/cppu/source/cppu/compat.cxx
new file mode 100644
index 0000000..06181e6ef
--- /dev/null
+++ b/cppu/source/cppu/compat.cxx
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <sal/config.h>
+
+#include <cstdlib>
+
+#include <typelib/typedescription.h>
+#include <rtl/ustring.h>
+#include <sal/types.h>
+
+// Stubs for removed functionality, to be killed when we bump sal SONAME
+
+extern "C" {
+
+SAL_DLLPUBLIC_EXPORT void SAL_CALL typelib_static_array_type_init(
+    typelib_TypeDescriptionReference **, typelib_TypeDescriptionReference *,
+    sal_Int32, ...) SAL_THROW_EXTERN_C()
+{
+    std::abort();
+}
+
+SAL_DLLPUBLIC_EXPORT void SAL_CALL typelib_typedescription_newArray(
+    typelib_TypeDescription **, typelib_TypeDescriptionReference *,
+    sal_Int32, sal_Int32 *) SAL_THROW_EXTERN_C()
+{
+    std::abort();
+}
+
+SAL_DLLPUBLIC_EXPORT void SAL_CALL typelib_typedescription_newUnion(
+    typelib_TypeDescription **, rtl_uString *,
+    typelib_TypeDescriptionReference *, sal_Int64,
+    typelib_TypeDescriptionReference *, sal_Int32, void *)
+    SAL_THROW_EXTERN_C()
+{
+    std::abort();
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cppu/source/typelib/static_types.cxx b/cppu/source/typelib/static_types.cxx
index 83f52ab..fb14603 100644
--- a/cppu/source/typelib/static_types.cxx
+++ b/cppu/source/typelib/static_types.cxx
@@ -573,71 +573,6 @@ CPPU_DLLPUBLIC void SAL_CALL typelib_static_enum_type_init(
     }
 }
 
-//##################################################################################################
-CPPU_DLLPUBLIC void SAL_CALL typelib_static_array_type_init(
-    typelib_TypeDescriptionReference ** ppRef,
-    typelib_TypeDescriptionReference * pElementTypeRef,
-    sal_Int32 nDimensions, ... )
-    SAL_THROW_EXTERN_C()
-{
-    if (! *ppRef)
-    {
-        MutexGuard aGuard( typelib_StaticInitMutex::get() );
-        if (! *ppRef)
-        {
-            OUStringBuffer aBuf( 32 );
-            aBuf.append( pElementTypeRef->pTypeName );
-
-            va_list dimArgs;
-            va_start( dimArgs, nDimensions );
-            sal_Int32 dim = 0;
-            sal_Int32 nElements = 1;
-            sal_Int32* pDimensions = new sal_Int32[nDimensions];
-            for (sal_Int32 i=0; i < nDimensions; i++)
-            {
-                dim = va_arg( dimArgs, int);
-                pDimensions[i] = dim;
-                aBuf.appendAscii("[");
-                aBuf.append(dim);
-                aBuf.appendAscii("]");
-                nElements *= dim;
-            }
-            va_end( dimArgs );
-            OUString aTypeName( aBuf.makeStringAndClear() );
-
-            assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_ARRAY) );
-            *ppRef = igetTypeByName( aTypeName.pData );
-            if (!*ppRef)
-            {
-                typelib_TypeDescription * pReg = 0;
-                ::typelib_typedescription_newEmpty(
-                    &pReg, typelib_TypeClass_ARRAY, aTypeName.pData );
-                typelib_ArrayTypeDescription * pArray = (typelib_ArrayTypeDescription *)pReg;
-
-                pArray->nDimensions = nDimensions;
-                pArray->nTotalElements = nElements;
-                pArray->pDimensions = pDimensions;
-
-                typelib_typedescriptionreference_acquire(pElementTypeRef);
-                ((typelib_IndirectTypeDescription*)pArray)->pType = pElementTypeRef;
-
-                pReg->pWeakRef = (typelib_TypeDescriptionReference *)pReg;
-                // sizeof( void ) not allowed
-                pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
-                pReg->nAlignment = ::adjustAlignment( pReg->nAlignment );
-                pReg->bComplete = sal_True;
-
-                ::typelib_typedescription_register( &pReg );
-                *ppRef = (typelib_TypeDescriptionReference *)pReg;
-                assert( *ppRef == pReg->pWeakRef );
-            } else
-                delete [] pDimensions;
-            // another static ref:
-            ++((*ppRef)->nStaticRefCount);
-        }
-    }
-}
-
 } // extern "C"
 
 }
diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx
index 585b6c5..4afb438 100644
--- a/cppu/source/typelib/typelib.cxx
+++ b/cppu/source/typelib/typelib.cxx
@@ -116,18 +116,10 @@ static inline sal_Int32 getDescriptionSize( typelib_TypeClass eTypeClass )
     // the new description
     switch( eTypeClass )
     {
-        case typelib_TypeClass_ARRAY:
-            nSize = (sal_Int32)sizeof( typelib_ArrayTypeDescription );
-        break;
-
         case typelib_TypeClass_SEQUENCE:
             nSize = (sal_Int32)sizeof( typelib_IndirectTypeDescription );
         break;
 
-        case typelib_TypeClass_UNION:
-            nSize = (sal_Int32)sizeof( typelib_UnionTypeDescription );
-        break;
-
         case typelib_TypeClass_STRUCT:
             nSize = (sal_Int32)sizeof( typelib_StructTypeDescription );
         break;
@@ -211,9 +203,7 @@ struct TypeDescriptor_Init_Impl
     // only for debugging
     sal_Int32           nTypeDescriptionCount;
     sal_Int32           nCompoundTypeDescriptionCount;
-    sal_Int32           nUnionTypeDescriptionCount;
     sal_Int32           nIndirectTypeDescriptionCount;
-    sal_Int32           nArrayTypeDescriptionCount;
     sal_Int32           nEnumTypeDescriptionCount;
     sal_Int32           nInterfaceMethodTypeDescriptionCount;
     sal_Int32           nInterfaceAttributeTypeDescriptionCount;
@@ -225,8 +215,8 @@ struct TypeDescriptor_Init_Impl
         pWeakMap(0), pCallbacks(0), pCache(0), pMutex(0)
 #if OSL_DEBUG_LEVEL > 1
         , nTypeDescriptionCount(0), nCompoundTypeDescriptionCount(0),
-        nUnionTypeDescriptionCount(0), nIndirectTypeDescriptionCount(0),
-        nArrayTypeDescriptionCount(0), nEnumTypeDescriptionCount(0),
+        nIndirectTypeDescriptionCount(0),
+        nEnumTypeDescriptionCount(0),
         nInterfaceMethodTypeDescriptionCount(0),
         nInterfaceAttributeTypeDescriptionCount(0),
         nInterfaceTypeDescriptionCount(0), nTypeDescriptionReferenceCount(0)
@@ -335,9 +325,7 @@ TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW(())
 #if OSL_DEBUG_LEVEL > 1
     OSL_ENSURE( !nTypeDescriptionCount, "### nTypeDescriptionCount is not zero" );
     OSL_ENSURE( !nCompoundTypeDescriptionCount, "### nCompoundTypeDescriptionCount is not zero" );
-    OSL_ENSURE( !nUnionTypeDescriptionCount, "### nUnionTypeDescriptionCount is not zero" );
     OSL_ENSURE( !nIndirectTypeDescriptionCount, "### nIndirectTypeDescriptionCount is not zero" );
-    OSL_ENSURE( !nArrayTypeDescriptionCount, "### nArrayTypeDescriptionCount is not zero" );
     OSL_ENSURE( !nEnumTypeDescriptionCount, "### nEnumTypeDescriptionCount is not zero" );
     OSL_ENSURE( !nInterfaceMethodTypeDescriptionCount, "### nInterfaceMethodTypeDescriptionCount is not zero" );
     OSL_ENSURE( !nInterfaceAttributeTypeDescriptionCount, "### nInterfaceAttributeTypeDescriptionCount is not zero" );
@@ -491,7 +479,6 @@ bool complete(typelib_TypeDescription ** ppTypeDescr, bool initTables) {
     {
         OSL_ASSERT( (typelib_TypeClass_STRUCT == (*ppTypeDescr)->eTypeClass ||
                      typelib_TypeClass_EXCEPTION == (*ppTypeDescr)->eTypeClass ||
-                     typelib_TypeClass_UNION == (*ppTypeDescr)->eTypeClass ||
                      typelib_TypeClass_ENUM == (*ppTypeDescr)->eTypeClass ||
                      typelib_TypeClass_INTERFACE == (*ppTypeDescr)->eTypeClass) &&
                     !reallyWeak( (*ppTypeDescr)->eTypeClass ) );
@@ -593,21 +580,6 @@ extern "C" void SAL_CALL typelib_typedescription_newEmpty(
     typelib_TypeDescription * pRet;
     switch( eTypeClass )
     {
-        case typelib_TypeClass_ARRAY:
-        {
-            typelib_ArrayTypeDescription * pTmp = new typelib_ArrayTypeDescription();
-            typelib_IndirectTypeDescription * pIndirect = (typelib_IndirectTypeDescription *)pTmp;
-            pRet = (typelib_TypeDescription *)pTmp;
-#if OSL_DEBUG_LEVEL > 1
-            osl_atomic_increment( &Init::get().nArrayTypeDescriptionCount );
-#endif
-            pIndirect->pType = 0;
-            pTmp->nDimensions = 0;
-            pTmp->nTotalElements = 0;
-            pTmp->pDimensions = 0;
-        }
-        break;
-
         case typelib_TypeClass_SEQUENCE:
         {
             typelib_IndirectTypeDescription * pTmp = new typelib_IndirectTypeDescription();
@@ -619,23 +591,6 @@ extern "C" void SAL_CALL typelib_typedescription_newEmpty(
         }
         break;
 
-        case typelib_TypeClass_UNION:
-        {
-            typelib_UnionTypeDescription * pTmp;
-            pTmp = new typelib_UnionTypeDescription();
-            pRet = (typelib_TypeDescription *)pTmp;
-#if OSL_DEBUG_LEVEL > 1
-            osl_atomic_increment( &Init::get().nUnionTypeDescriptionCount );
-#endif
-            pTmp->nMembers = 0;
-            pTmp->pDiscriminantTypeRef = 0;
-            pTmp->pDiscriminants = 0;
-            pTmp->ppTypeRefs = 0;
-            pTmp->ppMemberNames = 0;
-            pTmp->pDefaultTypeRef = 0;
-        }
-        break;
-
         case typelib_TypeClass_STRUCT:
         {
             // FEATURE_EMPTYCLASS
@@ -920,59 +875,6 @@ extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newStruct(
 }
 
 //------------------------------------------------------------------------
-extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newUnion(
-    typelib_TypeDescription ** ppRet,
-    rtl_uString * pTypeName,
-    typelib_TypeDescriptionReference * pDiscriminantTypeRef,
-    sal_Int64 nDefaultDiscriminant,
-    typelib_TypeDescriptionReference * pDefaultTypeRef,
-    sal_Int32 nMembers,
-    typelib_Union_Init * pMembers )
-    SAL_THROW_EXTERN_C()
-{
-    typelib_typedescription_newEmpty( ppRet, typelib_TypeClass_UNION, pTypeName );
-    // discriminant type
-    typelib_UnionTypeDescription * pTmp = (typelib_UnionTypeDescription *)*ppRet;
-    typelib_typedescriptionreference_acquire( pTmp->pDiscriminantTypeRef = pDiscriminantTypeRef );
-
-    sal_Int32 nPos;
-
-    pTmp->nMembers = nMembers;
-    // default discriminant
-    if (nMembers)
-    {
-        pTmp->pDiscriminants = new sal_Int64[ nMembers ];
-        for ( nPos = nMembers; nPos--; )
-        {
-            pTmp->pDiscriminants[nPos] = pMembers[nPos].nDiscriminant;
-        }
-    }
-    // default default discriminant
-    pTmp->nDefaultDiscriminant = nDefaultDiscriminant;
-
-    // union member types
-    pTmp->ppTypeRefs = new typelib_TypeDescriptionReference *[ nMembers ];
-    for ( nPos = nMembers; nPos--; )
-    {
-        typelib_typedescriptionreference_acquire( pTmp->ppTypeRefs[nPos] = pMembers[nPos].pTypeRef );
-    }
-    // union member names
-    pTmp->ppMemberNames = new rtl_uString *[ nMembers ];
-    for ( nPos = nMembers; nPos--; )
-    {
-        rtl_uString_acquire( pTmp->ppMemberNames[nPos] = pMembers[nPos].pMemberName );
-    }
-
-    // default union type
-    typelib_typedescriptionreference_acquire( pTmp->pDefaultTypeRef = pDefaultTypeRef );
-
-    if (! reallyWeak( typelib_TypeClass_UNION ))
-        (*ppRet)->pWeakRef = (typelib_TypeDescriptionReference *)*ppRet;
-    (*ppRet)->nSize = typelib_typedescription_getAlignedUnoSize( (*ppRet), 0, (*ppRet)->nAlignment );
-    (*ppRet)->nAlignment = adjustAlignment( (*ppRet)->nAlignment );
-}
-
-//------------------------------------------------------------------------
 extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newEnum(
     typelib_TypeDescription ** ppRet,
     rtl_uString * pTypeName,
@@ -1002,44 +904,6 @@ extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newEnum(
 }
 
 //------------------------------------------------------------------------
-extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newArray(
-    typelib_TypeDescription ** ppRet,
-    typelib_TypeDescriptionReference * pElementTypeRef,
-    sal_Int32 nDimensions,
-    sal_Int32 * pDimensions )
-    SAL_THROW_EXTERN_C ()
-{
-    OUStringBuffer aBuf( 32 );
-    aBuf.append( pElementTypeRef->pTypeName );
-    sal_Int32 nElements = 1;
-    for (sal_Int32 i=0; i < nDimensions; i++)
-    {
-        aBuf.appendAscii("[");
-        aBuf.append(pDimensions[i]);
-        aBuf.appendAscii("]");
-        nElements *= pDimensions[i];
-    }
-    OUString aTypeName( aBuf.makeStringAndClear() );
-
-
-    typelib_typedescription_newEmpty( ppRet, typelib_TypeClass_ARRAY, aTypeName.pData );
-    typelib_ArrayTypeDescription * pArray = (typelib_ArrayTypeDescription *)*ppRet;
-
-    pArray->nDimensions = nDimensions;
-    pArray->nTotalElements = nElements;
-    pArray->pDimensions = new sal_Int32[ nDimensions ];
-    ::memcpy( pArray->pDimensions, pDimensions, nDimensions * sizeof(sal_Int32) );
-
-    typelib_typedescriptionreference_acquire(pElementTypeRef);
-    ((typelib_IndirectTypeDescription*)pArray)->pType = pElementTypeRef;
-
-    (*ppRet)->pWeakRef = (typelib_TypeDescriptionReference *)*ppRet;
-    // sizeof( void ) not allowed
-    (*ppRet)->nSize = typelib_typedescription_getAlignedUnoSize( *ppRet, 0, (*ppRet)->nAlignment );
-    (*ppRet)->nAlignment = adjustAlignment( (*ppRet)->nAlignment );
-}
-
-//------------------------------------------------------------------------
 extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newInterface(
     typelib_InterfaceTypeDescription ** ppRet,
     rtl_uString * pTypeName,
@@ -1449,38 +1313,10 @@ static inline void typelib_typedescription_destructExtendedMembers(
 
     switch( pTD->eTypeClass )
     {
-    case typelib_TypeClass_ARRAY:
-        if( ((typelib_IndirectTypeDescription*)pTD)->pType )
-            typelib_typedescriptionreference_release( ((typelib_IndirectTypeDescription*)pTD)->pType );
-        delete [] ((typelib_ArrayTypeDescription *)pTD)->pDimensions;
-        break;
     case typelib_TypeClass_SEQUENCE:
         if( ((typelib_IndirectTypeDescription*)pTD)->pType )
             typelib_typedescriptionreference_release( ((typelib_IndirectTypeDescription*)pTD)->pType );
         break;
-    case typelib_TypeClass_UNION:
-    {
-        typelib_UnionTypeDescription * pUnionTD = (typelib_UnionTypeDescription *)pTD;
-        typelib_typedescriptionreference_release( pUnionTD->pDiscriminantTypeRef );
-        typelib_typedescriptionreference_release( pUnionTD->pDefaultTypeRef );
-
-        sal_Int32 nPos;
-        typelib_TypeDescriptionReference ** ppTypeRefs = pUnionTD->ppTypeRefs;
-        for ( nPos = pUnionTD->nMembers; nPos--; )
-        {
-            typelib_typedescriptionreference_release( ppTypeRefs[nPos] );
-        }
-
-        rtl_uString ** ppMemberNames = pUnionTD->ppMemberNames;
-        for ( nPos = pUnionTD->nMembers; nPos--; )
-        {
-            rtl_uString_release( ppMemberNames[nPos] );
-        }
-        delete [] pUnionTD->ppMemberNames;
-        delete [] pUnionTD->pDiscriminants;
-        delete [] pUnionTD->ppTypeRefs;
-    }
-    break;
     case typelib_TypeClass_STRUCT:
         delete[] reinterpret_cast< typelib_StructTypeDescription * >(pTD)->
             pParameterizedTypes;
@@ -1618,15 +1454,9 @@ extern "C" CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_release(
 #if OSL_DEBUG_LEVEL > 1
         switch( pTD->eTypeClass )
         {
-        case typelib_TypeClass_ARRAY:
-            osl_atomic_decrement( &rInit.nArrayTypeDescriptionCount );
-            break;
         case typelib_TypeClass_SEQUENCE:
             osl_atomic_decrement( &rInit.nIndirectTypeDescriptionCount );
             break;
-        case typelib_TypeClass_UNION:
-            osl_atomic_decrement( &rInit.nUnionTypeDescriptionCount );
-            break;
         case typelib_TypeClass_STRUCT:
         case typelib_TypeClass_EXCEPTION:
             osl_atomic_decrement( &rInit.nCompoundTypeDescriptionCount );
@@ -1830,24 +1660,6 @@ extern "C" sal_Int32 SAL_CALL typelib_typedescription_getAlignedUnoSize(
                 // FEATURE_INTERFACE
                 nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( void * ));
                 break;
-            case typelib_TypeClass_UNION:
-                {
-                nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof(sal_Int64));
-                for ( sal_Int32 nPos = ((typelib_UnionTypeDescription *)pTypeDescription)->nMembers; nPos--; )
-                {
-                    typelib_TypeDescription * pTD = 0;
-                    TYPELIB_DANGER_GET( &pTD, ((typelib_UnionTypeDescription *)pTypeDescription)->ppTypeRefs[nPos] );
-                    sal_Int32 nMaxIntegralTypeSize;
-                    sal_Int32 nMemberSize = typelib_typedescription_getAlignedUnoSize( pTD, (sal_Int32)(sizeof(sal_Int64)), nMaxIntegralTypeSize );
-                    TYPELIB_DANGER_RELEASE( pTD );
-                    if (nSize < nMemberSize)
-                        nSize = nMemberSize;
-                    if (rMaxIntegralTypeSize < nMaxIntegralTypeSize)
-                        rMaxIntegralTypeSize = nMaxIntegralTypeSize;
-                }
-                ((typelib_UnionTypeDescription *)pTypeDescription)->nValueOffset = rMaxIntegralTypeSize;
-                }
-                break;
             case typelib_TypeClass_ENUM:
                 nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( typelib_TypeClass ));
                 break;
@@ -1900,15 +1712,6 @@ extern "C" sal_Int32 SAL_CALL typelib_typedescription_getAlignedUnoSize(
                 nSize += nStructSize;
                 }
                 break;
-            case typelib_TypeClass_ARRAY:
-                {
-                typelib_TypeDescription * pTD = 0;
-                TYPELIB_DANGER_GET( &pTD, ((typelib_IndirectTypeDescription *)pTypeDescription)->pType );
-                rMaxIntegralTypeSize = pTD->nSize;
-                TYPELIB_DANGER_RELEASE( pTD );
-                nSize = ((typelib_ArrayTypeDescription *)pTypeDescription)->nTotalElements * rMaxIntegralTypeSize;
-                }
-                break;
             case typelib_TypeClass_SEQUENCE:
                 nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( void * ));
                 break;
diff --git a/cppu/source/uno/assign.hxx b/cppu/source/uno/assign.hxx
index 66b065c..655fe4c 100644
--- a/cppu/source/uno/assign.hxx
+++ b/cppu/source/uno/assign.hxx
@@ -101,128 +101,6 @@ inline sal_Bool _assignStruct(
     return sal_True;
 }
 //--------------------------------------------------------------------------------------------------
-inline sal_Bool _assignArray(
-    void * pDest, void * pSource,
-    typelib_ArrayTypeDescription * pTypeDescr,
-    uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release )
-{
-    typelib_TypeDescriptionReference * pElementTypeRef =
-        ((typelib_IndirectTypeDescription *)pTypeDescr)->pType;
-    typelib_TypeDescription * pElementTypeDescr = NULL;
-    TYPELIB_DANGER_GET( &pElementTypeDescr, pElementTypeRef );
-    sal_Int32 nTotalElements = pTypeDescr->nTotalElements;
-    sal_Int32 nElementSize = pElementTypeDescr->nSize;
-    sal_Int32 i;
-    sal_Bool bRet = sal_False;
-
-    switch ( pElementTypeRef->eTypeClass )
-    {
-    case typelib_TypeClass_CHAR:
-    case typelib_TypeClass_BOOLEAN:
-    case typelib_TypeClass_BYTE:
-    case typelib_TypeClass_SHORT:
-    case typelib_TypeClass_UNSIGNED_SHORT:
-    case typelib_TypeClass_LONG:
-    case typelib_TypeClass_UNSIGNED_LONG:
-    case typelib_TypeClass_HYPER:
-    case typelib_TypeClass_UNSIGNED_HYPER:
-    case typelib_TypeClass_FLOAT:
-    case typelib_TypeClass_DOUBLE:
-        for (i=0; i < nTotalElements; i++)
-        {
-            memcpy((sal_Char *)pDest + i * nElementSize,
-                             (sal_Char *)pSource + i * nElementSize,
-                             nElementSize);
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_STRING:
-        for (i=0; i < nTotalElements; i++)
-        {
-            ::rtl_uString_assign( (rtl_uString **)pDest + i,
-                                  ((rtl_uString **)pSource)[i] );
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_TYPE:
-        for (i=0; i < nTotalElements; i++)
-        {
-            typelib_TypeDescriptionReference ** pp = (typelib_TypeDescriptionReference **)pDest + i;
-            ::typelib_typedescriptionreference_release( *pp );
-            *pp = *((typelib_TypeDescriptionReference **)pSource + i);
-            TYPE_ACQUIRE( *pp );
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_ANY:
-        for (i=0; i < nTotalElements; i++)
-        {
-            _destructAny( (uno_Any *)pDest + i, release );
-            _copyConstructAny( (uno_Any *)pDest + i, (uno_Any *)pSource + i,
-                               pElementTypeRef, pElementTypeDescr, acquire, 0 );
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_ENUM:
-        for (i=0; i < nTotalElements; i++)
-        {
-            *((sal_Int32 *)pDest + i) = *((sal_Int32 *)pSource + i);
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_STRUCT:
-    case typelib_TypeClass_EXCEPTION:
-        for (i=0; i < nTotalElements; i++)
-        {
-            bRet = _assignStruct( (sal_Char *)pDest + i * nElementSize,
-                                  (sal_Char *)pSource + i * nElementSize,
-                                  (typelib_CompoundTypeDescription *)pElementTypeDescr,
-                                  queryInterface, acquire, release );
-            if (! bRet)
-                break;
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_UNION:
-        for (i=0; i < nTotalElements; i++)
-        {
-            _destructUnion( (sal_Char*)pDest + i * nElementSize, pElementTypeDescr, release );
-            _copyConstructUnion( (sal_Char*)pDest + i * nElementSize,
-                                 (sal_Char*)pSource + i * nElementSize,
-                                 pElementTypeDescr, acquire, 0 );
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_SEQUENCE:
-        for (i=0; i < nTotalElements; i++)
-        {
-            osl_atomic_increment( &(*((uno_Sequence **)pSource + i))->nRefCount );
-            idestructSequence(
-                *((uno_Sequence **)pDest + i),
-                pElementTypeRef, pElementTypeDescr, release );
-            *((uno_Sequence **)pDest + i) = *((uno_Sequence **)pSource + i);
-        }
-        bRet = sal_True;
-        break;
-    case typelib_TypeClass_INTERFACE:
-        for (i=0; i < nTotalElements; i++)
-        {
-            _assignInterface(
-                (void **)((sal_Char*)pDest + i * nElementSize),
-                *(void **)((sal_Char*)pSource + i * nElementSize),
-                acquire, release );
-        }
-        bRet = sal_True;
-        break;
-    default:
-        OSL_ASSERT(false);
-        break;
-    }
-
-    TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-    return bRet;
-}
-//--------------------------------------------------------------------------------------------------
 inline sal_Bool _assignData(
     void * pDest,
     typelib_TypeDescriptionReference * pDestType, typelib_TypeDescription * pDestTypeDescr,
@@ -516,47 +394,6 @@ inline sal_Bool _assignData(
             return bRet;
         }
         return sal_False;
-    case typelib_TypeClass_ARRAY:
-        {
-            sal_Bool bRet = sal_False;
-            if (pSourceTypeDescr)
-            {
-                typelib_ArrayTypeDescription * pTypeDescr =
-                    (typelib_ArrayTypeDescription *)pSourceTypeDescr;
-                bRet = _assignArray( pDest, pSource, pTypeDescr, queryInterface, acquire, release );
-            }
-            else
-            {
-                TYPELIB_DANGER_GET( &pSourceTypeDescr, pSourceType );
-                typelib_ArrayTypeDescription * pTypeDescr =
-                    (typelib_ArrayTypeDescription *)pSourceTypeDescr;
-                if ( pTypeDescr )
-                {
-                    bRet = _assignArray(
-                        pDest, pSource, pTypeDescr, queryInterface, acquire, release );
-                }
-                TYPELIB_DANGER_RELEASE( pSourceTypeDescr );
-            }
-            return bRet;
-        }
-    case typelib_TypeClass_UNION:
-        if (_type_equals( pDestType, pSourceType ))
-        {
-            if (pDestTypeDescr)
-            {
-                _destructUnion( pDest, pDestTypeDescr, release );
-                _copyConstructUnion( pDest, pSource, pDestTypeDescr, acquire, 0 );
-            }
-            else
-            {
-                TYPELIB_DANGER_GET( &pDestTypeDescr, pDestType );
-                _destructUnion( pDest, pDestTypeDescr, release );
-                _copyConstructUnion( pDest, pSource, pDestTypeDescr, acquire, 0 );
-                TYPELIB_DANGER_RELEASE( pDestTypeDescr );
-            }
-            return sal_True;
-        }
-        return sal_False;
     case typelib_TypeClass_SEQUENCE:
         if (typelib_TypeClass_SEQUENCE != pSourceType->eTypeClass)
             return sal_False;
diff --git a/cppu/source/uno/constr.hxx b/cppu/source/uno/constr.hxx
index dd0343a..1865207 100644
--- a/cppu/source/uno/constr.hxx
+++ b/cppu/source/uno/constr.hxx
@@ -29,17 +29,6 @@ namespace cppu
 //#### construction ################################################################################
 //##################################################################################################
 
-//--------------------------------------------------------------------------------------------------
-inline void _defaultConstructUnion(
-    void * pMem,
-    typelib_TypeDescription * pTypeDescr )
-    SAL_THROW(())
-{
-    ::uno_type_constructData(
-        (char *)pMem + ((typelib_UnionTypeDescription *)pTypeDescr)->nValueOffset,
-        ((typelib_UnionTypeDescription *)pTypeDescr)->pDefaultTypeRef );
-    *(sal_Int64 *)pMem = ((typelib_UnionTypeDescription *)pTypeDescr)->nDefaultDiscriminant;
-}
 //==================================================================================================
 void defaultConstructStruct(
     void * pMem,
@@ -67,87 +56,6 @@ inline void _defaultConstructStruct(
 }
 
 //--------------------------------------------------------------------------------------------------
-inline void _defaultConstructArray(
-    void * pMem,
-    typelib_ArrayTypeDescription * pTypeDescr )
-{
-    typelib_TypeDescription * pElementType = NULL;
-    TYPELIB_DANGER_GET( &pElementType, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType );
-    sal_Int32 nTotalElements = pTypeDescr->nTotalElements;
-    sal_Int32 nElementSize = pElementType->nSize;
-    sal_Int32 i;
-    switch ( pElementType->eTypeClass )
-    {
-    case typelib_TypeClass_CHAR:
-    case typelib_TypeClass_BOOLEAN:
-    case typelib_TypeClass_BYTE:
-    case typelib_TypeClass_SHORT:
-    case typelib_TypeClass_UNSIGNED_SHORT:
-    case typelib_TypeClass_LONG:
-    case typelib_TypeClass_UNSIGNED_LONG:
-    case typelib_TypeClass_HYPER:
-    case typelib_TypeClass_UNSIGNED_HYPER:
-    case typelib_TypeClass_FLOAT:
-    case typelib_TypeClass_DOUBLE:
-    case typelib_TypeClass_INTERFACE:
-        memset(pMem, 0, nElementSize * nTotalElements);
-        break;
-
-    case typelib_TypeClass_STRING:
-        for (i=0; i < nTotalElements; i++)
-        {
-            rtl_uString** ppElement = (rtl_uString **)pMem + i;
-            *ppElement = 0;
-            rtl_uString_new( ppElement);
-        }
-        break;
-    case typelib_TypeClass_TYPE:
-        for (i=0; i < nTotalElements; i++)
-        {
-            typelib_TypeDescriptionReference** ppElement = (typelib_TypeDescriptionReference **)pMem + i;
-            *ppElement = _getVoidType();
-        }
-        break;
-    case typelib_TypeClass_ANY:
-        for (i=0; i < nTotalElements; i++)
-        {
-            CONSTRUCT_EMPTY_ANY( (uno_Any *)pMem + i );
-        }
-        break;
-    case typelib_TypeClass_ENUM:
-        for (i=0; i < nTotalElements; i++)
-        {
-            *((sal_Int32 *)pMem + i) = ((typelib_EnumTypeDescription *)pElementType)->nDefaultEnumValue;
-        }
-        break;
-    case typelib_TypeClass_STRUCT:
-    case typelib_TypeClass_EXCEPTION:
-        for (i=0; i < nTotalElements; i++)
-        {
-            _defaultConstructStruct( (sal_Char*)pMem + i * nElementSize, (typelib_CompoundTypeDescription *)pElementType );
-        }
-        break;
-    case typelib_TypeClass_UNION:
-        for (i=0; i < nTotalElements; i++)
-        {
-            _defaultConstructUnion( (sal_Char*)pMem + i * nElementSize, pElementType );
-        }
-        break;
-    case typelib_TypeClass_SEQUENCE:
-        for (i=0; i < nTotalElements; i++)
-        {
-            uno_Sequence** ppElement = (uno_Sequence **)pMem + i;
-            *ppElement = createEmptySequence();
-        }
-        break;
-    default:
-        OSL_ASSERT(false);
-        break;
-    }
-    TYPELIB_DANGER_RELEASE( pElementType );
-}
-
-//--------------------------------------------------------------------------------------------------
 inline void _defaultConstructData(
     void * pMem,
     typelib_TypeDescriptionReference * pType,
@@ -218,30 +126,6 @@ inline void _defaultConstructData(
             TYPELIB_DANGER_RELEASE( pTypeDescr );
         }
         break;
-    case typelib_TypeClass_ARRAY:
-        if (pTypeDescr)
-        {
-            _defaultConstructArray( pMem, (typelib_ArrayTypeDescription *)pTypeDescr );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            _defaultConstructArray( pMem, (typelib_ArrayTypeDescription *)pTypeDescr );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
-    case typelib_TypeClass_UNION:
-        if (pTypeDescr)
-        {
-            _defaultConstructUnion( pMem, pTypeDescr );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            _defaultConstructUnion( pMem, pTypeDescr );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
     case typelib_TypeClass_SEQUENCE:
         *(uno_Sequence **)pMem = createEmptySequence();
         break;
diff --git a/cppu/source/uno/copy.hxx b/cppu/source/uno/copy.hxx
index fb9adb3..b3b536e 100644
--- a/cppu/source/uno/copy.hxx
+++ b/cppu/source/uno/copy.hxx
@@ -95,65 +95,6 @@ inline void _copyConstructStruct(
         }
     }
 }
-//--------------------------------------------------------------------------------------------------
-inline void _copyConstructArray(
-    void * pDest, void * pSource,
-    typelib_ArrayTypeDescription * pTypeDescr,
-    uno_AcquireFunc acquire, uno_Mapping * mapping )
-{
-    typelib_TypeDescriptionReference * pElementTypeRef = ((typelib_IndirectTypeDescription *)pTypeDescr)->pType;
-    typelib_TypeDescription * pElementTypeDescr = NULL;
-    TYPELIB_DANGER_GET( &pElementTypeDescr, pElementTypeRef );
-    sal_Int32 nElementSize = ((typelib_TypeDescription*)pElementTypeDescr)->nSize;
-    TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-    sal_Int32 nTotalElements = pTypeDescr->nTotalElements;
-
-    if (mapping)
-    {
-        for(sal_Int32 i = 0; i < nTotalElements; i++)
-        {
-            ::uno_type_copyAndConvertData(
-                (sal_Char *)pDest + i * nElementSize,
-                (sal_Char *)pSource + i * nElementSize,
-                pElementTypeRef, mapping );
-        }
-    }
-    else
-    {
-        for(sal_Int32 i = 0; i < nTotalElements; i++)
-        {
-            ::uno_type_copyData(
-                (sal_Char *)pDest + (i * nElementSize),
-                (sal_Char *)pSource + (i * nElementSize),
-                pElementTypeRef, acquire );
-        }
-    }
-}
-//--------------------------------------------------------------------------------------------------
-inline void _copyConstructUnion(
-    void * pDest, void * pSource,
-    typelib_TypeDescription * pTypeDescr,
-    uno_AcquireFunc acquire, uno_Mapping * mapping )
-    SAL_THROW (())
-{
-    typelib_TypeDescriptionReference * pSetType = _unionGetSetType( pSource, pTypeDescr );
-    if (mapping)
-    {
-        ::uno_type_copyAndConvertData(
-            (char *)pDest + ((typelib_UnionTypeDescription *)pTypeDescr)->nValueOffset,
-            (char *)pSource + ((typelib_UnionTypeDescription *)pTypeDescr)->nValueOffset,
-            pSetType, mapping );
-    }
-    else
-    {
-        ::uno_type_copyData(
-            (char *)pDest + ((typelib_UnionTypeDescription *)pTypeDescr)->nValueOffset,
-            (char *)pSource + ((typelib_UnionTypeDescription *)pTypeDescr)->nValueOffset,
-            pSetType, acquire );
-    }
-    *(sal_Int64 *)pDest = *(sal_Int64 *)pSource;
-    typelib_typedescriptionreference_release( pSetType );
-}
 
 //------------------------------------------------------------------------------
 uno_Sequence * copyConstructSequence(
@@ -256,40 +197,6 @@ inline void _copyConstructAnyFromData(
             TYPELIB_DANGER_RELEASE( pTypeDescr );
         }
         break;
-    case typelib_TypeClass_ARRAY:
-        if (pTypeDescr)
-        {
-            pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-            _copyConstructArray(
-                pDestAny->pData, pSource,
-                (typelib_ArrayTypeDescription *)pTypeDescr,
-                acquire, mapping );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-            _copyConstructArray(
-                pDestAny->pData, pSource,
-                (typelib_ArrayTypeDescription *)pTypeDescr,
-                acquire, mapping );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
-    case typelib_TypeClass_UNION:
-        if (pTypeDescr)
-        {
-            pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-            _copyConstructUnion( pDestAny->pData, pSource, pTypeDescr, acquire, mapping );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-            _copyConstructUnion( pDestAny->pData, pSource, pTypeDescr, acquire, mapping );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
     case typelib_TypeClass_SEQUENCE:
         pDestAny->pData = &pDestAny->pReserved;
         if (pTypeDescr)
@@ -450,36 +357,6 @@ inline void _copyConstructAny(
                     TYPELIB_DANGER_RELEASE( pTypeDescr );
                 }
                 break;
-            case typelib_TypeClass_ARRAY:
-                if (pTypeDescr)
-                {
-                    pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-                    _defaultConstructArray(
-                        pDestAny->pData, (typelib_ArrayTypeDescription *)pTypeDescr );
-                }
-                else
-                {
-                    TYPELIB_DANGER_GET( &pTypeDescr, pType );
-                    pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-                    _defaultConstructArray(
-                        pDestAny->pData, (typelib_ArrayTypeDescription *)pTypeDescr );
-                    TYPELIB_DANGER_RELEASE( pTypeDescr );
-                }
-                break;
-            case typelib_TypeClass_UNION:
-                if (pTypeDescr)
-                {
-                    pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-                    _defaultConstructUnion( pDestAny->pData, pTypeDescr );
-                }
-                else
-                {
-                    TYPELIB_DANGER_GET( &pTypeDescr, pType );
-                    pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize );
-                    _defaultConstructUnion( pDestAny->pData, pTypeDescr );
-                    TYPELIB_DANGER_RELEASE( pTypeDescr );
-                }
-                break;
             case typelib_TypeClass_SEQUENCE:
                 pDestAny->pData = &pDestAny->pReserved;
                 *(uno_Sequence **)pDestAny->pData = createEmptySequence();
@@ -568,60 +445,6 @@ inline uno_Sequence * icopyConstructSequence(
                 TYPELIB_DANGER_RELEASE( pElementTypeDescr );
                 break;
             }
-            case typelib_TypeClass_ARRAY:
-            {
-                typelib_TypeDescription * pElementTypeDescr = 0;
-                TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-                sal_Int32 nElementSize = pElementTypeDescr->nSize;
-                char * pSourceElements = pSource->elements;
-                pDest = allocSeq( nElementSize, nElements );
-                if (pDest != 0)
-                {
-                    char * pElements = pDest->elements;
-                    for ( sal_Int32 nPos = nElements; nPos--; )
-                    {
-                        _copyConstructArray(
-                            pElements + (nPos * nElementSize),
-                            pSourceElements + (nPos * nElementSize),
-                            (typelib_ArrayTypeDescription *)pElementTypeDescr,
-                            acquire, mapping );
-                    }
-                }
-                TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-                break;
-            }
-            case typelib_TypeClass_UNION:
-            {
-                typelib_TypeDescription * pElementTypeDescr = 0;
-                TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-                sal_Int32 nElementSize = pElementTypeDescr->nSize;
-                sal_Int32 nValueOffset =
-                    ((typelib_UnionTypeDescription *)
-                     pElementTypeDescr)->nValueOffset;
-                pDest = allocSeq( nElementSize, nElements );
-                if (pDest != 0)
-                {
-                    char * pElements = pDest->elements;
-                    char * pSourceElements = pSource->elements;
-                    for ( sal_Int32 nPos = nElements; nPos--; )
-                    {
-                        char * pDest2 =
-                            pElements + (nPos * nElementSize);
-                        char * pSource2 =
-                            pSourceElements + (nPos * nElementSize);
-
-                        typelib_TypeDescriptionReference * pSetType =
-                            _unionGetSetType( pSource2, pElementTypeDescr );
-                        ::uno_type_copyAndConvertData(
-                            pDest2 + nValueOffset, pSource2 + nValueOffset,
-                            pSetType, mapping );
-                        *(sal_Int64 *)pDest2 = *(sal_Int64 *)pSource2;
-                        ::typelib_typedescriptionreference_release( pSetType );
-                    }
-                }
-                TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-                break;
-            }
             case typelib_TypeClass_SEQUENCE: // sequence of sequence
             {
                 pDest = allocSeq( sizeof (uno_Sequence *), nElements );
@@ -765,36 +588,6 @@ inline void _copyConstructData(
             TYPELIB_DANGER_RELEASE( pTypeDescr );
         }
         break;
-    case typelib_TypeClass_ARRAY:
-        if (pTypeDescr)
-        {
-            _copyConstructArray(
-                pDest, pSource,
-                (typelib_ArrayTypeDescription *)pTypeDescr,
-                acquire, mapping );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            _copyConstructArray(
-                pDest, pSource,
-                (typelib_ArrayTypeDescription *)pTypeDescr,
-                acquire, mapping );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
-    case typelib_TypeClass_UNION:
-        if (pTypeDescr)
-        {
-            _copyConstructUnion( pDest, pSource, pTypeDescr, acquire, mapping );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            _copyConstructUnion( pDest, pSource, pTypeDescr, acquire, mapping );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
     case typelib_TypeClass_SEQUENCE:
         if (mapping)
         {
diff --git a/cppu/source/uno/destr.hxx b/cppu/source/uno/destr.hxx
index f3bc26f..c02e7cf 100644
--- a/cppu/source/uno/destr.hxx
+++ b/cppu/source/uno/destr.hxx
@@ -29,19 +29,6 @@ namespace cppu
 //#### destruction #################################################################################
 //##################################################################################################
 
-//--------------------------------------------------------------------------------------------------
-inline void _destructUnion(
-    void * pValue,
-    typelib_TypeDescription * pTypeDescr,
-    uno_ReleaseFunc release )
-    SAL_THROW(())
-{
-    typelib_TypeDescriptionReference * pType = _unionGetSetType( pValue, pTypeDescr );
-    ::uno_type_destructData(
-        (char *)pValue + ((typelib_UnionTypeDescription *)pTypeDescr)->nValueOffset,
-        pType, release );
-    ::typelib_typedescriptionreference_release( pType );
-}
 //==================================================================================================
 void destructStruct(
     void * pValue,
@@ -71,29 +58,6 @@ inline void _destructStruct(
     }
 }
 
-//--------------------------------------------------------------------------------------------------
-inline void _destructArray(
-    void * pValue,
-    typelib_ArrayTypeDescription * pTypeDescr,
-    uno_ReleaseFunc release )
-    throw ()
-{
-    typelib_TypeDescription * pElementType = NULL;
-    TYPELIB_DANGER_GET( &pElementType, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType );
-    sal_Int32 nElementSize = pElementType->nSize;
-    TYPELIB_DANGER_RELEASE( pElementType );
-
-    sal_Int32 nTotalElements = pTypeDescr->nTotalElements;
-    for(sal_Int32 i=0; i < nTotalElements; i++)
-    {
-        ::uno_type_destructData(
-            (sal_Char *)pValue + i * nElementSize,
-            ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, release );
-    }
-
-    typelib_typedescriptionreference_release(((typelib_IndirectTypeDescription *)pTypeDescr)->pType);
-}
-
 //==============================================================================
 void destructSequence(
     uno_Sequence * pSequence,
@@ -155,15 +119,6 @@ inline void _destructAny(
         ::rtl_freeMemory( pAny->pData );
         break;
     }
-    case typelib_TypeClass_UNION:
-    {
-        typelib_TypeDescription * pTypeDescr = 0;
-        TYPELIB_DANGER_GET( &pTypeDescr, pType );
-        _destructUnion( pAny->pData, pTypeDescr, release );
-        TYPELIB_DANGER_RELEASE( pTypeDescr );
-        ::rtl_freeMemory( pAny->pData );
-        break;
-    }
     case typelib_TypeClass_SEQUENCE:
     {
         destructSequence(
@@ -257,22 +212,6 @@ inline sal_Int32 idestructElements(
         TYPELIB_DANGER_RELEASE( pElementTypeDescr );
         return nSize;
     }
-    case typelib_TypeClass_UNION:
-    {
-        typelib_TypeDescription * pElementTypeDescr = 0;
-        TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-        sal_Int32 nElementSize = pElementTypeDescr->nSize;
-        for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos )
-        {
-            _destructUnion(
-                (char *)pElements + (nElementSize * nPos),
-                pElementTypeDescr,
-                release );
-        }
-        sal_Int32 nSize = pElementTypeDescr->nSize;
-        TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-        return nSize;
-    }
     case typelib_TypeClass_SEQUENCE:
     {
         typelib_TypeDescription * pElementTypeDescr = 0;
@@ -387,30 +326,6 @@ inline void _destructData(
             TYPELIB_DANGER_RELEASE( pTypeDescr );
         }
         break;
-    case typelib_TypeClass_ARRAY:
-        if (pTypeDescr)
-        {
-            _destructArray( pValue, (typelib_ArrayTypeDescription *)pTypeDescr, release );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            _destructArray( pValue, (typelib_ArrayTypeDescription *)pTypeDescr, release );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
-    case typelib_TypeClass_UNION:
-        if (pTypeDescr)
-        {
-            _destructUnion( pValue, pTypeDescr, release );
-        }
-        else
-        {
-            TYPELIB_DANGER_GET( &pTypeDescr, pType );
-            _destructUnion( pValue, pTypeDescr, release );
-            TYPELIB_DANGER_RELEASE( pTypeDescr );
-        }
-        break;
     case typelib_TypeClass_SEQUENCE:
     {
         idestructSequence(
diff --git a/cppu/source/uno/eq.hxx b/cppu/source/uno/eq.hxx
index a3a26bf..c1496cb 100644
--- a/cppu/source/uno/eq.hxx
+++ b/cppu/source/uno/eq.hxx
@@ -226,32 +226,6 @@ inline sal_Bool _equalSequence(
         TYPELIB_DANGER_RELEASE( pElementTypeDescr );
         return sal_True;
     }
-    case typelib_TypeClass_UNION:
-    {
-        typelib_TypeDescription * pElementTypeDescr = 0;
-        TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-        sal_Int32 nElementSize = pElementTypeDescr->nSize;
-        sal_Int32 nValueOffset = ((typelib_UnionTypeDescription *)pElementTypeDescr)->nValueOffset;
-        for ( sal_Int32 nPos = nElements; nPos--; )
-        {
-            char * pDest2 = (char *)pDestElements + (nPos * nElementSize);
-            char * pSource2 = (char *)pSourceElements + (nPos * nElementSize);
-            typelib_TypeDescriptionReference * pSetType = _unionGetSetType(
-                pDest2, pElementTypeDescr );
-            sal_Bool bRet = ::uno_type_equalData(
-                pDest2 + nValueOffset, pSetType,
-                pSource2 + nValueOffset, pSetType,
-                queryInterface, release );
-            ::typelib_typedescriptionreference_release( pSetType );
-            if (! bRet)
-            {
-                TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-                return sal_False;
-            }
-        }
-        TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-        return sal_True;
-    }
     case typelib_TypeClass_SEQUENCE: // sequence of sequence
     {
         typelib_TypeDescription * pElementTypeDescr = 0;
@@ -586,40 +560,6 @@ inline sal_Bool _equalData(
             TYPELIB_DANGER_RELEASE( pDestTypeDescr );
             return bRet;
         }
-    case typelib_TypeClass_UNION:
-        if (_type_equals( pDestType, pSourceType ) &&
-            *(sal_Int64 *)pDest == *(sal_Int64 *)pSource) // same discriminant
-        {
-            sal_Bool bRet;
-            if (pDestTypeDescr)
-            {
-                typelib_TypeDescriptionReference * pSetType = _unionGetSetType(
-                    pDest, pDestTypeDescr );
-                bRet = ::uno_type_equalData(
-                    (char *)pDest + ((typelib_UnionTypeDescription *)pDestTypeDescr)->nValueOffset,
-                    pSetType,
-                    (char *)pSource + ((typelib_UnionTypeDescription *)pDestTypeDescr)->nValueOffset,
-                    pSetType,
-                    queryInterface, release );
-                typelib_typedescriptionreference_release( pSetType );
-            }
-            else
-            {
-                TYPELIB_DANGER_GET( &pDestTypeDescr, pDestType );
-                typelib_TypeDescriptionReference * pSetType = _unionGetSetType(
-                    pDest, pDestTypeDescr );
-                bRet = ::uno_type_equalData(
-                    (char *)pDest + ((typelib_UnionTypeDescription *)pDestTypeDescr)->nValueOffset,
-                    pSetType,
-                    (char *)pSource + ((typelib_UnionTypeDescription *)pDestTypeDescr)->nValueOffset,
-                    pSetType,
-                    queryInterface, release );
-                typelib_typedescriptionreference_release( pSetType );
-                TYPELIB_DANGER_RELEASE( pDestTypeDescr );
-            }
-            return bRet;
-        }
-        return sal_False;
     case typelib_TypeClass_SEQUENCE:
         if (_type_equals( pDestType, pSourceType ))
         {
diff --git a/cppu/source/uno/prim.hxx b/cppu/source/uno/prim.hxx
index b40dac3..5be342a 100644
--- a/cppu/source/uno/prim.hxx
+++ b/cppu/source/uno/prim.hxx
@@ -151,32 +151,6 @@ extern "C" void * binuno_queryInterface(
     void * pUnoI, typelib_TypeDescriptionReference * pDestType );
 
 //--------------------------------------------------------------------------------------------------
-inline typelib_TypeDescriptionReference * _unionGetSetType(
-    void * pUnion, typelib_TypeDescription * pTD )
-    SAL_THROW(())
-{
-    typelib_TypeDescriptionReference * pRet = 0;
-    sal_Int32 nPos;
-
-    sal_Int64 * pDiscr = ((typelib_UnionTypeDescription *)pTD)->pDiscriminants;
-    sal_Int64 nDiscr   = *(sal_Int64 *)pUnion;
-    for ( nPos = ((typelib_UnionTypeDescription *)pTD)->nMembers; nPos--; )
-    {
-        if (pDiscr[nPos] == nDiscr)
-        {
-            pRet = ((typelib_UnionTypeDescription *)pTD)->ppTypeRefs[nPos];
-            break;
-        }
-    }
-    if (nPos >= 0)
-    {
-        // default
-        pRet = ((typelib_UnionTypeDescription *)pTD)->pDefaultTypeRef;
-    }
-    typelib_typedescriptionreference_acquire( pRet );
-    return pRet;
-}
-//--------------------------------------------------------------------------------------------------
 inline sal_Bool _type_equals(
     typelib_TypeDescriptionReference * pType1, typelib_TypeDescriptionReference * pType2 )
     SAL_THROW(())
diff --git a/cppu/source/uno/sequence.cxx b/cppu/source/uno/sequence.cxx
index d570461..03198c1 100644
--- a/cppu/source/uno/sequence.cxx
+++ b/cppu/source/uno/sequence.cxx
@@ -265,65 +265,6 @@ static inline bool idefaultConstructElements(
         TYPELIB_DANGER_RELEASE( pElementTypeDescr );
         break;
     }
-    case typelib_TypeClass_ARRAY:
-    {
-        typelib_TypeDescription * pElementTypeDescr = 0;
-        TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-        sal_Int32 nElementSize = pElementTypeDescr->nSize;
-
-        if (nAlloc >= 0)
-            pSeq = reallocSeq( pSeq, nElementSize, nAlloc );
-        if (pSeq != 0)
-        {
-            char * pElements = pSeq->elements;
-            for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos )
-            {
-                _defaultConstructArray(
-                    pElements + (nElementSize * nPos),
-                    (typelib_ArrayTypeDescription *)pElementTypeDescr );
-            }
-        }
-
-        TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-        break;
-    }
-    case typelib_TypeClass_UNION:
-    {
-        typelib_TypeDescription * pElementTypeDescr = 0;
-        TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-        sal_Int32 nElementSize = pElementTypeDescr->nSize;
-
-        if (nAlloc >= 0)
-            pSeq = reallocSeq( pSeq, nElementSize, nAlloc );
-        if (pSeq != 0)
-        {
-            sal_Int32 nValueOffset =
-                ((typelib_UnionTypeDescription *)
-                 pElementTypeDescr)->nValueOffset;
-            sal_Int64 nDefaultDiscr =
-                ((typelib_UnionTypeDescription *)
-                 pElementTypeDescr)->nDefaultDiscriminant;
-
-            typelib_TypeDescription * pDefaultTypeDescr = 0;
-            TYPELIB_DANGER_GET(
-                &pDefaultTypeDescr,
-                ((typelib_UnionTypeDescription *)
-                 pElementTypeDescr)->pDefaultTypeRef );
-
-            char * pElements = pSeq->elements;
-            for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos )
-            {
-                char * pMem = pElements + (nElementSize * nPos);
-                ::uno_constructData(
-                    (char *)pMem + nValueOffset, pDefaultTypeDescr );
-                *(sal_Int64 *)pMem = nDefaultDiscr;
-            }
-            TYPELIB_DANGER_RELEASE( pDefaultTypeDescr );
-        }
-
-        TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-        break;
-    }
     case typelib_TypeClass_SEQUENCE:
     {
         if (nAlloc >= 0)
@@ -588,42 +529,6 @@ static inline bool icopyConstructFromElements(
         TYPELIB_DANGER_RELEASE( pElementTypeDescr );
         break;
     }
-    case typelib_TypeClass_UNION:
-    {
-        typelib_TypeDescription * pElementTypeDescr = 0;
-        TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType );
-        sal_Int32 nElementSize = pElementTypeDescr->nSize;
-
-        if (nAlloc >= 0)
-            pSeq = reallocSeq( pSeq, nElementSize, nAlloc );
-        if (pSeq != 0)
-        {
-            char * pDestElements = pSeq->elements;
-
-            sal_Int32 nValueOffset =
-                ((typelib_UnionTypeDescription *)
-                 pElementTypeDescr)->nValueOffset;
-            for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos )
-            {
-                char * pDest =
-                    pDestElements + (nElementSize * nPos);
-                char * pSource =
-                    (char *)pSourceElements + (nElementSize * nPos);
-
-                typelib_TypeDescriptionReference * pSetType = _unionGetSetType(
-                    pSource, pElementTypeDescr );
-                ::uno_type_copyData(
-                    pDest + nValueOffset,
-                    pSource + nValueOffset,
-                    pSetType, acquire );
-                *(sal_Int64 *)pDest = *(sal_Int64 *)pSource;
-                typelib_typedescriptionreference_release( pSetType );
-            }
-        }
-
-        TYPELIB_DANGER_RELEASE( pElementTypeDescr );
-        break;
-    }
     case typelib_TypeClass_SEQUENCE: // sequence of sequence
     {
         if (nAlloc >= 0)
diff --git a/include/com/sun/star/uno/Type.h b/include/com/sun/star/uno/Type.h
index 0a6a21b..1b3775f 100644
--- a/include/com/sun/star/uno/Type.h
+++ b/include/com/sun/star/uno/Type.h
@@ -377,49 +377,6 @@ inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const float * )
 */
 inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const double * ) SAL_THROW(());
 
-/** Array template function to get meta type for one-dimensional arrays.
-
-    @param pT array pointer
-    @return type of array
-*/
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType1( T * pT ) SAL_THROW(());
-/** Array template function to get meta type for two-dimensional arrays.
-
-    @param pT array pointer
-    @return type of array
-*/
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType2( T * pT ) SAL_THROW(());
-/** Array template function to get meta type for three-dimensional arrays.
-
-    @param pT array pointer
-    @return type of array
-*/
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType3( T * pT ) SAL_THROW(());
-/** Array template function to get meta type for four-dimensional arrays.
-
-    @param pT array pointer
-    @return type of array
-*/
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType4( T * pT ) SAL_THROW(());
-/** Array template function to get meta type for five-dimensional arrays.
-
-    @param pT array pointer
-    @return type of array
-*/
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType5( T * pT ) SAL_THROW(());
-/** Array template function to get meta type for six-dimensional arrays.
-
-    @param pT array pointer
-    @return type of array
-*/
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType6( T * pT ) SAL_THROW(());
-
 /** Gets the meta type of an IDL type.
 
     The difference between this function template (with a type parameter) and
diff --git a/include/com/sun/star/uno/Type.hxx b/include/com/sun/star/uno/Type.hxx
index 7838c58..e32a645 100644
--- a/include/com/sun/star/uno/Type.hxx
+++ b/include/com/sun/star/uno/Type.hxx
@@ -186,123 +186,6 @@ inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( SAL_UNUSED_PARA
     return ::cppu::UnoType< double >::get();
 }
 
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType1( T * pT ) SAL_THROW(())
-{
-    if (! ::com::sun::star::uno::Array< T >::s_pType)
-    {
-        const ::com::sun::star::uno::Type & rElementType =
-            ::cppu::getTypeFavourUnsigned( *pT );
-        sal_Int32 size = sizeof( **pT );
-        sal_Int32 dim1 = sizeof( *pT ) / size;
-        ::typelib_static_array_type_init(
-            & ::com::sun::star::uno::Array< T >::s_pType, rElementType.getTypeLibType(),
-            1, dim1 );
-    }
-    return * reinterpret_cast< const ::com::sun::star::uno::Type * >(
-        & ::com::sun::star::uno::Array< T >::s_pType );
-}
-
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType2( T * pT ) SAL_THROW(())
-{
-    if (! ::com::sun::star::uno::Array< T >::s_pType)
-    {
-        const ::com::sun::star::uno::Type & rElementType =
-            ::cppu::getTypeFavourUnsigned( **pT );
-        sal_Int32 size = sizeof( ***pT );
-        sal_Int32 dim2 = sizeof( **pT ) / size;
-        sal_Int32 dim1 = sizeof( *pT ) / dim2 / size;
-        ::typelib_static_array_type_init(
-            & ::com::sun::star::uno::Array< T >::s_pType, rElementType.getTypeLibType(),
-            2, dim1, dim2 );
-    }
-    return * reinterpret_cast< const ::com::sun::star::uno::Type * >(
-        & ::com::sun::star::uno::Array< T >::s_pType );
-}
-
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType3( T * pT ) SAL_THROW(())
-{
-    if (! ::com::sun::star::uno::Array< T >::s_pType)
-    {
-        const ::com::sun::star::uno::Type & rElementType =
-            ::cppu::getTypeFavourUnsigned( ***pT );
-        sal_Int32 size = sizeof( ****pT );
-        sal_Int32 dim3 = sizeof( ***pT ) / size;
-        sal_Int32 dim2 = sizeof( **pT ) / dim3 / size;
-        sal_Int32 dim1 = sizeof( *pT ) / (dim2 * dim3)/ size;
-        ::typelib_static_array_type_init(
-            & ::com::sun::star::uno::Array< T >::s_pType, rElementType.getTypeLibType(),
-            3, dim1, dim2, dim3 );
-    }
-    return * reinterpret_cast< const ::com::sun::star::uno::Type * >(
-        & ::com::sun::star::uno::Array< T >::s_pType );
-}
-
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType4( T * pT ) SAL_THROW(())
-{
-    if (! ::com::sun::star::uno::Array< T >::s_pType)
-    {
-        const ::com::sun::star::uno::Type & rElementType =
-            ::cppu::getTypeFavourUnsigned( ****pT );
-        sal_Int32 size = sizeof( *****pT );
-        sal_Int32 dim4 = sizeof( ****pT ) / size;
-        sal_Int32 dim3 = sizeof( ***pT ) / dim4 / size;
-        sal_Int32 dim2 = sizeof( **pT ) / (dim3 * dim4) / size;
-        sal_Int32 dim1 = sizeof( *pT ) / (dim2 * dim3 * dim4) / size;
-        ::typelib_static_array_type_init(
-            & ::com::sun::star::uno::Array< T >::s_pType, rElementType.getTypeLibType(),
-            4, dim1, dim2, dim3, dim4 );
-    }
-    return * reinterpret_cast< const ::com::sun::star::uno::Type * >(
-        & ::com::sun::star::uno::Array< T >::s_pType );
-}
-
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType5( T * pT ) SAL_THROW(())
-{
-    if (! ::com::sun::star::uno::Array< T >::s_pType)
-    {
-        const ::com::sun::star::uno::Type & rElementType =
-            ::cppu::getTypeFavourUnsigned( *****pT );
-        sal_Int32 size = sizeof( ******pT );
-        sal_Int32 dim5 = sizeof( *****pT ) / size;
-        sal_Int32 dim4 = sizeof( ****pT ) / dim5 / size;
-        sal_Int32 dim3 = sizeof( ***pT ) / (dim4 * dim5) / size;
-        sal_Int32 dim2 = sizeof( **pT ) / (dim3 * dim4 * dim5) / size;
-        sal_Int32 dim1 = sizeof( *pT ) / (dim2 * dim3 * dim4 * dim5) / size;
-        ::typelib_static_array_type_init(
-            & ::com::sun::star::uno::Array< T >::s_pType, rElementType.getTypeLibType(),
-            5, dim1, dim2, dim3, dim4, dim5 );
-    }
-    return * reinterpret_cast< const ::com::sun::star::uno::Type * >(
-        & ::com::sun::star::uno::Array< T >::s_pType );
-}
-
-template< class T >
-inline const ::com::sun::star::uno::Type & SAL_CALL getCppuArrayType6( T * pT ) SAL_THROW(())
-{
-    if (! ::com::sun::star::uno::Array< T >::s_pType)
-    {
-        const ::com::sun::star::uno::Type & rElementType =
-            ::cppu::getTypeFavourUnsigned( ******pT );
-        sal_Int32 size = sizeof( *******pT );
-        sal_Int32 dim6 = sizeof( ******pT ) / size;
-        sal_Int32 dim5 = sizeof( *****pT ) / dim6 / size;
-        sal_Int32 dim4 = sizeof( ****pT ) / (dim5 * dim6) / size;
-        sal_Int32 dim3 = sizeof( ***pT ) / (dim4 * dim5 * dim6) / size;
-        sal_Int32 dim2 = sizeof( **pT ) / (dim3 * dim4 * dim5 * dim6) / size;
-        sal_Int32 dim1 = sizeof( *pT ) / (dim2 * dim3 * dim4 * dim5 * dim6) / size;
-        ::typelib_static_array_type_init(
-            & ::com::sun::star::uno::Array< T >::s_pType, rElementType.getTypeLibType(),
-            6, dim1, dim2, dim3, dim4, dim5, dim6 );
-    }
-    return * reinterpret_cast< const ::com::sun::star::uno::Type * >(
-        & ::com::sun::star::uno::Array< T >::s_pType );
-}
-
 template< typename T >
 inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType() SAL_THROW(())
 {
diff --git a/include/typelib/typedescription.h b/include/typelib/typedescription.h
index a7b06ec..2b7314f 100644
--- a/include/typelib/typedescription.h
+++ b/include/typelib/typedescription.h
@@ -95,7 +95,7 @@ typedef struct _typelib_TypeDescription
     void *                              pReserved;
 
     /** flag to determine whether the description is complete:
-        compound and union types lack of member names, enums lack of member types and names,
+        compound types lack of member names, enums lack of member types and names,
         interfaces lack of members and table init.
         Call typelib_typedescription_complete() if false.
     */
@@ -165,42 +165,7 @@ typedef struct _typelib_StructTypeDescription
     sal_Bool * pParameterizedTypes;
 } typelib_StructTypeDescription;
 
-/** Type description of a union. The type class of this description is typelib_TypeClass_UNION.
-*/
-typedef struct _typelib_UnionTypeDescription
-{
-    /** inherits all members of typelib_TypeDescription
-    */
-    typelib_TypeDescription             aBase;
-
-    /** type of the discriminant
-    */
-    typelib_TypeDescriptionReference *  pDiscriminantTypeRef;
-
-    /** union default descriminant
-    */
-    sal_Int64                           nDefaultDiscriminant;
-    /** union default member type (may be 0)
-     */
-    typelib_TypeDescriptionReference *  pDefaultTypeRef;
-    /** number of union member types
-    */
-    sal_Int32                           nMembers;
-    /** union member discriminant values (same order as idl declaration)
-    */
-    sal_Int64 *                         pDiscriminants;
-    /** union member value types (same order as idl declaration)
-    */
-    typelib_TypeDescriptionReference ** ppTypeRefs;
-    /** union member value names (same order as idl declaration)
-    */
-    rtl_uString **                      ppMemberNames;
-    /** union value offset for data access
-    */
-    sal_Int32                           nValueOffset;
-} typelib_UnionTypeDescription;
-
-/** Type description of an array or sequence.
+/** Type description of a sequence.
 */
 typedef struct _typelib_IndirectTypeDescription
 {
@@ -208,30 +173,11 @@ typedef struct _typelib_IndirectTypeDescription
     */
     typelib_TypeDescription             aBase;
 
-    /** array, sequence: pointer to element type
+    /** pointer to element type
     */
     typelib_TypeDescriptionReference *  pType;
 } typelib_IndirectTypeDescription;
 
-/** Type description of an array.
-*/
-typedef struct _typelib_ArrayTypeDescription
-{
-    /** inherits all members of typelib_IndirectTypeDescription
-    */
-    typelib_IndirectTypeDescription     aBase;
-
-    /** number of dimensions
-    */
-    sal_Int32                           nDimensions;
-    /** number of total array elements
-    */
-    sal_Int32                           nTotalElements;
-    /** array of dimensions
-    */
-    sal_Int32 *                         pDimensions;
-} typelib_ArrayTypeDescription;
-
 /** Type description of an enum. The type class of this description is typelib_TypeClass_ENUM.
 */
 typedef struct _typelib_EnumTypeDescription
@@ -531,47 +477,10 @@ typedef struct _typelib_Parameter_Init
     sal_Bool            bOut;
 } typelib_Parameter_Init;
 
-/** Init struct of union types for typelib_typedescription_newUnion().
-*/
-typedef struct _typelib_Union_Init
-{
-    /** union member discriminant
-    */
-    sal_Int64           nDiscriminant;
-    /** union member name
-    */
-    rtl_uString *       pMemberName;
-    /** union member type
-    */
-    typelib_TypeDescriptionReference* pTypeRef;
-} typelib_Union_Init;
-
 #if defined( SAL_W32)
 #pragma pack(pop)
 #endif
 
-
-/** Creates a union type description. All discriminants are handled as int64 values.
-    The pDiscriminantTypeRef must be of type byte, short, ..., up to hyper.
-
-    @param ppRet inout union type description
-    @param pTypeName name of union type
-    @param pDiscriminantTypeRef discriminant type
-    @param nDefaultDiscriminant default discriminant
-    @param pDefaultTypeRef default value type of union
-    @param nMembers number of union members
-    @param pMembers init members
-*/
-CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newUnion(
-    typelib_TypeDescription ** ppRet,
-    rtl_uString * pTypeName,
-    typelib_TypeDescriptionReference * pDiscriminantTypeRef,
-    sal_Int64 nDefaultDiscriminant,
-    typelib_TypeDescriptionReference * pDefaultTypeRef,
-    sal_Int32 nMembers,
-    typelib_Union_Init * pMembers )
-    SAL_THROW_EXTERN_C();
-
 /** Creates an enum type description.
 
     @param ppRet inout enum type description
@@ -590,20 +499,6 @@ CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newEnum(
     sal_Int32 * pEnumValues )
     SAL_THROW_EXTERN_C();
 
-/** Creates an array type description.
-
-    @param ppRet inout enum type description
-    @param pElementTypeRef element type
-    @param nDimensions number of dimensions
-    @param pDimensions dimensions
-*/
-CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newArray(
-    typelib_TypeDescription ** ppRet,
-    typelib_TypeDescriptionReference * pElementTypeRef,
-    sal_Int32 nDimensions,
-    sal_Int32 * pDimensions )
-    SAL_THROW_EXTERN_C ();
-
 /** Creates a new type description.
 
     Since this function can only be used to create type descriptions for plain
@@ -614,7 +509,7 @@ CPPU_DLLPUBLIC void SAL_CALL typelib_typedescription_newArray(
     @param ppRet inout type description
     @param eTypeClass type class
     @param pTypeName name of type
-    @param pType sequence, array: element type;
+    @param pType sequence: element type;
                  struct, Exception: base type;
     @param nMembers number of members if struct, exception
     @param pMembers array of members if struct, exception
@@ -988,19 +883,6 @@ CPPU_DLLPUBLIC void SAL_CALL typelib_static_sequence_type_init(
     typelib_TypeDescriptionReference * pElementType )
     SAL_THROW_EXTERN_C ();
 
-/** Inits static array type reference. Thread synchronizes on typelib init mutex.
-
-    @param ppRef pointer to type reference pointer
-    @param pElementType element type of sequence
-    @param nDimensions number of dimensions
-    @param ... additional sal_Int32 parameter for each dimension
-*/
-CPPU_DLLPUBLIC void SAL_CALL typelib_static_array_type_init(
-    typelib_TypeDescriptionReference ** ppRef,
-    typelib_TypeDescriptionReference * pElementType,
-    sal_Int32 nDimensions, ... )
-    SAL_THROW_EXTERN_C ();
-
 /** Inits incomplete static compound type reference. Thread synchronizes on typelib init mutex.
 
     Since this function can only be used to create type descriptions for plain
@@ -1084,7 +966,7 @@ CPPU_DLLPUBLIC void SAL_CALL typelib_static_enum_type_init(
     sal_Int32 nDefaultValue )
     SAL_THROW_EXTERN_C();
 
-/** Completes a typedescription to be used for, e.g., marshalling values. COMPOUND, UNION,
+/** Completes a typedescription to be used for, e.g., marshalling values. COMPOUND,
     INTERFACE and ENUM type descriptions may be partly initialized (see typelib_static_...(),
     typelib_TypeDescription::bComplete). For interface type descriptions, this will also
     init index tables.
commit 9e77c2fb7cadfd477fb1b971b011d43f30781660
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Jan 31 10:15:47 2014 +0100

    Remove UNOIDL "array" and "union" vaporware remnants
    
    ...and deprecate what cannot be removed for compatibility.
    
    Change-Id: I1ea335af775b867b468b8285113631167729a92a

diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx
index 31d38be..facdcdd 100644
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx
@@ -171,9 +171,7 @@ classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_c
         case typelib_TypeClass_TYPE:
         case typelib_TypeClass_ANY:
         case typelib_TypeClass_TYPEDEF:
-        case typelib_TypeClass_UNION:
         case typelib_TypeClass_SEQUENCE:
-        case typelib_TypeClass_ARRAY:
         case typelib_TypeClass_INTERFACE:
             return 0;
         case typelib_TypeClass_STRUCT:
diff --git a/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx
index 9fb14a9..06e33de 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx
@@ -171,9 +171,7 @@ classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_c
         case typelib_TypeClass_TYPE:
         case typelib_TypeClass_ANY:
         case typelib_TypeClass_TYPEDEF:
-        case typelib_TypeClass_UNION:
         case typelib_TypeClass_SEQUENCE:
-        case typelib_TypeClass_ARRAY:
         case typelib_TypeClass_INTERFACE:
             return 0;
         case typelib_TypeClass_STRUCT:
diff --git a/bridges/source/cpp_uno/mingw_x86-64/abi.cxx b/bridges/source/cpp_uno/mingw_x86-64/abi.cxx
index 9fb14a9..06e33de 100644
--- a/bridges/source/cpp_uno/mingw_x86-64/abi.cxx
+++ b/bridges/source/cpp_uno/mingw_x86-64/abi.cxx
@@ -171,9 +171,7 @@ classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_c
         case typelib_TypeClass_TYPE:
         case typelib_TypeClass_ANY:
         case typelib_TypeClass_TYPEDEF:
-        case typelib_TypeClass_UNION:
         case typelib_TypeClass_SEQUENCE:
-        case typelib_TypeClass_ARRAY:
         case typelib_TypeClass_INTERFACE:
             return 0;
         case typelib_TypeClass_STRUCT:
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 691aa75..eccb931 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -94,7 +94,6 @@ bool isBootstrapType(OUString const & name) {
         "com.sun.star.reflection.ParamInfo",
         "com.sun.star.reflection.ParamMode",
         "com.sun.star.reflection.TypeDescriptionSearchDepth",
-        "com.sun.star.reflection.XArrayTypeDescription",
         "com.sun.star.reflection.XCompoundTypeDescription",
         "com.sun.star.reflection.XEnumTypeDescription",
         "com.sun.star.reflection.XIdlArray",
@@ -115,7 +114,6 @@ bool isBootstrapType(OUString const & name) {
         "com.sun.star.reflection.XTypeDescription",
         "com.sun.star.reflection.XTypeDescriptionEnumeration",
         "com.sun.star.reflection.XTypeDescriptionEnumerationAccess",
-        "com.sun.star.reflection.XUnionTypeDescription",
         "com.sun.star.registry.RegistryKeyType",
         "com.sun.star.registry.RegistryValueType",
         "com.sun.star.registry.XImplementationRegistration",
diff --git a/comphelper/source/container/enumerablemap.cxx b/comphelper/source/container/enumerablemap.cxx
index b314277..207680e 100644
--- a/comphelper/source/container/enumerablemap.cxx
+++ b/comphelper/source/container/enumerablemap.cxx
@@ -70,7 +70,6 @@ namespace comphelper
     using ::com::sun::star::uno::TypeClass_ANY;
     using ::com::sun::star::uno::TypeClass_EXCEPTION;
     using ::com::sun::star::uno::TypeClass_STRUCT;
-    using ::com::sun::star::uno::TypeClass_UNION;
     using ::com::sun::star::uno::TypeClass_FLOAT;
     using ::com::sun::star::uno::TypeClass_DOUBLE;
     using ::com::sun::star::uno::TypeClass_INTERFACE;
@@ -462,7 +461,6 @@ namespace comphelper
         break;
         case TypeClass_EXCEPTION:
         case TypeClass_STRUCT:
-        case TypeClass_UNION:
         {
             // values are accepted if and only if their type equals, or is derived from, our value type
 
diff --git a/comphelper/source/misc/anytostring.cxx b/comphelper/source/misc/anytostring.cxx
index 624c973..12f646c 100644
--- a/comphelper/source/misc/anytostring.cxx
+++ b/comphelper/source/misc/anytostring.cxx
@@ -297,8 +297,6 @@ void appendValue( OUStringBuffer & buf,
     case typelib_TypeClass_UNSIGNED_HYPER:
         buf.append( *static_cast< sal_Int64 const * >(val) );
         break;
-//     case typelib_TypeClass_UNION:
-//     case typelib_TypeClass_ARRAY:
 //     case typelib_TypeClass_UNKNOWN:
 //     case typelib_TypeClass_SERVICE:
 //     case typelib_TypeClass_MODULE:
diff --git a/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx b/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx
index f0706e1..b02439e 100644
--- a/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx
+++ b/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx
@@ -51,7 +51,6 @@ static bool relatesToInterface(typelib_TypeDescription * pTypeDescr)
         switch (((typelib_IndirectTypeDescription *)pTypeDescr)->pType->eTypeClass)
         {
         case typelib_TypeClass_INTERFACE:
-        case typelib_TypeClass_UNION: // might relate to interface
         case typelib_TypeClass_ANY: // might relate to interface
             return true;
         case typelib_TypeClass_SEQUENCE:
@@ -80,7 +79,6 @@ static bool relatesToInterface(typelib_TypeDescription * pTypeDescr)
             switch (pTypes[nPos]->eTypeClass)
             {
             case typelib_TypeClass_INTERFACE:
-            case typelib_TypeClass_UNION: // might relate to interface
             case typelib_TypeClass_ANY: // might relate to interface
                 return true;
 //              case typelib_TypeClass_TYPEDEF:
@@ -103,7 +101,6 @@ static bool relatesToInterface(typelib_TypeDescription * pTypeDescr)
             return relatesToInterface( (typelib_TypeDescription *)pComp->pBaseTypeDescription );
         break;
     }
-    case typelib_TypeClass_UNION: // might relate to interface
     case typelib_TypeClass_ANY: // might relate to interface
     case typelib_TypeClass_INTERFACE:
         return true;
diff --git a/cppuhelper/source/tdmgr.cxx b/cppuhelper/source/tdmgr.cxx
index df6adc6..8e614d2 100644
--- a/cppuhelper/source/tdmgr.cxx
+++ b/cppuhelper/source/tdmgr.cxx
@@ -47,7 +47,6 @@
 #include <com/sun/star/reflection/XInterfaceTypeDescription2.hpp>
 #include <com/sun/star/reflection/XCompoundTypeDescription.hpp>
 #include <com/sun/star/reflection/XStructTypeDescription.hpp>
-#include <com/sun/star/reflection/XUnionTypeDescription.hpp>
 #include "com/sun/star/uno/RuntimeException.hpp"
 
 #include "boost/scoped_array.hpp"
@@ -66,104 +65,6 @@ static typelib_TypeDescription * createCTD(
     const Reference< XTypeDescription > & xType );
 
 //==================================================================================================
-inline static sal_Int64 coerceToInt64( const Any & rVal )
-{
-    switch (rVal.getValueTypeClass())
-    {
-    case TypeClass_CHAR:
-        return *(sal_Unicode *)rVal.getValue();
-    case TypeClass_BOOLEAN:
-        return (*(sal_Bool *)rVal.getValue() ? 1 : 0);
-    case TypeClass_BYTE:
-        return *(sal_Int8 *)rVal.getValue();
-    case TypeClass_SHORT:
-        return *(sal_Int16 *)rVal.getValue();
-    case TypeClass_UNSIGNED_SHORT:
-        return *(sal_uInt16 *)rVal.getValue();
-    case TypeClass_LONG:
-        return *(sal_Int32 *)rVal.getValue();
-    case TypeClass_UNSIGNED_LONG:
-        return *(sal_uInt32 *)rVal.getValue();
-    case TypeClass_HYPER:
-        return *(sal_Int64 *)rVal.getValue();
-    case TypeClass_UNSIGNED_HYPER:
-        return *(sal_uInt64 *)rVal.getValue();
-    case TypeClass_ENUM:
-        return *(int *)rVal.getValue();
-    default:
-        OSL_ASSERT(false);
-        return 0;
-    }
-}
-//==================================================================================================
-inline static typelib_TypeDescription * createCTD(
-    const Reference< XUnionTypeDescription > & xType )
-{
-    typelib_TypeDescription * pRet = 0;
-    if (xType.is())
-    {
-        OUString aTypeName( xType->getName() );
-
-        // discriminant type
-        Reference< XTypeDescription > xDiscrTD( xType->getDiscriminantType() );
-        OUString aDiscrTypeName( xDiscrTD->getName() );
-        typelib_TypeDescriptionReference * pDiscrTypeRef = 0;
-        typelib_typedescriptionreference_new( &pDiscrTypeRef,
-                                              (typelib_TypeClass)xDiscrTD->getTypeClass(),
-                                              aDiscrTypeName.pData );
-        // default member type
-        Reference< XTypeDescription > xDefaultMemberTD( xType->getDefaultMemberType() );
-        OUString aDefMemberTypeName( xDefaultMemberTD->getName() );
-        typelib_TypeDescriptionReference * pDefMemberTypeRef = 0;
-        typelib_typedescriptionreference_new( &pDefMemberTypeRef,
-                                              (typelib_TypeClass)xDefaultMemberTD->getTypeClass(),
-                                              aDefMemberTypeName.pData );
-        // init array
-        Sequence< Any > aDiscriminants( xType->getDiscriminants() );
-        Sequence< Reference< XTypeDescription > > aMemberTypes( xType->getMemberTypes() );
-        Sequence< OUString > aMemberNames( xType->getMemberNames() );
-        sal_Int32 nMembers = aDiscriminants.getLength();
-        OSL_ASSERT( nMembers == aMemberNames.getLength() && nMembers == aMemberTypes.getLength() );
-
-        const Any * pDiscriminants                          = aDiscriminants.getConstArray();
-        const Reference< XTypeDescription > * pMemberTypes  = aMemberTypes.getConstArray();
-        const OUString * pMemberNames                       = aMemberNames.getConstArray();
-
-        typelib_Union_Init * pMembers = (typelib_Union_Init *)alloca( nMembers * sizeof(typelib_Union_Init) );
-
-        sal_Int32 nPos;
-        for ( nPos = nMembers; nPos--; )
-        {
-            typelib_Union_Init & rEntry = pMembers[nPos];
-            // member discriminant
-            rEntry.nDiscriminant = coerceToInt64( pDiscriminants[nPos] );
-            // member type
-            OUString aMemberTypeName( pMemberTypes[nPos]->getName() );
-            rEntry.pTypeRef = 0;
-            typelib_typedescriptionreference_new( &rEntry.pTypeRef,
-                                                  (typelib_TypeClass)pMemberTypes[nPos]->getTypeClass(),
-                                                  aMemberTypeName.pData );
-            // member name
-            rEntry.pMemberName = pMemberNames[nPos].pData;
-        }
-
-        typelib_typedescription_newUnion( &pRet, aTypeName.pData,
-                                          pDiscrTypeRef,
-                                          coerceToInt64( xType->getDefaultDiscriminant() ),
-                                          pDefMemberTypeRef,
-                                          nMembers, pMembers );
-
-        for ( nPos = nMembers; nPos--; )
-        {
-            typelib_typedescriptionreference_release( pMembers[nPos].pTypeRef );
-        }
-
-        typelib_typedescriptionreference_release( pDiscrTypeRef );
-        typelib_typedescriptionreference_release( pDefMemberTypeRef );
-    }
-    return pRet;
-}
-//==================================================================================================
 inline static typelib_TypeDescription * createCTD(
     const Reference< XCompoundTypeDescription > & xType )
 {
@@ -620,9 +521,6 @@ static typelib_TypeDescription * createCTD(
             break;
         }
 
-        case TypeClass_UNION:
-            pRet = createCTD( Reference< XUnionTypeDescription >::query( xType ) );
-            break;
         case TypeClass_EXCEPTION:
             pRet = createCTD( Reference< XCompoundTypeDescription >::query( xType ) );
             break;
diff --git a/extensions/source/ole/unoconversionutilities.hxx b/extensions/source/ole/unoconversionutilities.hxx
index 1307d33..546d796 100644
--- a/extensions/source/ole/unoconversionutilities.hxx
+++ b/extensions/source/ole/unoconversionutilities.hxx
@@ -963,12 +963,7 @@ void UnoConversionUtilities<T>::anyToVariant(VARIANT* pVariant, const Any& rAny)
             //TypeClass_TYPEDEF
             //TypeClass_ANY:
             //TypeClass_UNKNOWN:
-            //TypeClass_UNSIGNED_OCTET:
-            // TypeClass_UNION:
-            // TypeClass_ARRAY:
-            // TypeClass_UNSIGNED_INT:
-            // TypeClass_UNSIGNED_BYTE:
-            // TypeClass_MODULE:
+            //TypeClass_MODULE:
             throw CannotConvertException(
                       "[automation bridge]UnoConversionUtilities<T>::anyToVariant\n"
                       "There is no conversion for this UNO type to a Automation type."
diff --git a/extensions/source/propctrlr/formcomponenthandler.cxx b/extensions/source/propctrlr/formcomponenthandler.cxx
index 7260092..c6d5f31 100644
--- a/extensions/source/propctrlr/formcomponenthandler.cxx
+++ b/extensions/source/propctrlr/formcomponenthandler.cxx
@@ -2207,7 +2207,6 @@ namespace pcr
             return false;
 
         if  (   ( _rProperty.Type.getTypeClass() == TypeClass_INTERFACE )
-            ||  ( _rProperty.Type.getTypeClass() == TypeClass_ARRAY )
             ||  ( _rProperty.Type.getTypeClass() == TypeClass_UNKNOWN )
             )
             return true;
diff --git a/include/com/sun/star/uno/Sequence.h b/include/com/sun/star/uno/Sequence.h
index ff52ee3..b7e4195 100644
--- a/include/com/sun/star/uno/Sequence.h
+++ b/include/com/sun/star/uno/Sequence.h
@@ -278,8 +278,7 @@ SAL_CALL getCppuType( const ::com::sun::star::uno::Sequence< E > * )
 
 /** Gets the meta type of IDL sequence.
     This function has been introduced, because one cannot get the (templated)
-    cppu type out of C++ array types.  Array types have special
-    getCppuArrayTypeN() functions.
+    cppu type out of C++ array types.
 
     @attention
     the given element type must be the same as the template argument type!
diff --git a/include/typelib/typeclass.h b/include/typelib/typeclass.h
index 434094f..1c6b0d6 100644
--- a/include/typelib/typeclass.h
+++ b/include/typelib/typeclass.h
@@ -61,13 +61,19 @@ typedef enum _typelib_TypeClass
     typelib_TypeClass_TYPEDEF = 16,
     /** type class of struct */
     typelib_TypeClass_STRUCT = 17,
-    /** type class of union (not implemented) */
+    /** Deprecated, UNOIDL does not have a union concept.
+
+        @deprecated
+    */
     typelib_TypeClass_UNION = 18,
     /** type class of exception */
     typelib_TypeClass_EXCEPTION = 19,
     /** type class of sequence */
     typelib_TypeClass_SEQUENCE = 20,
-    /** type class of array (not implemented) */
+    /** Deprecated, UNOIDL does not have an array concept.
+
+        @deprecated
+    */
     typelib_TypeClass_ARRAY = 21,
     /** type class of interface */
     typelib_TypeClass_INTERFACE = 22,
diff --git a/odk/docs/idl/idl_chapter_refs.txt b/odk/docs/idl/idl_chapter_refs.txt
index 8569d28..c9ffe1b 100644
--- a/odk/docs/idl/idl_chapter_refs.txt
+++ b/odk/docs/idl/idl_chapter_refs.txt
@@ -3389,13 +3389,11 @@ com.sun.star.reflection.XInterfaceMemberTypeDescription
 com.sun.star.reflection.XInterfaceTypeDescription
 com.sun.star.reflection.XInterfaceMethodTypeDescription
 com.sun.star.reflection.XIndirectTypeDescription
-com.sun.star.reflection.XUnionTypeDescription
 com.sun.star.reflection.TypeDescriptionProvider
 com.sun.star.reflection.XInterfaceAttributeTypeDescription
 com.sun.star.reflection.XTypeDescription
 com.sun.star.reflection.XCompoundTypeDescription
 com.sun.star.container.XHierarchicalNameAccess
-com.sun.star.reflection.XArrayTypeDescription
 TOPIC:
 
 LINK:Documentation/DevGuide/OfficeDev/Component/Controllers#XSelectionSupplier
diff --git a/pyuno/source/module/pyuno.cxx b/pyuno/source/module/pyuno.cxx
index ece4560..4c8145b 100644
--- a/pyuno/source/module/pyuno.cxx
+++ b/pyuno/source/module/pyuno.cxx
@@ -118,10 +118,6 @@ OUString val2str( const void * pVal, typelib_TypeDescriptionReference * pTypeRef
 
         break;
     }
-    case typelib_TypeClass_UNION:
-    {
-        break;
-    }
     case typelib_TypeClass_STRUCT:
     case typelib_TypeClass_EXCEPTION:
     {
@@ -283,7 +279,6 @@ OUString val2str( const void * pVal, typelib_TypeDescriptionReference * pTypeRef
         break;
 
     case typelib_TypeClass_VOID:
-    case typelib_TypeClass_ARRAY:
     case typelib_TypeClass_UNKNOWN:
     case typelib_TypeClass_SERVICE:
     case typelib_TypeClass_MODULE:
diff --git a/pyuno/source/module/pyuno_type.cxx b/pyuno/source/module/pyuno_type.cxx
index c23d1e7..80d1fdb 100644
--- a/pyuno/source/module/pyuno_type.cxx
+++ b/pyuno/source/module/pyuno_type.cxx
@@ -81,10 +81,6 @@ const char *typeClassToString( TypeClass t )
         ret = "INTERFACE"; break;
     case com::sun::star::uno::TypeClass_TYPEDEF:
         ret = "TYPEDEF"; break;
-    case com::sun::star::uno::TypeClass_UNION:
-        ret = "UNION"; break;
-    case com::sun::star::uno::TypeClass_ARRAY:
-        ret = "ARRAY"; break;
     case com::sun::star::uno::TypeClass_SERVICE:
         ret = "SERVICE"; break;
     case com::sun::star::uno::TypeClass_MODULE:
diff --git a/ridljar/com/sun/star/uno/Union.java b/ridljar/com/sun/star/uno/Union.java
index 8daabbd..6a35d66 100644
--- a/ridljar/com/sun/star/uno/Union.java
+++ b/ridljar/com/sun/star/uno/Union.java
@@ -19,11 +19,9 @@
 package com.sun.star.uno;
 
 /**
- * The Union class is the base class for all classes generated
- * as java binding for the IDL type union.
- * <p>
- * Note: The idl type <code>union<code> is currently not fully
- * integrated into the UNO framework, so don't use it.
+ * Deprecated, UNOIDL does not have a union concept.
+ *
+ * @deprecated
  */
 public class Union {
     /**
diff --git a/solenv/gdb/libreoffice/util/uno.py b/solenv/gdb/libreoffice/util/uno.py
index b92a817..a80fdd8 100644
--- a/solenv/gdb/libreoffice/util/uno.py
+++ b/solenv/gdb/libreoffice/util/uno.py
@@ -63,14 +63,12 @@ class TypeClass(object):
     TYPEDEF = 16
     # type class of struct
     STRUCT = 17
-    # type class of union (not implemented)
-    UNION = 18
+
     # type class of exception
     EXCEPTION = 19
     # type class of sequence
     SEQUENCE = 20
-    # type class of array (not implemented)
-    ARRAY = 21
+
     # type class of interface
     INTERFACE = 22
     # type class of service (not implemented)
@@ -236,14 +234,10 @@ def make_uno_type(val):
         pass
     elif type_class == TypeClass.STRUCT:
         uno_type = StructType(val, full_val)
-    elif type_class == TypeClass.UNION:
-        raise UnsupportedType('union')
     elif type_class == TypeClass.EXCEPTION:
         uno_type = CompoundType(val, full_val)
     elif type_class == TypeClass.SEQUENCE:
         uno_type = IndirectType(val, full_val)
-    elif type_class == TypeClass.ARRAY:
-        raise UnsupportedType('array')
     elif type_class == TypeClass.INTERFACE:
         uno_type = InterfaceType(val, full_val)
     elif type_class == TypeClass.SERVICE:
diff --git a/stoc/source/corereflection/crarray.cxx b/stoc/source/corereflection/crarray.cxx
index 4bc0eb5..e329f63 100644
--- a/stoc/source/corereflection/crarray.cxx
+++ b/stoc/source/corereflection/crarray.cxx
@@ -87,7 +87,7 @@ void ArrayIdlClassImpl::realloc( Any & rArray, sal_Int32 nLen )
     throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
 {
     TypeClass eTC = rArray.getValueTypeClass();
-    if (eTC != TypeClass_SEQUENCE && eTC != TypeClass_ARRAY)
+    if (eTC != TypeClass_SEQUENCE)
     {
         throw IllegalArgumentException(
             OUString("no sequence given!"),
@@ -112,7 +112,7 @@ sal_Int32 ArrayIdlClassImpl::getLen( const Any & rArray )
     throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
 {
     TypeClass eTC = rArray.getValueTypeClass();
-    if (eTC != TypeClass_SEQUENCE && eTC != TypeClass_ARRAY)
+    if (eTC != TypeClass_SEQUENCE)
     {
         throw IllegalArgumentException(
             OUString("no sequence given!"),
@@ -126,7 +126,7 @@ Any ArrayIdlClassImpl::get( const Any & rArray, sal_Int32 nIndex )
     throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::ArrayIndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
 {
     TypeClass eTC = rArray.getValueTypeClass();
-    if (eTC != TypeClass_SEQUENCE && eTC != TypeClass_ARRAY)
+    if (eTC != TypeClass_SEQUENCE)
     {
         throw IllegalArgumentException(
             OUString("no sequence given!"),
@@ -157,7 +157,7 @@ void ArrayIdlClassImpl::set( Any & rArray, sal_Int32 nIndex, const Any & rNewVal
     throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::ArrayIndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
 {
     TypeClass eTC = rArray.getValueTypeClass();
-    if (eTC != TypeClass_SEQUENCE && eTC != TypeClass_ARRAY)
+    if (eTC != TypeClass_SEQUENCE)
     {
         throw IllegalArgumentException(
             OUString("no sequence given!"),
diff --git a/stoc/source/corereflection/crefl.cxx b/stoc/source/corereflection/crefl.cxx
index cc437d0..1ba2ed4 100644
--- a/stoc/source/corereflection/crefl.cxx
+++ b/stoc/source/corereflection/crefl.cxx
@@ -208,11 +208,9 @@ inline Reference< XIdlClass > IdlReflectionServiceImpl::constructClass(
         return new EnumIdlClassImpl( this, pTypeDescr->pTypeName, pTypeDescr->eTypeClass, pTypeDescr );
 
     case typelib_TypeClass_STRUCT:
-    case typelib_TypeClass_UNION:
     case typelib_TypeClass_EXCEPTION:
         return new CompoundIdlClassImpl( this, pTypeDescr->pTypeName, pTypeDescr->eTypeClass, pTypeDescr );
 
-    case typelib_TypeClass_ARRAY:
     case typelib_TypeClass_SEQUENCE:
         return new ArrayIdlClassImpl( this, pTypeDescr->pTypeName, pTypeDescr->eTypeClass, pTypeDescr );
 
diff --git a/stoc/source/typeconv/convert.cxx b/stoc/source/typeconv/convert.cxx
index b0c01c3..19d2353 100644
--- a/stoc/source/typeconv/convert.cxx
+++ b/stoc/source/typeconv/convert.cxx
@@ -521,9 +521,8 @@ Any SAL_CALL TypeConverter_Impl::convertTo( const Any& rVal, const Type& aDestTy
     case TypeClass_ANY:
         return rVal;
 
-    // --- to STRUCT, UNION, EXCEPTION ----------------------------------------------------------
+    // --- to STRUCT, EXCEPTION ----------------------------------------------------------
     case TypeClass_STRUCT:
-//      case TypeClass_UNION: // xxx todo
     case TypeClass_EXCEPTION:
     {
         // same types or destination type is derived source type?
@@ -700,22 +699,26 @@ Any TypeConverter_Impl::convertToSimpleType( const Any& rVal, TypeClass aDestina
     switch (aDestinationClass)
     {
         // only simple Conversion of _simple_ types
-    case TypeClass_INTERFACE:
-    case TypeClass_SERVICE:
-    case TypeClass_STRUCT:
-    case TypeClass_TYPEDEF:
-    case TypeClass_UNION:
-    case TypeClass_EXCEPTION:
-    case TypeClass_ARRAY:
-    case TypeClass_SEQUENCE:
-    case TypeClass_ENUM:
-    case TypeClass_UNKNOWN:
-    case TypeClass_MODULE:
+    case TypeClass_VOID:
+    case TypeClass_BOOLEAN:
+    case TypeClass_BYTE:
+    case TypeClass_SHORT:
+    case TypeClass_UNSIGNED_SHORT:
+    case TypeClass_LONG:
+    case TypeClass_UNSIGNED_LONG:
+    case TypeClass_HYPER:
+    case TypeClass_UNSIGNED_HYPER:
+    case TypeClass_FLOAT:
+    case TypeClass_DOUBLE:
+    case TypeClass_CHAR:
+    case TypeClass_STRING:
+    case TypeClass_ANY:
+        break;
+
+    default:
         throw IllegalArgumentException(
             OUString("destination type is not simple!"),
             Reference< XInterface >(), (sal_Int16) 1 );
-    default:
-        break;
     }
 
     Type aSourceType = rVal.getValueType();
diff --git a/stoc/test/testconv.cxx b/stoc/test/testconv.cxx
index 415d3c5..79f06ab 100644
--- a/stoc/test/testconv.cxx
+++ b/stoc/test/testconv.cxx
@@ -585,7 +585,7 @@ static sal_Int32 initBlocks( ConvBlock * pTestBlocks )
     pTestBlocks[nElems++] = ConvBlock( aVal, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 );
                                          // st,do,fl,u3,i3,u1,i1,by,bo,ch,tc,si,sa
     // ==SEQ of ANY==
-    Sequence< Any > aAnySeq( 2 ), aAnySeq2( 2 ), aAnySeq3( 2 );
+    Sequence< Any > aAnySeq( 2 ), aAnySeq2( 2 );
     Any * pAnySeq    = aAnySeq.getArray();
     pAnySeq[0]       = makeAny( aINT32Seq );
     pAnySeq[1]       = makeAny( OUString("lala") );
@@ -598,12 +598,6 @@ static sal_Int32 initBlocks( ConvBlock * pTestBlocks )
     aVal <<= aAnySeq2;
     pTestBlocks[nElems++] = ConvBlock( aVal, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 );
                                          // st,do,fl,u3,i3,u1,i1,by,bo,ch,tc,si,sa
-    pAnySeq = aAnySeq3.getArray();
-    pAnySeq[0]       <<= OUString("TypeClass_UNION");
-    pAnySeq[1]       <<= OUString("TypeClass_ENUM");
-    aVal <<= aAnySeq3;
-    pTestBlocks[nElems++] = ConvBlock( aVal, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 );
-                                         // st,do,fl,u3,i3,u1,i1,by,bo,ch,tc,si,sa
     return nElems;
 }
 
diff --git a/stoc/test/testintrosp.cxx b/stoc/test/testintrosp.cxx
index f6d0860..ef8192f 100644
--- a/stoc/test/testintrosp.cxx
+++ b/stoc/test/testintrosp.cxx
@@ -103,10 +103,8 @@ OUString AnyToString( const Any& aValue, sal_Bool bIncludeType, const Reference<
         case TypeClass_SERVICE:         aRetStr = "TYPE SERVICE";        break;
         case TypeClass_STRUCT:          aRetStr = "TYPE STRUCT";         break;
         case TypeClass_TYPEDEF:         aRetStr = "TYPE TYPEDEF";        break;
-        case TypeClass_UNION:           aRetStr = "TYPE UNION";          break;
         case TypeClass_ENUM:            aRetStr = "TYPE ENUM";           break;
         case TypeClass_EXCEPTION:       aRetStr = "TYPE EXCEPTION";      break;
-        case TypeClass_ARRAY:           aRetStr = "TYPE ARRAY";          break;
         case TypeClass_SEQUENCE:        aRetStr = "TYPE SEQUENCE";       break;
         case TypeClass_VOID:            aRetStr = "TYPE void";           break;
         case TypeClass_ANY:             aRetStr = "TYPE any";            break;
diff --git a/udkapi/com/sun/star/reflection/XArrayTypeDescription.idl b/udkapi/com/sun/star/reflection/XArrayTypeDescription.idl
index bd9f2ef..ff5673d 100644
--- a/udkapi/com/sun/star/reflection/XArrayTypeDescription.idl
+++ b/udkapi/com/sun/star/reflection/XArrayTypeDescription.idl
@@ -26,9 +26,7 @@
  module com {  module sun {  module star {  module reflection {
 
 
-/** Deprecated.  Arrays are not supported.
-    Reflects a fixed-size array type.
-    The type class of this description is TypeClass_ARRAY.
+/** Deprecated, UNOIDL does not have an array concept.
 
     @deprecated
 */
diff --git a/udkapi/com/sun/star/reflection/XUnionTypeDescription.idl b/udkapi/com/sun/star/reflection/XUnionTypeDescription.idl
index 179dfe1..32bbe98 100644
--- a/udkapi/com/sun/star/reflection/XUnionTypeDescription.idl
+++ b/udkapi/com/sun/star/reflection/XUnionTypeDescription.idl
@@ -26,10 +26,7 @@
  module com {  module sun {  module star {  module reflection {
 
 
-/** Deprecated.  Unions are not supported.
-    Reflects a union type.
-    The discriminant of a union switches between the current value types.
-    In addition, there is also a default case, having no discriminant.
+/** Deprecated, UNOIDL does not have a union concept.
 
     @deprecated
 */
diff --git a/udkapi/com/sun/star/uno/TypeClass.idl b/udkapi/com/sun/star/uno/TypeClass.idl
index 959173f..1def57d 100644
--- a/udkapi/com/sun/star/uno/TypeClass.idl
+++ b/udkapi/com/sun/star/uno/TypeClass.idl
@@ -89,7 +89,9 @@ published enum TypeClass
     /** reflecting compound types
     */
     STRUCT,
-    /** reflecting union types
+    /** Deprecated, UNOIDL does not have a union concept.
+
+        @deprecated
     */
     UNION,
     /** reflecting exception types
@@ -98,7 +100,9 @@ published enum TypeClass
     /** reflecting sequence types
     */
     SEQUENCE,
-    /** reflecting array types
+    /** Deprecated, UNOIDL does not have an array concept.
+
+        @deprecated
     */
     ARRAY,
     /** reflecting interface types
diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx
index 488fc65..4a1e333 100644
--- a/winaccessibility/source/UAccCOM/MAccessible.cxx
+++ b/winaccessibility/source/UAccCOM/MAccessible.cxx
@@ -2893,9 +2893,7 @@ void CMAccessible::get_OLECHARFromAny(Any& pAny, OLECHAR* pChar)
     case TypeClass_TYPE:
     case TypeClass_ANY:
     case TypeClass_TYPEDEF:
-    case TypeClass_UNION:
     case TypeClass_EXCEPTION:
-    case TypeClass_ARRAY:
     case TypeClass_INTERFACE:
     case TypeClass_SERVICE:
     case TypeClass_MODULE:

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list