diff options
Diffstat (limited to 'cppu/inc/com/sun/star/uno/Sequence.hxx')
-rw-r--r-- | cppu/inc/com/sun/star/uno/Sequence.hxx | 306 |
1 files changed, 0 insertions, 306 deletions
diff --git a/cppu/inc/com/sun/star/uno/Sequence.hxx b/cppu/inc/com/sun/star/uno/Sequence.hxx deleted file mode 100644 index a23fd3b48225..000000000000 --- a/cppu/inc/com/sun/star/uno/Sequence.hxx +++ /dev/null @@ -1,306 +0,0 @@ -/* -*- 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/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ -#define _COM_SUN_STAR_UNO_SEQUENCE_HXX_ - -#include "sal/config.h" - -#include <cassert> - -#include "osl/interlck.h" -#include "com/sun/star/uno/Sequence.h" -#include "typelib/typedescription.h" -#include "uno/data.h" -#include "com/sun/star/uno/genfunc.hxx" -#include "cppu/unotype.hxx" - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/// @cond INTERNAL -template< class E > -typelib_TypeDescriptionReference * Sequence< E >::s_pType = 0; -/// @endcond - -//______________________________________________________________________________ -template< class E > -inline Sequence< E >::Sequence() SAL_THROW(()) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); - ::uno_type_sequence_construct( - &_pSequence, rType.getTypeLibType(), - 0, 0, (uno_AcquireFunc)cpp_acquire ); - // no bad_alloc, because empty sequence is statically allocated in cppu -} - -//______________________________________________________________________________ -template< class E > -inline Sequence< E >::Sequence( const Sequence< E > & rSeq ) SAL_THROW(()) -{ - osl_atomic_increment( &rSeq._pSequence->nRefCount ); - _pSequence = rSeq._pSequence; -} - -//______________________________________________________________________________ -template< class E > -inline Sequence< E >::Sequence( - uno_Sequence * pSequence, __sal_NoAcquire ) SAL_THROW(()) - : _pSequence( pSequence ) -{ -} - -//______________________________________________________________________________ -template< class E > -inline Sequence< E >::Sequence( const E * pElements, sal_Int32 len ) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); -#if ! defined EXCEPTIONS_OFF - sal_Bool success = -#endif - ::uno_type_sequence_construct( - &_pSequence, rType.getTypeLibType(), - const_cast< E * >( pElements ), len, (uno_AcquireFunc)cpp_acquire ); -#if ! defined EXCEPTIONS_OFF - if (! success) - throw ::std::bad_alloc(); -#endif -} - -//______________________________________________________________________________ -template< class E > -inline Sequence< E >::Sequence( sal_Int32 len ) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); -#if ! defined EXCEPTIONS_OFF - sal_Bool success = -#endif - ::uno_type_sequence_construct( - &_pSequence, rType.getTypeLibType(), - 0, len, (uno_AcquireFunc)cpp_acquire ); -#if ! defined EXCEPTIONS_OFF - if (! success) - throw ::std::bad_alloc(); -#endif -} - -//______________________________________________________________________________ -template< class E > -inline Sequence< E >::~Sequence() SAL_THROW(()) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); - ::uno_type_destructData( - this, rType.getTypeLibType(), (uno_ReleaseFunc)cpp_release ); -} - -//______________________________________________________________________________ -template< class E > -inline Sequence< E > & Sequence< E >::operator = ( const Sequence< E > & rSeq ) SAL_THROW(()) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); - ::uno_type_sequence_assign( - &_pSequence, rSeq._pSequence, rType.getTypeLibType(), (uno_ReleaseFunc)cpp_release ); - return *this; -} - -//______________________________________________________________________________ -template< class E > -inline sal_Bool Sequence< E >::operator == ( const Sequence< E > & rSeq ) const - SAL_THROW(()) -{ - if (_pSequence == rSeq._pSequence) - return sal_True; - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); - return ::uno_type_equalData( - const_cast< Sequence< E > * >( this ), rType.getTypeLibType(), - const_cast< Sequence< E > * >( &rSeq ), rType.getTypeLibType(), - (uno_QueryInterfaceFunc)cpp_queryInterface, - (uno_ReleaseFunc)cpp_release ); -} - -//______________________________________________________________________________ -template< class E > -inline sal_Bool Sequence< E >::operator != ( const Sequence< E > & rSeq ) const - SAL_THROW(()) -{ - return (! operator == ( rSeq )); -} - -//______________________________________________________________________________ -template< class E > -inline E * Sequence< E >::getArray() -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); -#if ! defined EXCEPTIONS_OFF - sal_Bool success = -#endif - ::uno_type_sequence_reference2One( - &_pSequence, rType.getTypeLibType(), - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -#if ! defined EXCEPTIONS_OFF - if (! success) - throw ::std::bad_alloc(); -#endif - return reinterpret_cast< E * >( _pSequence->elements ); -} - -//______________________________________________________________________________ -template< class E > -inline E & Sequence< E >::operator [] ( sal_Int32 nIndex ) -{ - assert( nIndex >= 0 && nIndex < getLength() ); - return getArray()[ nIndex ]; -} - -//______________________________________________________________________________ -template< class E > -inline const E & Sequence< E >::operator [] ( sal_Int32 nIndex ) const - SAL_THROW(()) -{ - assert( nIndex >= 0 && nIndex < getLength() ); - return reinterpret_cast< const E * >( _pSequence->elements )[ nIndex ]; -} - -//______________________________________________________________________________ -template< class E > -inline void Sequence< E >::realloc( sal_Int32 nSize ) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned( this ); -#if !defined EXCEPTIONS_OFF - sal_Bool success = -#endif - ::uno_type_sequence_realloc( - &_pSequence, rType.getTypeLibType(), nSize, - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -#if !defined EXCEPTIONS_OFF - if (!success) - throw ::std::bad_alloc(); -#endif -} - -//------------------------------------------------------------------------------ -inline ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL toUnoSequence( - const ::rtl::ByteSequence & rByteSequence ) SAL_THROW(()) -{ - return ::com::sun::star::uno::Sequence< sal_Int8 >( - * reinterpret_cast< const ::com::sun::star::uno::Sequence< sal_Int8 > * >( &rByteSequence ) ); -} - -} -} -} -} - -namespace cppu { - -template< typename T > inline ::com::sun::star::uno::Type const & -getTypeFavourUnsigned( - SAL_UNUSED_PARAMETER ::com::sun::star::uno::Sequence< T > const *) -{ - if (::com::sun::star::uno::Sequence< T >::s_pType == 0) { - ::typelib_static_sequence_type_init( - &::com::sun::star::uno::Sequence< T >::s_pType, - (::cppu::getTypeFavourUnsigned( - static_cast< - typename ::com::sun::star::uno::Sequence< T >::ElementType * >( - 0)). - getTypeLibType())); - } - return detail::getTypeFromTypeDescriptionReference( - &::com::sun::star::uno::Sequence< T >::s_pType); -} - -template< typename T > inline ::com::sun::star::uno::Type const & -getTypeFavourChar( - SAL_UNUSED_PARAMETER ::com::sun::star::uno::Sequence< T > const *) -{ - //TODO On certain platforms with weak memory models, the following code can - // result in some threads observing that td points to garbage: - static typelib_TypeDescriptionReference * td = 0; - if (td == 0) { - ::typelib_static_sequence_type_init( - &td, - (::cppu::getTypeFavourChar( - static_cast< - typename ::com::sun::star::uno::Sequence< T >::ElementType * >( - 0)). - getTypeLibType())); - } - return detail::getTypeFromTypeDescriptionReference(&td); -} - -} - -// generic sequence template -template< class E > -inline const ::com::sun::star::uno::Type & -SAL_CALL getCppuType( - SAL_UNUSED_PARAMETER const ::com::sun::star::uno::Sequence< E > * ) - SAL_THROW(()) -{ - return ::cppu::getTypeFavourUnsigned( - static_cast< ::com::sun::star::uno::Sequence< E > * >(0)); -} - -// generic sequence template for given element type (e.g. C++ arrays) -template< class E > -inline const ::com::sun::star::uno::Type & -SAL_CALL getCppuSequenceType( const ::com::sun::star::uno::Type & rElementType ) - SAL_THROW(()) -{ - if (! ::com::sun::star::uno::Sequence< E >::s_pType) - { - ::typelib_static_sequence_type_init( - & ::com::sun::star::uno::Sequence< E >::s_pType, - rElementType.getTypeLibType() ); - } - return * reinterpret_cast< const ::com::sun::star::uno::Type * >( - & ::com::sun::star::uno::Sequence< E >::s_pType ); -} - -#if (defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) -static typelib_TypeDescriptionReference * s_pType_com_sun_star_uno_Sequence_Char = 0; -#endif - -// char sequence -inline const ::com::sun::star::uno::Type & -SAL_CALL getCharSequenceCppuType() SAL_THROW(()) -{ -#if !( defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) - static typelib_TypeDescriptionReference * s_pType_com_sun_star_uno_Sequence_Char = 0; -#endif - if (! s_pType_com_sun_star_uno_Sequence_Char) - { - const ::com::sun::star::uno::Type & rElementType = ::getCharCppuType(); - ::typelib_static_sequence_type_init( - & s_pType_com_sun_star_uno_Sequence_Char, - rElementType.getTypeLibType() ); - } - return * reinterpret_cast< const ::com::sun::star::uno::Type * >( - & s_pType_com_sun_star_uno_Sequence_Char ); -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |