From 2716f7dce26f16a2b677c178aa7d01cea096ae47 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Sat, 28 Jan 2012 20:57:40 +0100 Subject: replace obsolete "master" branch with README that points at new repo --- cppu/inc/com/sun/star/uno/Any.h | 386 --- cppu/inc/com/sun/star/uno/Any.hxx | 583 ----- cppu/inc/com/sun/star/uno/Reference.h | 536 ---- cppu/inc/com/sun/star/uno/Reference.hxx | 432 ---- cppu/inc/com/sun/star/uno/Sequence.h | 291 --- cppu/inc/com/sun/star/uno/Sequence.hxx | 310 --- cppu/inc/com/sun/star/uno/Type.h | 461 ---- cppu/inc/com/sun/star/uno/Type.hxx | 330 --- cppu/inc/com/sun/star/uno/genfunc.h | 72 - cppu/inc/com/sun/star/uno/genfunc.hxx | 91 - cppu/inc/cppu/Enterable.hxx | 117 - cppu/inc/cppu/EnvDcp.hxx | 78 - cppu/inc/cppu/EnvGuards.hxx | 116 - cppu/inc/cppu/FreeReference.hxx | 169 -- cppu/inc/cppu/Map.hxx | 116 - cppu/inc/cppu/Shield.hxx | 93 - cppu/inc/cppu/helper/purpenv/Environment.hxx | 49 - cppu/inc/cppu/helper/purpenv/Mapping.hxx | 71 - cppu/inc/cppu/macros.hxx | 67 - cppu/inc/cppu/unotype.hxx | 380 --- cppu/inc/makefile.mk | 48 - cppu/inc/pch/precompiled_cppu.cxx | 31 - cppu/inc/pch/precompiled_cppu.hxx | 34 - cppu/inc/typelib/typeclass.h | 107 - cppu/inc/typelib/typedescription.h | 1161 --------- cppu/inc/typelib/typedescription.hxx | 227 -- cppu/inc/typelib/uik.h | 54 - cppu/inc/uno/Enterable.h | 115 - cppu/inc/uno/EnvDcp.h | 66 - cppu/inc/uno/any2.h | 179 -- cppu/inc/uno/cuno.h | 52 - cppu/inc/uno/current_context.h | 71 - cppu/inc/uno/current_context.hxx | 130 - cppu/inc/uno/data.h | 260 -- cppu/inc/uno/dispatcher.h | 98 - cppu/inc/uno/dispatcher.hxx | 177 -- cppu/inc/uno/environment.h | 386 --- cppu/inc/uno/environment.hxx | 281 --- cppu/inc/uno/lbnames.h | 61 - cppu/inc/uno/mapping.h | 204 -- cppu/inc/uno/mapping.hxx | 357 --- cppu/inc/uno/sequence2.h | 190 -- cppu/inc/uno/threadpool.h | 192 -- cppu/prj/build.lst | 14 - cppu/prj/d.lst | 74 - cppu/qa/cppu_cppunittester_all.cxx | 146 -- cppu/qa/cppumaker/makefile.mk | 77 - cppu/qa/cppumaker/test_cppumaker.cxx | 582 ----- cppu/qa/cppumaker/types.idl | 717 ------ cppu/qa/cppumaker/version.map | 34 - cppu/qa/makefile.mk | 107 - cppu/qa/test_any.cxx | 2322 ----------------- cppu/qa/test_recursion.cxx | 70 - cppu/qa/test_reference.cxx | 168 -- cppu/qa/test_unotype.cxx | 824 ------ cppu/qa/types.idl | 63 - cppu/qa/version.map | 34 - cppu/source/AffineBridge/AffineBridge.cxx | 366 --- cppu/source/AffineBridge/makefile.mk | 44 - cppu/source/LogBridge/LogBridge.cxx | 280 -- cppu/source/LogBridge/makefile.mk | 44 - cppu/source/UnsafeBridge/UnsafeBridge.cxx | 165 -- cppu/source/UnsafeBridge/makefile.mk | 44 - cppu/source/cppu/cppu_opt.cxx | 84 - cppu/source/cppu/makefile.mk | 45 - cppu/source/helper/purpenv/Proxy.hxx | 92 - cppu/source/helper/purpenv/export.mk | 15 - .../helper/purpenv/helper_purpenv_Environment.cxx | 540 ---- .../helper/purpenv/helper_purpenv_Mapping.cxx | 236 -- .../source/helper/purpenv/helper_purpenv_Proxy.cxx | 532 ---- cppu/source/helper/purpenv/makefile.mk | 46 - cppu/source/threadpool/current.cxx | 300 --- cppu/source/threadpool/current.hxx | 51 - cppu/source/threadpool/jobqueue.cxx | 199 -- cppu/source/threadpool/jobqueue.hxx | 88 - cppu/source/threadpool/makefile.mk | 49 - cppu/source/threadpool/thread.cxx | 222 -- cppu/source/threadpool/thread.hxx | 93 - cppu/source/threadpool/threadident.cxx | 138 - cppu/source/threadpool/threadpool.cxx | 509 ---- cppu/source/threadpool/threadpool.hxx | 143 -- cppu/source/typelib/makefile.mk | 45 - cppu/source/typelib/static_types.cxx | 657 ----- cppu/source/typelib/typelib.cxx | 2665 -------------------- cppu/source/uno/EnvDcp.c | 52 - cppu/source/uno/EnvStack.cxx | 386 --- cppu/source/uno/IdentityMapping.cxx | 109 - cppu/source/uno/IdentityMapping.hxx | 42 - cppu/source/uno/any.cxx | 153 -- cppu/source/uno/assign.hxx | 638 ----- cppu/source/uno/cascade_mapping.cxx | 339 --- cppu/source/uno/cascade_mapping.hxx | 44 - cppu/source/uno/constr.hxx | 270 -- cppu/source/uno/copy.hxx | 889 ------- cppu/source/uno/data.cxx | 606 ----- cppu/source/uno/destr.hxx | 441 ---- cppu/source/uno/env_subst.cxx | 57 - cppu/source/uno/env_subst.hxx | 44 - cppu/source/uno/eq.hxx | 670 ----- cppu/source/uno/lbenv.cxx | 1195 --------- cppu/source/uno/lbmap.cxx | 696 ----- cppu/source/uno/loadmodule.cxx | 62 - cppu/source/uno/loadmodule.hxx | 54 - cppu/source/uno/makefile.mk | 55 - cppu/source/uno/prim.hxx | 203 -- cppu/source/uno/sequence.cxx | 1019 -------- cppu/util/cppu.map | 127 - cppu/util/empty.def | 6 - cppu/util/extra.mk | 71 - cppu/util/makefile.mk | 100 - cppu/util/makefile.pmk | 28 - cppu/util/purpenvhelper3MSC.map | 8 - cppu/util/purpenvhelper3MSCX.map | 8 - cppu/util/target.pmk | 57 - cppu/util/uno_purpenvhelperC52.map | 9 - cppu/util/uno_purpenvhelpergcc3.map | 8 - cppu/util/uno_purpenvhelperwntgcc.map | 8 - cppu/util/unsafe_os2.map | 7 - 118 files changed, 30614 deletions(-) delete mode 100644 cppu/inc/com/sun/star/uno/Any.h delete mode 100644 cppu/inc/com/sun/star/uno/Any.hxx delete mode 100644 cppu/inc/com/sun/star/uno/Reference.h delete mode 100644 cppu/inc/com/sun/star/uno/Reference.hxx delete mode 100644 cppu/inc/com/sun/star/uno/Sequence.h delete mode 100644 cppu/inc/com/sun/star/uno/Sequence.hxx delete mode 100644 cppu/inc/com/sun/star/uno/Type.h delete mode 100644 cppu/inc/com/sun/star/uno/Type.hxx delete mode 100644 cppu/inc/com/sun/star/uno/genfunc.h delete mode 100644 cppu/inc/com/sun/star/uno/genfunc.hxx delete mode 100644 cppu/inc/cppu/Enterable.hxx delete mode 100644 cppu/inc/cppu/EnvDcp.hxx delete mode 100644 cppu/inc/cppu/EnvGuards.hxx delete mode 100644 cppu/inc/cppu/FreeReference.hxx delete mode 100644 cppu/inc/cppu/Map.hxx delete mode 100644 cppu/inc/cppu/Shield.hxx delete mode 100644 cppu/inc/cppu/helper/purpenv/Environment.hxx delete mode 100644 cppu/inc/cppu/helper/purpenv/Mapping.hxx delete mode 100644 cppu/inc/cppu/macros.hxx delete mode 100644 cppu/inc/cppu/unotype.hxx delete mode 100644 cppu/inc/makefile.mk delete mode 100644 cppu/inc/pch/precompiled_cppu.cxx delete mode 100644 cppu/inc/pch/precompiled_cppu.hxx delete mode 100644 cppu/inc/typelib/typeclass.h delete mode 100644 cppu/inc/typelib/typedescription.h delete mode 100644 cppu/inc/typelib/typedescription.hxx delete mode 100644 cppu/inc/typelib/uik.h delete mode 100644 cppu/inc/uno/Enterable.h delete mode 100644 cppu/inc/uno/EnvDcp.h delete mode 100644 cppu/inc/uno/any2.h delete mode 100644 cppu/inc/uno/cuno.h delete mode 100644 cppu/inc/uno/current_context.h delete mode 100644 cppu/inc/uno/current_context.hxx delete mode 100644 cppu/inc/uno/data.h delete mode 100644 cppu/inc/uno/dispatcher.h delete mode 100644 cppu/inc/uno/dispatcher.hxx delete mode 100644 cppu/inc/uno/environment.h delete mode 100644 cppu/inc/uno/environment.hxx delete mode 100644 cppu/inc/uno/lbnames.h delete mode 100644 cppu/inc/uno/mapping.h delete mode 100644 cppu/inc/uno/mapping.hxx delete mode 100644 cppu/inc/uno/sequence2.h delete mode 100644 cppu/inc/uno/threadpool.h delete mode 100644 cppu/prj/build.lst delete mode 100644 cppu/prj/d.lst delete mode 100644 cppu/qa/cppu_cppunittester_all.cxx delete mode 100644 cppu/qa/cppumaker/makefile.mk delete mode 100644 cppu/qa/cppumaker/test_cppumaker.cxx delete mode 100644 cppu/qa/cppumaker/types.idl delete mode 100644 cppu/qa/cppumaker/version.map delete mode 100644 cppu/qa/makefile.mk delete mode 100644 cppu/qa/test_any.cxx delete mode 100644 cppu/qa/test_recursion.cxx delete mode 100644 cppu/qa/test_reference.cxx delete mode 100644 cppu/qa/test_unotype.cxx delete mode 100644 cppu/qa/types.idl delete mode 100644 cppu/qa/version.map delete mode 100644 cppu/source/AffineBridge/AffineBridge.cxx delete mode 100644 cppu/source/AffineBridge/makefile.mk delete mode 100644 cppu/source/LogBridge/LogBridge.cxx delete mode 100755 cppu/source/LogBridge/makefile.mk delete mode 100644 cppu/source/UnsafeBridge/UnsafeBridge.cxx delete mode 100644 cppu/source/UnsafeBridge/makefile.mk delete mode 100644 cppu/source/cppu/cppu_opt.cxx delete mode 100644 cppu/source/cppu/makefile.mk delete mode 100644 cppu/source/helper/purpenv/Proxy.hxx delete mode 100644 cppu/source/helper/purpenv/export.mk delete mode 100644 cppu/source/helper/purpenv/helper_purpenv_Environment.cxx delete mode 100644 cppu/source/helper/purpenv/helper_purpenv_Mapping.cxx delete mode 100644 cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx delete mode 100644 cppu/source/helper/purpenv/makefile.mk delete mode 100644 cppu/source/threadpool/current.cxx delete mode 100644 cppu/source/threadpool/current.hxx delete mode 100644 cppu/source/threadpool/jobqueue.cxx delete mode 100644 cppu/source/threadpool/jobqueue.hxx delete mode 100644 cppu/source/threadpool/makefile.mk delete mode 100644 cppu/source/threadpool/thread.cxx delete mode 100644 cppu/source/threadpool/thread.hxx delete mode 100644 cppu/source/threadpool/threadident.cxx delete mode 100644 cppu/source/threadpool/threadpool.cxx delete mode 100644 cppu/source/threadpool/threadpool.hxx delete mode 100644 cppu/source/typelib/makefile.mk delete mode 100644 cppu/source/typelib/static_types.cxx delete mode 100644 cppu/source/typelib/typelib.cxx delete mode 100644 cppu/source/uno/EnvDcp.c delete mode 100644 cppu/source/uno/EnvStack.cxx delete mode 100644 cppu/source/uno/IdentityMapping.cxx delete mode 100644 cppu/source/uno/IdentityMapping.hxx delete mode 100644 cppu/source/uno/any.cxx delete mode 100644 cppu/source/uno/assign.hxx delete mode 100644 cppu/source/uno/cascade_mapping.cxx delete mode 100644 cppu/source/uno/cascade_mapping.hxx delete mode 100644 cppu/source/uno/constr.hxx delete mode 100644 cppu/source/uno/copy.hxx delete mode 100644 cppu/source/uno/data.cxx delete mode 100644 cppu/source/uno/destr.hxx delete mode 100644 cppu/source/uno/env_subst.cxx delete mode 100644 cppu/source/uno/env_subst.hxx delete mode 100644 cppu/source/uno/eq.hxx delete mode 100644 cppu/source/uno/lbenv.cxx delete mode 100644 cppu/source/uno/lbmap.cxx delete mode 100644 cppu/source/uno/loadmodule.cxx delete mode 100644 cppu/source/uno/loadmodule.hxx delete mode 100644 cppu/source/uno/makefile.mk delete mode 100644 cppu/source/uno/prim.hxx delete mode 100644 cppu/source/uno/sequence.cxx delete mode 100755 cppu/util/cppu.map delete mode 100644 cppu/util/empty.def delete mode 100644 cppu/util/extra.mk delete mode 100644 cppu/util/makefile.mk delete mode 100644 cppu/util/makefile.pmk delete mode 100644 cppu/util/purpenvhelper3MSC.map delete mode 100644 cppu/util/purpenvhelper3MSCX.map delete mode 100644 cppu/util/target.pmk delete mode 100644 cppu/util/uno_purpenvhelperC52.map delete mode 100644 cppu/util/uno_purpenvhelpergcc3.map delete mode 100644 cppu/util/uno_purpenvhelperwntgcc.map delete mode 100644 cppu/util/unsafe_os2.map (limited to 'cppu') diff --git a/cppu/inc/com/sun/star/uno/Any.h b/cppu/inc/com/sun/star/uno/Any.h deleted file mode 100644 index e4d1a559b..000000000 --- a/cppu/inc/com/sun/star/uno/Any.h +++ /dev/null @@ -1,386 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_ANY_H_ -#define _COM_SUN_STAR_UNO_ANY_H_ - -#include -#include -#include -#include "cppu/unotype.hxx" -#include - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** C++ class representing an IDL any. - This class is used to transport any type defined in IDL. The class inherits from the - binary C representation of uno_Any. - You can insert a value by either using the <<= operators or the template function makeAny(). - No any can hold an any. You can extract values from an any by using the >>= operators which - return true if the any contains an assignable value (no data loss), e.g. the any contains a - short and you >>= it into a long variable. -*/ -class Any : public uno_Any -{ -public: - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( size_t nSize ) SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( size_t, void * pMem ) SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW( () ) - {} - - /** Default constructor: Any holds no value; its type is void. - */ - inline Any() SAL_THROW( () ); - - /** Templated ctor. Sets a copy of the given value. - - @param value value of the Any - */ - template - explicit inline Any( T const & value ); - /// Ctor support for C++ bool. - explicit inline Any( bool value ); - - /** Copy constructor: Sets value of the given any. - - @param rAny another any - */ - inline Any( const Any & rAny ) SAL_THROW( () ); - - /** Constructor: Sets a copy of the given data. - - @param pData_ value - @param rType type of value - */ - inline Any( const void * pData_, const Type & rType ) SAL_THROW( () ); - - /** Constructor: Sets a copy of the given data. - - @param pData_ value - @param pTypeDescr type of value - */ - inline Any( const void * pData_, typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ); - - /** Constructor: Sets a copy of the given data. - - @param pData_ value - @param pType type of value - */ - inline Any( const void * pData_, typelib_TypeDescriptionReference * pType ) SAL_THROW( () ); - - /** Destructor: Destructs any content and frees memory. - */ - inline ~Any() SAL_THROW( () ); - - /** Assignment operator: Sets the value of the given any. - - @param rAny another any (right side) - @return this any - */ - inline Any & SAL_CALL operator = ( const Any & rAny ) SAL_THROW( () ); - - /** Gets the type of the set value. - - @return a Type object of the set value - */ - inline const Type & SAL_CALL getValueType() const SAL_THROW( () ) - { return * reinterpret_cast< const Type * >( &pType ); } - /** Gets the type of the set value. - - @return the UNacquired type description reference of the set value - */ - inline typelib_TypeDescriptionReference * SAL_CALL getValueTypeRef() const SAL_THROW( () ) - { return pType; } - - /** Gets the type description of the set value. Provides ownership of the type description! - Call an explicit typelib_typedescription_release() to release afterwards. - - @param a pointer to type description pointer - */ - inline void SAL_CALL getValueTypeDescription( typelib_TypeDescription ** ppTypeDescr ) const SAL_THROW( () ) - { ::typelib_typedescriptionreference_getDescription( ppTypeDescr, pType ); } - - /** Gets the type class of the set value. - - @return the type class of the set value - */ - inline TypeClass SAL_CALL getValueTypeClass() const SAL_THROW( () ) - { return (TypeClass)pType->eTypeClass; } - - /** Gets the type name of the set value. - - @return the type name of the set value - */ - inline ::rtl::OUString SAL_CALL getValueTypeName() const SAL_THROW( () ); - - /** Tests if any contains a value. - - @return true if any has a value, false otherwise - */ - inline sal_Bool SAL_CALL hasValue() const SAL_THROW( () ) - { return (typelib_TypeClass_VOID != pType->eTypeClass); } - - /** Gets a pointer to the set value. - - @return a pointer to the set value - */ - inline const void * SAL_CALL getValue() const SAL_THROW( () ) - { return pData; } - -#if ! defined(EXCEPTIONS_OFF) - /** Provides a value of specified type, so you can easily write e.g. -
-        sal_Int32 myVal = myAny.get();
-        
- Widening conversion without data loss is taken into account. - Throws a - RuntimeException - if the specified type cannot be provided. - - @return value of specified type - @exception RuntimeException - in case the specified type cannot be provided - */ - template - inline T get() const; -#endif // ! defined(EXCEPTIONS_OFF) - - /** Sets a value. If the any already contains a value, that value will be destructed - and its memory freed. - - @param pData_ pointer to value - @param rType type of value - */ - inline void SAL_CALL setValue( const void * pData_, const Type & rType ) SAL_THROW( () ); - /** Sets a value. If the any already contains a value, that value will be destructed - and its memory freed. - - @param pData_ pointer to value - @param pType type of value - */ - inline void SAL_CALL setValue( const void * pData_, typelib_TypeDescriptionReference * pType ) SAL_THROW( () ); - /** Sets a value. If the any already contains a value, that value will be destructed - and its memory freed. - - @param pData_ pointer to value - @param pTypeDescr type description of value - */ - inline void SAL_CALL setValue( const void * pData_, typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ); - - /** Clears this any. If the any already contains a value, that value will be destructed - and its memory freed. After this has been called, the any does not contain a value. - */ - inline void SAL_CALL clear() SAL_THROW( () ); - - /** Tests whether this any is extractable to a value of given type. - Widening conversion without data loss is taken into account. - - @param rType destination type - @return true if this any is extractable to value of given type (e.g. using >>= operator) - */ - inline sal_Bool SAL_CALL isExtractableTo( const Type & rType ) const SAL_THROW( () ); - - /** Tests whether this any can provide a value of specified type. - Widening conversion without data loss is taken into account. - - @return true if this any can provide a value of specified type - (e.g. using >>= operator) - */ - template - inline bool has() const; - - /** Equality operator: compares two anys. - The values need not be of equal type, e.g. a short integer is compared to a long integer. - - @param rAny another any (right side) - @return true if both any contains equal values - */ - inline sal_Bool SAL_CALL operator == ( const Any & rAny ) const SAL_THROW( () ); - /** Unequality operator: compares two anys. - The values need not be of equal type, e.g. a short integer is compared to a long integer. - - @param rAny another any (right side) - @return true if both any contains unequal values - */ - inline sal_Bool SAL_CALL operator != ( const Any & rAny ) const SAL_THROW( () ); - -private: - // not impl: forbid use with ambiguous type (sal_Unicode, sal_uInt16) - explicit Any( sal_uInt16 ); -#if defined(_MSC_VER) - // Omitting the following private declarations leads to an internal compiler - // error on MSVC (version 1310). - // not impl: forbid use with ambiguous type (sal_Unicode, sal_uInt16) -#if ! defined(EXCEPTIONS_OFF) - template <> - sal_uInt16 get() const; -#endif // ! defined(EXCEPTIONS_OFF) - template <> - bool has() const; -#endif // defined(_MSC_VER) -}; - -/** Template function to generically construct an any from a C++ value. - - @tplparam C value type - @param value a value - @return an any -*/ -template< class C > -inline Any SAL_CALL makeAny( const C & value ) SAL_THROW( () ); - -// additionally specialized for C++ bool -template<> -inline Any SAL_CALL makeAny( bool const & value ) SAL_THROW( () ); - -class BaseReference; -class Type; - -/** Template binary <<= operator to set the value of an any. - - @tplparam C value type - @param rAny destination any (left side) - @param value source value (right side) -*/ -template< class C > -inline void SAL_CALL operator <<= ( Any & rAny, const C & value ) SAL_THROW( () ); - -// additionally for C++ bool: -inline void SAL_CALL operator <<= ( Any & rAny, bool const & value ) - SAL_THROW( () ); - -/** Template binary >>= operator to assign a value from an any. - If the any does not contain a value that can be assigned without data loss, then this - operation will fail returning false. - - @tplparam C value type - @param rAny source any (left side) - @param value destination value (right side) - @return true if assignment was possible without data loss -*/ -template< class C > -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, C & value ) SAL_THROW( () ); - -/** Template equality operator: compares set value of left side any to right side value. - The values need not be of equal type, e.g. a short integer is compared to a long integer. - This operator can be implemented as template member function, if all supported compilers - can cope with template member functions. - - @tplparam C value type - @param rAny another any (left side) - @param value a value (right side) - @return true if values are equal, false otherwise -*/ -template< class C > -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const C & value ) SAL_THROW( () ); -/** Template unequality operator: compares set value of left side any to right side value. - The values need not be of equal type, e.g. a short integer is compared to a long integer. - This operator can be implemented as template member function, if all supported compilers - can cope with template member functions. - - @tplparam C value type - @param rAny another any (left side) - @param value a value (right side) - @return true if values are unequal, false otherwise -*/ -template< class C > -inline sal_Bool SAL_CALL operator != ( const Any & rAny, const C & value ) SAL_THROW( () ); - -// additional specialized >>= and == operators -// bool -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Bool & value ) SAL_THROW( () ); -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const sal_Bool & value ) SAL_THROW( () ); -template<> -inline sal_Bool SAL_CALL operator >>= ( Any const & rAny, bool & value ) - SAL_THROW( () ); -template<> -inline sal_Bool SAL_CALL operator == ( Any const & rAny, bool const & value ) - SAL_THROW( () ); -// byte -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int8 & value ) SAL_THROW( () ); -// short -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int16 & value ) SAL_THROW( () ); -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_uInt16 & value ) SAL_THROW( () ); -// long -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int32 & value ) SAL_THROW( () ); -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_uInt32 & value ) SAL_THROW( () ); -// hyper -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int64 & value ) SAL_THROW( () ); -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_uInt64 & value ) SAL_THROW( () ); -// float -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, float & value ) SAL_THROW( () ); -// double -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, double & value ) SAL_THROW( () ); -// string -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, ::rtl::OUString & value ) SAL_THROW( () ); -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const ::rtl::OUString & value ) SAL_THROW( () ); -// type -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, Type & value ) SAL_THROW( () ); -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const Type & value ) SAL_THROW( () ); -// any -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, Any & value ) SAL_THROW( () ); -// interface -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const BaseReference & value ) SAL_THROW( () ); - -} -} -} -} - -/** Gets the meta type of IDL type any. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type any -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const ::com::sun::star::uno::Any * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::com::sun::star::uno::Any >::get(); -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/Any.hxx b/cppu/inc/com/sun/star/uno/Any.hxx deleted file mode 100644 index da95bb839..000000000 --- a/cppu/inc/com/sun/star/uno/Any.hxx +++ /dev/null @@ -1,583 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_ANY_HXX_ -#define _COM_SUN_STAR_UNO_ANY_HXX_ - -#include -#include -#include -#include -#include -#include "cppu/unotype.hxx" - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -//__________________________________________________________________________________________________ -inline Any::Any() SAL_THROW( () ) -{ - ::uno_any_construct( this, 0, 0, (uno_AcquireFunc)cpp_acquire ); -} - -//______________________________________________________________________________ -template -inline Any::Any( T const & value ) -{ - ::uno_type_any_construct( - this, const_cast(&value), - ::cppu::getTypeFavourUnsigned(&value).getTypeLibType(), - (uno_AcquireFunc) cpp_acquire ); -} -//______________________________________________________________________________ -inline Any::Any( bool value ) -{ - sal_Bool b = value; - ::uno_type_any_construct( - this, &b, ::getCppuBooleanType().getTypeLibType(), - (uno_AcquireFunc) cpp_acquire ); -} - -//__________________________________________________________________________________________________ -inline Any::Any( const Any & rAny ) SAL_THROW( () ) -{ - ::uno_type_any_construct( this, rAny.pData, rAny.pType, (uno_AcquireFunc)cpp_acquire ); -} -//__________________________________________________________________________________________________ -inline Any::Any( const void * pData_, const Type & rType ) SAL_THROW( () ) -{ - ::uno_type_any_construct( - this, const_cast< void * >( pData_ ), rType.getTypeLibType(), - (uno_AcquireFunc)cpp_acquire ); -} -//__________________________________________________________________________________________________ -inline Any::Any( const void * pData_, typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ) -{ - ::uno_any_construct( - this, const_cast< void * >( pData_ ), pTypeDescr, (uno_AcquireFunc)cpp_acquire ); -} -//__________________________________________________________________________________________________ -inline Any::Any( const void * pData_, typelib_TypeDescriptionReference * pType_ ) SAL_THROW( () ) -{ - ::uno_type_any_construct( - this, const_cast< void * >( pData_ ), pType_, (uno_AcquireFunc)cpp_acquire ); -} -//__________________________________________________________________________________________________ -inline Any::~Any() SAL_THROW( () ) -{ - ::uno_any_destruct( - this, (uno_ReleaseFunc)cpp_release ); -} -//__________________________________________________________________________________________________ -inline Any & Any::operator = ( const Any & rAny ) SAL_THROW( () ) -{ - if (this != &rAny) - { - ::uno_type_any_assign( - this, rAny.pData, rAny.pType, - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); - } - return *this; -} -//__________________________________________________________________________________________________ -inline ::rtl::OUString Any::getValueTypeName() const SAL_THROW( () ) -{ - return ::rtl::OUString( pType->pTypeName ); -} -//__________________________________________________________________________________________________ -inline void Any::setValue( const void * pData_, const Type & rType ) SAL_THROW( () ) -{ - ::uno_type_any_assign( - this, const_cast< void * >( pData_ ), rType.getTypeLibType(), - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -} -//__________________________________________________________________________________________________ -inline void Any::setValue( const void * pData_, typelib_TypeDescriptionReference * pType_ ) SAL_THROW( () ) -{ - ::uno_type_any_assign( - this, const_cast< void * >( pData_ ), pType_, - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -} -//__________________________________________________________________________________________________ -inline void Any::setValue( const void * pData_, typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ) -{ - ::uno_any_assign( - this, const_cast< void * >( pData_ ), pTypeDescr, - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -} -//__________________________________________________________________________________________________ -inline void Any::clear() SAL_THROW( () ) -{ - ::uno_any_clear( - this, (uno_ReleaseFunc)cpp_release ); -} -//__________________________________________________________________________________________________ -inline sal_Bool Any::isExtractableTo( const Type & rType ) const SAL_THROW( () ) -{ - return ::uno_type_isAssignableFromData( - rType.getTypeLibType(), pData, pType, - (uno_QueryInterfaceFunc)cpp_queryInterface, (uno_ReleaseFunc)cpp_release ); -} - -//______________________________________________________________________________ -template -inline bool Any::has() const -{ - Type const & rType = ::cppu::getTypeFavourUnsigned(static_cast< T * >(0)); - return ::uno_type_isAssignableFromData( - rType.getTypeLibType(), pData, pType, - (uno_QueryInterfaceFunc) cpp_queryInterface, - (uno_ReleaseFunc) cpp_release ); -} -#if ! defined(__SUNPRO_CC) -// not impl: forbid use with ambiguous type (sal_Unicode, sal_uInt16) -template <> -bool Any::has() const; -#endif // ! defined(__SUNPRO_CC) - -//__________________________________________________________________________________________________ -inline sal_Bool Any::operator == ( const Any & rAny ) const SAL_THROW( () ) -{ - return ::uno_type_equalData( - pData, pType, rAny.pData, rAny.pType, - (uno_QueryInterfaceFunc)cpp_queryInterface, (uno_ReleaseFunc)cpp_release ); -} -//__________________________________________________________________________________________________ -inline sal_Bool Any::operator != ( const Any & rAny ) const SAL_THROW( () ) -{ - return (! ::uno_type_equalData( - pData, pType, rAny.pData, rAny.pType, - (uno_QueryInterfaceFunc)cpp_queryInterface, (uno_ReleaseFunc)cpp_release )); -} - -//__________________________________________________________________________________________________ -template< class C > -inline Any SAL_CALL makeAny( const C & value ) SAL_THROW( () ) -{ - return Any( &value, ::cppu::getTypeFavourUnsigned(&value) ); -} - -// additionally specialized for C++ bool -//______________________________________________________________________________ -template<> -inline Any SAL_CALL makeAny( bool const & value ) SAL_THROW( () ) -{ - const sal_Bool b = value; - return Any( &b, ::getCppuBooleanType() ); -} - -//__________________________________________________________________________________________________ -template< class C > -inline void SAL_CALL operator <<= ( Any & rAny, const C & value ) SAL_THROW( () ) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned(&value); - ::uno_type_any_assign( - &rAny, const_cast< C * >( &value ), rType.getTypeLibType(), - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -} - -// additionally for C++ bool: -//______________________________________________________________________________ -inline void SAL_CALL operator <<= ( Any & rAny, bool const & value ) - SAL_THROW( () ) -{ - sal_Bool b = value; - ::uno_type_any_assign( - &rAny, &b, ::getCppuBooleanType().getTypeLibType(), - (uno_AcquireFunc) cpp_acquire, (uno_ReleaseFunc) cpp_release ); -} - -//__________________________________________________________________________________________________ -template< class C > -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, C & value ) SAL_THROW( () ) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned(&value); - return ::uno_type_assignData( - &value, rType.getTypeLibType(), - rAny.pData, rAny.pType, - (uno_QueryInterfaceFunc)cpp_queryInterface, - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); -} - -// bool -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const ::com::sun::star::uno::Any & rAny, sal_Bool & value ) SAL_THROW( () ) -{ - if (typelib_TypeClass_BOOLEAN == rAny.pType->eTypeClass) - { - value = (* reinterpret_cast< const sal_Bool * >( rAny.pData ) != sal_False); - return sal_True; - } - return sal_False; -} -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const sal_Bool & value ) SAL_THROW( () ) -{ - return (typelib_TypeClass_BOOLEAN == rAny.pType->eTypeClass && - (value != sal_False) == (* reinterpret_cast< const sal_Bool * >( rAny.pData ) != sal_False)); -} - -//______________________________________________________________________________ -template<> -inline sal_Bool SAL_CALL operator >>= ( Any const & rAny, bool & value ) - SAL_THROW( () ) -{ - if (rAny.pType->eTypeClass == typelib_TypeClass_BOOLEAN) - { - value = *reinterpret_cast< sal_Bool const * >( - rAny.pData ) != sal_False; - return true; - } - return false; -} - -//______________________________________________________________________________ -template<> -inline sal_Bool SAL_CALL operator == ( Any const & rAny, bool const & value ) - SAL_THROW( () ) -{ - return (rAny.pType->eTypeClass == typelib_TypeClass_BOOLEAN && - (value == - (*reinterpret_cast< sal_Bool const * >( rAny.pData ) - != sal_False))); -} - -// byte -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const ::com::sun::star::uno::Any & rAny, sal_Int8 & value ) SAL_THROW( () ) -{ - if (typelib_TypeClass_BYTE == rAny.pType->eTypeClass) - { - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - } - return sal_False; -} -// short -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int16 & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_uInt16 & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -// long -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int32 & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - value = * reinterpret_cast< const sal_Int32 * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_uInt32 & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - value = * reinterpret_cast< const sal_uInt32 * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -// hyper -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_Int64 & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_LONG: - value = * reinterpret_cast< const sal_Int32 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_LONG: - value = * reinterpret_cast< const sal_uInt32 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - value = * reinterpret_cast< const sal_Int64 * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, sal_uInt64 & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_LONG: - value = * reinterpret_cast< const sal_Int32 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_LONG: - value = * reinterpret_cast< const sal_uInt32 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - value = * reinterpret_cast< const sal_uInt64 * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -// float -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, float & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_FLOAT: - value = * reinterpret_cast< const float * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -// double -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, double & value ) SAL_THROW( () ) -{ - switch (rAny.pType->eTypeClass) - { - case typelib_TypeClass_BYTE: - value = * reinterpret_cast< const sal_Int8 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_SHORT: - value = * reinterpret_cast< const sal_Int16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - value = * reinterpret_cast< const sal_uInt16 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_LONG: - value = * reinterpret_cast< const sal_Int32 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_UNSIGNED_LONG: - value = * reinterpret_cast< const sal_uInt32 * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_FLOAT: - value = * reinterpret_cast< const float * >( rAny.pData ); - return sal_True; - case typelib_TypeClass_DOUBLE: - value = * reinterpret_cast< const double * >( rAny.pData ); - return sal_True; - default: - return sal_False; - } -} -// string -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, ::rtl::OUString & value ) SAL_THROW( () ) -{ - if (typelib_TypeClass_STRING == rAny.pType->eTypeClass) - { - value = * reinterpret_cast< const ::rtl::OUString * >( rAny.pData ); - return sal_True; - } - return sal_False; -} -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const ::rtl::OUString & value ) SAL_THROW( () ) -{ - return (typelib_TypeClass_STRING == rAny.pType->eTypeClass && - value.equals( * reinterpret_cast< const ::rtl::OUString * >( rAny.pData ) )); -} -// type -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, Type & value ) SAL_THROW( () ) -{ - if (typelib_TypeClass_TYPE == rAny.pType->eTypeClass) - { - value = * reinterpret_cast< const Type * >( rAny.pData ); - return sal_True; - } - return sal_False; -} -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const Type & value ) SAL_THROW( () ) -{ - return (typelib_TypeClass_TYPE == rAny.pType->eTypeClass && - value.equals( * reinterpret_cast< const Type * >( rAny.pData ) )); -} -// any -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator >>= ( const Any & rAny, Any & value ) SAL_THROW( () ) -{ - if (&rAny != &value) - { - ::uno_type_any_assign( - &value, rAny.pData, rAny.pType, - (uno_AcquireFunc)cpp_acquire, (uno_ReleaseFunc)cpp_release ); - } - return sal_True; -} -// interface -//__________________________________________________________________________________________________ -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const BaseReference & value ) SAL_THROW( () ) -{ - if (typelib_TypeClass_INTERFACE == rAny.pType->eTypeClass) - { - return reinterpret_cast< const BaseReference * >( rAny.pData )->operator == ( value ); - } - return sal_False; -} - -// operator to compare to an any. -//__________________________________________________________________________________________________ -template< class C > -inline sal_Bool SAL_CALL operator == ( const Any & rAny, const C & value ) SAL_THROW( () ) -{ - const Type & rType = ::cppu::getTypeFavourUnsigned(&value); - return ::uno_type_equalData( - rAny.pData, rAny.pType, - const_cast< C * >( &value ), rType.getTypeLibType(), - (uno_QueryInterfaceFunc)cpp_queryInterface, (uno_ReleaseFunc)cpp_release ); -} -// operator to compare to an any. may use specialized operators ==. -//__________________________________________________________________________________________________ -template< class C > -inline sal_Bool SAL_CALL operator != ( const Any & rAny, const C & value ) SAL_THROW( () ) -{ - return (! operator == ( rAny, value )); -} - -#if ! defined(EXCEPTIONS_OFF) -extern "C" rtl_uString * SAL_CALL cppu_Any_extraction_failure_msg( - uno_Any const * pAny, typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C(); - -//______________________________________________________________________________ -template -T Any::get() const -{ - T value = T(); - if (! (*this >>= value)) { - throw RuntimeException( - ::rtl::OUString( - cppu_Any_extraction_failure_msg( - this, - ::cppu::getTypeFavourUnsigned(&value).getTypeLibType() ), - SAL_NO_ACQUIRE ), - Reference() ); - } - return value; -} -// not impl: forbid use with ambiguous type (sal_Unicode, sal_uInt16) -template <> -sal_uInt16 Any::get() const; -#endif // ! defined(EXCEPTIONS_OFF) - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/Reference.h b/cppu/inc/com/sun/star/uno/Reference.h deleted file mode 100644 index 1ed01fcc7..000000000 --- a/cppu/inc/com/sun/star/uno/Reference.h +++ /dev/null @@ -1,536 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_ -#define _COM_SUN_STAR_UNO_REFERENCE_H_ - -#include - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -class RuntimeException; -class XInterface; -class Type; -class Any; - -/** Enum defining UNO_REF_NO_ACQUIRE for setting reference without acquiring a given interface. - Deprecated, please use SAL_NO_ACQUIRE. - @deprecated -*/ -enum UnoReference_NoAcquire -{ - /** This enum value can be used for creating a reference granting a given interface, - i.e. transferring ownership to it. - */ - UNO_REF_NO_ACQUIRE -}; - -/** This base class serves as a base class for all template reference classes and - has been introduced due to compiler problems with templated operators ==, =!. -*/ -class BaseReference -{ -protected: - /** the interface pointer - */ - XInterface * _pInterface; - - /** Queries given interface for type rType. - - @param pInterface interface pointer - @param rType interface type - @return interface of demanded type (may be null) - */ - inline static XInterface * SAL_CALL iquery( XInterface * pInterface, const Type & rType ) - SAL_THROW( (RuntimeException) ); -#ifndef EXCEPTIONS_OFF - /** Queries given interface for type rType. - Throws a RuntimeException if the demanded interface cannot be queried. - - @param pInterface interface pointer - @param rType interface type - @return interface of demanded type - */ - inline static XInterface * SAL_CALL iquery_throw( XInterface * pInterface, const Type & rType ) - SAL_THROW( (RuntimeException) ); -#endif - -public: - /** Gets interface pointer. This call does not acquire the interface. - - @return UNacquired interface pointer - */ - inline XInterface * SAL_CALL get() const SAL_THROW( () ) - { return _pInterface; } - - /** Checks if reference is null. - - @return true if reference acquires an interface, i.e. true if it is not null - */ - inline sal_Bool SAL_CALL is() const SAL_THROW( () ) - { return (0 != _pInterface); } - - /** Equality operator: compares two interfaces - Checks if both references are null or refer to the same object. - - @param rRef another interface - @return true if both references are null or refer to the same object, false otherwise - */ - inline sal_Bool SAL_CALL operator == ( XInterface * pInterface ) const SAL_THROW( () ); - /** Unequality operator: compares two interfaces - Checks if both references are null or refer to the same object. - - @param rRef another interface - @return false if both references are null or refer to the same object, true otherwise - */ - inline sal_Bool SAL_CALL operator != ( XInterface * pInterface ) const SAL_THROW( () ); - - /** Equality operator: compares two interfaces - Checks if both references are null or refer to the same object. - - @param rRef another reference - @return true if both references are null or refer to the same object, false otherwise - */ - inline sal_Bool SAL_CALL operator == ( const BaseReference & rRef ) const SAL_THROW( () ); - /** Unequality operator: compares two interfaces - Checks if both references are null or refer to the same object. - - @param rRef another reference - @return false if both references are null or refer to the same object, true otherwise - */ - inline sal_Bool SAL_CALL operator != ( const BaseReference & rRef ) const SAL_THROW( () ); - - /** Needed by some STL containers. - - @param rRef another reference - @return true, if this reference is less than rRef - */ - inline sal_Bool SAL_CALL operator < ( const BaseReference & rRef ) const SAL_THROW( () ); -}; - -/** Enum defining UNO_QUERY and UNO_REF_QUERY for implicit interface query. -*/ -enum UnoReference_Query -{ - /** This enum value can be used for implicit interface query. - */ - UNO_QUERY, - /** This enum value can be used for implicit interface query. - */ - UNO_REF_QUERY -}; -#ifndef EXCEPTIONS_OFF -/** Enum defining UNO_QUERY_THROW and UNO_REF_QUERY_THROW for implicit interface query. - If the demanded interface is unavailable, then a RuntimeException is thrown. -*/ -enum UnoReference_QueryThrow -{ - /** This enum value can be used for implicit interface query. - */ - UNO_QUERY_THROW, - /** This enum value can be used for implicit interface query. - */ - UNO_REF_QUERY_THROW -}; -/** Enum defining UNO_SET_THROW for throwing if attempts are made to assign a - interface - - @since UDK 3.2.8 -*/ -enum UnoReference_SetThrow -{ - UNO_SET_THROW -}; -#endif - -/** Template reference class for interface type derived from BaseReference. - A special constructor given the UNO_QUERY or UNO_REF_QUERY identifier queries interfaces - for reference type. -*/ -template< class interface_type > -class Reference : public BaseReference -{ - /** Queries given interface for type interface_type. - - @param pInterface interface pointer - @return interface of demanded type (may be null) - */ - inline static XInterface * SAL_CALL iquery( XInterface * pInterface ) - SAL_THROW( (RuntimeException) ); -#ifndef EXCEPTIONS_OFF - /** Queries given interface for type interface_type. - Throws a RuntimeException if the demanded interface cannot be queried. - - @param pInterface interface pointer - @return interface of demanded type - */ - inline static XInterface * SAL_CALL iquery_throw( XInterface * pInterface ) - SAL_THROW( (RuntimeException) ); - /** Returns the given interface if it is not , throws a RuntimeException otherwise. - - @param pInterface interface pointer - @return pInterface - */ - inline static interface_type * SAL_CALL iset_throw( interface_type * pInterface ) - SAL_THROW( (RuntimeException) ); -#endif - - /** Cast from an "interface pointer" (e.g., BaseReference::_pInterface) to a - pointer to this interface_type. - - To work around ambiguities in the case of multiple-inheritance interface - types (which inherit XInterface more than once), use reinterpret_cast - (resp. a sequence of two static_casts, to avoid warnings about - reinterpret_cast used between related classes) to switch from a pointer - to XInterface to a pointer to this derived interface_type. In - principle, this is not guaranteed to work. In practice, it seems to - work on all supported platforms. - */ - static inline interface_type * castFromXInterface(XInterface * p) { - return static_cast< interface_type * >(static_cast< void * >(p)); - } - - /** Cast from a pointer to this interface_type to an "interface pointer" - (e.g., BaseReference::_pInterface). - - To work around ambiguities in the case of multiple-inheritance interface - types (which inherit XInterface more than once), use reinterpret_cast - (resp. a sequence of two static_casts, to avoid warnings about - reinterpret_cast used between related classes) to switch from a pointer - to this derived interface_type to a pointer to XInterface. In - principle, this is not guaranteed to work. In practice, it seems to - work on all supported platforms. - */ - static inline XInterface * castToXInterface(interface_type * p) { - return static_cast< XInterface * >(static_cast< void * >(p)); - } - -public: - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( ::size_t nSize ) SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( ::size_t, void * pMem ) SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW( () ) - {} - - /** Destructor: Releases interface if set. - */ - inline ~Reference() SAL_THROW( () ); - - /** Default Constructor: Sets null reference. - */ - inline Reference() SAL_THROW( () ); - - /** Copy constructor: Copies interface reference. - - @param rRef another reference - */ - inline Reference( const Reference< interface_type > & rRef ) SAL_THROW( () ); - /** Constructor: Sets given interface pointer. - - @param pInterface an interface pointer - */ - inline Reference( interface_type * pInterface ) SAL_THROW( () ); - - /** Constructor: Sets given interface pointer without acquiring it. - - @param pInterface another reference - @param dummy SAL_NO_ACQUIRE to force obvious distinction to other constructors - */ - inline Reference( interface_type * pInterface, __sal_NoAcquire ) SAL_THROW( () ); - /** Constructor: Sets given interface pointer without acquiring it. - Deprecated, please use SAL_NO_ACQUIRE version. - - @deprecated - @param pInterface another reference - @param dummy UNO_REF_NO_ACQUIRE to force obvious distinction to other constructors - */ - inline Reference( interface_type * pInterface, UnoReference_NoAcquire ) SAL_THROW( () ); - - /** Constructor: Queries given interface for reference interface type (interface_type). - - @param rRef another reference - @param dummy UNO_QUERY or UNO_REF_QUERY to force obvious distinction to other constructors - */ - inline Reference( const BaseReference & rRef, UnoReference_Query ) SAL_THROW( (RuntimeException) ); - /** Constructor: Queries given interface for reference interface type (interface_type). - - @param pInterface an interface pointer - @param dummy UNO_QUERY to force obvious distinction to other constructors - */ - inline Reference( XInterface * pInterface, UnoReference_Query ) SAL_THROW( (RuntimeException) ); - /** Constructor: Queries given any for reference interface type (interface_type). - - @param rAny an any - @param dummy UNO_QUERY to force obvious distinction to other constructors - */ - inline Reference( const Any & rAny, UnoReference_Query ) SAL_THROW( (RuntimeException) ); -#ifndef EXCEPTIONS_OFF - /** Constructor: Queries given interface for reference interface type (interface_type). - Throws a RuntimeException if the demanded interface cannot be queried. - - @param rRef another reference - @param dummy UNO_QUERY_THROW or UNO_REF_QUERY_THROW to force obvious distinction - to other constructors - */ - inline Reference( const BaseReference & rRef, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ); - /** Constructor: Queries given interface for reference interface type (interface_type). - Throws a RuntimeException if the demanded interface cannot be queried. - - @param pInterface an interface pointer - @param dummy UNO_QUERY_THROW or UNO_REF_QUERY_THROW to force obvious distinction - to other constructors - */ - inline Reference( XInterface * pInterface, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ); - /** Constructor: Queries given any for reference interface type (interface_type). - Throws a RuntimeException if the demanded interface cannot be queried. - - @param rAny an any - @param dummy UNO_QUERY_THROW or UNO_REF_QUERY_THROW to force obvious distinction - to other constructors - */ - inline Reference( const Any & rAny, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ); - /** Constructor: assigns from the given interface of the same type. Throws a RuntimeException - if the source interface is . - - @param rRef another interface reference of the same type - @param dummy UNO_SET_THROW to distinguish from default copy constructor - - @since UDK 3.2.8 - */ - inline Reference( const Reference< interface_type > & rRef, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ); - /** Constructor: assigns from the given interface of the same type. Throws a RuntimeException - if the source interface is . - - @param pInterface an interface pointer - @param dummy UNO_SET_THROW to distinguish from default assignment constructor - - @since UDK 3.2.8 - */ - inline Reference( interface_type * pInterface, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ); -#endif - - /** Cast operator to Reference< XInterface >: Reference objects are binary compatible and - any interface must be derived from com.sun.star.uno.XInterface. - This a useful direct cast possibility. - */ - inline SAL_CALL operator const Reference< XInterface > & () const SAL_THROW( () ) - { return * reinterpret_cast< const Reference< XInterface > * >( this ); } - - /** Dereference operator: Used to call interface methods. - - @return UNacquired interface pointer - */ - inline interface_type * SAL_CALL operator -> () const SAL_THROW( () ) - { return castFromXInterface(_pInterface); } - - /** Gets interface pointer. This call does not acquire the interface. - - @return UNacquired interface pointer - */ - inline interface_type * SAL_CALL get() const SAL_THROW( () ) - { return castFromXInterface(_pInterface); } - - /** Clears reference, i.e. releases interface. Reference is null after clear() call. - */ - inline void SAL_CALL clear() SAL_THROW( () ); - - /** Sets the given interface. An interface already set will be released. - - @param rRef another reference - @return true, if non-null interface was set - */ - inline sal_Bool SAL_CALL set( const Reference< interface_type > & rRef ) SAL_THROW( () ); - /** Sets the given interface. An interface already set will be released. - - @param pInterface another interface - @return true, if non-null interface was set - */ - inline sal_Bool SAL_CALL set( interface_type * pInterface ) SAL_THROW( () ); - - /** Sets interface pointer without acquiring it. An interface already set will be released. - - @param pInterface an interface pointer - @param dummy SAL_NO_ACQUIRE to force obvious distinction to set methods - @return true, if non-null interface was set - */ - inline sal_Bool SAL_CALL set( interface_type * pInterface, __sal_NoAcquire ) SAL_THROW( () ); - /** Sets interface pointer without acquiring it. An interface already set will be released. - Deprecated, please use SAL_NO_ACQUIRE version. - - @deprecated - @param pInterface an interface pointer - @param dummy UNO_REF_NO_ACQUIRE to force obvious distinction to set methods - @return true, if non-null interface was set - */ - inline sal_Bool SAL_CALL set( interface_type * pInterface, UnoReference_NoAcquire ) SAL_THROW( () ); - - /** Queries given interface for reference interface type (interface_type) and sets it. - An interface already set will be released. - - @param pInterface an interface pointer - @param dummy UNO_QUERY or UNO_REF_QUERY to force obvious distinction to set methods - @return true, if non-null interface was set - */ - inline sal_Bool SAL_CALL set( XInterface * pInterface, UnoReference_Query ) SAL_THROW( (RuntimeException) ); - /** Queries given interface for reference interface type (interface_type) and sets it. - An interface already set will be released. - - @param rRef another reference - @param dummy UNO_QUERY or UNO_REF_QUERY to force obvious distinction to set methods - @return true, if non-null interface was set - */ - inline sal_Bool SAL_CALL set( const BaseReference & rRef, UnoReference_Query ) SAL_THROW( (RuntimeException) ); - - /** Queries given any for reference interface type (interface_type) - and sets it. An interface already set will be released. - - @param rAny - an Any containing an interface - @param dummy - UNO_QUERY or UNO_REF_QUERY to force obvious distinction - to set methods - @return - true, if non-null interface was set - */ - inline bool set( Any const & rAny, UnoReference_Query ); - -#ifndef EXCEPTIONS_OFF - /** Queries given interface for reference interface type (interface_type) and sets it. - An interface already set will be released. - Throws a RuntimeException if the demanded interface cannot be set. - - @param pInterface an interface pointer - @param dummy UNO_QUERY_THROW or UNO_REF_QUERY_THROW to force obvious distinction - to set methods - */ - inline void SAL_CALL set( XInterface * pInterface, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ); - /** Queries given interface for reference interface type (interface_type) and sets it. - An interface already set will be released. - Throws a RuntimeException if the demanded interface cannot be set. - - @param rRef another reference - @param dummy UNO_QUERY_THROW or UNO_REF_QUERY_THROW to force obvious distinction - to set methods - */ - inline void SAL_CALL set( const BaseReference & rRef, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ); - - /** Queries given any for reference interface type (interface_type) and - sets it. An interface already set will be released. - Throws a RuntimeException if the demanded interface cannot be set. - - @param rAny - an Any containing an interface - @param dummy - UNO_QUERY_THROW or UNO_REF_QUERY_THROW to force obvious - distinction to set methods - */ - inline void set( Any const & rAny, UnoReference_QueryThrow ); - /** sets the given interface - An interface already set will be released. - Throws a RuntimeException if the source interface is . - - @param pInterface an interface pointer - @param dummy UNO_SET_THROW to force obvious distinction to other set methods - - @since UDK 3.2.8 - */ - inline void SAL_CALL set( interface_type * pInterface, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ); - /** sets the given interface - An interface already set will be released. - Throws a RuntimeException if the source interface is . - - @param rRef an interface reference - @param dummy UNO_SET_THROW to force obvious distinction to other set methods - - @since UDK 3.2.8 - */ - inline void SAL_CALL set( const Reference< interface_type > & rRef, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ); - -#endif - - /** Assignment operator: Acquires given interface pointer and sets reference. - An interface already set will be released. - - @param pInterface an interface pointer - @return this reference - */ - inline Reference< interface_type > & SAL_CALL operator = ( interface_type * pInterface ) SAL_THROW( () ); - /** Assignment operator: Acquires given interface reference and sets reference. - An interface already set will be released. - - @param rRef an interface reference - @return this reference - */ - inline Reference< interface_type > & SAL_CALL operator = ( const Reference< interface_type > & rRef ) SAL_THROW( () ); - - /** Queries given interface reference for type interface_type. - - @param rRef interface reference - @return interface reference of demanded type (may be null) - */ - inline static Reference< interface_type > SAL_CALL query( const BaseReference & rRef ) SAL_THROW( (RuntimeException) ); - /** Queries given interface for type interface_type. - - @param pInterface interface pointer - @return interface reference of demanded type (may be null) - */ - inline static Reference< interface_type > SAL_CALL query( XInterface * pInterface ) SAL_THROW( (RuntimeException) ); -}; - -/** @internal - Enables boost::mem_fn and boost::bind to recognize Reference. -*/ -template -inline T * get_pointer( Reference const& r ) -{ - return r.get(); -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/Reference.hxx b/cppu/inc/com/sun/star/uno/Reference.hxx deleted file mode 100644 index d2a16a149..000000000 --- a/cppu/inc/com/sun/star/uno/Reference.hxx +++ /dev/null @@ -1,432 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_ -#define _COM_SUN_STAR_UNO_REFERENCE_HXX_ - -#include -#include -#include -#include - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -//__________________________________________________________________________________________________ -inline XInterface * BaseReference::iquery( - XInterface * pInterface, const Type & rType ) - SAL_THROW( (RuntimeException) ) -{ - if (pInterface) - { - Any aRet( pInterface->queryInterface( rType ) ); - if (typelib_TypeClass_INTERFACE == aRet.pType->eTypeClass) - { - XInterface * pRet = static_cast< XInterface * >( aRet.pReserved ); - aRet.pReserved = 0; - return pRet; - } - } - return 0; -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline XInterface * Reference< interface_type >::iquery( - XInterface * pInterface ) SAL_THROW( (RuntimeException) ) -{ - return BaseReference::iquery(pInterface, interface_type::static_type()); -} -#ifndef EXCEPTIONS_OFF -extern "C" rtl_uString * SAL_CALL cppu_unsatisfied_iquery_msg( - typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C(); -extern "C" rtl_uString * SAL_CALL cppu_unsatisfied_iset_msg( - typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C(); -//__________________________________________________________________________________________________ -inline XInterface * BaseReference::iquery_throw( - XInterface * pInterface, const Type & rType ) - SAL_THROW( (RuntimeException) ) -{ - XInterface * pQueried = iquery( pInterface, rType ); - if (pQueried) - return pQueried; - throw RuntimeException( - ::rtl::OUString( cppu_unsatisfied_iquery_msg( rType.getTypeLibType() ), SAL_NO_ACQUIRE ), - Reference< XInterface >( pInterface ) ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline XInterface * Reference< interface_type >::iquery_throw( - XInterface * pInterface ) SAL_THROW( (RuntimeException) ) -{ - return BaseReference::iquery_throw( - pInterface, interface_type::static_type()); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline interface_type * Reference< interface_type >::iset_throw( - interface_type * pInterface ) SAL_THROW( (RuntimeException) ) -{ - if (pInterface) - { - pInterface->acquire(); - return pInterface; - } - throw RuntimeException( - ::rtl::OUString( cppu_unsatisfied_iset_msg( interface_type::static_type().getTypeLibType() ), SAL_NO_ACQUIRE ), - NULL ); -} -#endif - -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::~Reference() SAL_THROW( () ) -{ - if (_pInterface) - _pInterface->release(); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference() SAL_THROW( () ) -{ - _pInterface = 0; -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( const Reference< interface_type > & rRef ) SAL_THROW( () ) -{ - _pInterface = rRef._pInterface; - if (_pInterface) - _pInterface->acquire(); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( interface_type * pInterface ) SAL_THROW( () ) -{ - _pInterface = castToXInterface(pInterface); - if (_pInterface) - _pInterface->acquire(); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( interface_type * pInterface, __sal_NoAcquire ) SAL_THROW( () ) -{ - _pInterface = castToXInterface(pInterface); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( interface_type * pInterface, UnoReference_NoAcquire ) SAL_THROW( () ) -{ - _pInterface = castToXInterface(pInterface); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( const BaseReference & rRef, UnoReference_Query ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iquery( rRef.get() ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( XInterface * pInterface, UnoReference_Query ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iquery( pInterface ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( const Any & rAny, UnoReference_Query ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = (typelib_TypeClass_INTERFACE == rAny.pType->eTypeClass - ? iquery( static_cast< XInterface * >( rAny.pReserved ) ) : 0); -} -#ifndef EXCEPTIONS_OFF -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( const BaseReference & rRef, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iquery_throw( rRef.get() ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( XInterface * pInterface, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iquery_throw( pInterface ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( const Any & rAny, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iquery_throw( typelib_TypeClass_INTERFACE == rAny.pType->eTypeClass - ? static_cast< XInterface * >( rAny.pReserved ) : 0 ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( const Reference< interface_type > & rRef, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iset_throw( rRef.get() ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type >::Reference( interface_type * pInterface, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ) -{ - _pInterface = iset_throw( pInterface ); -} -#endif - -//__________________________________________________________________________________________________ -template< class interface_type > -inline void Reference< interface_type >::clear() SAL_THROW( () ) -{ - if (_pInterface) - { - XInterface * const pOld = _pInterface; - _pInterface = 0; - pOld->release(); - } -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline sal_Bool Reference< interface_type >::set( - interface_type * pInterface ) SAL_THROW( () ) -{ - if (pInterface) - castToXInterface(pInterface)->acquire(); - XInterface * const pOld = _pInterface; - _pInterface = castToXInterface(pInterface); - if (pOld) - pOld->release(); - return (0 != pInterface); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline sal_Bool Reference< interface_type >::set( - interface_type * pInterface, __sal_NoAcquire ) SAL_THROW( () ) -{ - XInterface * const pOld = _pInterface; - _pInterface = castToXInterface(pInterface); - if (pOld) - pOld->release(); - return (0 != pInterface); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline sal_Bool Reference< interface_type >::set( - interface_type * pInterface, UnoReference_NoAcquire ) SAL_THROW( () ) -{ - return set( pInterface, SAL_NO_ACQUIRE ); -} - -//__________________________________________________________________________________________________ -template< class interface_type > -inline sal_Bool Reference< interface_type >::set( - const Reference< interface_type > & rRef ) SAL_THROW( () ) -{ - return set( castFromXInterface( rRef._pInterface ) ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline sal_Bool Reference< interface_type >::set( - XInterface * pInterface, UnoReference_Query ) SAL_THROW( (RuntimeException) ) -{ - return set( castFromXInterface(iquery( pInterface )), SAL_NO_ACQUIRE ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline sal_Bool Reference< interface_type >::set( - const BaseReference & rRef, UnoReference_Query ) SAL_THROW( (RuntimeException) ) -{ - return set( castFromXInterface(iquery( rRef.get() )), SAL_NO_ACQUIRE ); -} - -//______________________________________________________________________________ -template< class interface_type > -inline bool Reference< interface_type >::set( - Any const & rAny, UnoReference_Query ) -{ - return set( - castFromXInterface( - iquery( - rAny.pType->eTypeClass == typelib_TypeClass_INTERFACE - ? static_cast< XInterface * >( rAny.pReserved ) : 0 )), - SAL_NO_ACQUIRE ); -} - -#ifndef EXCEPTIONS_OFF -//__________________________________________________________________________________________________ -template< class interface_type > -inline void Reference< interface_type >::set( - XInterface * pInterface, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ) -{ - set( castFromXInterface(iquery_throw( pInterface )), SAL_NO_ACQUIRE ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline void Reference< interface_type >::set( - const BaseReference & rRef, UnoReference_QueryThrow ) SAL_THROW( (RuntimeException) ) -{ - set( castFromXInterface(iquery_throw( rRef.get() )), SAL_NO_ACQUIRE ); -} - -//______________________________________________________________________________ -template< class interface_type > -inline void Reference< interface_type >::set( - Any const & rAny, UnoReference_QueryThrow ) -{ - set( castFromXInterface( - iquery_throw( - rAny.pType->eTypeClass == typelib_TypeClass_INTERFACE - ? static_cast< XInterface * >( rAny.pReserved ) : 0 )), - SAL_NO_ACQUIRE ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline void Reference< interface_type >::set( - interface_type * pInterface, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ) -{ - set( iset_throw( pInterface ), SAL_NO_ACQUIRE ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline void Reference< interface_type >::set( - const Reference< interface_type > & rRef, UnoReference_SetThrow ) SAL_THROW( (RuntimeException) ) -{ - set( rRef.get(), UNO_SET_THROW ); -} - -#endif - -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type > & Reference< interface_type >::operator = ( - interface_type * pInterface ) SAL_THROW( () ) -{ - set( pInterface ); - return *this; -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type > & Reference< interface_type >::operator = ( - const Reference< interface_type > & rRef ) SAL_THROW( () ) -{ - set( castFromXInterface( rRef._pInterface ) ); - return *this; -} - -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type > Reference< interface_type >::query( - const BaseReference & rRef ) SAL_THROW( (RuntimeException) ) -{ - return Reference< interface_type >( - castFromXInterface(iquery( rRef.get() )), SAL_NO_ACQUIRE ); -} -//__________________________________________________________________________________________________ -template< class interface_type > -inline Reference< interface_type > Reference< interface_type >::query( - XInterface * pInterface ) SAL_THROW( (RuntimeException) ) -{ - return Reference< interface_type >( - castFromXInterface(iquery( pInterface )), SAL_NO_ACQUIRE ); -} - -//################################################################################################## - -//__________________________________________________________________________________________________ -inline sal_Bool BaseReference::operator == ( XInterface * pInterface ) const SAL_THROW( () ) -{ - if (_pInterface == pInterface) - return sal_True; -#ifndef EXCEPTIONS_OFF - try - { -#endif - // only the query to XInterface must return the same pointer if they belong to same objects - Reference< XInterface > x1( _pInterface, UNO_QUERY ); - Reference< XInterface > x2( pInterface, UNO_QUERY ); - return (x1._pInterface == x2._pInterface); -#ifndef EXCEPTIONS_OFF - } - catch (RuntimeException &) - { - return sal_False; - } -#endif -} - -//______________________________________________________________________________ -inline sal_Bool BaseReference::operator < ( - const BaseReference & rRef ) const SAL_THROW( () ) -{ - if (_pInterface == rRef._pInterface) - return sal_False; -#if ! defined EXCEPTIONS_OFF - try - { -#endif - // only the query to XInterface must return the same pointer: - Reference< XInterface > x1( _pInterface, UNO_QUERY ); - Reference< XInterface > x2( rRef, UNO_QUERY ); - return (x1._pInterface < x2._pInterface); -#if ! defined EXCEPTIONS_OFF - } - catch (RuntimeException &) - { - return sal_False; - } -#endif -} - -//__________________________________________________________________________________________________ -inline sal_Bool BaseReference::operator != ( XInterface * pInterface ) const SAL_THROW( () ) -{ - return (! operator == ( pInterface )); -} -//__________________________________________________________________________________________________ -inline sal_Bool BaseReference::operator == ( const BaseReference & rRef ) const SAL_THROW( () ) -{ - return operator == ( rRef._pInterface ); -} -//__________________________________________________________________________________________________ -inline sal_Bool BaseReference::operator != ( const BaseReference & rRef ) const SAL_THROW( () ) -{ - return (! operator == ( rRef._pInterface )); -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/Sequence.h b/cppu/inc/com/sun/star/uno/Sequence.h deleted file mode 100644 index 6bf6fbe1b..000000000 --- a/cppu/inc/com/sun/star/uno/Sequence.h +++ /dev/null @@ -1,291 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_SEQUENCE_H_ -#define _COM_SUN_STAR_UNO_SEQUENCE_H_ - -#include "typelib/typedescription.h" -#include "uno/sequence2.h" -#include "com/sun/star/uno/Type.h" -#include "rtl/alloc.h" - -#if ! defined EXCEPTIONS_OFF -#include -#endif - - -namespace rtl -{ -class ByteSequence; -} - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** Template C++ class representing an IDL sequence. Template argument is the - sequence element type. C++ Sequences are reference counted and shared, - so the sequence keeps a handle to its data. To keep value semantics, - copies are only generated if the sequence is to be modified (new handle). - - @tplparam E element type of sequence -*/ -template< class E > -class Sequence -{ - /** sequence handle - @internal - */ - uno_Sequence * _pSequence; - -public: - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( ::size_t nSize ) - SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) - SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( ::size_t, void * pMem ) - SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) - SAL_THROW( () ) - {} - - /** Static pointer to typelib type of sequence. - Don't use directly, call getCppuType(). - @internal - */ - static typelib_TypeDescriptionReference * s_pType; - - /** typedefs the element type of the sequence - */ - typedef E ElementType; - - /** Default constructor: Creates an empty sequence. - */ - inline Sequence() SAL_THROW( () ); - - /** Copy constructor: Creates a copy of given sequence. - - @param rSeq another sequence of same type - */ - inline Sequence( const Sequence< E > & rSeq ) SAL_THROW( () ); - - /** Constructor: Takes over ownership of given sequence. - - @param pSequence a sequence - @param dummy SAL_NO_ACQUIRE to force obvious distinction to other - constructors - */ - inline Sequence( uno_Sequence * pSequence, __sal_NoAcquire ) - SAL_THROW( () ); - - /** Constructor: Creates a copy of given elements. - - @param pElement an array of elements - @param len length of array - */ - inline Sequence( const E * pElements, sal_Int32 len ); - - /** Constructor: Creates a default constructed sequence of given length. - - @param len initial sequence length - */ - inline explicit Sequence( sal_Int32 len ); - - /** Destructor: Releases sequence handle. Last handle will destruct - elements and free memory. - */ - inline ~Sequence() SAL_THROW( () ); - - /** Assignment operator: Acquires given sequence handle and releases - previously set handle. - - @param rSeq another sequence of same type - @return this sequence - */ - inline Sequence< E > & SAL_CALL operator = ( const Sequence< E > & rSeq ) - SAL_THROW( () ); - - /** Gets length of the sequence. - - @return length of sequence - */ - inline sal_Int32 SAL_CALL getLength() const SAL_THROW( () ) - { return _pSequence->nElements; } - - /** Tests whether the sequence has elements, i.e. elements count is - greater than zero. - - @return true, if elements count is greater than zero - */ - inline sal_Bool SAL_CALL hasElements() const SAL_THROW( () ) - { return (_pSequence->nElements > 0); } - - /** Gets a pointer to elements array for reading. - If the sequence has a length of 0, then the returned pointer is - undefined. - - @return pointer to elements array - */ - inline const E * SAL_CALL getConstArray() const SAL_THROW( () ) - { return reinterpret_cast< const E * >( _pSequence->elements ); } - - /** Gets a pointer to elements array for reading and writing. - In general if the sequence has a handle acquired by other sequences - (reference count > 1), then a new sequence is created copy constructing - all elements to keep value semantics! - If the sequence has a length of 0, then the returned pointer is - undefined. - - @return pointer to elements array - */ - inline E * SAL_CALL getArray(); - - /** Non-const index operator: Obtains a reference to element indexed at - given position. - The implementation does not check for array bounds! - In general if the sequence has a handle acquired by other sequences - (reference count > 1), then a new sequence is created copy constructing - all elements to keep value semantics! - - @param nIndex index - @return non-const C++ reference to element - */ - inline E & SAL_CALL operator [] ( sal_Int32 nIndex ); - - /** Const index operator: Obtains a reference to element indexed at - given position. The implementation does not check for array bounds! - - @param nIndex index - @return const C++ reference to element - */ - inline const E & SAL_CALL operator [] ( sal_Int32 nIndex ) const - SAL_THROW( () ); - - /** Equality operator: Compares two sequences. - - @param rSeq another sequence of same type (right side) - @return true if both sequences are equal, false otherwise - */ - inline sal_Bool SAL_CALL operator == ( const Sequence< E > & rSeq ) const - SAL_THROW( () ); - - /** Unequality operator: Compares two sequences. - - @param rSeq another sequence of same type (right side) - @return false if both sequences are equal, true otherwise - */ - inline sal_Bool SAL_CALL operator != ( const Sequence< E > & rSeq ) const - SAL_THROW( () ); - - /** Reallocates sequence to new length. - If the new length is smaller than the former, then upper elements will - be destructed (and their memory freed). If the new length is greater - than the former, then upper (new) elements are default constructed. - If the sequence has a handle acquired by other sequences - (reference count > 1), then the remaining elements are copy constructed - to a new sequence handle to keep value semantics! - - @param nSize new size of sequence - */ - inline void SAL_CALL realloc( sal_Int32 nSize ); - - /** Provides UNacquired sequence handle. - - @return UNacquired sequence handle - */ - inline uno_Sequence * SAL_CALL get() const SAL_THROW( () ) - { return _pSequence; } -}; - -/** Creates a UNO byte sequence from a SAL byte sequence. - - @param rByteSequence a byte sequence - @return a UNO byte sequence -*/ -inline ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL toUnoSequence( - const ::rtl::ByteSequence & rByteSequence ) SAL_THROW( () ); - -} -} -} -} - -/** Gets the meta type of IDL sequence. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @tplparam E element type of sequence - @param dummy typed pointer for function signature - @return type of IDL sequence -*/ -template< class E > -inline const ::com::sun::star::uno::Type & -SAL_CALL getCppuType( const ::com::sun::star::uno::Sequence< E > * ) - SAL_THROW( () ); - -/** 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. - - @attention - the given element type must be the same as the template argument type! - @tplparam E element type of sequence - @param rElementType element type of sequence - @return type of IDL sequence -*/ -template< class E > -inline const ::com::sun::star::uno::Type & -SAL_CALL getCppuSequenceType( const ::com::sun::star::uno::Type & rElementType ) - SAL_THROW( () ); - -/** Gets the meta type of IDL sequence< char >. - This function has been introduced due to ambiguities with unsigned short. - - @param dummy typed pointer for function signature - @return type of IDL sequence< char > -*/ -inline const ::com::sun::star::uno::Type & -SAL_CALL getCharSequenceCppuType() SAL_THROW( () ); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 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 ca94d0acb..000000000 --- a/cppu/inc/com/sun/star/uno/Sequence.hxx +++ /dev/null @@ -1,310 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ -#define _COM_SUN_STAR_UNO_SEQUENCE_HXX_ - -#include "osl/diagnose.h" -#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 -{ - -//______________________________________________________________________________ -template< class E > -typelib_TypeDescriptionReference * Sequence< E >::s_pType = 0; - -//______________________________________________________________________________ -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_incrementInterlockedCount( &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 ) -{ - OSL_ENSURE( - nIndex >= 0 && nIndex < getLength(), - "### illegal index of sequence!" ); - return getArray()[ nIndex ]; -} - -//______________________________________________________________________________ -template< class E > -inline const E & Sequence< E >::operator [] ( sal_Int32 nIndex ) const - SAL_THROW( () ) -{ - OSL_ENSURE( - nIndex >= 0 && nIndex < getLength(), - "### illegal index of sequence!" ); - 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(::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(::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( 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: */ diff --git a/cppu/inc/com/sun/star/uno/Type.h b/cppu/inc/com/sun/star/uno/Type.h deleted file mode 100644 index 56cf94aed..000000000 --- a/cppu/inc/com/sun/star/uno/Type.h +++ /dev/null @@ -1,461 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_TYPE_H_ -#define _COM_SUN_STAR_UNO_TYPE_H_ - -#include -#ifndef _COM_SUN_STAR_UNO_TYPECLASS_HDL_ -#include -#endif -#include -#include -#include - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** Enum defining UNO_TYPE_NO_ACQUIRE for type description reference transfer. -*/ -enum UnoType_NoAcquire -{ - /** This enum value can be used for creating a Type object granting a given type description - reference, i.e. transferring ownership to it. - */ - UNO_TYPE_NO_ACQUIRE -}; - -/** C++ class representing an IDL meta type. This class is used to represent a a type, - i.e. a type name and its type class. - Internally the type holds a C type description reference of the runtime. - You can obtain a full type description of a type by calling member function getDescription(). - - @see typelib_TypeDescriptionReference -*/ -class Type -{ - /** the C typelib reference pointer - @internal - */ - typelib_TypeDescriptionReference * _pType; - -public: - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( size_t nSize ) SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( size_t, void * pMem ) SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW( () ) - {} - - /** Default Constructor: Type is set to void. - */ - inline Type() SAL_THROW( () ); - - /** Constructor: Type is constructed by given name and type class. - - @param eTypeClass type class of type - @param rTypeName name of type - */ - inline Type( TypeClass eTypeClass, const ::rtl::OUString & rTypeName ) SAL_THROW( () ); - - /** Constructor: Type is constructed by given name and type class. - - @param eTypeClass type class of type - @param pTypeName name of type - */ - inline Type( TypeClass eTypeClass, const sal_Char * pTypeName ) SAL_THROW( () ); - - /** Constructor: Type is (copy) constructed by given C type description reference. - - @param pType C type description reference - */ - inline Type( typelib_TypeDescriptionReference * pType ) SAL_THROW( () ); - - /** Constructor: Type is (copy) constructed by given C type description reference - without acquiring it. - - @param pType C type description reference - @param dummy UNO_TYPE_NO_ACQUIRE to force obvious distinction to other constructors - */ - inline Type( typelib_TypeDescriptionReference * pType, UnoType_NoAcquire ) SAL_THROW( () ); - /** Constructor: Type is (copy) constructed by given C type description reference - without acquiring it. - - @param pType C type description reference - @param dummy SAL_NO_ACQUIRE to force obvious distinction to other constructors - */ - inline Type( typelib_TypeDescriptionReference * pType, __sal_NoAcquire ) SAL_THROW( () ); - - /** Copy constructor: Type is copy constructed by given type. - - @param rType another type - */ - inline Type( const Type & rType ) SAL_THROW( () ); - - /** Destructor: Releases acquired C type description reference. - */ - inline ~Type() SAL_THROW( () ) - { ::typelib_typedescriptionreference_release( _pType ); } - - /** Assignment operator: Acquires right side type and releases previously set type. - - @param rType another type (right side) - @return this type - */ - inline Type & SAL_CALL operator = ( const Type & rType ) SAL_THROW( () ); - - /** Gets the type class of set type. - - @return type class of set type - */ - inline TypeClass SAL_CALL getTypeClass() const SAL_THROW( () ) - { return (TypeClass)_pType->eTypeClass; } - - /** Gets the name of the set type. - - @return name of the set type - */ - inline ::rtl::OUString SAL_CALL getTypeName() const SAL_THROW( () ); - - /** Obtains a full type description of set type. - - @param ppDescr [inout] type description - */ - inline void SAL_CALL getDescription( typelib_TypeDescription ** ppDescr ) const SAL_THROW( () ) - { ::typelib_typedescriptionreference_getDescription( ppDescr, _pType ); } - - /** Gets the C typelib type description reference pointer. Does not acquire the reference! - - @return UNacquired type description reference - */ - inline typelib_TypeDescriptionReference * SAL_CALL getTypeLibType() const SAL_THROW( () ) - { return _pType; } - - /** Tests if values of this reflected type can be assigned by values of given type. - This includes widening conversion (e.g., long assignable from short), as long as there - is no data loss. - - @param rType another type - @return true if values of this type can be assigned from values of given type, - false otherwise - */ - inline sal_Bool SAL_CALL isAssignableFrom( const Type & rType ) const SAL_THROW( () ) - { return ::typelib_typedescriptionreference_isAssignableFrom( _pType, rType._pType ); } - - /** Compares two types. - - @param rType another type - @return true if both types refer the same type, false otherwise - */ - inline sal_Bool SAL_CALL equals( const Type & rType ) const SAL_THROW( () ) - { return ::typelib_typedescriptionreference_equals( _pType, rType._pType ); } - /** Equality operator: Compares two types. - - @param rType another type - @return true if both types refer the same type, false otherwise - */ - inline sal_Bool SAL_CALL operator == ( const Type & rType ) const SAL_THROW( () ) - { return ::typelib_typedescriptionreference_equals( _pType, rType._pType ); } - /** Unequality operator: Compares two types. - - @param rType another type - @return false if both types refer the same type, true otherwise - */ - inline sal_Bool SAL_CALL operator != ( const Type & rType ) const SAL_THROW( () ) - { return (! ::typelib_typedescriptionreference_equals( _pType, rType._pType )); } -}; - -/** Helper class to specify a type pointer for idl arrays. -*/ -template< class T > -class Array -{ -public: - static typelib_TypeDescriptionReference * s_pType; -}; - -} -} -} -} - -/** Gets the meta type of IDL type "type". - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type "type" -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const ::com::sun::star::uno::Type * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type void. - @return type of IDL type void -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuVoidType() SAL_THROW( () ); -/** Gets the meta type of IDL type void. - - @return type of IDL type void -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getVoidCppuType() SAL_THROW( () ); - -/** Gets the meta type of IDL type boolean. - - @return type of IDL type boolean -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuBooleanType() SAL_THROW( () ); -/** Gets the meta type of IDL type boolean. - - @return type of IDL type boolean -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getBooleanCppuType() SAL_THROW( () ); -/** Gets the meta type of IDL type boolean. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type boolean -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Bool * ) SAL_THROW( () ); -/** Gets the meta type of IDL type boolean. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type boolean -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( - bool const * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type char. - - @return type of IDL type char -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCharCppuType() SAL_THROW( () ); -/** Gets the meta type of IDL type char. - - @return type of IDL type char -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuCharType() SAL_THROW( () ); - -/** Gets the meta type of IDL type byte. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type byte -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int8 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type string. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type string -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const ::rtl::OUString * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type short. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type short -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int16 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type unsigned short. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type unsigned short -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_uInt16 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type long. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type long -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int32 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type unsigned long. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type unsigned long -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_uInt32 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type hyper. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type hyper -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int64 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type unsigned hyper. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type unsigned hyper -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_uInt64 * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type float. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type float -*/ -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const float * ) SAL_THROW( () ); - -/** Gets the meta type of IDL type double. - - There are cases (involving templates) where uses of getCppuType are known to - not compile. Use cppu::UnoType or cppu::getTypeFavourUnsigned instead. - - @param dummy typed pointer for function signature - @return type of IDL type double -*/ -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 - the overloaded getCppuType function with a single (dummy) parameter of a - specific type is that this function template may not work for the UNO type - "unsigned short" (sal_uInt16 in C++), while the overloaded one-parameter - function may not work for the UNO type "char" (sal_Unicode in C++, which may - have the same underlying C++ type as sal_uInt16 on certain platforms). - - @return type of the given IDL type - - @deprecated - Use cppu::UnoType instead (or the internal-only cppu::getTypeFavourChar). - Also note that getCppuType< com::sun::star::uno::Sequence< sal_Unicode > >() - does not work as expected. - - @since UDK 3.2.0 -*/ -template< typename T > inline const ::com::sun::star::uno::Type & SAL_CALL -getCppuType() SAL_THROW(()); - -/** Gets the meta type of IDL type char. - - @return type of IDL type char - - @deprecated - Use cppu::UnoType instead (or the internal-only cppu::getTypeFavourChar). - Also note that getCppuType< com::sun::star::uno::Sequence< sal_Unicode > >() - does not work as expected. - - @since UDK 3.2.0 -*/ -template<> inline const ::com::sun::star::uno::Type & SAL_CALL -getCppuType< sal_Unicode >() SAL_THROW(()); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/Type.hxx b/cppu/inc/com/sun/star/uno/Type.hxx deleted file mode 100644 index 83f7aff97..000000000 --- a/cppu/inc/com/sun/star/uno/Type.hxx +++ /dev/null @@ -1,330 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_TYPE_HXX_ -#define _COM_SUN_STAR_UNO_TYPE_HXX_ - -#include -#include -#include "cppu/unotype.hxx" - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -//__________________________________________________________________________________________________ -inline Type::Type() SAL_THROW( () ) -{ - _pType = reinterpret_cast< const ::com::sun::star::uno::Type * >( - ::typelib_static_type_getByTypeClass( typelib_TypeClass_VOID ) )->getTypeLibType(); - ::typelib_typedescriptionreference_acquire( _pType ); -} -//__________________________________________________________________________________________________ -inline Type::Type( TypeClass eTypeClass, const ::rtl::OUString & rTypeName ) SAL_THROW( () ) - : _pType( 0 ) -{ - ::typelib_typedescriptionreference_new( &_pType, (typelib_TypeClass)eTypeClass, rTypeName.pData ); -} -//__________________________________________________________________________________________________ -inline Type::Type( TypeClass eTypeClass, const sal_Char * pTypeName ) SAL_THROW( () ) - : _pType( 0 ) -{ - ::typelib_typedescriptionreference_newByAsciiName( &_pType, (typelib_TypeClass)eTypeClass, pTypeName ); -} -//__________________________________________________________________________________________________ -inline Type::Type( typelib_TypeDescriptionReference * pType ) SAL_THROW( () ) - : _pType( pType ) -{ - ::typelib_typedescriptionreference_acquire( _pType ); -} -//__________________________________________________________________________________________________ -inline Type::Type( typelib_TypeDescriptionReference * pType, UnoType_NoAcquire ) SAL_THROW( () ) - : _pType( pType ) -{ -} -//__________________________________________________________________________________________________ -inline Type::Type( typelib_TypeDescriptionReference * pType, __sal_NoAcquire ) SAL_THROW( () ) - : _pType( pType ) -{ -} -//__________________________________________________________________________________________________ -inline Type::Type( const Type & rType ) SAL_THROW( () ) - : _pType( rType._pType ) -{ - ::typelib_typedescriptionreference_acquire( _pType ); -} -//__________________________________________________________________________________________________ -inline ::rtl::OUString Type::getTypeName() const SAL_THROW( () ) -{ - return ::rtl::OUString( _pType->pTypeName ); -} -//__________________________________________________________________________________________________ -inline Type & Type::operator = ( const Type & rType ) SAL_THROW( () ) -{ - ::typelib_typedescriptionreference_assign( &_pType, rType._pType ); - return *this; -} - -//__________________________________________________________________________________________________ -template< class T > -typelib_TypeDescriptionReference * Array< T >::s_pType = 0; - -} -} -} -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const ::com::sun::star::uno::Type * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::com::sun::star::uno::Type >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuVoidType() SAL_THROW( () ) -{ - return ::cppu::UnoType< ::cppu::UnoVoidType >::get(); -} -inline const ::com::sun::star::uno::Type & SAL_CALL getVoidCppuType() SAL_THROW( () ) -{ - return ::cppu::UnoType< ::cppu::UnoVoidType >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuBooleanType() SAL_THROW( () ) -{ - return ::cppu::UnoType< bool >::get(); -} -inline const ::com::sun::star::uno::Type & SAL_CALL getBooleanCppuType() SAL_THROW( () ) -{ - return ::cppu::UnoType< bool >::get(); -} -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Bool * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< bool >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( - bool const * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< bool >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCharCppuType() SAL_THROW( () ) -{ - return ::cppu::UnoType< ::cppu::UnoCharType >::get(); -} -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuCharType() SAL_THROW( () ) -{ - return ::cppu::UnoType< ::cppu::UnoCharType >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int8 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::sal_Int8 >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const ::rtl::OUString * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::rtl::OUString >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int16 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::sal_Int16 >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_uInt16 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int32 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::sal_Int32 >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_uInt32 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::sal_uInt32 >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_Int64 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::sal_Int64 >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const sal_uInt64 * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< ::sal_uInt64 >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const float * ) SAL_THROW( () ) -{ - return ::cppu::UnoType< float >::get(); -} - -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType( const double * ) SAL_THROW( () ) -{ - 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(()) -{ - return ::cppu::UnoType< T >::get(); -} - -template<> -inline const ::com::sun::star::uno::Type & SAL_CALL getCppuType< sal_Unicode >() - SAL_THROW(()) -{ - return ::cppu::UnoType< ::cppu::UnoCharType >::get(); -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/genfunc.h b/cppu/inc/com/sun/star/uno/genfunc.h deleted file mode 100644 index 168a98fdc..000000000 --- a/cppu/inc/com/sun/star/uno/genfunc.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_GENFUNC_H_ -#define _COM_SUN_STAR_UNO_GENFUNC_H_ - -#include "sal/types.h" - -typedef struct _typelib_TypeDescriptionReference typelib_TypeDescriptionReference; - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** Function to acquire a C++ interface. - - @param pCppI C++ interface pointer -*/ -inline void SAL_CALL cpp_acquire( void * pCppI ) - SAL_THROW( () ); -/** Function to release a C++ interface. - - @param pCppI C++ interface pointer -*/ -inline void SAL_CALL cpp_release( void * pCppI ) - SAL_THROW( () ); -/** Function to query for a C++ interface. - - @param pCppI C++ interface pointer - @param pType demanded interface type - @return acquired C++ interface pointer or null -*/ -inline void * SAL_CALL cpp_queryInterface( void * pCppI, typelib_TypeDescriptionReference * pType ) - SAL_THROW( () ); - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/com/sun/star/uno/genfunc.hxx b/cppu/inc/com/sun/star/uno/genfunc.hxx deleted file mode 100644 index 097fb87ae..000000000 --- a/cppu/inc/com/sun/star/uno/genfunc.hxx +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _COM_SUN_STAR_UNO_GENFUNC_HXX_ -#define _COM_SUN_STAR_UNO_GENFUNC_HXX_ - -#include -#include - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -//================================================================================================== -inline void SAL_CALL cpp_acquire( void * pCppI ) - SAL_THROW( () ) -{ - reinterpret_cast< XInterface * >( pCppI )->acquire(); -} -//================================================================================================== -inline void SAL_CALL cpp_release( void * pCppI ) - SAL_THROW( () ) -{ - reinterpret_cast< XInterface * >( pCppI )->release(); -} -//================================================================================================== -inline void * SAL_CALL cpp_queryInterface( void * pCppI, typelib_TypeDescriptionReference * pType ) - SAL_THROW( () ) -{ - if (pCppI) - { -#ifndef EXCEPTIONS_OFF - try - { -#endif - Any aRet( reinterpret_cast< XInterface * >( pCppI )->queryInterface( - * reinterpret_cast< const Type * >( &pType ) ) ); - if (typelib_TypeClass_INTERFACE == aRet.pType->eTypeClass) - { - XInterface * pRet = reinterpret_cast< XInterface * >( aRet.pReserved ); - aRet.pReserved = 0; - return pRet; - } -#ifndef EXCEPTIONS_OFF - } - catch (RuntimeException &) - { - } -#endif - } - return 0; -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/Enterable.hxx b/cppu/inc/cppu/Enterable.hxx deleted file mode 100644 index 536479189..000000000 --- a/cppu/inc/cppu/Enterable.hxx +++ /dev/null @@ -1,117 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_Enterable_hxx -#define INCLUDED_cppu_Enterable_hxx - -#include "uno/Enterable.h" -#include "rtl/ustring.hxx" - -namespace cppu -{ -/** C++ wrapper for binary C Enterable - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Environment_Stack) - - @see uno_Enterable - @since UDK 3.2.7 -*/ -class Enterable : public uno_Enterable -{ -public: - /* These methods need to be implemented in a derived class. - */ - virtual void v_enter (void) = 0; - virtual void v_leave (void) = 0; - virtual void v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam) = 0; - virtual void v_callOut_v (uno_EnvCallee * pCallee, va_list * pParam) = 0; - virtual int v_isValid (rtl::OUString * pReason) = 0; - - virtual ~Enterable() {} - -public: - inline explicit Enterable(void); - - inline void enter(void) {m_enter(this);} - inline void leave(void) {m_leave(this);} - - inline void callInto_v(uno_EnvCallee * pCallee, va_list * pParam) {m_callInto_v(this, pCallee, pParam);} - inline void callOut_v (uno_EnvCallee * pCallee, va_list * pParam) {m_callOut_v (this, pCallee, pParam);} - - inline void callInto(uno_EnvCallee * pCallee, ...); - inline void callOut (uno_EnvCallee * pCallee, ...); - - inline int isValid (rtl::OUString * pReason) {return m_isValid(this, (rtl_uString **)pReason);} - -private: - Enterable(Enterable const &); - Enterable & operator = (Enterable const &); -}; - -extern "C" inline void Enterable_call_enter (void * context) { ((Enterable *)context)->v_enter(); } -extern "C" inline void Enterable_call_leave (void * context) { ((Enterable *)context)->v_leave(); } -extern "C" inline void Enterable_call_callInto_v(void * context, uno_EnvCallee * pCallee, va_list * pParam) - { ((Enterable *)context)->v_callInto_v(pCallee, pParam); } -extern "C" inline void Enterable_call_callOut_v (void * context, uno_EnvCallee * pCallee, va_list * pParam) - { ((Enterable *)context)->v_callOut_v(pCallee, pParam); } -extern "C" inline int Enterable_call_isValid (void * context, rtl_uString ** pReason) - {return ((Enterable *)context)->v_isValid((rtl::OUString *)pReason);} - - -Enterable::Enterable(void) -{ - m_enter = Enterable_call_enter; - m_leave = Enterable_call_leave; - m_callInto_v = Enterable_call_callInto_v; - m_callOut_v = Enterable_call_callOut_v; - m_isValid = Enterable_call_isValid; -} - -void Enterable::callInto(uno_EnvCallee * pCallee, ...) -{ - va_list param; - - va_start(param, pCallee); - callInto_v(pCallee, ¶m); - va_end(param); -} - -void Enterable::callOut(uno_EnvCallee * pCallee, ...) -{ - va_list param; - - va_start(param, pCallee); - callOut_v(pCallee, ¶m); - va_end(param); -} - -} - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/EnvDcp.hxx b/cppu/inc/cppu/EnvDcp.hxx deleted file mode 100644 index d35e8f286..000000000 --- a/cppu/inc/cppu/EnvDcp.hxx +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_EnvDcp_hxx -#define INCLUDED_cppu_EnvDcp_hxx - -#include "rtl/ustring.hxx" -#include "uno/EnvDcp.h" - - -namespace cppu -{ -namespace EnvDcp -{ -/** Get the OBI type part of an environment descriptor. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Environment_Descriptor) - - @param rEnvDcp the Environment Descriptor - @return the OBI type - @since UDK 3.2.7 -*/ -inline rtl::OUString getTypeName(rtl::OUString const & rEnvDcp) -{ - rtl::OUString typeName; - - uno_EnvDcp_getTypeName(rEnvDcp.pData, &typeName.pData); - - return typeName; -} - -/** Get the purpose part of an environment descriptor. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Descriptor) - - @param rEnvDcp the Environment Descriptor - @return the purpose - @since UDK 3.2.7 -*/ -inline rtl::OUString getPurpose(rtl::OUString const & rEnvDcp) -{ - rtl::OUString purpose; - - uno_EnvDcp_getPurpose(rEnvDcp.pData, &purpose.pData); - - return purpose; -} - -} -} - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/EnvGuards.hxx b/cppu/inc/cppu/EnvGuards.hxx deleted file mode 100644 index b03f54ff0..000000000 --- a/cppu/inc/cppu/EnvGuards.hxx +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_EnvGuards_hxx -#define INCLUDED_cppu_EnvGuards_hxx - -#include "uno/environment.hxx" -#include "uno/mapping.hxx" - - -namespace cssuno = com::sun::star::uno; - - -namespace cppu -{ - /** Environment Guard - The provided Environment becomes entered in the constructor and left - in the destructor. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Environment_Guard) - - @since UDK 3.2.7 - */ - class EnvGuard - { - cssuno::Environment m_env; - - public: - explicit EnvGuard(cssuno::Environment const & env) - { - if (env.is()) - { - m_env = cssuno::Environment::getCurrent(); - env.enter(); - } - } - - ~EnvGuard() - { - m_env.enter(); - } - - /** Checks if the associated environment is non empty. - - @return 0 == empty, 1 == non empty - */ - sal_Bool SAL_CALL is() const SAL_THROW( () ) - { - return m_env.is(); - } - - /** Leaves the associated environment and clears - the reference. - */ - void clear() - { - if (m_env.is()) - { - m_env.enter(); - m_env.clear(); - } - } - }; - - /** Environment Anti-Guard - Any entered Environment becomes left in the constructor and re-entered - in the destructor. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Environment_AntiGuard) - - @since UDK 3.2.7 - */ - class AntiEnvGuard - { - cssuno::Environment m_env; - - public: - explicit AntiEnvGuard() - : m_env(cssuno::Environment::getCurrent()) - { - uno_Environment_enter(NULL); - } - - ~AntiEnvGuard() - { - m_env.enter(); - } - }; -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/FreeReference.hxx b/cppu/inc/cppu/FreeReference.hxx deleted file mode 100644 index 4a1ffb968..000000000 --- a/cppu/inc/cppu/FreeReference.hxx +++ /dev/null @@ -1,169 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_FreeReference_hxx -#define INCLUDED_cppu_FreeReference_hxx - -#include "uno/environment.hxx" -#include "cppu/Map.hxx" -#include "com/sun/star/uno/Reference.h" - - -namespace cssuno = com::sun::star::uno; - - -namespace cppu -{ - /** Freely (environment independent) usable Reference. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/FreeReference) - - @since UDK 3.2.7 - */ - template< class T > - class FreeReference - { - cssuno::Environment m_env; - T * m_pObject; - - public: - FreeReference() : m_pObject(NULL) {} - - FreeReference(T * pObject, __sal_NoAcquire) - : m_env(cssuno::Environment::getCurrent()), - m_pObject(pObject) - { - } - - FreeReference(T * pObject) - : m_env(cssuno::Environment::getCurrent()), - m_pObject(pObject) - { - if (m_pObject) - m_env.get()->pExtEnv->acquireInterface(m_env.get()->pExtEnv, m_pObject); - } - - explicit FreeReference(cssuno::Reference const & xRef) - : m_env(cssuno::Environment::getCurrent()), - m_pObject(xRef.get()) - { - if (m_pObject) - m_env.get()->pExtEnv->acquireInterface(m_env.get()->pExtEnv, m_pObject); - } - - FreeReference(FreeReference const & rOther) - : m_env (rOther.m_env), - m_pObject(rOther.m_pObject) - { - if (m_pObject) - m_env.get()->pExtEnv->acquireInterface(m_env.get()->pExtEnv, m_pObject); - } - - - ~FreeReference() - { - clear(); - } - - cssuno::Environment getEnv() const throw (cssuno::RuntimeException) - { - return m_env; - } - - cssuno::Reference get() const throw (cssuno::RuntimeException) - { - return cssuno::Reference(cppu::mapIn(m_pObject, m_env), SAL_NO_ACQUIRE); - } - - operator cssuno::Reference () const throw (cssuno::RuntimeException) - { - return get(); - } - - cssuno::Reference operator -> () const throw (cssuno::RuntimeException) - { - return get(); - } - - bool is() const throw (cssuno::RuntimeException) - { - return m_pObject != NULL; - } - - void clear() - { - if (m_pObject) - { - - m_env.get()->pExtEnv->releaseInterface(m_env.get()->pExtEnv, m_pObject); - m_pObject = NULL; - m_env.clear(); - } - } - - FreeReference & operator = (FreeReference const & rOther) - { - clear(); - - m_pObject = rOther.m_pObject; - if (m_pObject) - { - m_env = rOther.m_env; - m_env.get()->pExtEnv->acquireInterface(m_env.get()->pExtEnv, m_pObject); - } - - return *this; - } - - void set(cssuno::Reference const & xRef) - { - clear(); - - m_pObject = xRef.get(); - if (m_pObject) - { - m_env = cssuno::Environment::getCurrent(); - - m_env.get()->pExtEnv->acquireInterface(m_env.get()->pExtEnv, m_pObject); - } - } - - bool operator == (FreeReference const & rOther) const - { - return get() == rOther.get(); - } - - bool operator != (FreeReference const & rOther) const - { - return !operator==(rOther); - } - }; -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/Map.hxx b/cppu/inc/cppu/Map.hxx deleted file mode 100644 index c664806c3..000000000 --- a/cppu/inc/cppu/Map.hxx +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_Map_hxx -#define INCLUDED_cppu_Map_hxx - -#include - - -namespace cssu = com::sun::star::uno; - -namespace cppu -{ - /** Helpers for mapping objects relative to the current environment. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Map_Helpers) - */ - - /** Maps an object from the current to an outer Environment, returns mapped object. - - @param pT the object to be mapped - @param outerEnv the target environment - @return the mapped object - @since UDK 3.2.7 - */ - template inline T * mapOut(T * pT, cssu::Environment const & outerEnv) - { - cssu::Mapping curr2outer(cssu::Environment::getCurrent(), outerEnv); - - return reinterpret_cast(curr2outer.mapInterface(pT, getCppuType((cssu::Reference *)NULL))); - } - - - /** Maps an object from an outer Environment to the current, returns mapped object. - - @param pT the object to be mapped - @param outerEnv the source environment - @return the mapped object - @since UDK 3.2.7 - */ - template inline T * mapIn(T * pT, cssu::Environment const & outerEnv) - { - cssu::Mapping outer2curr(outerEnv, cssu::Environment::getCurrent()); - - return reinterpret_cast(outer2curr.mapInterface(pT, getCppuType((cssu::Reference *)NULL))); - } - - - /** Maps an any from the current to an outer Environment, fills passed any. - - @param any the any to be mapped - @param res the target any - @param outerEnv the target environment - @since UDK 3.2.7 - */ - // Problem: any gets assigned to something, acquire/releases may be called in wrong env. - inline void mapOutAny(cssu::Any const & any, cssu::Any * res, cssu::Environment const & outerEnv) - { - cssu::Mapping curr2outer(cssu::Environment::getCurrent(), outerEnv); - - uno_any_destruct(res, (uno_ReleaseFunc)cssu::cpp_release); - uno_type_any_constructAndConvert( - res, - const_cast(any.getValue()), - any.getValueTypeRef(), - curr2outer.get()); - } - - - /** Maps an any from an outer Environment to the current, fills passed any. - - @param any the any to be mapped - @param res the target any - @param outerEnv the source environment - @since UDK 3.2.7 - */ - inline void mapInAny(cssu::Any const & any, cssu::Any * res, cssu::Environment const & outerEnv) - { - cssu::Mapping outer2curr(outerEnv, cssu::Environment::getCurrent()); - - uno_any_destruct(res, (uno_ReleaseFunc)cssu::cpp_release); - uno_type_any_constructAndConvert( - res, - const_cast(any.getValue()), - any.getValueTypeRef(), - outer2curr.get()); - } -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/Shield.hxx b/cppu/inc/cppu/Shield.hxx deleted file mode 100644 index 2eb0f93ce..000000000 --- a/cppu/inc/cppu/Shield.hxx +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_Shield_hxx -#define INCLUDED_cppu_Shield_hxx - -#include - - -namespace cssu = com::sun::star::uno; - -namespace cppu -{ - /** Helpers for mapping objects relative to the thread-safe and current environments. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Shield_Helpers) - */ - - - /** Maps an object from the current to the thread-safe Environment, returns mapped object. - - @param pT the object to be mapped - @return the mapped object - @since UDK 3.2.7 - */ - template inline T * shield(T * pT) - { - return mapOut(pT, cssu::Environment(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(CPPU_STRINGIFY(CPPU_ENV))))); - } - - /** Maps an object from the thread-safe Environment to the current one, returns mapped object. - - @param pT the object to be mapped - @return the mapped object - @since UDK 3.2.7 - */ - template inline T * unshield(T * pT) - { - return mapIn(pT, cssu::Environment(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(CPPU_STRINGIFY(CPPU_ENV))))); - } - - - /** Maps an any from the current to the thread-safe Environment, fills the passed any. - - @param any the any to be mapped - @param the target any - @since UDK 3.2.7 - */ - inline void shieldAny(cssu::Any const & any, cssu::Any * res) - { - mapOutAny(any, res, cssu::Environment(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(CPPU_STRINGIFY(CPPU_ENV))))); - } - - - /** Maps an any from the thread-safe Environment to the current one, fills the passed any. - - @param any the any to be mapped - @param the target any - @since UDK 3.2.7 - */ - inline void unshieldAny(cssu::Any const & any, cssu::Any * res) - { - mapInAny(any, res, cssu::Environment(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(CPPU_STRINGIFY(CPPU_ENV))))); - } -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/helper/purpenv/Environment.hxx b/cppu/inc/cppu/helper/purpenv/Environment.hxx deleted file mode 100644 index 1b96e2f34..000000000 --- a/cppu/inc/cppu/helper/purpenv/Environment.hxx +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_helper_purpenv_Environment_hxx -#define INCLUDED_cppu_helper_purpenv_Environment_hxx - -#include "uno/environment.h" -#include "cppu/Enterable.hxx" - - -namespace cppu { namespace helper { namespace purpenv { - -/** C++ helper for implementing Purpose Environments. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Purpose_Bridge_Implementation_Helper) - - @since UDK 3.2.7 -*/ -void Environment_initWithEnterable(uno_Environment * pEnvironment, cppu::Enterable * pEnterable); - -}}} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/helper/purpenv/Mapping.hxx b/cppu/inc/cppu/helper/purpenv/Mapping.hxx deleted file mode 100644 index 27dd1e8e1..000000000 --- a/cppu/inc/cppu/helper/purpenv/Mapping.hxx +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cppu_helper_purpenv_Mapping_hxx -#define INCLUDED_cppu_helper_purpenv_Mapping_hxx - -#include "com/sun/star/uno/Any.h" - -#include "uno/environment.h" -#include "uno/mapping.h" - - -namespace cppu { namespace helper { namespace purpenv { - -/** C++ helper for implementing Purpose Environments. - (http://wiki.services.openoffice.org/wiki/Uno/Cpp/Spec/Purpose_Bridge_Implementation_Helper) - - @since UDK 3.2.7 -*/ - -typedef void ProbeFun( - bool pre, - void * pThis, - void * pContext, - typelib_TypeDescriptionReference * pReturnTypeRef, - typelib_MethodParameter * pParams, - sal_Int32 nParams, - typelib_TypeDescription const * pMemberType, - void * pReturn, - void * pArgs[], - uno_Any ** ppException ); - - - -void createMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo, - ProbeFun * probeFun = NULL, - void * pContext = NULL - ); - -}}} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/macros.hxx b/cppu/inc/cppu/macros.hxx deleted file mode 100644 index e62594b98..000000000 --- a/cppu/inc/cppu/macros.hxx +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _CPPU_MACROS_HXX_ -#define _CPPU_MACROS_HXX_ - -#include -#include - -/** Namespace name for compiler/ platform, e.g. gcc3, msci */ -#define CPPU_CURRENT_NAMESPACE CPPU_ENV - -/** Patching the GCC 3 incomatible alignment change for Linux. - - This macro is appended by cppumaker to every first member of a struct, if - the struct inherits from a base struct and the first member is neither - double nor sal_[u]Int64. (The double/sal_[u]Int64 restriction is due to a - bug in GCC prior to version 3.3, which would cause __alignof__ of such a - struct to become 8 instead of 4 if CPPU_GCC3_ALIGN were added to its first - member.) - - @internal -*/ -#if defined(__GNUC__) && (__GNUC__ >= 3) -#define CPPU_GCC3_ALIGN( base_struct ) __attribute__ ((aligned (__alignof__ (base_struct)))) -#else -#define CPPU_GCC3_ALIGN( base_struct ) -#endif - -/** - Exporting the symbols necessary for exception handling on GCC. - - These macros are used in the headers generated by cppumaker for UNO exception - types, to ensure that exception handling does not fail on GCC. - - @internal -*/ -#define CPPU_GCC_DLLPUBLIC_EXPORT SAL_EXCEPTION_DLLPUBLIC_EXPORT -#define CPPU_GCC_DLLPRIVATE SAL_EXCEPTION_DLLPRIVATE - -#endif // _CPPU_MACROS_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/cppu/unotype.hxx b/cppu/inc/cppu/unotype.hxx deleted file mode 100644 index 6c176a05d..000000000 --- a/cppu/inc/cppu/unotype.hxx +++ /dev/null @@ -1,380 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_CPPU_UNOTYPE_HXX -#define INCLUDED_CPPU_UNOTYPE_HXX - -#include "sal/config.h" -#include "com/sun/star/uno/Type.h" -#include "sal/types.h" -#include "typelib/typeclass.h" -#include "typelib/typedescription.h" - -namespace com { namespace sun { namespace star { namespace uno { - class Any; - class Exception; - template< typename > class Reference; - template< typename > class Sequence; - class XInterface; -} } } } -namespace rtl { class OUString; } - -namespace cppu { - -template< typename > class UnoType; - -/** - A unique C++ type representing the UNO type VOID in cppu::UnoType. - - This type is declared but not defined. Its only use is as a template - argument to cppu::UnoType. - - @since UDK 3.2.2 -*/ -struct UnoVoidType; - -/** - A unique C++ type representing the UNO type UNSIGNED SHORT in cppu::UnoType. - - The UNO types UNSIGNED SHORT and CHAR map to the same C++ type, so this C++ - type is needed to unambiguously specify UNO types in cppu::UnoType. - - This type is declared but not defined. Its only use is as a template - argument to cppu::UnoType. - - @since UDK 3.2.2 -*/ -struct UnoUnsignedShortType; - -/** - A unique C++ type representing the UNO type UNSIGNED SHORT in cppu::UnoType. - - The UNO types UNSIGNED SHORT and CHAR map to the same C++ type, so this C++ - type is needed to unambiguously specify UNO types in cppu::UnoType. - - This type is declared but not defined. Its only use is as a template - argument to cppu::UnoType. - - @since UDK 3.2.2 -*/ -struct UnoCharType; - -/** - A unique C++ type template representing the UNO sequence types in - cppu::UnoType. - - The UNO types UNSIGNED SHORT and CHAR map to the same C++ type, so this C++ - type is needed to unambiguously specify UNO types in cppu::UnoType. - - This type is declared but not defined. Its only use is as a template - argument to cppu::UnoType. - - @since UDK 3.2.2 -*/ -template< typename > struct UnoSequenceType; - -namespace detail { - -inline ::com::sun::star::uno::Type const & getTypeFromTypeDescriptionReference( - ::typelib_TypeDescriptionReference * const * tdr) -{ - return *reinterpret_cast< ::com::sun::star::uno::Type const * >(tdr); -} - -inline ::com::sun::star::uno::Type const & -getTypeFromTypeClass(::typelib_TypeClass tc) { - return getTypeFromTypeDescriptionReference( - ::typelib_static_type_getByTypeClass(tc)); -} - -} - -} - -// For _MSC_VER 1310, define cppu_detail_getUnoType in the global namespace, to -// avoid spurious compiler errors in code that calls cppu_detail_getUnoType: -#if !defined _MSC_VER || _MSC_VER > 1310 -namespace cppu { namespace detail { -#endif - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::cppu::UnoVoidType const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_VOID); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(bool const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_BOOLEAN); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_Bool const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_BOOLEAN); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_Int8 const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_BYTE); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_Int16 const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_SHORT); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::cppu::UnoUnsignedShortType const *) { - return ::cppu::detail::getTypeFromTypeClass( - ::typelib_TypeClass_UNSIGNED_SHORT); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_Int32 const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_LONG); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_uInt32 const *) { - return ::cppu::detail::getTypeFromTypeClass( - ::typelib_TypeClass_UNSIGNED_LONG); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_Int64 const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_HYPER); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::sal_uInt64 const *) { - return ::cppu::detail::getTypeFromTypeClass( - ::typelib_TypeClass_UNSIGNED_HYPER); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(float const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_FLOAT); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(double const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_DOUBLE); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::cppu::UnoCharType const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_CHAR); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::rtl::OUString const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_STRING); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::com::sun::star::uno::Type const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_TYPE); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::com::sun::star::uno::Any const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_ANY); -} - -template< typename T > inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::cppu::UnoSequenceType< T > const *) { - //TODO: depending on memory model, the following might not work reliably - static typelib_TypeDescriptionReference * p = 0; - if (p == 0) { - ::typelib_static_sequence_type_init( - &p, ::cppu::UnoType< T >::get().getTypeLibType()); - } - return ::cppu::detail::getTypeFromTypeDescriptionReference(&p); -} - -template< typename T > inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::com::sun::star::uno::Sequence< T > const *) { - return cppu_detail_getUnoType( - static_cast< ::cppu::UnoSequenceType< T > * >(0)); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::com::sun::star::uno::Exception const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_EXCEPTION); -} - -inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::com::sun::star::uno::XInterface const *) { - return ::cppu::detail::getTypeFromTypeClass(::typelib_TypeClass_INTERFACE); -} - -template< typename T > inline ::com::sun::star::uno::Type const & -cppu_detail_getUnoType(::com::sun::star::uno::Reference< T > const *) { - return ::cppu::UnoType< T >::get(); -} - -#if !defined _MSC_VER || _MSC_VER > 1310 -} } -#endif - -namespace cppu { - -/** - Get the com::sun::star::uno::Type instance representing a certain UNO type. - - For each C++ type representing a UNO type, the corresponding instantiation of - this template has a public static member function get(). (The template is - specialized for C++ templates representing polymorphic struct type templates - of UNO. In those cases, it does not work to instantiate UnoType with a C++ - type that is derived from a C++ type that represents a UNO type, but does not - itself represent a UNO type. In all other cases, UnoType even works for such - C++ types that are unambiguously derived from one C++ type that represents a - UNO type.) In addition to those C++ types that are mappings of UNO types - (except for sal_uInt16 and sal_Unicode, see below), the following C++ types - are appropriate as template arguments: cppu::UnoVoidType, bool, - cppu::UnoUnsignedShortType, cppu::UnoCharType, cppu::UnoSequenceType with any - appropriate template argument (the latter three to unambiguously specify UNO - types, as the UNO types UNSIGNED SHORT and CHAR map to the same C++ type), - and com::sun::star::uno::Reference with any appropriate template argument. - - @since UDK 3.2.2 -*/ -template< typename T > class UnoType { -public: - static inline ::com::sun::star::uno::Type const & get() { - using namespace ::cppu::detail; - return cppu_detail_getUnoType(static_cast< T * >(0)); - } - -private: - UnoType(UnoType &); // not defined - ~UnoType(); // not defined - void operator =(UnoType &); // not defined -}; - -/** - A working replacement for getCppuType (see there). - - There are three overloads of this function that together form the replacement - of getCppuType. The replacement has exactly the same semantics as - getCppuType, in that it returns correct results for the UNO type UNSIGNED - SHORT but not for the UNO type CHAR. - - @since UDK 3.2.2 -*/ -template< typename T > inline ::com::sun::star::uno::Type const & -getTypeFavourUnsigned(T const *) { - return ::cppu::UnoType< T >::get(); -} - -/** - A working replacement for getCppuType (see there). - - There are three overloads of this function that together form the replacement - of getCppuType. The replacement has exactly the same semantics as - getCppuType, in that it returns correct results for the UNO type UNSIGNED - SHORT but not for the UNO type CHAR. - - @since UDK 3.2.2 -*/ -inline ::com::sun::star::uno::Type const & -getTypeFavourUnsigned(::sal_uInt16 const *) { - return ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get(); -} - -/** - A working replacement for getCppuType (see there). - - There are three overloads of this function that together form the replacement - of getCppuType. The replacement has exactly the same semantics as - getCppuType, in that it returns correct results for the UNO type UNSIGNED - SHORT but not for the UNO type CHAR. - - @since UDK 3.2.2 -*/ -template< typename T > inline ::com::sun::star::uno::Type const & -getTypeFavourUnsigned(::com::sun::star::uno::Sequence< T > const *); - // defined in com/sun/star/uno/Sequence.hxx - -/** - A working replacement for getCppuType (see there). - - There are three overloads of this function that together form the replacement - of the getCppuType template. The replacement has exactly the same semantics - as the getCppuType template, in that it returns correct results for the UNO - type CHAR but not for the UNO type UNSIGNED SHORT. Additionally, it also - returns the intended results for sequence types. - - @internal - - @since UDK 3.2.3 -*/ -template< typename T > inline ::com::sun::star::uno::Type const & -getTypeFavourChar(T const *) { - return ::cppu::UnoType< T >::get(); -} - -/** - A working replacement for getCppuType (see there). - - There are three overloads of this function that together form the replacement - of the getCppuType template. The replacement has exactly the same semantics - as the getCppuType template, in that it returns correct results for the UNO - type CHAR but not for the UNO type UNSIGNED SHORT. Additionally, it also - returns the intended results for sequence types. - - @internal - - @since UDK 3.2.3 -*/ -inline ::com::sun::star::uno::Type const & -getTypeFavourChar(::sal_Unicode const *) { - return ::cppu::UnoType< ::cppu::UnoCharType >::get(); -} - -/** - A working replacement for getCppuType (see there). - - There are three overloads of this function that together form the replacement - of the getCppuType template. The replacement has exactly the same semantics - as the getCppuType template, in that it returns correct results for the UNO - type CHAR but not for the UNO type UNSIGNED SHORT. Additionally, it also - returns the intended results for sequence types. - - @internal - - @since UDK 3.2.3 -*/ -template< typename T > inline ::com::sun::star::uno::Type const & -getTypeFavourChar(::com::sun::star::uno::Sequence< T > const *); - // defined in com/sun/star/uno/Sequence.hxx - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/makefile.mk b/cppu/inc/makefile.mk deleted file mode 100644 index 47a2532ef..000000000 --- a/cppu/inc/makefile.mk +++ /dev/null @@ -1,48 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=.. - -PRJNAME=cppu -TARGET=inc - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk -.INCLUDE : $(PRJ)$/util$/makefile.pmk - -# --- Files -------------------------------------------------------- -# --- Targets ------------------------------------------------------- - -.INCLUDE : target.mk - -.IF "$(ENABLE_PCH)"!="" -ALLTAR : \ - $(SLO)$/precompiled.pch \ - $(SLO)$/precompiled_ex.pch - -.ENDIF # "$(ENABLE_PCH)"!="" - diff --git a/cppu/inc/pch/precompiled_cppu.cxx b/cppu/inc/pch/precompiled_cppu.cxx deleted file mode 100644 index 0b9c5e7e8..000000000 --- a/cppu/inc/pch/precompiled_cppu.cxx +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "precompiled_cppu.hxx" - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/pch/precompiled_cppu.hxx b/cppu/inc/pch/precompiled_cppu.hxx deleted file mode 100644 index e82823cb5..000000000 --- a/cppu/inc/pch/precompiled_cppu.hxx +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:37.030339 - -#ifdef PRECOMPILED_HEADERS -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/typelib/typeclass.h b/cppu/inc/typelib/typeclass.h deleted file mode 100644 index 493f7425c..000000000 --- a/cppu/inc/typelib/typeclass.h +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _TYPELIB_TYPECLASS_H_ -#define _TYPELIB_TYPECLASS_H_ - -#include - -/** This type class enum is binary compatible with the IDL enum com.sun.star.uno.TypeClass. -*/ -typedef enum _typelib_TypeClass -{ - /** type class of void */ - typelib_TypeClass_VOID = 0, - /** type class of char */ - typelib_TypeClass_CHAR = 1, - /** type class of boolean */ - typelib_TypeClass_BOOLEAN = 2, - /** type class of byte */ - typelib_TypeClass_BYTE = 3, - /** type class of short */ - typelib_TypeClass_SHORT = 4, - /** type class of unsigned short */ - typelib_TypeClass_UNSIGNED_SHORT = 5, - /** type class of long */ - typelib_TypeClass_LONG = 6, - /** type class of unsigned long */ - typelib_TypeClass_UNSIGNED_LONG = 7, - /** type class of hyper */ - typelib_TypeClass_HYPER = 8, - /** type class of unsigned hyper */ - typelib_TypeClass_UNSIGNED_HYPER = 9, - /** type class of float */ - typelib_TypeClass_FLOAT = 10, - /** type class of double */ - typelib_TypeClass_DOUBLE = 11, - /** type class of string */ - typelib_TypeClass_STRING = 12, - /** type class of type */ - typelib_TypeClass_TYPE = 13, - /** type class of any */ - typelib_TypeClass_ANY = 14, - /** type class of enum */ - typelib_TypeClass_ENUM = 15, - /** type class of typedef */ - typelib_TypeClass_TYPEDEF = 16, - /** type class of struct */ - typelib_TypeClass_STRUCT = 17, - /** type class of union (not implemented) */ - 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) */ - typelib_TypeClass_ARRAY = 21, - /** type class of interface */ - typelib_TypeClass_INTERFACE = 22, - /** type class of service (not implemented) */ - typelib_TypeClass_SERVICE = 23, - /** type class of module (not implemented) */ - typelib_TypeClass_MODULE = 24, - /** type class of interface method */ - typelib_TypeClass_INTERFACE_METHOD = 25, - /** type class of interface attribute */ - typelib_TypeClass_INTERFACE_ATTRIBUTE = 26, - /** type class of unknown type */ - typelib_TypeClass_UNKNOWN = 27, - /** type class of properties */ - typelib_TypeClass_PROPERTY = 28, - /** type class of constants */ - typelib_TypeClass_CONSTANT = 29, - /** type class of constants groups */ - typelib_TypeClass_CONSTANTS = 30, - /** type class of singletons */ - typelib_TypeClass_SINGLETON = 31, - /** fixing enum size */ - typelib_TypeClass_MAKE_FIXED_SIZE = SAL_MAX_ENUM -} typelib_TypeClass; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/typelib/typedescription.h b/cppu/inc/typelib/typedescription.h deleted file mode 100644 index 3494e6635..000000000 --- a/cppu/inc/typelib/typedescription.h +++ /dev/null @@ -1,1161 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _TYPELIB_TYPEDESCRIPTION_H_ -#define _TYPELIB_TYPEDESCRIPTION_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -struct _typelib_TypeDescription; - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -/** Holds a weak reference to a type description. -*/ -typedef struct _typelib_TypeDescriptionReference -{ - /** reference count of type; don't ever modify this by yourself, use - typelib_typedescriptionreference_acquire() and typelib_typedescriptionreference_release() - */ - sal_Int32 nRefCount; - /** number of static references of type, because of the fact that some types are needed - until program termination and are commonly held static. - */ - sal_Int32 nStaticRefCount; - /** type class of type - */ - typelib_TypeClass eTypeClass; - /** fully qualified name of type - */ - rtl_uString * pTypeName; - /** pointer to full typedescription; this value is only valid if the type is never swapped out - */ - struct _typelib_TypeDescription * pType; - /** pointer to optimize the runtime; not for public use - */ - void * pUniqueIdentifier; - /** reserved for future use; 0 if not used - */ - void * pReserved; -} typelib_TypeDescriptionReference; - -/** Full type description of a type. Memory layout of this struct is identical to the - typelib_TypeDescriptionReference for the first six members. - So a typedescription can be used as type reference. -*/ -typedef struct _typelib_TypeDescription -{ - /** reference count; don't ever modify this by yourself, use - typelib_typedescription_acquire() and typelib_typedescription_release() - */ - sal_Int32 nRefCount; - /** number of static references of type, because of the fact that some types are needed - until program termination and are commonly held static. - */ - sal_Int32 nStaticRefCount; - /** type class of type - */ - typelib_TypeClass eTypeClass; - /** fully qualified name of type - */ - rtl_uString * pTypeName; - /** pointer to self to distinguish reference from description; for internal use only - */ - struct _typelib_TypeDescription * pSelf; - /** pointer to optimize the runtime; not for public use - */ - void * pUniqueIdentifier; - /** reserved for future use; 0 if not used - */ - 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, - interfaces lack of members and table init. - Call typelib_typedescription_complete() if false. - */ - sal_Bool bComplete; - /** size of type - */ - sal_Int32 nSize; - /** alignment of type - */ - sal_Int32 nAlignment; - /** pointer to weak reference - */ - typelib_TypeDescriptionReference * pWeakRef; - /** determines, if type can be unloaded (and it is possible to reloaded it) - */ - sal_Bool bOnDemand; -} typelib_TypeDescription; - -/** Type description for exception types. -*/ -typedef struct _typelib_CompoundTypeDescription -{ - /** inherits all members of typelib_TypeDescription - */ - typelib_TypeDescription aBase; - - /** pointer to base type description, else 0 - */ - struct _typelib_CompoundTypeDescription * pBaseTypeDescription; - - /** number of members - */ - sal_Int32 nMembers; - /** byte offsets of each member including the size the base type - */ - sal_Int32 * pMemberOffsets; - /** members of the struct or exception - */ - typelib_TypeDescriptionReference ** ppTypeRefs; - /** member names of the struct or exception - */ - rtl_uString ** ppMemberNames; -} typelib_CompoundTypeDescription; - -/** - Type description for struct types. - - This is only used to represent plain struct types and instantiated - polymorphic struct types; there is no representation of polymorphic struct - type templates at this level. - - @since UDK 3.2.0 - */ -typedef struct _typelib_StructTypeDescription -{ - /** - Derived from typelib_CompoundTypeDescription. - */ - typelib_CompoundTypeDescription aBase; - - /** - Flags for direct members, specifying whether they are of parameterized - type (true) or explict type (false). - - For a plain struct type, this is a null pointer. - */ - 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. -*/ -typedef struct _typelib_IndirectTypeDescription -{ - /** inherits all members of typelib_TypeDescription - */ - typelib_TypeDescription aBase; - - /** array, sequence: 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 -{ - /** inherits all members of typelib_TypeDescription - */ - typelib_TypeDescription aBase; - - /** first value of the enum - */ - sal_Int32 nDefaultEnumValue; - /** number of enum values - */ - sal_Int32 nEnumValues; - /** names of enum values - */ - rtl_uString ** ppEnumNames; - /** values of enum (corresponding to names in similar order) - */ - sal_Int32 * pEnumValues; -} typelib_EnumTypeDescription; - -/** Description of an interface method parameter. -*/ -typedef struct _typelib_MethodParameter -{ - /** name of parameter - */ - rtl_uString * pName; - /** type of parameter - */ - typelib_TypeDescriptionReference * pTypeRef; - /** true: the call type of this parameter is [in] or [inout] - false: the call type of this parameter is [out] - */ - sal_Bool bIn; - /** true: the call type of this parameter is [out] or [inout] - false: the call type of this parameter is [in] - */ - sal_Bool bOut; -} typelib_MethodParameter; - -/** Common base type description of typelib_InterfaceMethodTypeDescription and - typelib_InterfaceAttributeTypeDescription. -*/ -typedef struct _typelib_InterfaceMemberTypeDescription -{ - /** inherits all members of typelib_TypeDescription - */ - typelib_TypeDescription aBase; - - /** position of member in the interface including the number of members of - any base interfaces - */ - sal_Int32 nPosition; - /** name of member - */ - rtl_uString * pMemberName; -} typelib_InterfaceMemberTypeDescription; - -/** Type description of an interface method. The type class of this description is - typelib_TypeClass_INTERFACE_METHOD. The size and the alignment are 0. -*/ -typedef struct _typelib_InterfaceMethodTypeDescription -{ - /** inherits all members of typelib_InterfaceMemberTypeDescription - */ - typelib_InterfaceMemberTypeDescription aBase; - - /** type of the return value - */ - typelib_TypeDescriptionReference * pReturnTypeRef; - /** number of parameters - */ - sal_Int32 nParams; - /** array of parameters - */ - typelib_MethodParameter * pParams; - /** number of exceptions - */ - sal_Int32 nExceptions; - /** array of exception types - */ - typelib_TypeDescriptionReference ** ppExceptions; - /** determines whether method is declared oneway - */ - sal_Bool bOneWay; - - /** the interface description this method is a member of - - @since #i21150# - */ - struct _typelib_InterfaceTypeDescription * pInterface; - /** the inherited direct base method (null for a method that is not - inherited) - - @since UDK 3.2.0 - */ - typelib_TypeDescriptionReference * pBaseRef; - /** if pBaseRef is null, the member position of this method within - pInterface, not counting members inherited from bases; if pBaseRef is - not null, the index of the direct base within pInterface from which this - method is inherited - - @since UDK 3.2.0 - */ - sal_Int32 nIndex; -} typelib_InterfaceMethodTypeDescription; - -/** The description of an interface attribute. The type class of this description is - typelib_TypeClass_INTERFACE_ATTRIBUTE. The size and the alignment are 0. -*/ -typedef struct _typelib_InterfaceAttributeTypeDescription -{ - /** inherits all members of typelib_InterfaceMemberTypeDescription - */ - typelib_InterfaceMemberTypeDescription aBase; - - /** determines whether attribute is read only - */ - sal_Bool bReadOnly; - /** type of the attribute - */ - typelib_TypeDescriptionReference * pAttributeTypeRef; - - /** the interface description this attribute is a member of - - @since #i21150# - */ - struct _typelib_InterfaceTypeDescription * pInterface; - /** the inherited direct base attribute (null for an attribute that is not - inherited) - - @since UDK 3.2.0 - */ - typelib_TypeDescriptionReference * pBaseRef; - /** if pBaseRef is null, the member position of this attribute within - pInterface, not counting members inherited from bases; if pBaseRef is - not null, the index of the direct base within pInterface from which this - attribute is inherited - - @since UDK 3.2.0 - */ - sal_Int32 nIndex; - /** number of getter exceptions - - @since UDK 3.2.0 - */ - sal_Int32 nGetExceptions; - /** array of getter exception types - - @since UDK 3.2.0 - */ - typelib_TypeDescriptionReference ** ppGetExceptions; - /** number of setter exceptions - - @since UDK 3.2.0 - */ - sal_Int32 nSetExceptions; - /** array of setter exception types - - @since UDK 3.2.0 - */ - typelib_TypeDescriptionReference ** ppSetExceptions; -} typelib_InterfaceAttributeTypeDescription; - -/// @HTML -/** Type description of an interface. - -

Not all members are always initialized (not yet initialized members being - null); there are three levels:

-
    -
  • Minimally, only aBase, - pBaseTypeDescription, aUik, - nBaseTypes, and ppBaseTypes are initialized; - aBase.bComplete is false. This only happens when an - interface type description is created with - typelib_static_mi_interface_type_init or - typelib_static_interface_type_init.
  • - -
  • At the next level, nMembers, ppMembers, - nAllMembers, ppAllMembers are also - initialized; aBase.bComplete is still false. This happens - when an interface type description is created with - typelib_typedescription_newMIInterface or - typelib_typedescription_newInterface.
  • - -
  • At the final level, pMapMemberIndexToFunctionIndex, - nMapFunctionIndexToMemberIndex, and - pMapFunctionIndexToMemberIndex are also initialized; - aBase.bComplete is true. This happens after a call to - typelib_typedescription_complete.
  • -
-*/ -typedef struct _typelib_InterfaceTypeDescription -/// @NOHTML -{ - /** inherits all members of typelib_TypeDescription - */ - typelib_TypeDescription aBase; - - /** pointer to base type description, else 0 - - @deprecated - use nBaseTypes and ppBaseTypes instead - */ - struct _typelib_InterfaceTypeDescription * pBaseTypeDescription; - /** unique identifier of interface - */ - typelib_Uik aUik; - /** number of members - */ - sal_Int32 nMembers; - /** array of members; references attributes or methods - */ - typelib_TypeDescriptionReference ** ppMembers; - /** number of members including members of base interface - */ - sal_Int32 nAllMembers; - /** array of members including members of base interface; references attributes or methods - */ - typelib_TypeDescriptionReference ** ppAllMembers; - /** array mapping index of the member description to an index doubling for read-write - attributes (called function index); size of array is nAllMembers - */ - sal_Int32 * pMapMemberIndexToFunctionIndex; - /** number of members plus number of read-write attributes - */ - sal_Int32 nMapFunctionIndexToMemberIndex; - /** array mapping function index to member index; size of arry is nMapFunctionIndexToMemberIndex - */ - sal_Int32 * pMapFunctionIndexToMemberIndex; - /** number of base types - - @since UDK 3.2.0 - */ - sal_Int32 nBaseTypes; - /** array of base type descriptions - - @since UDK 3.2.0 - */ - struct _typelib_InterfaceTypeDescription ** ppBaseTypes; -} typelib_InterfaceTypeDescription; - -/** Init struct of compound members for typelib_typedescription_new(). -*/ -typedef struct _typelib_CompoundMember_Init -{ - /** type class of compound member - */ - typelib_TypeClass eTypeClass; - /** name of type of compound member - - For a member of an instantiated polymorphic struct type that is of - parameterized type, this will be a null pointer. - */ - rtl_uString * pTypeName; - /** name of compound member - */ - rtl_uString * pMemberName; -} typelib_CompoundMember_Init; - -/** - Init struct of members for typelib_typedescription_newStruct(). - - @since UDK 3.2.0 - */ -typedef struct _typelib_StructMember_Init -{ - /** - Derived from typelib_CompoundMember_Init; - */ - typelib_CompoundMember_Init aBase; - - /** - Flag specifying whether the member is of parameterized type (true) or - explict type (false). - */ - sal_Bool bParameterizedType; -} typelib_StructMember_Init; - -/** Init struct of interface methods for typelib_typedescription_new(). -*/ -typedef struct _typelib_Parameter_Init -{ - /** type class of parameter - */ - typelib_TypeClass eTypeClass; - /** name of parameter - */ - rtl_uString * pTypeName; - /** name of parameter - */ - rtl_uString * pParamName; - /** true, if parameter is [in] or [inout] - */ - sal_Bool bIn; - /** true, if parameter is [out] or [inout] - */ - 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 -*/ -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 - @param pTypeName name of enum - @param nDefaultEnumValue default enum value - @param nEnumValues number of enum values - @param ppEnumNames names of enum values - @param pEnumValues enum values -*/ -void SAL_CALL typelib_typedescription_newEnum( - typelib_TypeDescription ** ppRet, - rtl_uString * pTypeName, - sal_Int32 nDefaultValue, - sal_Int32 nEnumValues, - rtl_uString ** ppEnumNames, - 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 -*/ -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 - struct types, not for instantiated polymorphic struct types, the function - typelib_typedescription_newStruct should be used instead for all struct - types. - - @param ppRet inout type description - @param eTypeClass type class - @param pTypeName name of type - @param pType sequence, array: element type; - struct, Exception: base type; - @param nMembers number of members if struct, exception - @param pMember array of members if struct, exception -*/ -void SAL_CALL typelib_typedescription_new( - typelib_TypeDescription ** ppRet, - typelib_TypeClass eTypeClass, - rtl_uString * pTypeName, - typelib_TypeDescriptionReference * pType, - sal_Int32 nMembers, - typelib_CompoundMember_Init * pMembers ) - SAL_THROW_EXTERN_C(); - -/** Creates a new struct type description. - - @param ppRet inout type description - @param pTypeName name of type - @param pType base type; - @param nMembers number of members - @param pMember array of members - - @since UDK 3.2.0 -*/ -void SAL_CALL typelib_typedescription_newStruct( - typelib_TypeDescription ** ppRet, - rtl_uString * pTypeName, - typelib_TypeDescriptionReference * pType, - sal_Int32 nMembers, - typelib_StructMember_Init * pMembers ) - SAL_THROW_EXTERN_C(); - -/** Creates an interface type description. - - @param ppRet inout interface type description - @param pTypeName the fully qualified name of the interface. - @param nUik1 uik part - @param nUik2 uik part - @param nUik3 uik part - @param nUik4 uik part - @param nUik5 uik part - @param pBaseInterface base interface type, else 0 - @param nMembers number of members - @param ppMembers members; attributes or methods - - @deprecated - use typelib_typedescription_newMIInterface instead -*/ -void SAL_CALL typelib_typedescription_newInterface( - typelib_InterfaceTypeDescription ** ppRet, - rtl_uString * pTypeName, - sal_uInt32 nUik1, sal_uInt16 nUik2, sal_uInt16 nUik3, sal_uInt32 nUik4, sal_uInt32 nUik5, - typelib_TypeDescriptionReference * pBaseInterface, - sal_Int32 nMembers, - typelib_TypeDescriptionReference ** ppMembers ) - SAL_THROW_EXTERN_C(); - -/** Creates a multiple-inheritance interface type description. - - @param ppRet inout interface type description - @param pTypeName the fully qualified name of the interface. - @param nUik1 uik part - @param nUik2 uik part - @param nUik3 uik part - @param nUik4 uik part - @param nUik5 uik part - @param nBaseInterfaces number of base interface types - @param ppBaseInterface base interface types - @param nMembers number of members - @param ppMembers members; attributes or methods - - @since UDK 3.2.0 -*/ -void SAL_CALL typelib_typedescription_newMIInterface( - typelib_InterfaceTypeDescription ** ppRet, - rtl_uString * pTypeName, - sal_uInt32 nUik1, sal_uInt16 nUik2, sal_uInt16 nUik3, sal_uInt32 nUik4, sal_uInt32 nUik5, - sal_Int32 nBaseInterfaces, - typelib_TypeDescriptionReference ** ppBaseInterfaces, - sal_Int32 nMembers, - typelib_TypeDescriptionReference ** ppMembers ) - SAL_THROW_EXTERN_C(); - -/** Creates an interface method type description. - - @param ppRet inout method type description - @param nAbsolutePosition position of member including all members of base interfaces - @param bOneWay determines whether method is declared oneway - @param pTypeName fully qualified name of method including interface name - @param eReturnTypeClass type class of return type - @param pReturnTypeName type name of the return type - @param nParams number of parameters - @param pParams parameter types - @param nExceptions number of exceptions - @param ppExceptionNames type names of exceptions -*/ -void SAL_CALL typelib_typedescription_newInterfaceMethod( - typelib_InterfaceMethodTypeDescription ** ppRet, - sal_Int32 nAbsolutePosition, - sal_Bool bOneWay, - rtl_uString * pMethodName, - typelib_TypeClass eReturnTypeClass, - rtl_uString * pReturnTypeName, - sal_Int32 nParams, - typelib_Parameter_Init * pParams, - sal_Int32 nExceptions, - rtl_uString ** ppExceptionNames ) - SAL_THROW_EXTERN_C(); - -/** Creates an interface attribute type description. - - @param ppRet inout attribute type description - @param nAbsolutePosition position of this attribute including all members of base interfaces - @param pAttributeName fully qualified name of attribute including interface - name - @param eAttributeTypeClass type class of attribute type - @param pAttributeTypeName type name of attribute type - @param bReadOnly determines whether attribute is read-only - - @deprecated - use typelib_typedescription_newExtendedInterfaceAttribute instead -*/ -void SAL_CALL typelib_typedescription_newInterfaceAttribute( - typelib_InterfaceAttributeTypeDescription ** ppRet, - sal_Int32 nAbsolutePosition, - rtl_uString * pAttributeName, - typelib_TypeClass eAttributeTypeClass, - rtl_uString * pAttributeTypeName, - sal_Bool bReadOnly ) - SAL_THROW_EXTERN_C(); - -/** Creates an extended interface attribute type description. - - @param ppRet inout attribute type description - @param nAbsolutePosition position of this attribute including all members of - base interfaces - @param pAttributeName fully qualified name of attribute including interface - name - @param eAttributeTypeClass type class of attribute type - @param pAttributeTypeName type name of attribute type - @param bReadOnly determines whether attribute is read-only - @param nGetExceptions number of getter exceptions - @param ppGetExceptionNames type names of getter exceptions - @param nSetExceptions number of setter exceptions - @param ppSetExceptionNames type names of setter exceptions - - @since UDK 3.2.0 -*/ -void SAL_CALL typelib_typedescription_newExtendedInterfaceAttribute( - typelib_InterfaceAttributeTypeDescription ** ppRet, - sal_Int32 nAbsolutePosition, - rtl_uString * pAttributeName, - typelib_TypeClass eAttributeTypeClass, - rtl_uString * pAttributeTypeName, - sal_Bool bReadOnly, - sal_Int32 nGetExceptions, rtl_uString ** ppGetExceptionNames, - sal_Int32 nSetExceptions, rtl_uString ** ppSetExceptionNames ) - SAL_THROW_EXTERN_C(); - -/** Increments reference count of given type description. - - @param pDesc type description -*/ -void SAL_CALL typelib_typedescription_acquire( - typelib_TypeDescription * pDesc ) - SAL_THROW_EXTERN_C(); - -/** Decrements reference count of given type. If reference count reaches 0, the trype description - is deleted. - - @param pDesc type description -*/ -void SAL_CALL typelib_typedescription_release( - typelib_TypeDescription * pDesc ) - SAL_THROW_EXTERN_C(); - -/** Registers a type description and creates a type description reference. Type descriptions - will be registered automatically if they are provided via the callback chain. - - @param ppNewDescription inout description to be registered; -*/ -void SAL_CALL typelib_typedescription_register( - typelib_TypeDescription ** ppNewDescription ) - SAL_THROW_EXTERN_C(); - -/** Tests whether two types descriptions are equal, i.e. type class and names are equal. - - @param p1 a type description - @param p2 another type description - @return true, if type descriptions are equal -*/ -sal_Bool SAL_CALL typelib_typedescription_equals( - const typelib_TypeDescription * p1, const typelib_TypeDescription * p2 ) - SAL_THROW_EXTERN_C(); - -/** Retrieves a type description via its fully qualified name. - - @param ppRet inout type description; *ppRet is 0, if type description was not found - @param pName name demanded type description -*/ -void SAL_CALL typelib_typedescription_getByName( - typelib_TypeDescription ** ppRet, rtl_uString * pName ) - SAL_THROW_EXTERN_C(); - -/** Sets size of type description cache. - - @param nNewSize new size of cache -*/ -void SAL_CALL typelib_setCacheSize( - sal_Int32 nNewSize ) - SAL_THROW_EXTERN_C(); - -/** Function pointer declaration of callback function get additional descriptions. Callbacks - must provide complete type descriptions (see typelib_typedescription_complete())! - - @param pContext callback context - @param ppRet inout type description - @param pTypeName name of demanded type description -*/ -typedef void (SAL_CALL * typelib_typedescription_Callback)( - void * pContext, typelib_TypeDescription ** ppRet, rtl_uString * pTypeName ); - -/** Registers callback function providing additional type descriptions. - - @param pContext callback context - @param pCallback callback function -*/ -void SAL_CALL typelib_typedescription_registerCallback( - void * pContext, typelib_typedescription_Callback pCallback ) - SAL_THROW_EXTERN_C(); - -/** Revokes a previously registered callback function. - - @param pContext callback context - @param pCallback registered callback function -*/ -void SAL_CALL typelib_typedescription_revokeCallback( - void * pContext, typelib_typedescription_Callback pCallback ) - SAL_THROW_EXTERN_C(); - - -/*----------------------------------------------------------------------------*/ -/*----------------------------------------------------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/** Returns true, if the type description reference may lose the type description. Otherwise - pType is a valid pointer and cannot be discarded through the lifetime of this reference. - Remark: If the pWeakObj of the type is set too, you can avoid the call of - ...getDescription(...) and use the description directly. pWeakObj == 0 means, that the - description is not initialized. - @internal -*/ -#define TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( eTypeClass ) \ - ((eTypeClass) == typelib_TypeClass_INTERFACE_METHOD || \ - (eTypeClass) == typelib_TypeClass_INTERFACE_ATTRIBUTE) - -/** Gets a description from the reference. The description may not be locked by this call. - You must use the TYPELIB_DANGER_RELEASE macro to release the description fetched with - this macro. - @internal -*/ -#define TYPELIB_DANGER_GET( ppDescription, pTypeRef ) \ -{ \ - typelib_TypeDescriptionReference * pMacroTypeRef = (pTypeRef); \ - typelib_TypeDescription ** ppMacroTypeDescr = (ppDescription); \ - if (TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( pMacroTypeRef->eTypeClass )) \ - { \ - typelib_typedescriptionreference_getDescription( ppMacroTypeDescr, pMacroTypeRef ); \ - } \ - else if (!pMacroTypeRef->pType || !pMacroTypeRef->pType->pWeakRef) \ - { \ - typelib_typedescriptionreference_getDescription( ppMacroTypeDescr, pMacroTypeRef ); \ - if (*ppMacroTypeDescr) \ - typelib_typedescription_release( *ppMacroTypeDescr ); \ - } \ - else \ - { \ - *ppMacroTypeDescr = pMacroTypeRef->pType; \ - } \ -} - -/** Releases the description previouse fetched by TYPELIB_DANGER_GET. - @internal -*/ -#define TYPELIB_DANGER_RELEASE( pDescription ) \ -{ \ - if (TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( (pDescription)->eTypeClass )) \ - typelib_typedescription_release( pDescription ); \ -} - -/** Creates a type description reference. This is a weak reference not holding the description. - If the description is already registered, the previous one is returned. - - @param ppTDR inout type description reference - @param eTypeClass type class of type - @param pTypeName name of type -*/ -void SAL_CALL typelib_typedescriptionreference_new( - typelib_TypeDescriptionReference ** ppTDR, - typelib_TypeClass eTypeClass, - rtl_uString * pTypeName ) - SAL_THROW_EXTERN_C(); - -/** Creates a type description reference. This is a weak reference not holding the description. - If the description is already registered, the previous one is returned. - - @param ppTDR inout type description reference - @param eTypeClass type class of type - @param pTypeName ascii name of type -*/ -void SAL_CALL typelib_typedescriptionreference_newByAsciiName( - typelib_TypeDescriptionReference ** ppTDR, - typelib_TypeClass eTypeClass, - const sal_Char * pTypeName ) - SAL_THROW_EXTERN_C(); - -/** Increments reference count of type description reference. - - @param pRef type description reference -*/ -void SAL_CALL typelib_typedescriptionreference_acquire( - typelib_TypeDescriptionReference * pRef ) - SAL_THROW_EXTERN_C(); - -/** Increments reference count of type description reference. If the reference count reaches 0, - then the reference is deleted. - - @param pRef type description reference -*/ -void SAL_CALL typelib_typedescriptionreference_release( - typelib_TypeDescriptionReference * pRef ) - SAL_THROW_EXTERN_C(); - -/** Retrieves the type description for a given reference. If it is not possible to resolve the - reference, null is returned. - - @param ppRet inout type description -*/ -void SAL_CALL typelib_typedescriptionreference_getDescription( - typelib_TypeDescription ** ppRet, typelib_TypeDescriptionReference * pRef ) - SAL_THROW_EXTERN_C(); - -/** Tests whether two types description references are equal, i.e. type class and names are equal. - - @param p1 a type description reference - @param p2 another type description reference - @return true, if type description references are equal -*/ -sal_Bool SAL_CALL typelib_typedescriptionreference_equals( - const typelib_TypeDescriptionReference * p1, const typelib_TypeDescriptionReference * p2 ) - SAL_THROW_EXTERN_C(); - -/** Assigns a type. - - @param ppDest destination type - @param pSource source type -*/ -void SAL_CALL typelib_typedescriptionreference_assign( - typelib_TypeDescriptionReference ** ppDest, - typelib_TypeDescriptionReference * pSource ) - SAL_THROW_EXTERN_C(); - -/** Tests if values of type pAssignable can be assigned by values of type pFrom. This includes - widening conversion (e.g., long assignable from short), as long as there is no data loss. - - @param pAssignable type description of value to be assigned - @param pFrom type description of value -*/ -sal_Bool SAL_CALL typelib_typedescription_isAssignableFrom( - typelib_TypeDescription * pAssignable, - typelib_TypeDescription * pFrom ) - SAL_THROW_EXTERN_C(); - -/** Tests if values of type pAssignable can be assigned by values of type pFrom. This includes - widening conversion (e.g., long assignable from short), as long as there is no data loss. - - @param pAssignable type of value to be assigned - @param pFrom type of value -*/ -sal_Bool SAL_CALL typelib_typedescriptionreference_isAssignableFrom( - typelib_TypeDescriptionReference * pAssignable, - typelib_TypeDescriptionReference * pFrom ) - SAL_THROW_EXTERN_C(); - -/** Gets static type reference of standard types by type class. - ADDITIONAL OPT: provides Type com.sun.star.uno.Exception for typelib_TypeClass_EXCEPTION - and com.sun.star.uno.XInterface for typelib_TypeClass_INTERFACE. - - Thread synchronizes on typelib mutex. - - @param eTypeClass type class of basic type - @return pointer to type reference pointer -*/ -typelib_TypeDescriptionReference ** SAL_CALL typelib_static_type_getByTypeClass( - typelib_TypeClass eTypeClass ) - SAL_THROW_EXTERN_C(); - -/** Inits static type reference. Thread synchronizes on typelib init mutex. - - @param ppRef pointer to type reference pointer - @param eTypeClass type class of type - @param pTypeName ascii name of type -*/ -void SAL_CALL typelib_static_type_init( - typelib_TypeDescriptionReference ** ppRef, - typelib_TypeClass eTypeClass, const sal_Char * pTypeName ) - SAL_THROW_EXTERN_C(); - -/** Inits static sequence type reference. Thread synchronizes on typelib init mutex. - - @param ppRef pointer to type reference pointer - @param pElementType element type of sequence -*/ -void SAL_CALL typelib_static_sequence_type_init( - typelib_TypeDescriptionReference ** ppRef, - 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 -*/ -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 - struct types, not for instantiated polymorphic struct types, the function - typelib_static_struct_type_init should be used instead for all struct types. - - @param ppRef pointer to type reference pointer - @param eTypeClass typelib_TypeClass_STRUCT or typelib_TypeClass_EXCEPTION - @param pTypeName name of type - @param pBaseType base type - @param nMembers number of members - @param ppMembers member types -*/ -void SAL_CALL typelib_static_compound_type_init( - typelib_TypeDescriptionReference ** ppRef, - typelib_TypeClass eTypeClass, const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType, - sal_Int32 nMembers, typelib_TypeDescriptionReference ** ppMembers ) - SAL_THROW_EXTERN_C(); - -/** Inits incomplete static struct type reference. - - Thread synchronizes on typelib init mutex. - - @param ppRef pointer to type reference pointer - @param pTypeName name of type - @param pBaseType base type - @param nMembers number of members - @param ppMembers member types - @param pParameterizedTypes flags for direct members, specifying whether they - are of parameterized type (true) or explict type (false); must be null - for a plain struct type - - @since UDK 3.2.0 -*/ -void SAL_CALL typelib_static_struct_type_init( - typelib_TypeDescriptionReference ** ppRef, const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType, - sal_Int32 nMembers, typelib_TypeDescriptionReference ** ppMembers, - sal_Bool const * pParameterizedTypes ) - SAL_THROW_EXTERN_C(); - -/** Inits incomplete static interface type reference. Thread synchronizes on typelib init mutex. - - @param ppRef pointer to type reference pointer - @param pTypeName name of interface - @param pBaseType base type -*/ -void SAL_CALL typelib_static_interface_type_init( - typelib_TypeDescriptionReference ** ppRef, - const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType ) - SAL_THROW_EXTERN_C(); - -/** Inits incomplete static multiple-inheritance interface type reference. - Thread synchronizes on typelib init mutex. - - @param ppRef pointer to type reference pointer - @param pTypeName name of interface - @param nBaseTypes number of base types - @param ppBaseTypes base types - - @since UDK 3.2.0 -*/ -void SAL_CALL typelib_static_mi_interface_type_init( - typelib_TypeDescriptionReference ** ppRef, - const sal_Char * pTypeName, - sal_Int32 nBaseTypes, - typelib_TypeDescriptionReference ** ppBaseTypes ) - SAL_THROW_EXTERN_C(); - -/** Inits incomplete static enum type reference. Thread synchronizes on typelib init mutex. - - @param ppRef pointer to type reference pointer - @param pTypeName name of enum - @param nDefaultEnumValue default enum value -*/ -void SAL_CALL typelib_static_enum_type_init( - typelib_TypeDescriptionReference ** ppRef, - const sal_Char * pTypeName, - sal_Int32 nDefaultValue ) - SAL_THROW_EXTERN_C(); - -/** Completes a typedescription to be used for, e.g., marshalling values. COMPOUND, UNION, - 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. - - @param ppTypeDescr [inout] type description to be completed (may be exchanged!) - @return true, if type description is complete -*/ -sal_Bool SAL_CALL typelib_typedescription_complete( - typelib_TypeDescription ** ppTypeDescr ) - SAL_THROW_EXTERN_C(); - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/typelib/typedescription.hxx b/cppu/inc/typelib/typedescription.hxx deleted file mode 100644 index 20ce77335..000000000 --- a/cppu/inc/typelib/typedescription.hxx +++ /dev/null @@ -1,227 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _TYPELIB_TYPEDESCRIPTION_HXX_ -#define _TYPELIB_TYPEDESCRIPTION_HXX_ - -#include -#include -#include -#include - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** C++ wrapper for typelib_TypeDescription. - Constructors by name, type, type description reference will get the full type description. - - @see typelib_TypeDescription -*/ -class TypeDescription -{ - /** C typelib type description - */ - mutable typelib_TypeDescription * _pTypeDescr; - -public: - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( size_t nSize ) SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( size_t, void * pMem ) SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW( () ) - {} - - /** Constructor: - - @param pTypeDescr a type description - */ - inline TypeDescription( typelib_TypeDescription * pTypeDescr = 0 ) SAL_THROW( () ); - /** Constructor: - - @param pTypeDescrRef a type description reference - */ - inline TypeDescription( typelib_TypeDescriptionReference * pTypeDescrRef ) SAL_THROW( () ); - /** Constructor: - - @param rType a type - */ - inline TypeDescription( const ::com::sun::star::uno::Type & rType ) SAL_THROW( () ); - /** Copy constructor: - - @param rDescr another TypeDescription - */ - inline TypeDescription( const TypeDescription & rDescr ) SAL_THROW( () ); - /** Constructor: - - @param pTypeName a type name - */ - inline TypeDescription( rtl_uString * pTypeName ) SAL_THROW( () ); - /** Constructor: - - @param rTypeName a type name - */ - inline TypeDescription( const ::rtl::OUString & rTypeName ) SAL_THROW( () ); - /** Destructor: releases type description - */ - inline ~TypeDescription() SAL_THROW( () ); - - /** Assignment operator: acquires given type description and releases a set one. - - @param pTypeDescr another type description - @return this TypeDescription - */ - inline TypeDescription & SAL_CALL operator = ( typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ); - /** Assignment operator: acquires given type description and releases a set one. - - @param rTypeDescr another type description - @return this TypeDescription - */ - inline TypeDescription & SAL_CALL operator =( const TypeDescription & rTypeDescr ) SAL_THROW( () ) - { return this->operator =( rTypeDescr.get() ); } - - /** Tests whether two type descriptions are equal. - - @param pTypeDescr another type description - @return true, if both type descriptions are equal, false otherwise - */ - inline sal_Bool SAL_CALL equals( const typelib_TypeDescription * pTypeDescr ) const SAL_THROW( () ); - /** Tests whether two type descriptions are equal. - - @param rTypeDescr another type description - @return true, if both type descriptions are equal, false otherwise - */ - inline sal_Bool SAL_CALL equals( const TypeDescription & rTypeDescr ) const SAL_THROW( () ) - { return equals( rTypeDescr._pTypeDescr ); } - - /** Makes stored type description complete. - */ - inline void SAL_CALL makeComplete() const SAL_THROW( () ); - - /** Gets the UNacquired type description pointer. - - @return stored pointer of type description - */ - inline typelib_TypeDescription * SAL_CALL get() const SAL_THROW( () ) - { return _pTypeDescr; } - /** Tests if a type description is set. - - @return true, if a type description is set, false otherwise - */ - inline sal_Bool SAL_CALL is() const SAL_THROW( () ) - { return (_pTypeDescr != 0); } -}; -//__________________________________________________________________________________________________ -inline TypeDescription::TypeDescription( typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ) - : _pTypeDescr( pTypeDescr ) -{ - if (_pTypeDescr) - typelib_typedescription_acquire( _pTypeDescr ); -} -//__________________________________________________________________________________________________ -inline TypeDescription::TypeDescription( typelib_TypeDescriptionReference * pTypeDescrRef ) SAL_THROW( () ) - : _pTypeDescr( 0 ) -{ - if (pTypeDescrRef) - typelib_typedescriptionreference_getDescription( &_pTypeDescr, pTypeDescrRef ); -} -//__________________________________________________________________________________________________ -inline TypeDescription::TypeDescription( const ::com::sun::star::uno::Type & rType ) SAL_THROW( () ) - : _pTypeDescr( 0 ) -{ - if (rType.getTypeLibType()) - typelib_typedescriptionreference_getDescription( &_pTypeDescr, rType.getTypeLibType() ); -} -//__________________________________________________________________________________________________ -inline TypeDescription::TypeDescription( const TypeDescription & rTypeDescr ) SAL_THROW( () ) - : _pTypeDescr( rTypeDescr._pTypeDescr ) -{ - if (_pTypeDescr) - typelib_typedescription_acquire( _pTypeDescr ); -} -//__________________________________________________________________________________________________ -inline TypeDescription::TypeDescription( rtl_uString * pTypeName ) SAL_THROW( () ) - : _pTypeDescr( 0 ) -{ - typelib_typedescription_getByName( &_pTypeDescr , pTypeName ); -} -//__________________________________________________________________________________________________ -inline TypeDescription::TypeDescription( const ::rtl::OUString & rTypeName ) SAL_THROW( () ) - : _pTypeDescr( 0 ) -{ - typelib_typedescription_getByName( &_pTypeDescr , rTypeName.pData ); -} -//__________________________________________________________________________________________________ -inline TypeDescription::~TypeDescription() SAL_THROW( () ) -{ - if (_pTypeDescr) - typelib_typedescription_release( _pTypeDescr ); -} -//__________________________________________________________________________________________________ -inline TypeDescription & TypeDescription::operator = ( typelib_TypeDescription * pTypeDescr ) SAL_THROW( () ) -{ - if (pTypeDescr) - typelib_typedescription_acquire( pTypeDescr ); - if (_pTypeDescr) - typelib_typedescription_release( _pTypeDescr ); - _pTypeDescr = pTypeDescr; - return *this; -} -//__________________________________________________________________________________________________ -inline sal_Bool TypeDescription::equals( const typelib_TypeDescription * pTypeDescr ) const SAL_THROW( () ) -{ - return (_pTypeDescr && pTypeDescr && - typelib_typedescription_equals( _pTypeDescr, pTypeDescr )); -} -//__________________________________________________________________________________________________ -inline void TypeDescription::makeComplete() const SAL_THROW( () ) -{ - if (_pTypeDescr && !_pTypeDescr->bComplete) - ::typelib_typedescription_complete( &_pTypeDescr ); -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/typelib/uik.h b/cppu/inc/typelib/uik.h deleted file mode 100644 index 63992ac0a..000000000 --- a/cppu/inc/typelib/uik.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _TYPELIB_UIK_H_ -#define _TYPELIB_UIK_H_ - -#include - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -/** Binary typelib uik struct. Internally not used anymore. -*/ -typedef struct _typelib_Uik -{ - sal_uInt32 m_Data1; - sal_uInt16 m_Data2; - sal_uInt16 m_Data3; - sal_uInt32 m_Data4; - sal_uInt32 m_Data5; -} typelib_Uik; - -#if defined( SAL_W32) -# pragma pack(pop) -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/Enterable.h b/cppu/inc/uno/Enterable.h deleted file mode 100644 index a4258c092..000000000 --- a/cppu/inc/uno/Enterable.h +++ /dev/null @@ -1,115 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_uno_Enterable_h -#define INCLUDED_uno_Enterable_h - -#include "uno/environment.h" - - -#ifdef __cplusplus -extern "C" -{ -#endif - - -/** Generic function type declaration for entering an Environment. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Stack) - - @param context - @since UDK 3.2.7 -*/ -typedef void uno_Enterable_enter (void * context); - - -/** Generic function type declaration for levaing an Environment. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Stack) - - @param context - @since UDK 3.2.7 -*/ -typedef void uno_Enterable_leave (void * context); - - -/** Generic function type declaration for calling into an Environment. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Stack) - - @param context - @param pCallee the function to be called - @param pParam the parameter pointer to be passed to the function - @since UDK 3.2.7 -*/ -typedef void uno_Enterable_callInto_v(void * context, uno_EnvCallee * pCallee, va_list * pParam); - - -/** Generic function type declaration for calling out of an Environment. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Stack) - - @param context - @param pCallee the function to be called - @param pParam the parameter pointer to be passed to the function - @since UDK 3.2.7 -*/ -typedef void uno_Enterable_callOut_v (void * context, uno_EnvCallee * pCallee, va_list * pParam); - - -/** Generic function type declaration for checking if calling on managed object is - valid. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Stack) - - @param context - @param ppReason the reason, in case calling is not valid - @return 0 == calling is not valid, 1 == calling is valid - @since UDK 3.2.7 -*/ -typedef int uno_Enterable_isValid_v (void * context, rtl_uString ** ppReason); - - -/** A struct pReserved needs to point to, if implementing a purpose environment. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Stack) - - @since UDK 3.2.7 -*/ -typedef struct -{ - uno_Enterable_enter * m_enter; - uno_Enterable_leave * m_leave; - uno_Enterable_callInto_v * m_callInto_v; - uno_Enterable_callOut_v * m_callOut_v; - uno_Enterable_isValid_v * m_isValid; -} -uno_Enterable; - - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/EnvDcp.h b/cppu/inc/uno/EnvDcp.h deleted file mode 100644 index 8c4f21016..000000000 --- a/cppu/inc/uno/EnvDcp.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_uno_EnvDcp_h -#define INCLUDED_uno_EnvDcp_h - -#include "rtl/ustring.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** Get the OBI type part of an environment descriptor. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Descriptor) - - @param pEnvDcp the Environment Descriptor - @param ppEnvTypeName the OBI type - @since UDK 3.2.7 -*/ -void uno_EnvDcp_getTypeName(rtl_uString const * pEnvDcp, rtl_uString ** ppEnvTypeName); - - -/** Get the purpose part of an environment descriptor. - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Environment_Descriptor) - - @param pEnvDcp the Environment Descriptor - @param ppEnvPurpose the purpose - @since UDK 3.2.7 -*/ -void uno_EnvDcp_getPurpose (rtl_uString const * pEnvDcp, rtl_uString ** ppEnvPurpose); - - -#ifdef __cplusplus -} -#endif - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/any2.h b/cppu/inc/uno/any2.h deleted file mode 100644 index a770630f2..000000000 --- a/cppu/inc/uno/any2.h +++ /dev/null @@ -1,179 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_ANY2_H_ -#define _UNO_ANY2_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -struct _typelib_TypeDescriptionReference; -struct _typelib_TypeDescription; -struct _uno_Mapping; - -/** This is the binary specification of an UNO any. -*/ -typedef struct _uno_Any -{ - /** type of value - */ - struct _typelib_TypeDescriptionReference * pType; - /** pointer to value; this may point to pReserved and thus the uno_Any is not anytime - mem-copyable! You may have to correct the pData pointer to pReserved. Otherwise you need - not, because the data is stored in heap space. - */ - void * pData; - /** reserved space for storing value - */ - void * pReserved; -} uno_Any; - -#if defined( SAL_W32) -#pragma pack(pop) -#endif - -/** Assign an any with a given value. Interfaces are acquired or released by the given callback - functions. - - @param pDest pointer memory of destination any - @param pSource pointer to source value; defaults (0) to default constructed value - @param pTypeDescr type description of value; defaults (0) to void - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno - @param release function called each time an interface needs to be released; - defaults (0) to uno -*/ -void SAL_CALL uno_any_assign( - uno_Any * pDest, void * pSource, - struct _typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Assign an any with a given value. Interfaces are acquired or released by the given callback - functions. - - @param pDest pointer memory of destination any - @param pSource pointer to source value; defaults (0) to default constructed value - @param pTypeDescr type description of value; defaults (0) to void - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno - @param release function called each time an interface needs to be released; - defaults (0) to uno -*/ -void SAL_CALL uno_type_any_assign( - uno_Any * pDest, void * pSource, - struct _typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Constructs an any with a given value. Interfaces are acquired by the given callback function. - - @param pDest pointer memory of destination any - @param pSource pointer to source value; defaults (0) to default constructed value - @param pTypeDescr type description of value; defaults (0) to void - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno -*/ -void SAL_CALL uno_any_construct( - uno_Any * pDest, void * pSource, - struct _typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C(); -/** Constructs an any with a given value. Interfaces are acquired by the given callback function. - - @param pDest pointer memory of destination any - @param pSource pointer to source value; defaults (0) to default constructed value - @param pType type of value; defaults (0) to void - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno -*/ -void SAL_CALL uno_type_any_construct( - uno_Any * pDest, void * pSource, - struct _typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C(); - -/** Constructs an any with a given value and converts/ maps interfaces. - - @param pDest pointer memory of destination any - @param pSource pointer to source value; defaults (0) to default constructed value - @param pTypeDescr type description of value; defaults (0) to void - @param mapping mapping to convert/ map interfaces -*/ -void SAL_CALL uno_any_constructAndConvert( - uno_Any * pDest, void * pSource, - struct _typelib_TypeDescription * pTypeDescr, - struct _uno_Mapping * mapping ) - SAL_THROW_EXTERN_C(); -/** Constructs an any with a given value and converts/ maps interfaces. - - @param pDest pointer memory of destination any - @param pSource pointer to source value; defaults (0) to default constructed value - @param pType type of value; defaults (0) to void - @param mapping mapping to convert/ map interfaces -*/ -void SAL_CALL uno_type_any_constructAndConvert( - uno_Any * pDest, void * pSource, - struct _typelib_TypeDescriptionReference * pType, - struct _uno_Mapping * mapping ) - SAL_THROW_EXTERN_C(); - -/** Destructs an any. - - @param pValue pointer to any - @param release function called each time an interface needs to be released; - defaults (0) to uno -*/ -void SAL_CALL uno_any_destruct( - uno_Any * pValue, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Sets value to void. - - @param pValue pointer to any - @param release function called each time an interface needs to be released; - defaults (0) to uno -*/ -void SAL_CALL uno_any_clear( - uno_Any * pValue, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/cuno.h b/cppu/inc/uno/cuno.h deleted file mode 100644 index eed81174f..000000000 --- a/cppu/inc/uno/cuno.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_CUNO_H_ -#define _UNO_CUNO_H_ - -#include - -#define CUNO_ERROR_NONE 0 -#define CUNO_ERROR_CALL_FAILED (1 << 31) -#define CUNO_ERROR_EXCEPTION (1 | CUNO_ERROR_CALL_FAILED) - -/** macro to call on a C interface - - @param interface_pointer interface pointer -*/ -#define CUNO_CALL( interface_pointer ) (*interface_pointer) -/** macro to test if an exception was signalled. - - @param return_code return code of call -*/ -#define CUNO_EXCEPTION_OCCURRED( return_code ) (0 != ((return_code) & CUNO_ERROR_EXCEPTION)) - -typedef sal_Int32 cuno_ErrorCode; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/current_context.h b/cppu/inc/uno/current_context.h deleted file mode 100644 index 70d9ae2dd..000000000 --- a/cppu/inc/uno/current_context.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_CURRENT_CONTEXT_H_ -#define _UNO_CURRENT_CONTEXT_H_ - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** Gets the current task's context. - @attention - Don't spread the returned interface around to other threads. Every thread has its own - current context. - - @param ppCurrentContext inout param current context of type com.sun.star.uno.XCurrentContext - @param pEnvDcp descriptor of returned interface's environment - @param pEnvContext context of returned interface's environment (commonly 0) - @return true, if context ref was transferred (even if null ref) -*/ -sal_Bool SAL_CALL uno_getCurrentContext( - void ** ppCurrentContext, - rtl_uString * pEnvDcp, void * pEnvContext ) - SAL_THROW_EXTERN_C(); - -/** Sets the current task's context. - - @param pCurrentContext in param current context of type com.sun.star.uno.XCurrentContext - @param pEnvDcp descriptor of interface's environment - @param pEnvContext context of interface's environment (commonly 0) - @return true, if context ref was transferred (even if null ref) -*/ -sal_Bool SAL_CALL uno_setCurrentContext( - void * pCurrentContext, - rtl_uString * pEnvDcp, void * pEnvContext ) - SAL_THROW_EXTERN_C(); - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/current_context.hxx b/cppu/inc/uno/current_context.hxx deleted file mode 100644 index 0fb001f7b..000000000 --- a/cppu/inc/uno/current_context.hxx +++ /dev/null @@ -1,130 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_CURRENT_CONTEXT_HXX_ -#define _UNO_CURRENT_CONTEXT_HXX_ - -#include - -#include - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** Getting the current context. - @attention - Don't spread the returned interface around to other threads. Every thread has its own - current context. - - @return current context or null ref, if none is set -*/ -inline Reference< XCurrentContext > SAL_CALL getCurrentContext() - SAL_THROW( () ) -{ - Reference< XCurrentContext > xRet; - ::rtl::OUString aEnvTypeName( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ); - ::uno_getCurrentContext( (void **)&xRet, aEnvTypeName.pData, 0 ); - return xRet; -} -/** Setting the current context. - - @param xContext current context to be set - @return true, if context has been successfully set -*/ -inline bool SAL_CALL setCurrentContext( - Reference< XCurrentContext > const & xContext ) - SAL_THROW( () ) -{ - ::rtl::OUString aEnvTypeName( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ); - return (::uno_setCurrentContext( xContext.get(), aEnvTypeName.pData, 0 ) != sal_False); -} - -/** Objects of this class are used for applying a current context until they are destructed, i.e. - the ctor of this class saves the previous and sets the given context while the dtor restores - the previous one upon destruction. -*/ -class ContextLayer -{ - /** this C++ environment type name. - @internal - */ - ::rtl::OUString m_aEnvTypeName; - /** previous context - @internal - */ - Reference< XCurrentContext > m_xPreviousContext; - -public: - /** Constructor: Saves the previous context and sets the new (given) one. - - @param xNewContext new context to be set - */ - inline ContextLayer( - Reference< XCurrentContext > const & xNewContext = Reference< XCurrentContext >() ) - SAL_THROW( () ); - /** Destructor: restores the previous context. - */ - inline ~ContextLayer() SAL_THROW( () ); - - /** Gets the previously set context. - - @return the previously set context - */ - inline Reference< XCurrentContext > SAL_CALL getPreviousContext() const - SAL_THROW( () ) - { return m_xPreviousContext; } -}; -//__________________________________________________________________________________________________ -inline ContextLayer::ContextLayer( Reference< XCurrentContext > const & xNewContext ) - SAL_THROW( () ) - : m_aEnvTypeName( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ) -{ - ::uno_getCurrentContext( (void **)&m_xPreviousContext, m_aEnvTypeName.pData, 0 ); - ::uno_setCurrentContext( xNewContext.get(), m_aEnvTypeName.pData, 0 ); -} -//__________________________________________________________________________________________________ -inline ContextLayer::~ContextLayer() - SAL_THROW( () ) -{ - ::uno_setCurrentContext( m_xPreviousContext.get(), m_aEnvTypeName.pData, 0 ); -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/data.h b/cppu/inc/uno/data.h deleted file mode 100644 index 545affe2d..000000000 --- a/cppu/inc/uno/data.h +++ /dev/null @@ -1,260 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_DATA_H_ -#define _UNO_DATA_H_ - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -struct _typelib_TypeDescriptionReference; -struct _typelib_TypeDescription; -struct _typelib_InterfaceTypeDescription; -struct _uno_Mapping; - -/** Generic function pointer declaration to query for an interface. - - @param pInterface interface - @param pTypedemanded interface type - @return interface pointer -*/ -typedef void * (SAL_CALL * uno_QueryInterfaceFunc)( - void * pInterface, struct _typelib_TypeDescriptionReference * pType ); -/** Generic function pointer declaration to acquire an interface. - - @param pInterface interface to be acquired -*/ -typedef void (SAL_CALL * uno_AcquireFunc)( - void * pInterface ); -/** Generic function pointer declaration to release an interface. - - @param pInterface interface to be release -*/ -typedef void (SAL_CALL * uno_ReleaseFunc)( - void * pInterface ); - -/** Tests if two values are equal. May compare different types (e.g., short to long). - - @param pVal1 pointer to a value - @param pVal1TypeDescr type description of pVal1 - @param pVal2 pointer to another value - @param pVal2TypeDescr type description of pVal2 - @param queryInterface function called each time two interfaces are tested whether they belong - to the same object; defaults (0) to uno - @param release function to release queried interfaces; defaults (0) to uno - @return true if values are equal -*/ -sal_Bool SAL_CALL uno_equalData( - void * pVal1, struct _typelib_TypeDescription * pVal1TypeDescr, - void * pVal2, struct _typelib_TypeDescription * pVal2TypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Tests if two values are equal. May compare different types (e.g., short to long). - - @param pVal1 pointer to a value - @param pVal1Type type of pVal1 - @param pVal2 pointer to another value - @param pVal2Type type of pVal2 - @param queryInterface function called each time two interfaces are tested whether they belong - to the same object; defaults (0) to uno - @param release function to release queried interfaces; defaults (0) to uno - @return true if values are equal -*/ -sal_Bool SAL_CALL uno_type_equalData( - void * pVal1, struct _typelib_TypeDescriptionReference * pVal1Type, - void * pVal2, struct _typelib_TypeDescriptionReference * pVal2Type, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Copy construct memory with given value. The size of the destination value must be larger - or equal to the size of the source value. - - @param pDest pointer to destination value memory - @param pSource pointer to source value - @param pTypeDescr type description of source - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno -*/ -void SAL_CALL uno_copyData( - void * pDest, void * pSource, - struct _typelib_TypeDescription * pTypeDescr, uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C(); -/** Copy construct memory with given value. The size of the destination value must be larger - or equal to the size of the source value. - - @param pDest pointer to destination value memory - @param pSource pointer to source value - @param pType type of source - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno -*/ -void SAL_CALL uno_type_copyData( - void * pDest, void * pSource, - struct _typelib_TypeDescriptionReference * pType, uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C(); - -/** Copy construct memory with given value. The size of the destination value must be larger - or equal to the size of the source value. Interfaces are converted/ mapped by mapping parameter. - - @param pDest pointer to destination value memory - @param pSource pointer to source value - @param pTypeDescr type description of source - @param mapping mapping to convert/ map interfaces -*/ -void SAL_CALL uno_copyAndConvertData( - void * pDest, void * pSource, - struct _typelib_TypeDescription * pTypeDescr, struct _uno_Mapping * mapping ) - SAL_THROW_EXTERN_C(); -/** Copy construct memory with given value. The size of the destination value must be larger - or equal to the size of the source value. Interfaces are converted/ mapped by mapping parameter. - - @param pDest pointer to destination value memory - @param pSource pointer to source value - @param pType type of source - @param mapping mapping to convert/ map interfaces -*/ -void SAL_CALL uno_type_copyAndConvertData( - void * pDest, void * pSource, - struct _typelib_TypeDescriptionReference * pType, struct _uno_Mapping * mapping ) - SAL_THROW_EXTERN_C(); - -/** Destructs a given value; does NOT free its memory! - - @param pValue value to be destructed - @param pTypeDescr type description of value - @param release function called each time an interface pointer needs to be released; - defaults (0) to uno -*/ -void SAL_CALL uno_destructData( - void * pValue, struct _typelib_TypeDescription * pTypeDescr, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Destructs a given value; does NOT free its memory! - - @param pValue value to be destructed - @param pType type of value - @param release function called each time an interface pointer needs to be released; - defaults (0) to uno -*/ -void SAL_CALL uno_type_destructData( - void * pValue, struct _typelib_TypeDescriptionReference * pType, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Default constructs a value. All simple types are set to 0, enums are set to their default value. - - @param pMem pointer to memory of value to be constructed - @param pTypeDescr type description of value to be constructed -*/ -void SAL_CALL uno_constructData( - void * pMem, struct _typelib_TypeDescription * pTypeDescr ) - SAL_THROW_EXTERN_C(); -/** Default constructs a value. All simple types are set to 0, enums are set to their default value. - - @param pMem pointer to memory of value to be constructed - @param pType type of value to be constructed -*/ -void SAL_CALL uno_type_constructData( - void * pMem, struct _typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C(); - -/** Assigns a destination value with a source value. - Widening conversion WITHOUT data loss is allowed (e.g., assigning a long with a short). - Querying for demanded interface type is allowed. - Assignment from any value to a value of type Any and vice versa is allowed. - - @param pDest pointer to destination value - @param pDestTypeDescr type description of destination value - @param pSource pointer to source value; if 0, then destination value will be assigned - to default value - @param pSourceTypeDescr type destination of source value - @param queryInterface function called each time an interface needs to be queried; - defaults (0) to uno - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno - @param release function called each time an interface needs to be released; - defaults (0) to uno - @return true if destination has been successfully assigned -*/ -sal_Bool SAL_CALL uno_assignData( - void * pDest, struct _typelib_TypeDescription * pDestTypeDescr, - void * pSource, struct _typelib_TypeDescription * pSourceTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Assigns a destination value with a source value. - Widening conversion WITHOUT data loss is allowed (e.g., assigning a long with a short). - Querying for demanded interface type is allowed. - Assignment from any value to a value of type Any and vice versa is allowed. - - @param pDest pointer to destination value - @param pDestType type of destination value - @param pSource pointer to source value; if 0, then destination value will be assigned - to default value - @param pSourceType type of source value - @param queryInterface function called each time an interface needs to be queried; - defaults (0) to uno - @param acquire function called each time an interface needs to be acquired; - defaults (0) to uno - @param release function called each time an interface needs to be released; - defaults (0) to uno - @return true if destination has been successfully assigned -*/ -sal_Bool SAL_CALL uno_type_assignData( - void * pDest, struct _typelib_TypeDescriptionReference * pDestType, - void * pSource, struct _typelib_TypeDescriptionReference * pSourceType, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Tests whether a value of given type is assignable from given value. - Widening conversion WITHOUT data loss is allowed (e.g., assigning a long with a short). - Querying for demanded interface type is allowed. - Assignment from any value to a value of type Any and vice versa is allowed. - - @param pAssignable type - @param pFrom pointer to value - @param pFromType type of value - @param queryInterface function called each time an interface needs to be queried; - defaults (0) to uno - @param release function called each time an interface needs to be released; - defaults (0) to uno - @return true if value is destination has been successfully assigned -*/ -sal_Bool SAL_CALL uno_type_isAssignableFromData( - struct _typelib_TypeDescriptionReference * pAssignable, - void * pFrom, struct _typelib_TypeDescriptionReference * pFromType, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/dispatcher.h b/cppu/inc/uno/dispatcher.h deleted file mode 100644 index eefe18196..000000000 --- a/cppu/inc/uno/dispatcher.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_DISPATCHER_H_ -#define _UNO_DISPATCHER_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -struct _typelib_TypeDescription; -struct _uno_Interface; - -/** Function pointer declaration for the binary C uno dispatch function. Any pure out or return - value will be constructed by the callee, iff no exception is signalled. - If an exception is signalled, the any *ppException is properly constructed by the callee, - otherwise the pointer *ppException is set to 0. - An attribute get call is indicated by a non-null return pointer. - - @param pUnoI uno interface the call is performed on - @param pMemberType member type description of a method or attribute - @param pReturn pointer to return value memory; - pointer may be undefined if void method, null if attribute set call. - @param pArgs an array of pointers to arguments values. - (remark: the value of an interface reference stores a - uno_interface *, so you get it by *(uno_Interface **)pArgs[n]) - @param ppException pointer to pointer to unconstructed any to signal an exception. -*/ -typedef void (SAL_CALL * uno_DispatchMethod)( - struct _uno_Interface * pUnoI, - const struct _typelib_TypeDescription * pMemberType, - void * pReturn, - void * pArgs[], - uno_Any ** ppException ); - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -/** The binary C uno interface description. -*/ -typedef struct _uno_Interface -{ - /** Acquires uno interface. - - @param pInterface uno interface - */ - void (SAL_CALL * acquire)( struct _uno_Interface * pInterface ); - /** Releases uno interface. - - @param pInterface uno interface - */ - void (SAL_CALL * release)( struct _uno_Interface * pInterface ); - /** dispatch function - */ - uno_DispatchMethod pDispatcher; -} uno_Interface; - -#if defined( SAL_W32) -#pragma pack(pop) -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/dispatcher.hxx b/cppu/inc/uno/dispatcher.hxx deleted file mode 100644 index 309c9e846..000000000 --- a/cppu/inc/uno/dispatcher.hxx +++ /dev/null @@ -1,177 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#if ! defined INCLUDED_UNO_DISPATCHER_HXX -#define INCLUDED_UNO_DISPATCHER_HXX - -#include "uno/dispatcher.h" - - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** C++ holder reference for binary C uno_Interface. Not for public use, may be - subject to changes. - - @see uno_Interface - @internal - not for public use! -*/ -class UnoInterfaceReference -{ -public: - uno_Interface * m_pUnoI; - - inline bool is() const - { return m_pUnoI != 0; } - - inline ~UnoInterfaceReference(); - inline UnoInterfaceReference(); - inline UnoInterfaceReference( uno_Interface * pUnoI, __sal_NoAcquire ); - inline UnoInterfaceReference( uno_Interface * pUnoI ); - inline UnoInterfaceReference( UnoInterfaceReference const & ref ); - - inline uno_Interface * get() const - { return m_pUnoI; } - - inline UnoInterfaceReference & set( - uno_Interface * pUnoI ); - inline UnoInterfaceReference & set( - uno_Interface * pUnoI, __sal_NoAcquire ); - inline void clear(); - - inline UnoInterfaceReference & operator = ( - UnoInterfaceReference const & ref ) - { return set( ref.m_pUnoI ); } - inline UnoInterfaceReference & operator = ( - uno_Interface * pUnoI ) - { return set( pUnoI ); } - - inline void dispatch( - struct _typelib_TypeDescription const * pMemberType, - void * pReturn, void * pArgs [], uno_Any ** ppException ) const; - -private: - inline bool operator == ( UnoInterfaceReference const & ); // not impl - inline bool operator != ( UnoInterfaceReference const & ); // not impl - inline bool operator == ( uno_Interface * ); // not impl - inline bool operator != ( uno_Interface * ); // not impl -}; - -//______________________________________________________________________________ -inline UnoInterfaceReference::~UnoInterfaceReference() -{ - if (m_pUnoI != 0) - (*m_pUnoI->release)( m_pUnoI ); -} - -//______________________________________________________________________________ -inline UnoInterfaceReference::UnoInterfaceReference() - : m_pUnoI( 0 ) -{ -} - -//______________________________________________________________________________ -inline UnoInterfaceReference::UnoInterfaceReference( - uno_Interface * pUnoI, __sal_NoAcquire ) - : m_pUnoI( pUnoI ) -{ -} - -//______________________________________________________________________________ -inline UnoInterfaceReference::UnoInterfaceReference( uno_Interface * pUnoI ) - : m_pUnoI( pUnoI ) -{ - if (m_pUnoI != 0) - (*m_pUnoI->acquire)( m_pUnoI ); -} - -//______________________________________________________________________________ -inline UnoInterfaceReference::UnoInterfaceReference( - UnoInterfaceReference const & ref ) - : m_pUnoI( ref.m_pUnoI ) -{ - if (m_pUnoI != 0) - (*m_pUnoI->acquire)( m_pUnoI ); -} - -//______________________________________________________________________________ -inline UnoInterfaceReference & UnoInterfaceReference::set( - uno_Interface * pUnoI ) -{ - if (pUnoI != 0) - (*pUnoI->acquire)( pUnoI ); - if (m_pUnoI != 0) - (*m_pUnoI->release)( m_pUnoI ); - m_pUnoI = pUnoI; - return *this; -} - -//______________________________________________________________________________ -inline UnoInterfaceReference & UnoInterfaceReference::set( - uno_Interface * pUnoI, __sal_NoAcquire ) -{ - if (m_pUnoI != 0) - (*m_pUnoI->release)( m_pUnoI ); - m_pUnoI = pUnoI; - return *this; -} - -//______________________________________________________________________________ -inline void UnoInterfaceReference::clear() -{ - if (m_pUnoI != 0) - { - (*m_pUnoI->release)( m_pUnoI ); - m_pUnoI = 0; - } -} - -//______________________________________________________________________________ -inline void UnoInterfaceReference::dispatch( - struct _typelib_TypeDescription const * pMemberType, - void * pReturn, void * pArgs [], uno_Any ** ppException ) const -{ - (*m_pUnoI->pDispatcher)( - m_pUnoI, pMemberType, pReturn, pArgs, ppException ); -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/environment.h b/cppu/inc/uno/environment.h deleted file mode 100644 index e7987936c..000000000 --- a/cppu/inc/uno/environment.h +++ /dev/null @@ -1,386 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_ENVIRONMENT_H_ -#define _UNO_ENVIRONMENT_H_ - -#include -#include - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -struct _uno_ExtEnvironment; -struct _typelib_InterfaceTypeDescription; - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -/** The binary specification of an UNO environment. -*/ -typedef struct _uno_Environment -{ - /** reserved for future use (0 if not used) - */ - void * pReserved; - - /** type name of environment - */ - rtl_uString * pTypeName; - - /** free context pointer to be used for specific classes of environments (e.g., a jvm pointer) - */ - void * pContext; - - /** pointer to extended environment (interface registration functionality), if supported - */ - struct _uno_ExtEnvironment * pExtEnv; - - /** Acquires this environment. - - @param pEnv this environment - */ - void (SAL_CALL * acquire)( struct _uno_Environment * pEnv ); - - /** Releases this environment; last release of environment will revoke the environment from - runtime. - - @param pEnv this environment - */ - void (SAL_CALL * release)( struct _uno_Environment * pEnv ); - - /** Acquires this environment weakly. You can only harden a weakly held environment if it - is still acquired hard (acquire()). - - @param pEnv this environment - */ - void (SAL_CALL * acquireWeak)( struct _uno_Environment * pEnv ); - - /** Releases this environment weakly in correspondence to acquireWeak(). - - @param pEnv this environment - */ - void (SAL_CALL * releaseWeak)( struct _uno_Environment * pEnv ); - - /** Makes hard reference out of weak referenced environment. You can only harden a weakly - held environment if it is still acquired hard (acquire()). - - @param ppHardEnv inout hard referenced environment (has to be released via release()) - @param pEnv environment (may be weak referenced) - */ - void (SAL_CALL * harden)( - struct _uno_Environment ** ppHardEnv, - struct _uno_Environment * pEnv ); - - /** Call this function to EXPLICITLY dispose this environment (e.g., release all - interfaces). You may want to call this function before shutting down due to a runtime error. - - @param pEnv this environment - */ - void (SAL_CALL * dispose)( struct _uno_Environment * pEnv ); - - /* ===== the following part will be late initialized by a matching bridge ===== * - * ===== and is NOT for public use. ===== */ - - /** CALLBACK function pointer: Disposing callback function pointer that can be set to get - signalled before the environment is destroyed. - - @param pEnv environment that is being disposed - */ - void (SAL_CALL * environmentDisposing)( struct _uno_Environment * pEnv ); -} uno_Environment; - -/** Generic function pointer declaration to free a proxy object if it is not needed by the - environment anymore. - Any proxy object must register itself on first acquire() call and revoke itself on last - release() call. This can happen several times because the environment caches proxy objects - until the environment explicitly frees the proxy object calling this function. - - @param pEnv environment - @param pProxy proxy pointer -*/ -typedef void (SAL_CALL * uno_freeProxyFunc)( struct _uno_ExtEnvironment * pEnv, void * pProxy ); - -/** Generic function pointer declaration to allocate memory. Used with getRegisteredInterfaces(). - - @param nBytes amount of memory in bytes - @return pointer to allocated memory -*/ -typedef void * (SAL_CALL * uno_memAlloc)( sal_Size nBytes ); - -/** The binary specification of an UNO environment supporting interface registration. -*/ -typedef struct _uno_ExtEnvironment -{ - /** inherits all members of an uno_Environment - */ - uno_Environment aBase; - - /** Registers an interface of this environment. - - @param pEnv this environment - @param ppInterface inout parameter of interface to be registered - @param pOId object id of interface - @param pTypeDescr type description of interface - */ - void (SAL_CALL * registerInterface)( - struct _uno_ExtEnvironment * pEnv, - void ** ppInterface, - rtl_uString * pOId, - struct _typelib_InterfaceTypeDescription * pTypeDescr ); - - /** Registers a proxy interface of this environment that can be reanimated and is freed - explicitly by this environment. - - @param pEnv this environment - @param ppInterface inout parameter of interface to be registered - @param freeProxy function to free proxy object - @param pOId object id of interface - @param pTypeDescr type description of interface - */ - void (SAL_CALL * registerProxyInterface)( - struct _uno_ExtEnvironment * pEnv, - void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl_uString * pOId, - struct _typelib_InterfaceTypeDescription * pTypeDescr ); - - /** Revokes an interface from this environment. You have to revoke any interface that has - been registered via this method. - - @param pEnv this environment - @param pInterface interface to be revoked - */ - void (SAL_CALL * revokeInterface)( - struct _uno_ExtEnvironment * pEnv, - void * pInterface ); - - /** Provides the object id of a given interface. - - @param ppOut inout oid - @param pInterface interface of object - */ - void (SAL_CALL * getObjectIdentifier)( - struct _uno_ExtEnvironment * pEnv, - rtl_uString ** ppOId, - void * pInterface ); - - /** Retrieves an interface identified by its object id and type from this environment. - Interfaces are retrieved in the same order as they are registered. - - @param pEnv this environment - @param ppInterface inout parameter for the registered interface; (0) if none was found - @param pOId object id of interface to be retrieved - @param pTypeDescr type description of interface to be retrieved - */ - void (SAL_CALL * getRegisteredInterface)( - struct _uno_ExtEnvironment * pEnv, - void ** ppInterface, - rtl_uString * pOId, - struct _typelib_InterfaceTypeDescription * pTypeDescr ); - - /** Returns all currently registered interfaces of this environment. The memory block - allocated might be slightly larger than (*pnLen * sizeof(void *)). - - @param pEnv this environment - @param pppInterfaces out param; pointer to array of interface pointers - @param pnLen out param; length of array - @param memAlloc function for allocating memory that is passed back - */ - void (SAL_CALL * getRegisteredInterfaces)( - struct _uno_ExtEnvironment * pEnv, - void *** pppInterfaces, - sal_Int32 * pnLen, - uno_memAlloc memAlloc ); - - /* ===== the following part will be late initialized by a matching bridge ===== */ - - /** Computes an object id of the given interface; is called by the environment implementation. - - @param pEnv corresponding environment - @param ppOId out param: computed id - @param pInterface an interface - */ - void (SAL_CALL * computeObjectIdentifier)( - struct _uno_ExtEnvironment * pEnv, - rtl_uString ** ppOId, void * pInterface ); - - /** Function to acquire an interface. - - @param pEnv corresponding environment - @param pInterface an interface - */ - void (SAL_CALL * acquireInterface)( - struct _uno_ExtEnvironment * pEnv, - void * pInterface ); - - /** Function to release an interface. - - @param pEnv corresponding environment - @param pInterface an interface - */ - void (SAL_CALL * releaseInterface)( - struct _uno_ExtEnvironment * pEnv, - void * pInterface ); - -} uno_ExtEnvironment; - -#if defined( SAL_W32) -#pragma pack(pop) -#endif - -/** Function exported by some bridge library providing acquireInterface(), releaseInterface(); - may set a disposing callback. - - @param pEnv environment to be initialized -*/ -typedef void (SAL_CALL * uno_initEnvironmentFunc)( uno_Environment * pEnv ); -#define UNO_INIT_ENVIRONMENT "uno_initEnvironment" - -/** Gets a specific environment. If the specified environment does not exist, then a default one - is created and registered. The environment revokes itself on last release() call. - - @param ppEnv inout parameter of environment; given environment will be released - @param pEnvDcp descriptor of environment - @param pContext some context pointer (e.g., to distinguish java vm; set 0 if not needed) -*/ -void SAL_CALL uno_getEnvironment( - uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext ) - SAL_THROW_EXTERN_C(); - -/** Gets all specified environments. Caller has to release returned environments and free allocated - memory. - - @param pppEnvs out param; pointer to array of environments - @param pnLen out param; length of array - @param memAlloc function for allocating memory that is passed back - @param pEnvDcp descriptor of environments; 0 defaults to all -*/ -void SAL_CALL uno_getRegisteredEnvironments( - uno_Environment *** pppEnvs, sal_Int32 * pnLen, uno_memAlloc memAlloc, - rtl_uString * pEnvDcp ) - SAL_THROW_EXTERN_C(); - -/** Creates an environment. The new environment is anonymous (NOT publicly registered/ accessible). - - @param ppEnv out parameter of environment; given environment will be released - @param pEnvDcp descriptor of environment - @param pContext context pointer (e.g., to distinguish java vm); set 0 if not needed -*/ -void SAL_CALL uno_createEnvironment( - uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext ) - SAL_THROW_EXTERN_C(); - -/** Dumps out environment information, i.e. registered interfaces. - - @param stream output stream (FILE *) - @param pEnv environment to be dumped - @param pFilter if not null, filters output -*/ -void SAL_CALL uno_dumpEnvironment( - void * stream, uno_Environment * pEnv, const sal_Char * pFilter ) - SAL_THROW_EXTERN_C(); -/** Dumps out environment information, i.e. registered interfaces. - - @param stream output stream (FILE *) - @param pEnvDcp descritpro of environment to be dumped - @param pFilter if not null, filters output -*/ -void SAL_CALL uno_dumpEnvironmentByName( - void * stream, rtl_uString * pEnvDcp, const sal_Char * pFilter ) - SAL_THROW_EXTERN_C(); - - - -/** Returns the current Environment. - In case no Environment has explicitly been entered, a purpose free - default environment gets returned (e.g. the "uno" or "gcc3" Environment). - - @param ppEnv inout parameter; a given environment will be released - @param pTypeName the optional type of the environment, falls back to "uno" - @since UDK 3.2.7 -*/ -void SAL_CALL uno_getCurrentEnvironment(uno_Environment ** ppEnv, rtl_uString * pTypeName) - SAL_THROW_EXTERN_C(); - -/** Typedef for variable argument function. - */ -typedef void SAL_CALL uno_EnvCallee(va_list * pParam); - -/** Invoke the passed function in the given environment. - - @param pEnv the target environment - @param pCallee the function to call - @param pParam the parameter pointer passed to the function - @since UDK 3.2.7 - */ -void SAL_CALL uno_Environment_invoke_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list * pParam) - SAL_THROW_EXTERN_C(); - -/** Invoke the passed function in the given environment. - - @param pEnv the target environment - @param pCallee the function to call - @param ... the parameters passed to the function - @since UDK 3.2.7 -*/ -void SAL_CALL uno_Environment_invoke (uno_Environment * pEnv, uno_EnvCallee * pCallee, ...) - SAL_THROW_EXTERN_C(); - -/** Enter an environment explicitly. - - @param pEnv the environment to enter; NULL leaves all environments - @since UDK 3.2.7 -*/ -void SAL_CALL uno_Environment_enter(uno_Environment * pEnv) - SAL_THROW_EXTERN_C(); - -/** Check if a particular environment is currently valid, so - that objects of that environment might be called. - - @param pEnv the environment - @param rtl_uString ** pReason the reason, if it is not valid - @return 1 == valid, 0 == invalid - @since UDK 3.2.7 -*/ -int SAL_CALL uno_Environment_isValid(uno_Environment * pEnv, rtl_uString ** pReason) - SAL_THROW_EXTERN_C(); - - - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/environment.hxx b/cppu/inc/uno/environment.hxx deleted file mode 100644 index 41c843542..000000000 --- a/cppu/inc/uno/environment.hxx +++ /dev/null @@ -1,281 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_ENVIRONMENT_HXX_ -#define _UNO_ENVIRONMENT_HXX_ - -#include -#include -#include - -#include "uno/lbnames.h" - -/** */ //for docpp -namespace com -{ -/** */ //for docpp -namespace sun -{ -/** */ //for docpp -namespace star -{ -/** */ //for docpp -namespace uno -{ - -/** C++ wrapper for binary C uno_Environment. - - @see uno_Environment -*/ -class Environment -{ - /** binary C uno_Environment - */ - uno_Environment * _pEnv; - -public: - /** Returns the current Environment. - - @param env_type the optional type of the Environment, falls back to "uno" in case being empty, - respectively to current C++ Environment. - @since UDK 3.2.7 - */ - inline static Environment getCurrent(rtl::OUString const & typeName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(CPPU_STRINGIFY(CPPU_ENV)))) SAL_THROW( () ); - - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( size_t nSize ) SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( size_t, void * pMem ) SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW( () ) - {} - - /** Constructor: acquires given environment - - @param pEnv environment - */ - inline Environment( uno_Environment * pEnv = 0 ) SAL_THROW( () ); - - /** Gets a specific environment. If the specified environment does not exist, then a default one - is created and registered. - - @param envDcp descriptor of the environment - @param pContext context pointer - */ - inline explicit Environment( rtl::OUString const & envDcp, void * pContext = NULL ) SAL_THROW( () ); - - - /** Copy constructor: acquires given environment - - @param rEnv another environment - */ - inline Environment( const Environment & rEnv ) SAL_THROW( () ); - - /** Destructor: releases a set environment. - */ - inline ~Environment() SAL_THROW( () ); - - /** Sets a given environment, i.e. acquires given one and releases a set one. - - @param pEnv another environment - @return this environment - */ - inline Environment & SAL_CALL operator = ( uno_Environment * pEnv ) SAL_THROW( () ); - /** Sets a given environment, i.e. acquires given one and releases a set one. - - @param rEnv another environment - @return this environment - */ - inline Environment & SAL_CALL operator = ( const Environment & rEnv ) SAL_THROW( () ) - { return operator = ( rEnv._pEnv ); } - - /** Provides UNacquired pointer to the set C environment. - - @return UNacquired pointer to the C environment struct - */ - inline uno_Environment * SAL_CALL get() const SAL_THROW( () ) - { return _pEnv; } - - /** Gets type name of set environment. - - @return type name of set environment - */ - inline ::rtl::OUString SAL_CALL getTypeName() const SAL_THROW( () ) - { return _pEnv->pTypeName; } - - /** Gets free context pointer of set environment. - - @return free context pointer of set environment - */ - inline void * SAL_CALL getContext() const SAL_THROW( () ) - { return _pEnv->pContext; } - - /** Tests if a environment is set. - - @return true, if a environment is set, false otherwise - */ - inline sal_Bool SAL_CALL is() const SAL_THROW( () ) - { return (_pEnv != 0); } - - /** Releases a set environment. - */ - inline void SAL_CALL clear() SAL_THROW( () ); - - /** Invoke the passed function in this environment. - - @param pCallee the function to call - @param pParam the parameter pointer to be passed to the function - @since UDK 3.2.7 - */ - inline void SAL_CALL invoke_v(uno_EnvCallee * pCallee, va_list * pParam) const SAL_THROW( () ); - - /** Invoke the passed function in this environment. - - @param pCallee the function to call - @param ... the parameters to be passed to the function - @since UDK 3.2.7 - */ - inline void SAL_CALL invoke(uno_EnvCallee * pCallee, ...) const SAL_THROW( () ); - - /** Enter this environment explicitly. - - @since UDK 3.2.7 - */ - inline void SAL_CALL enter() const SAL_THROW( () ); - - /** Checks, if it is valid to currently call objects - belonging to this environment. - - @since UDK 3.2.7 - */ - inline int SAL_CALL isValid(rtl::OUString * pReason) const SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -inline Environment::Environment( uno_Environment * pEnv ) SAL_THROW( () ) - : _pEnv( pEnv ) -{ - if (_pEnv) - (*_pEnv->acquire)( _pEnv ); -} -//__________________________________________________________________________________________________ -inline Environment::Environment( rtl::OUString const & rEnvDcp, void * pContext ) SAL_THROW( () ) - : _pEnv(NULL) -{ - uno_getEnvironment(&_pEnv, rEnvDcp.pData, pContext); -} -//__________________________________________________________________________________________________ -inline Environment::Environment( const Environment & rEnv ) SAL_THROW( () ) - : _pEnv( rEnv._pEnv ) -{ - if (_pEnv) - (*_pEnv->acquire)( _pEnv ); -} -//__________________________________________________________________________________________________ -inline Environment::~Environment() SAL_THROW( () ) -{ - if (_pEnv) - (*_pEnv->release)( _pEnv ); -} -//__________________________________________________________________________________________________ -inline void Environment::clear() SAL_THROW( () ) -{ - if (_pEnv) - { - (*_pEnv->release)( _pEnv ); - _pEnv = 0; - } -} -//__________________________________________________________________________________________________ -inline Environment & Environment::operator = ( uno_Environment * pEnv ) SAL_THROW( () ) -{ - if (pEnv != _pEnv) - { - if (pEnv) - (*pEnv->acquire)( pEnv ); - if (_pEnv) - (*_pEnv->release)( _pEnv ); - _pEnv = pEnv; - } - return *this; -} -//__________________________________________________________________________________________________ -inline void SAL_CALL Environment::invoke_v(uno_EnvCallee * pCallee, va_list * pParam) const SAL_THROW( () ) -{ - if (_pEnv) - uno_Environment_invoke_v(_pEnv, pCallee, pParam); -} -//__________________________________________________________________________________________________ -inline void SAL_CALL Environment::invoke(uno_EnvCallee * pCallee, ...) const SAL_THROW( () ) -{ - if (_pEnv) - { - va_list param; - - va_start(param, pCallee); - uno_Environment_invoke_v(_pEnv, pCallee, ¶m); - va_end(param); - } - -} -//__________________________________________________________________________________________________ -inline void SAL_CALL Environment::enter() const SAL_THROW( () ) -{ - uno_Environment_enter(_pEnv); -} -//__________________________________________________________________________________________________ -inline int SAL_CALL Environment::isValid(rtl::OUString * pReason) const SAL_THROW( () ) -{ - return uno_Environment_isValid(_pEnv, (rtl_uString **)pReason); -} -//__________________________________________________________________________________________________ -inline Environment Environment::getCurrent(rtl::OUString const & typeName) SAL_THROW( () ) -{ - Environment environment; - - uno_Environment * pEnv = NULL; - uno_getCurrentEnvironment(&pEnv, typeName.pData); - environment = pEnv; - if (pEnv) - pEnv->release(pEnv); - - return environment; -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/lbnames.h b/cppu/inc/uno/lbnames.h deleted file mode 100644 index 34943dc9d..000000000 --- a/cppu/inc/uno/lbnames.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_LBNAMES_H_ -#define _UNO_LBNAMES_H_ - -#ifdef __cplusplus - -#ifdef CPPU_ENV - -#define CPPU_STRINGIFY_EX( x ) #x -#define CPPU_STRINGIFY( x ) CPPU_STRINGIFY_EX( x ) - -/** Name for C++ compiler/ platform, e.g. "gcc3", "msci" */ -#define CPPU_CURRENT_LANGUAGE_BINDING_NAME CPPU_STRINGIFY( CPPU_ENV ) - -#else - -#error "No supported C++ compiler environment." -provoking error here, because PP ignores #error - -#endif /* CPPU_ENV */ - -#endif /* __cplusplus */ - -/** Environment type name for binary C UNO. */ -#define UNO_LB_UNO "uno" -/** Environment type name for ANSI C compilers. */ -#define UNO_LB_C "c" -/** Environment type name for Java 1.3.1 compatible virtual machine. */ -#define UNO_LB_JAVA "java" -/** Environment type name for CLI (Common Language Infrastructure). */ -#define UNO_LB_CLI "cli" - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/mapping.h b/cppu/inc/uno/mapping.h deleted file mode 100644 index 1a342b574..000000000 --- a/cppu/inc/uno/mapping.h +++ /dev/null @@ -1,204 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_MAPPING_H_ -#define _UNO_MAPPING_H_ - -#include -#include - - -#ifdef __cplusplus -extern "C" -{ -#endif - -struct _typelib_InterfaceTypeDescription; -struct _uno_Mapping; -struct _uno_Environment; - -/** - Function pointer declaration to acquire a UNO mapping. -*/ -typedef void (SAL_CALL * uno_AcquireMappingFunc)(struct _uno_Mapping *); - -/** - Function pointer declaration to release a UNO mapping. -*/ -typedef void (SAL_CALL * uno_ReleaseMappingFunc)(struct _uno_Mapping *); - -/** Function pointer declaration to map an interface from one environment to another. - - @param pMapping mapping - @param ppOut [inout] destination interface; existing interfaces are released - @param pInterface source interface - @param pInterfaceTypeDescr type description of the interface -*/ -typedef void (SAL_CALL * uno_MapInterfaceFunc)( - struct _uno_Mapping * pMapping, - void ** ppOut, void * pInterface, - struct _typelib_InterfaceTypeDescription * pInterfaceTypeDescr ); - - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -/** This is the binary specification of a mapping. -*/ -typedef struct _uno_Mapping -{ - /** Acquires mapping - */ - uno_AcquireMappingFunc acquire; - - /** Releases mapping. The last release may unload bridges. - */ - uno_ReleaseMappingFunc release; - - /** mapping function - */ - uno_MapInterfaceFunc mapInterface; -} uno_Mapping; - -#if defined( SAL_W32) -#pragma pack(pop) -#endif - -/** Gets an interface mapping from one environment to another. - - @param ppMapping [inout] mapping; existing mapping will be released - @param pFrom source environment - @param pTo destination environment - (interfaces resulting in mapInterface() call can be used - in this language environment) - @param pAddPurpose additional purpose of mapping (e.g., protocolling); defaults to 0 (none) -*/ -void SAL_CALL uno_getMapping( - struct _uno_Mapping ** ppMapping, - struct _uno_Environment * pFrom, - struct _uno_Environment * pTo, - rtl_uString * pAddPurpose ) - SAL_THROW_EXTERN_C(); - -/** Callback function pointer declaration to get a mapping. - - @param ppMapping inout mapping - @param pFrom source environment - @param pTo destination environment - @param pAddPurpose additional purpose -*/ -typedef void (SAL_CALL * uno_getMappingFunc)( - struct _uno_Mapping ** ppMapping, - struct _uno_Environment * pFrom, - struct _uno_Environment * pTo, - rtl_uString * pAddPurpose ); - -/** Registers a callback being called each time a mapping is demanded. - - @param pCallback callback function -*/ -void SAL_CALL uno_registerMappingCallback( - uno_getMappingFunc pCallback ) - SAL_THROW_EXTERN_C(); - -/** Revokes a mapping callback registration. - - @param pCallback callback function -*/ -void SAL_CALL uno_revokeMappingCallback( - uno_getMappingFunc pCallback ) - SAL_THROW_EXTERN_C(); - -/** Function pointer declaration to free a mapping. - - @param pMapping mapping to be freed -*/ -typedef void (SAL_CALL * uno_freeMappingFunc)( struct _uno_Mapping * pMapping ); - -/** Registers a mapping. A mapping registers itself on first acquire and revokes itself on last - release. The given freeMapping function is called by the runtime to cleanup any resources. - - @param ppMapping inout mapping to be registered - @param freeMapping called by runtime to delete mapping - @param pFrom source environment - @param pTo destination environment - @param pAddPurpose additional purpose string; defaults to 0 -*/ -void SAL_CALL uno_registerMapping( - struct _uno_Mapping ** ppMapping, uno_freeMappingFunc freeMapping, - struct _uno_Environment * pFrom, struct _uno_Environment * pTo, rtl_uString * pAddPurpose ) - SAL_THROW_EXTERN_C(); - -/** Revokes a mapping. A mapping registers itself on first acquire and revokes itself on last - release. - - @param pMapping mapping to be revoked -*/ -void SAL_CALL uno_revokeMapping( - struct _uno_Mapping * pMapping ) - SAL_THROW_EXTERN_C(); - -/** Gets an interface mapping from one language environment to another by corresponding environment - type names. - - @param ppMapping [inout] mapping; existing mapping will be released - @param pFrom source environment type name - @param pTo destination environment type name - (interfaces resulting in mapInterface() call can be used - in this language environment) - @param pAddPurpose additional purpose of mapping (e.g., protocolling); defaults to 0 (none) -*/ -void SAL_CALL uno_getMappingByName( - struct _uno_Mapping ** ppMapping, - rtl_uString * pFrom, - rtl_uString * pTo, - rtl_uString * pAddPurpose ) - SAL_THROW_EXTERN_C(); - -/* symbol exported by each language binding library */ -#define UNO_EXT_GETMAPPING "uno_ext_getMapping" - -/** Function pointer declaration to get a mapping from a loaded bridge. Bridges export a function - called uno_ext_getMapping() of this signature. - - @param ppMapping [inout] mapping; existing mapping will be released - @pFrom source environment - @pTo destination environment -*/ -typedef void (SAL_CALL * uno_ext_getMappingFunc)( - struct _uno_Mapping ** ppMapping, - struct _uno_Environment * pFrom, - struct _uno_Environment * pTo ); - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/mapping.hxx b/cppu/inc/uno/mapping.hxx deleted file mode 100644 index 73223fe87..000000000 --- a/cppu/inc/uno/mapping.hxx +++ /dev/null @@ -1,357 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_MAPPING_HXX_ -#define _UNO_MAPPING_HXX_ - -#include -#include -#include -#include -#include -#include -#include "cppu/unotype.hxx" -#include "uno/environment.hxx" - -typedef struct _typelib_TypeDescription typelib_TypeDescription; -typedef struct _typelib_InterfaceTypeDescription typelib_InterfaceTypeDescription; -typedef struct _uno_Interface uno_Interface; - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ - -/** C++ wrapper for C uno_Mapping. - - @see uno_Mapping -*/ -class Mapping -{ - uno_Mapping * _pMapping; - -public: - // these are here to force memory de/allocation to sal lib. - /** @internal */ - inline static void * SAL_CALL operator new ( size_t nSize ) SAL_THROW( () ) - { return ::rtl_allocateMemory( nSize ); } - /** @internal */ - inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW( () ) - { ::rtl_freeMemory( pMem ); } - /** @internal */ - inline static void * SAL_CALL operator new ( size_t, void * pMem ) SAL_THROW( () ) - { return pMem; } - /** @internal */ - inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW( () ) - {} - - /** Holds a mapping from the specified source to the specified destination by environment - type names. - - @param rFrom type name of source environment - @param rTo type name of destination environment - @param rAddPurpose additional purpose - */ - inline Mapping( - const ::rtl::OUString & rFrom, const ::rtl::OUString & rTo, - const ::rtl::OUString & rAddPurpose = ::rtl::OUString() ) - SAL_THROW( () ); - - /** Holds a mapping from the specified source to the specified destination. - - @param pFrom source environment - @param pTo destination environment - @param rAddPurpose additional purpose - */ - inline Mapping( - uno_Environment * pFrom, uno_Environment * pTo, - const ::rtl::OUString & rAddPurpose = ::rtl::OUString() ) - SAL_THROW( () ); - - /** Holds a mapping from the specified source to the specified destination - environment. - - @param from source environment - @param to destination environment - @param rAddPurpose additional purpose - */ - inline Mapping(const Environment & rFrom, const Environment & rTo, - const ::rtl::OUString & rAddPurpose = ::rtl::OUString() ) - SAL_THROW( () ); - - /** Constructor. - - @param pMapping another mapping - */ - inline Mapping( uno_Mapping * pMapping = 0 ) SAL_THROW( () ); - - /** Copy constructor. - - @param rMapping another mapping - */ - inline Mapping( const Mapping & rMapping ) SAL_THROW( () ); - - /** Destructor. - */ - inline ~Mapping() SAL_THROW( () ); - - /** Sets a given mapping. - - @param pMapping another mapping - @return this mapping - */ - inline Mapping & SAL_CALL operator = ( uno_Mapping * pMapping ) SAL_THROW( () ); - /** Sets a given mapping. - - @param rMapping another mapping - @return this mapping - */ - inline Mapping & SAL_CALL operator = ( const Mapping & rMapping ) SAL_THROW( () ) - { return operator = ( rMapping._pMapping ); } - - /** Provides a pointer to the C mapping. The returned mapping is NOT acquired! - - @return UNacquired C mapping - */ - inline uno_Mapping * SAL_CALL get() const SAL_THROW( () ) - { return _pMapping; } - - /** Tests if a mapping is set. - - @return true if a mapping is set - */ - inline sal_Bool SAL_CALL is() const SAL_THROW( () ) - { return (_pMapping != 0); } - - /** Releases a set mapping. - */ - inline void SAL_CALL clear() SAL_THROW( () ); - - /** Maps an interface from one environment to another. - - @param pInterface source interface - @param pTypeDescr type description of interface - @return mapped interface - */ - inline void * SAL_CALL mapInterface( void * pInterface, typelib_InterfaceTypeDescription * pTypeDescr ) const SAL_THROW( () ); - /** Maps an interface from one environment to another. - - @param pInterface source interface - @param pTypeDescr type description of interface - @return mapped interface - */ - inline void * SAL_CALL mapInterface( void * pInterface, typelib_TypeDescription * pTypeDescr ) const SAL_THROW( () ) - { return mapInterface( pInterface, (typelib_InterfaceTypeDescription *)pTypeDescr ); } - - /** Maps an interface from one environment to another. - - @param pInterface source interface - @param rType type of interface - @return mapped interface - */ - inline void * SAL_CALL mapInterface( - void * pInterface, const ::com::sun::star::uno::Type & rType ) const SAL_THROW( () ); - - /** Maps an interface from one environment to another. - - @param ppOut inout mapped interface - @param pInterface source interface - @param pTypeDescr type description of interface - */ - inline void SAL_CALL mapInterface( void ** ppOut, void * pInterface, typelib_InterfaceTypeDescription * pTypeDescr ) const SAL_THROW( () ) - { (*_pMapping->mapInterface)( _pMapping, ppOut, pInterface, pTypeDescr ); } - /** Maps an interface from one environment to another. - - @param ppOut inout mapped interface - @param pInterface source interface - @param pTypeDescr type description of interface - */ - inline void SAL_CALL mapInterface( void ** ppOut, void * pInterface, typelib_TypeDescription * pTypeDescr ) const SAL_THROW( () ) - { (*_pMapping->mapInterface)( _pMapping, ppOut, pInterface, (typelib_InterfaceTypeDescription *)pTypeDescr ); } - - /** Maps an interface from one environment to another. - - @param ppOut inout mapped interface - @param pInterface source interface - @param rType type of interface to be mapped - */ - inline void SAL_CALL mapInterface( void ** ppOut, void * pInterface, const ::com::sun::star::uno::Type & rType ) const SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -inline Mapping::Mapping( - const ::rtl::OUString & rFrom, const ::rtl::OUString & rTo, const ::rtl::OUString & rAddPurpose ) - SAL_THROW( () ) - : _pMapping( 0 ) -{ - uno_getMappingByName( &_pMapping, rFrom.pData, rTo.pData, rAddPurpose.pData ); -} -//__________________________________________________________________________________________________ -inline Mapping::Mapping( - uno_Environment * pFrom, uno_Environment * pTo, const ::rtl::OUString & rAddPurpose ) - SAL_THROW( () ) - : _pMapping( 0 ) -{ - uno_getMapping( &_pMapping, pFrom, pTo, rAddPurpose.pData ); -} -//__________________________________________________________________________________________________ -inline Mapping::Mapping( - const Environment & rFrom, const Environment & rTo, const ::rtl::OUString & rAddPurpose ) - SAL_THROW( () ) - : _pMapping(0) -{ - uno_getMapping( &_pMapping, rFrom.get(), rTo.get(), rAddPurpose.pData ); -} -//__________________________________________________________________________________________________ -inline Mapping::Mapping( uno_Mapping * pMapping ) SAL_THROW( () ) - : _pMapping( pMapping ) -{ - if (_pMapping) - (*_pMapping->acquire)( _pMapping ); -} -//__________________________________________________________________________________________________ -inline Mapping::Mapping( const Mapping & rMapping ) SAL_THROW( () ) - : _pMapping( rMapping._pMapping ) -{ - if (_pMapping) - (*_pMapping->acquire)( _pMapping ); -} -//__________________________________________________________________________________________________ -inline Mapping::~Mapping() SAL_THROW( () ) -{ - if (_pMapping) - (*_pMapping->release)( _pMapping ); -} -//__________________________________________________________________________________________________ -inline void Mapping::clear() SAL_THROW( () ) -{ - if (_pMapping) - { - (*_pMapping->release)( _pMapping ); - _pMapping = 0; - } -} -//__________________________________________________________________________________________________ -inline Mapping & Mapping::operator = ( uno_Mapping * pMapping ) SAL_THROW( () ) -{ - if (pMapping) - (*pMapping->acquire)( pMapping ); - if (_pMapping) - (*_pMapping->release)( _pMapping ); - _pMapping = pMapping; - return *this; -} -//__________________________________________________________________________________________________ -inline void Mapping::mapInterface( - void ** ppOut, void * pInterface, const ::com::sun::star::uno::Type & rType ) const - SAL_THROW( () ) -{ - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, rType.getTypeLibType() ); - if (pTD) - { - (*_pMapping->mapInterface)( _pMapping, ppOut, pInterface, (typelib_InterfaceTypeDescription *)pTD ); - TYPELIB_DANGER_RELEASE( pTD ); - } -} -//__________________________________________________________________________________________________ -inline void * Mapping::mapInterface( - void * pInterface, typelib_InterfaceTypeDescription * pTypeDescr ) const - SAL_THROW( () ) -{ - void * pOut = 0; - (*_pMapping->mapInterface)( _pMapping, &pOut, pInterface, pTypeDescr ); - return pOut; -} -//__________________________________________________________________________________________________ -inline void * Mapping::mapInterface( - void * pInterface, const ::com::sun::star::uno::Type & rType ) const - SAL_THROW( () ) -{ - void * pOut = 0; - mapInterface( &pOut, pInterface, rType ); - return pOut; -} - -/** Deprecated. This function DOES NOT WORK with Purpose Environments - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Purpose Environments) - - Maps an binary C UNO interface to be used in the currently used compiler environment. - - @tplparam C interface type - @param ppRet inout returned interface pointer - @param pUnoI binary C UNO interface - @return true if successful, false otherwise - - @deprecated -*/ -template< class C > -inline sal_Bool mapToCpp( Reference< C > * ppRet, uno_Interface * pUnoI ) SAL_THROW( () ) -{ - Mapping aMapping( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ) ); - OSL_ASSERT( aMapping.is() ); - aMapping.mapInterface( - (void **)ppRet, pUnoI, ::cppu::getTypeFavourUnsigned( ppRet ) ); - return (0 != *ppRet); -} -/** Deprecated. This function DOES NOT WORK with Purpose Environments - (http://wiki.services.openoffice.org/wiki/Uno/Binary/Spec/Purpose Environments) - - Maps an UNO interface of the currently used compiler environment to binary C UNO. - - @tplparam C interface type - @param ppRet inout returned interface pointer - @param x interface reference - @return true if successful, false otherwise - - @deprecated -*/ -template< class C > -inline sal_Bool mapToUno( uno_Interface ** ppRet, const Reference< C > & x ) SAL_THROW( () ) -{ - Mapping aMapping( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ), - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ) ); - OSL_ASSERT( aMapping.is() ); - aMapping.mapInterface( - (void **)ppRet, x.get(), ::cppu::getTypeFavourUnsigned( &x ) ); - return (0 != *ppRet); -} - -} -} -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/sequence2.h b/cppu/inc/uno/sequence2.h deleted file mode 100644 index 16a949eea..000000000 --- a/cppu/inc/uno/sequence2.h +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNO_SEQUENCE2_H_ -#define _UNO_SEQUENCE2_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -struct _typelib_TypeDescriptionReference; -struct _typelib_TypeDescription; -typedef sal_Sequence uno_Sequence; - -/** Assigns a sequence. - - @param ppDest destinstaion sequence - @param pSource source sequence - @param pTypeDescr type description of the sequence and NOT of an element - @param release function called each time an interface needs to - be released; defaults (0) to uno -*/ -void SAL_CALL uno_sequence_assign( - uno_Sequence ** ppDest, - uno_Sequence * pSource, - struct _typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Assigns a sequence. - - @param ppDest destinstaion sequence - @param pSource source sequence - @param pType type of the sequence and NOT of an element - @param release function called each time an interface needs to - be released; defaults (0) to uno -*/ -void SAL_CALL uno_type_sequence_assign( - uno_Sequence ** ppDest, - uno_Sequence * pSource, - struct _typelib_TypeDescriptionReference * pType, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Constructs a new sequence with given elements. - - @param ppSequence out parameter sequence; - 0 if memory allocation has failed - @param pTypeDescr type description of the sequence and NOT of an - element - @param pElements if 0, then all elements are default constructed - @param len number of elements - @param acquire function called each time an interface needs to - be acquired; defaults (0) to uno - @return false, if memoray allocation has failed -*/ -sal_Bool SAL_CALL uno_sequence_construct( - uno_Sequence ** ppSequence, - struct _typelib_TypeDescription * pTypeDescr, - void * pElements, sal_Int32 len, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C(); -/** Constructs a new sequence with given elements. - - @param ppSequence out parameter sequence; - 0 if memory allocation has failed - @param pType type of the sequence and NOT of an element - @param pElements if 0, then all elements are default constructed - @param len number of elements - @param acquire function called each time an interface needs to - be acquired; defaults (0) to uno - @return false, if memoray allocation has failed -*/ -sal_Bool SAL_CALL uno_type_sequence_construct( - uno_Sequence ** ppSequence, - struct _typelib_TypeDescriptionReference * pType, - void * pElements, sal_Int32 len, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C(); - -/** Assures that the reference count of the given sequence is one. - Otherwise a new copy of the sequence is created with a reference count - of one. - - @param ppSequence inout sequence - @param pTypeDescr type description of sequence - @param acquire function called each time an interface needs to - be acquired; defaults (0) to uno - @param release function called each time an interface needs to - be released; defaults (0) to uno - @return false, if memoray allocation has failed -*/ -sal_Bool SAL_CALL uno_sequence_reference2One( - uno_Sequence ** ppSequence, - struct _typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Assures that the reference count of the given sequence is one. - Otherwise a new copy of the sequence is created with a reference count - of one. - - @param ppSequence inout sequence - @param pType type of sequence - @param acquire function called each time an interface needs to - be acquired; defaults (0) to uno - @param release function called each time an interface needs to - be released; defaults (0) to uno - @return false, if memoray allocation has failed -*/ -sal_Bool SAL_CALL uno_type_sequence_reference2One( - uno_Sequence ** ppSequence, - struct _typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -/** Reallocates length of a sequence. This truncates a sequence or enlarges - it default constructing appended elements. - - @param ppSequence inout sequence - @param pTypeDescr type description of sequence - @param nSize new size of sequence - @param acquire function called each time an interface needs to - be acquired; defaults (0) to uno - @param release function called each time an interface needs to - be released; defaults (0) to uno - @return false, if memoray allocation has failed -*/ -sal_Bool SAL_CALL uno_sequence_realloc( - uno_Sequence ** ppSequence, - struct _typelib_TypeDescription * pTypeDescr, - sal_Int32 nSize, - uno_AcquireFunc acquire, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); -/** Reallocates length of a sequence. This truncates a sequence or enlarges - it default constructing appended elements. - - @param ppSequence inout sequence - @param pType type of sequence - @param nSize new size of sequence - @param acquire function called each time an interface needs to - be acquired; defaults (0) to uno - @param release function called each time an interface needs to - be released; defaults (0) to uno - @return false, if memoray allocation has failed -*/ -sal_Bool SAL_CALL uno_type_sequence_realloc( - uno_Sequence ** ppSequence, - struct _typelib_TypeDescriptionReference * pType, - sal_Int32 nSize, - uno_AcquireFunc acquire, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C(); - -#ifdef __cplusplus -} -#endif - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/inc/uno/threadpool.h b/cppu/inc/uno/threadpool.h deleted file mode 100644 index f2acf71fe..000000000 --- a/cppu/inc/uno/threadpool.h +++ /dev/null @@ -1,192 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*** - * Thread identifier administration. - ***/ -/** - Establishs an association between the current thread and the given thread identifier. - There can be only one association at a time. The association must be broken by - uno_releaseIdFromCurrentThread(). - This method is in general called by a bridge, that wants to bind a remote threadId - to a new thread. - - @param pThreadId a byte sequence, that contains the identifier of the current thread. - @return true, when the identifier was registered. - false, when the thread has already an identifier. The identifier was not - altered. ( This is in general a bug ). - - @see uno_releaseIdFromCurrentThread() - */ -sal_Bool SAL_CALL uno_bindIdToCurrentThread( sal_Sequence *pThreadId ) - SAL_THROW_EXTERN_C(); - - -/** - Get the identifier of the current thread. - If no id has been bound for the thread before, a new one is generated and bound - to the thread. - For each call to uno_getIdOfCurrentThread(), a call to uno_releaseIdFromCurrentThread() - must be done. - - @param ppThreadId [out] Contains the (acquired) ThreadId. - @see uno_releaseIdFromCurrentThread() - */ -void SAL_CALL uno_getIdOfCurrentThread( sal_Sequence **ppThreadId ) - SAL_THROW_EXTERN_C(); - - -/** - If the internal refcount drops to zero, the association betwen threadId and - thread is broken. - */ -void SAL_CALL uno_releaseIdFromCurrentThread() - SAL_THROW_EXTERN_C(); - - -struct _uno_ThreadPool; -typedef struct _uno_ThreadPool * uno_ThreadPool; - -/** - Creates a threadpool handle. Typically each remote bridge instances creates one - handle. - */ -uno_ThreadPool SAL_CALL -uno_threadpool_create() SAL_THROW_EXTERN_C(); - - -/** - Makes the current thread known to the threadpool. This function must be - called, BEFORE uno_threadpool_enter() is called and BEFORE a job for this - thread is put into the threadpool (avoid a race between this thread and - an incoming request/reply). - For every call to uno_threadpool_attach, a corrosponding call to - uno_threadpool_detach must be done. - - @param hPool The bridge threadpool handle previously created by uno_threadpool_create. - -*/ -void SAL_CALL -uno_threadpool_attach( uno_ThreadPool hPool ) SAL_THROW_EXTERN_C(); - -/** - This method is called to wait for a reply of a previously sent request. This is a - blocking method. uno_threadpool_attach() must have been called before. - - @param hPool the handle that was previously created by uno_threadpool_create(). - @param ppJob [out] the pointer, that was given by uno_threadpool_putJob - 0, when uno_threadpool_dispose() was the reason to fall off from threadpool. - @see uno_threadpool_dispose() - **/ -void SAL_CALL -uno_threadpool_enter( uno_ThreadPool hPool , void **ppJob ) - SAL_THROW_EXTERN_C(); - -/** - Detaches the current thread from the threadpool. Must be called for - every call to uno_threadpool_attach. -*/ -void SAL_CALL -uno_threadpool_detach( uno_ThreadPool hPool ) SAL_THROW_EXTERN_C(); - -/** - Puts a job into the pool. A job may eiter be a request or a reply - (replies have a 0 in the doRequest parameter). This function is non-blocking. - - A request may either be synchronous or asynchronous. - If the request is synchronous, it is first looked up, - if there exists a handle with the given - identifier. If this is the case, the thread is woken up and the doRequest - function is called with the given pJob. If no handle exists, - a new thread is created and the given threadId is bound to the new thread. - - If the request is asynchronous, it is put into the queue of asynchronous - requests for the current threadid. The requests are always executed in a new - thread, even if the thread with the given id is waiting in the pool. No id is bound - to the newly created thread. The responsibilty is left to the bridge ( if it - wishes to bind a name). - - If pJob is a reply, there MUST be a thread with the given threadId waiting - for this reply. - - @param pThreadId The Id of the thread, that initialized this request. (In general a - remote threadid). - @param pJob The argument, that doRequest will get or that will be returned by - uno_threadpool_enter(). - @param doRequest The function, that shall be called to execute the request. - 0 if pJob is a reply. - @param bIsOneway True, if the request is asynchrons. False, if it is synchronous. - Set to sal_False, if pJob is a reply. - */ -void SAL_CALL -uno_threadpool_putJob( - uno_ThreadPool hPool, - sal_Sequence *pThreadId, - void *pJob, - void ( SAL_CALL * doRequest ) ( void *pThreadSpecificData ), - sal_Bool bIsOneway ) SAL_THROW_EXTERN_C(); - -/** - All threads, that are waiting on the hPool handle, are forced out of the pool. - The threads waiting with uno_threadpool_enter() will return with *ppJob == 0 - - Later calls to uno_threadpool_enter() using the hPool handle will also - return immeadiatly with *ppJob == 0. - - @param hPool The handle to be disposed. - In case, hPool is 0, this function joins on all threads created - by the threadpool administration. This may e.g. used to ensure, that - no threads are inside the cppu library anymore, in case it needs to get - unloaded. - - This function is called i.e. by a bridge, that is forced to dispose itself. - */ -void SAL_CALL -uno_threadpool_dispose( uno_ThreadPool hPool ) SAL_THROW_EXTERN_C(); - - -/** Releases the previously with uno_threadpool_create() created handle. - The handle thus becomes invalid. It is an error to use the handle after - uno_threadpool_destroy(). - @see uno_threadpool_create() - */ -void SAL_CALL -uno_threadpool_destroy( uno_ThreadPool hPool ) SAL_THROW_EXTERN_C(); - -#ifdef __cplusplus -} -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/prj/build.lst b/cppu/prj/build.lst deleted file mode 100644 index f55bffde8..000000000 --- a/cppu/prj/build.lst +++ /dev/null @@ -1,14 +0,0 @@ -cu cppu : sal salhelper offapi BOOST:boost NULL -cu cppu usr1 - all cu_mkout NULL -cu cppu\inc nmake - all cu_inc NULL -cu cppu\source\uno nmake - all cu_uno cu_inc NULL -cu cppu\source\threadpool nmake - all cu_thpool cu_inc NULL -cu cppu\source\typelib nmake - all cu_typelib cu_inc NULL -cu cppu\source\cppu nmake - all cu_cppu cu_inc NULL -cu cppu\source\helper\purpenv nmake - all cu_helper_purpenv cu_inc NULL -cu cppu\source\UnsafeBridge nmake - all cu_UnsafeBridge cu_inc NULL -cu cppu\source\AffineBridge nmake - all cu_AffineBridge cu_inc NULL -cu cppu\source\LogBridge nmake - all cu_LogBridge cu_inc NULL -cu cppu\util nmake - all cu_util cu_thpool cu_typelib cu_cppu cu_uno cu_helper_purpenv cu_UnsafeBridge cu_AffineBridge cu_LogBridge NULL -cu cppu\qa nmake - all cu_qa_cppunit cu_util NULL -cu cppu\qa\cppumaker nmake - all cu_qa_cppumaker cu_util NULL diff --git a/cppu/prj/d.lst b/cppu/prj/d.lst deleted file mode 100644 index 87ff91471..000000000 --- a/cppu/prj/d.lst +++ /dev/null @@ -1,74 +0,0 @@ -mkdir: %_DEST%\inc\cppu -mkdir: %_DEST%\inc\cppu\helper\purpenv -mkdir: %_DEST%\inc\com -mkdir: %_DEST%\inc\com\sun -mkdir: %_DEST%\inc\com\sun\star -mkdir: %_DEST%\inc\com\sun\star\uno -mkdir: %_DEST%\inc\typelib -mkdir: %_DEST%\inc\uno - -..\inc\cppu\macros.hxx %_DEST%\inc\cppu\macros.hxx -..\inc\cppu\unotype.hxx %_DEST%\inc\cppu\unotype.hxx - -..\inc\com\sun\star\uno\Reference.h %_DEST%\inc\com\sun\star\uno\Reference.h -..\inc\com\sun\star\uno\Reference.hxx %_DEST%\inc\com\sun\star\uno\Reference.hxx -..\inc\com\sun\star\uno\Type.h %_DEST%\inc\com\sun\star\uno\Type.h -..\inc\com\sun\star\uno\Type.hxx %_DEST%\inc\com\sun\star\uno\Type.hxx -..\inc\com\sun\star\uno\Any.h %_DEST%\inc\com\sun\star\uno\Any.h -..\inc\com\sun\star\uno\Any.hxx %_DEST%\inc\com\sun\star\uno\Any.hxx -..\inc\com\sun\star\uno\Sequence.h %_DEST%\inc\com\sun\star\uno\Sequence.h -..\inc\com\sun\star\uno\Sequence.hxx %_DEST%\inc\com\sun\star\uno\Sequence.hxx -..\inc\com\sun\star\uno\genfunc.h %_DEST%\inc\com\sun\star\uno\genfunc.h -..\inc\com\sun\star\uno\genfunc.hxx %_DEST%\inc\com\sun\star\uno\genfunc.hxx - -..\inc\typelib\typeclass.h %_DEST%\inc\typelib\typeclass.h -..\inc\typelib\typedescription.h %_DEST%\inc\typelib\typedescription.h -..\inc\typelib\typedescription.hxx %_DEST%\inc\typelib\typedescription.hxx -..\inc\typelib\uik.h %_DEST%\inc\typelib\uik.h - -..\inc\uno\dispatcher.h %_DEST%\inc\uno\dispatcher.h -..\inc\uno\dispatcher.hxx %_DEST%\inc\uno\dispatcher.hxx -..\inc\uno\any2.h %_DEST%\inc\uno\any2.h -..\inc\uno\sequence2.h %_DEST%\inc\uno\sequence2.h -..\inc\uno\data.h %_DEST%\inc\uno\data.h -..\inc\uno\lbnames.h %_DEST%\inc\uno\lbnames.h -..\inc\uno\environment.h %_DEST%\inc\uno\environment.h -..\inc\uno\environment.hxx %_DEST%\inc\uno\environment.hxx -..\inc\uno\mapping.h %_DEST%\inc\uno\mapping.h -..\inc\uno\mapping.hxx %_DEST%\inc\uno\mapping.hxx -..\inc\uno\threadpool.h %_DEST%\inc\uno\threadpool.h -..\inc\uno\current_context.h %_DEST%\inc\uno\current_context.h -..\inc\uno\current_context.hxx %_DEST%\inc\uno\current_context.hxx -..\inc\uno\cuno.h %_DEST%\inc\uno\cuno.h -..\inc\uno\EnvDcp.h %_DEST%\inc\uno\EnvDcp.h -..\inc\uno\Enterable.h %_DEST%\inc\uno\Enterable.h - -..\inc\cppu\EnvDcp.hxx %_DEST%\inc\cppu\EnvDcp.hxx -..\inc\cppu\Enterable.hxx %_DEST%\inc\cppu\Enterable.hxx -..\inc\cppu\EnvGuards.hxx %_DEST%\inc\cppu\EnvGuards.hxx -..\inc\cppu\FreeReference.hxx %_DEST%\inc\cppu\FreeReference.hxx -..\inc\cppu\Map.hxx %_DEST%\inc\cppu\Map.hxx -..\inc\cppu\Shield.hxx %_DEST%\inc\cppu\Shield.hxx - -..\inc\cppu\helper\purpenv\Environment.hxx %_DEST%\inc\cppu\helper\purpenv\Environment.hxx -..\inc\cppu\helper\purpenv\Mapping.hxx %_DEST%\inc\cppu\helper\purpenv\Mapping.hxx - -..\%__SRC%\lib\icppu.lib %_DEST%\lib\icppu.lib -..\%__SRC%\bin\cppu* %_DEST%\bin\* -..\%__SRC%\lib\libuno_cppu.* %_DEST%\lib\* - -..\%__SRC%\lib\ipurpenvhelper* %_DEST%\lib\* -..\%__SRC%\bin\purpe*.dll %_DEST%\bin\* -..\%__SRC%\lib\libuno_purpenvhelper*.*.* %_DEST%\lib\* - -..\%__SRC%\bin\unsafe_u*.dll %_DEST%\bin\* -..\%__SRC%\lib\libunsafe_uno_uno.* %_DEST%\lib\* - -..\%__SRC%\bin\affine_u*.dll %_DEST%\bin\* -..\%__SRC%\lib\libaffine_uno_uno.* %_DEST%\lib\* - -..\%__SRC%\bin\log_u*.dll %_DEST%\bin\* -..\%__SRC%\lib\liblog_uno_uno.* %_DEST%\lib\* - -linklib: libuno_cppu.*.* -linklib: libuno_purpenvhelper*.*.* diff --git a/cppu/qa/cppu_cppunittester_all.cxx b/cppu/qa/cppu_cppunittester_all.cxx deleted file mode 100644 index e77c046bf..000000000 --- a/cppu/qa/cppu_cppunittester_all.cxx +++ /dev/null @@ -1,146 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* -* -* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -* -* Copyright 2000, 2010 Oracle and/or its affiliates. -* -* OpenOffice.org - a multi-platform office productivity suite -* -* This file is part of OpenOffice.org. -* -* OpenOffice.org is free software: you can redistribute it and/or modify -* it under the terms of the GNU Lesser General Public License version 3 -* only, as published by the Free Software Foundation. -* -* OpenOffice.org is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Lesser General Public License version 3 for more details -* (a copy is included in the LICENSE file that accompanied this code). -* -* You should have received a copy of the GNU Lesser General Public License -* version 3 along with OpenOffice.org. If not, see -* -* for a copy of the LGPLv3 License. -* -************************************************************************/ - -#include "precompiled_cppu.hxx" - -#include "sal/config.h" - -#include -#include -#include -#include -#include "protectorfactory.hxx" -#include "osl/module.h" -#include "osl/module.hxx" -#include "osl/thread.h" -#include "rtl/process.h" -#include "rtl/string.h" -#include "rtl/string.hxx" -#include "rtl/textcvt.h" -#include "rtl/ustring.hxx" -#include "sal/main.h" -#include "sal/types.h" - -#include "cppunit/CompilerOutputter.h" -#include "cppunit/TestResult.h" -#include "cppunit/TestResultCollector.h" -#include "cppunit/TestRunner.h" -#include "cppunit/plugin/TestPlugIn.h" -#include "cppunit/plugin/PlugInParameters.h" -#include "cppunit/extensions/TestFactoryRegistry.h" -#include "cppunit/portability/Stream.h" - -#include "boost/noncopyable.hpp" - -namespace { - -void usageFailure() { - std::cerr - << ("Usage: cppunittester (--protector " - " )* ") - << std::endl; - std::exit(EXIT_FAILURE); -} - -rtl::OUString getArgument(sal_Int32 index) { - rtl::OUString arg; - rtl_getAppCommandArg(index, &arg.pData); - return arg; -} - -std::string convertLazy(rtl::OUString const & s16) { - rtl::OString s8(rtl::OUStringToOString(s16, osl_getThreadTextEncoding())); - return std::string( - s8.getStr(), - ((static_cast< sal_uInt32 >(s8.getLength()) - > (std::numeric_limits< std::string::size_type >::max)()) - ? (std::numeric_limits< std::string::size_type >::max)() - : static_cast< std::string::size_type >(s8.getLength()))); -} - -//Allow the whole uniting testing framework to be run inside a "Protector" -//which knows about uno exceptions, so it can print the content of the -//exception before falling over and dying -class CPPUNIT_API ProtectedFixtureFunctor : public CppUnit::Functor, private boost::noncopyable -{ -private: - const std::string &args; - CppUnit::TestResult &result; -public: - ProtectedFixtureFunctor(const std::string &args_, CppUnit::TestResult &result_) - : args(args_) - , result(result_) - { - } - bool run() const - { - CppUnit::TestRunner runner; - runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); - CppUnit::TestResultCollector collector; - result.addListener(&collector); - runner.run(result); - CppUnit::CompilerOutputter(&collector, CppUnit::stdCErr()).write(); - return collector.wasSuccessful(); - } - virtual bool operator()() const - { - return run(); - } -}; -} - -extern "C" CppUnitTestPlugIn - *cppunitTest_qa_cppu_any(void), - *cppunitTest_qa_cppu_unotype(void), - *cppunitTest_qa_cppu_reference(void), - *cppunitTest_qa_cppu_recursion(void); - - -SAL_IMPLEMENT_MAIN() { - TestPlugInSignature plugs[] = { - cppunitTest_qa_cppu_any, - cppunitTest_qa_cppu_unotype, - cppunitTest_qa_cppu_reference, - cppunitTest_qa_cppu_recursion, - NULL - }; - CppUnit::TestResult result; - std::string args; - bool ok = false; - for (TestPlugInSignature *plug = plugs; *plug != NULL; plug++) { - CppUnitTestPlugIn *iface; - iface = (*plug)(); - iface->initialize(&CppUnit::TestFactoryRegistry::getRegistry(), CppUnit::PlugInParameters()); - } - ProtectedFixtureFunctor tests(args, result); - ok = tests.run(); - - return ok ? EXIT_SUCCESS : EXIT_FAILURE; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/qa/cppumaker/makefile.mk b/cppu/qa/cppumaker/makefile.mk deleted file mode 100644 index accda46fc..000000000 --- a/cppu/qa/cppumaker/makefile.mk +++ /dev/null @@ -1,77 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ := ../.. -PRJNAME := cppu -TARGET := test_cppumaker - -ENABLE_EXCEPTIONS := TRUE - -.INCLUDE: settings.mk - -.IF "$(CROSS_COMPILING)"=="YES" -all: - @echo Nothing done when cross-compiling -.ENDIF - -CFLAGSCXX += $(CPPUNIT_CFLAGS) - -DLLPRE = # no leading "lib" on .so files - -INCPRE += $(MISC)/$(TARGET)/inc - -SHL1TARGET = $(TARGET) -SHL1OBJS = $(SLO)/test_cppumaker.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) -SHL1VERSIONMAP = version.map -SHL1IMPLIB = i$(SHL1TARGET) -DEF1NAME = $(SHL1TARGET) - -SLOFILES = $(SHL1OBJS) - -.INCLUDE: target.mk - -ALLTAR: test - -$(SHL1OBJS): $(MISC)/$(TARGET).cppumaker.flag - -$(MISC)/$(TARGET).cppumaker.flag: $(MISC)/$(TARGET).rdb - - $(MKDIRHIER) $(MISC)/$(TARGET)/inc - $(CPPUMAKER) \ - -O$(MISC)/$(TARGET)/inc -BUCR -C $< $(SOLARBINDIR)/udkapi.rdb - $(TOUCH) $@ - -$(MISC)/$(TARGET).rdb: $(MISC)/$(TARGET)/types.urd - - rm -f $@ - $(REGMERGE) $@ /UCR $< - -$(MISC)/$(TARGET)/types.urd: types.idl - - $(MKDIR) $(MISC)/$(TARGET) - $(IDLC) -O$(MISC)/$(TARGET) -I$(SOLARIDLDIR) -cid -we $< - -test .PHONY: $(SHL1TARGETN) - $(CPPUNITTESTER) $< diff --git a/cppu/qa/cppumaker/test_cppumaker.cxx b/cppu/qa/cppumaker/test_cppumaker.cxx deleted file mode 100644 index 992aa8083..000000000 --- a/cppu/qa/cppumaker/test_cppumaker.cxx +++ /dev/null @@ -1,582 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "FILE.hpp" -#include "lconv.hpp" -#include "tm.hpp" -#include "std.hpp" -#include "test/codemaker/cppumaker/XTest.hpp" -#include "test/codemaker/cppumaker/S1.hpp" -#include "test/codemaker/cppumaker/services/asm.hpp" -#include "test/codemaker/cppumaker/services/auto.hpp" -#include "test/codemaker/cppumaker/services/bool.hpp" -#include "test/codemaker/cppumaker/services/break.hpp" -//TODO: #include "test/codemaker/cppumaker/services/case.hpp" -#include "test/codemaker/cppumaker/services/catch.hpp" -//TODO: #include "test/codemaker/cppumaker/services/char.hpp" -#include "test/codemaker/cppumaker/services/class.hpp" -//TODO: #include "test/codemaker/cppumaker/services/const.hpp" -#include "test/codemaker/cppumaker/services/continue.hpp" -//TODO: #include "test/codemaker/cppumaker/services/default.hpp" -#include "test/codemaker/cppumaker/services/delete.hpp" -#include "test/codemaker/cppumaker/services/do.hpp" -//TODO: #include "test/codemaker/cppumaker/services/double.hpp" -#include "test/codemaker/cppumaker/services/else.hpp" -//TODO: #include "test/codemaker/cppumaker/services/enum.hpp" -#include "test/codemaker/cppumaker/services/explicit.hpp" -#include "test/codemaker/cppumaker/services/export.hpp" -#include "test/codemaker/cppumaker/services/extern.hpp" -#include "test/codemaker/cppumaker/services/false.hpp" -//TODO: #include "test/codemaker/cppumaker/services/float.hpp" -#include "test/codemaker/cppumaker/services/for.hpp" -#include "test/codemaker/cppumaker/services/friend.hpp" -#include "test/codemaker/cppumaker/services/goto.hpp" -#include "test/codemaker/cppumaker/services/if.hpp" -#include "test/codemaker/cppumaker/services/inline.hpp" -#include "test/codemaker/cppumaker/services/int.hpp" -//TODO: #include "test/codemaker/cppumaker/services/long.hpp" -#include "test/codemaker/cppumaker/services/mutable.hpp" -#include "test/codemaker/cppumaker/services/namespace.hpp" -#include "test/codemaker/cppumaker/services/new.hpp" -#include "test/codemaker/cppumaker/services/operator.hpp" -#include "test/codemaker/cppumaker/services/private.hpp" -#include "test/codemaker/cppumaker/services/protected.hpp" -#include "test/codemaker/cppumaker/services/public.hpp" -#include "test/codemaker/cppumaker/services/register.hpp" -#include "test/codemaker/cppumaker/services/return.hpp" -//TODO: #include "test/codemaker/cppumaker/services/short.hpp" -#include "test/codemaker/cppumaker/services/signed.hpp" -#include "test/codemaker/cppumaker/services/sizeof.hpp" -#include "test/codemaker/cppumaker/services/static.hpp" -//TODO: #include "test/codemaker/cppumaker/services/struct.hpp" -//TODO: #include "test/codemaker/cppumaker/services/switch.hpp" -#include "test/codemaker/cppumaker/services/template.hpp" -#include "test/codemaker/cppumaker/services/this.hpp" -#include "test/codemaker/cppumaker/services/throw.hpp" -#include "test/codemaker/cppumaker/services/true.hpp" -#include "test/codemaker/cppumaker/services/try.hpp" -//TODO: #include "test/codemaker/cppumaker/services/typedef.hpp" -#include "test/codemaker/cppumaker/services/typeid.hpp" -#include "test/codemaker/cppumaker/services/typename.hpp" -//TODO: #include "test/codemaker/cppumaker/services/union.hpp" -//TODO: #include "test/codemaker/cppumaker/services/unsigned.hpp" -#include "test/codemaker/cppumaker/services/using.hpp" -#include "test/codemaker/cppumaker/services/virtual.hpp" -//TODO: #include "test/codemaker/cppumaker/services/void.hpp" -#include "test/codemaker/cppumaker/services/volatile.hpp" -#include "test/codemaker/cppumaker/services/while.hpp" -#include "test/codemaker/cppumaker/services/and.hpp" -#include "test/codemaker/cppumaker/services/bitand.hpp" -#include "test/codemaker/cppumaker/services/bitor.hpp" -#include "test/codemaker/cppumaker/services/compl.hpp" -#include "test/codemaker/cppumaker/services/not.hpp" -#include "test/codemaker/cppumaker/services/or.hpp" -#include "test/codemaker/cppumaker/services/xor.hpp" -#include "test/codemaker/cppumaker/services/BUFSIZ.hpp" -#include "test/codemaker/cppumaker/services/CLOCKS_PER_SEC.hpp" -#include "test/codemaker/cppumaker/services/EDOM.hpp" -#include "test/codemaker/cppumaker/services/EOF.hpp" -#include "test/codemaker/cppumaker/services/ERANGE.hpp" -#include "test/codemaker/cppumaker/services/EXIT_FAILURE.hpp" -#include "test/codemaker/cppumaker/services/EXIT_SUCCESS.hpp" -#include "test/codemaker/cppumaker/services/FILENAME_MAX.hpp" -#include "test/codemaker/cppumaker/services/FOPEN_MAX.hpp" -#include "test/codemaker/cppumaker/services/HUGE_VAL.hpp" -#include "test/codemaker/cppumaker/services/LC_ALL.hpp" -#include "test/codemaker/cppumaker/services/LC_COLLATE.hpp" -#include "test/codemaker/cppumaker/services/LC_CTYPE.hpp" -#include "test/codemaker/cppumaker/services/LC_MONETARY.hpp" -#include "test/codemaker/cppumaker/services/LC_NUMERIC.hpp" -#include "test/codemaker/cppumaker/services/LC_TIME.hpp" -#include "test/codemaker/cppumaker/services/L_tmpnam.hpp" -#include "test/codemaker/cppumaker/services/MB_CUR_MAX.hpp" -#include "test/codemaker/cppumaker/services/NULL.hpp" -#include "test/codemaker/cppumaker/services/RAND_MAX.hpp" -#include "test/codemaker/cppumaker/services/SEEK_CUR.hpp" -#include "test/codemaker/cppumaker/services/SEEK_END.hpp" -#include "test/codemaker/cppumaker/services/SEEK_SET.hpp" -#include "test/codemaker/cppumaker/services/SIGABRT.hpp" -#include "test/codemaker/cppumaker/services/SIGFPE.hpp" -#include "test/codemaker/cppumaker/services/SIGILL.hpp" -#include "test/codemaker/cppumaker/services/SIGINT.hpp" -#include "test/codemaker/cppumaker/services/SIGSEGV.hpp" -#include "test/codemaker/cppumaker/services/SIGTERM.hpp" -#include "test/codemaker/cppumaker/services/SIG_DFL.hpp" -#include "test/codemaker/cppumaker/services/SIG_ERR.hpp" -#include "test/codemaker/cppumaker/services/SIG_IGN.hpp" -#include "test/codemaker/cppumaker/services/TMP_MAX.hpp" -#include "test/codemaker/cppumaker/services/WCHAR_MAX.hpp" -#include "test/codemaker/cppumaker/services/WCHAR_MIN.hpp" -#include "test/codemaker/cppumaker/services/WEOF.hpp" -#include "test/codemaker/cppumaker/services/assert.hpp" -#include "test/codemaker/cppumaker/services/errno.hpp" -#include "test/codemaker/cppumaker/services/offsetof.hpp" -#include "test/codemaker/cppumaker/services/setjmp.hpp" -#include "test/codemaker/cppumaker/services/stderr.hpp" -#include "test/codemaker/cppumaker/services/stdin.hpp" -#include "test/codemaker/cppumaker/services/stdout.hpp" -#include "test/codemaker/cppumaker/services/CHAR_BIT.hpp" -#include "test/codemaker/cppumaker/services/CHAR_MAX.hpp" -#include "test/codemaker/cppumaker/services/CHAR_MIN.hpp" -#include "test/codemaker/cppumaker/services/DBL_DIG.hpp" -#include "test/codemaker/cppumaker/services/DBL_EPSILON.hpp" -#include "test/codemaker/cppumaker/services/DBL_MANT_DIG.hpp" -#include "test/codemaker/cppumaker/services/DBL_MAX.hpp" -#include "test/codemaker/cppumaker/services/DBL_MAX_10_EXP.hpp" -#include "test/codemaker/cppumaker/services/DBL_MAX_EXP.hpp" -#include "test/codemaker/cppumaker/services/DBL_MIN.hpp" -#include "test/codemaker/cppumaker/services/DBL_MIN_10_EXP.hpp" -#include "test/codemaker/cppumaker/services/DBL_MIN_EXP.hpp" -#include "test/codemaker/cppumaker/services/FLT_DIG.hpp" -#include "test/codemaker/cppumaker/services/FLT_EPSILON.hpp" -#include "test/codemaker/cppumaker/services/FLT_MANT_DIG.hpp" -#include "test/codemaker/cppumaker/services/FLT_MAX.hpp" -#include "test/codemaker/cppumaker/services/FLT_MAX_10_EXP.hpp" -#include "test/codemaker/cppumaker/services/FLT_MAX_EXP.hpp" -#include "test/codemaker/cppumaker/services/FLT_MIN.hpp" -#include "test/codemaker/cppumaker/services/FLT_MIN_10_EXP.hpp" -#include "test/codemaker/cppumaker/services/FLT_MIN_EXP.hpp" -#include "test/codemaker/cppumaker/services/FLT_RADIX.hpp" -#include "test/codemaker/cppumaker/services/FLT_ROUNDS.hpp" -#include "test/codemaker/cppumaker/services/INT_MAX.hpp" -#include "test/codemaker/cppumaker/services/INT_MIN.hpp" -#include "test/codemaker/cppumaker/services/LDBL_DIG.hpp" -#include "test/codemaker/cppumaker/services/LDBL_EPSILON.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MANT_DIG.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MAX.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MAX_10_EXP.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MAX_EXP.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MIN.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MIN_10_EXP.hpp" -#include "test/codemaker/cppumaker/services/LDBL_MIN_EXP.hpp" -#include "test/codemaker/cppumaker/services/LONG_MAX.hpp" -#include "test/codemaker/cppumaker/services/LONG_MIN.hpp" -#include "test/codemaker/cppumaker/services/MB_LEN_MAX.hpp" -#include "test/codemaker/cppumaker/services/SCHAR_MAX.hpp" -#include "test/codemaker/cppumaker/services/SCHAR_MIN.hpp" -#include "test/codemaker/cppumaker/services/SHRT_MAX.hpp" -#include "test/codemaker/cppumaker/services/SHRT_MIN.hpp" -#include "test/codemaker/cppumaker/services/UCHAR_MAX.hpp" -#include "test/codemaker/cppumaker/services/UINT_MAX.hpp" -#include "test/codemaker/cppumaker/services/ULONG_MAX.hpp" -#include "test/codemaker/cppumaker/services/USHRT_MAX.hpp" -#include "test/codemaker/cppumaker/services/FILE.hpp" -#include "test/codemaker/cppumaker/services/lconv.hpp" -#include "test/codemaker/cppumaker/services/tm.hpp" -#include "test/codemaker/cppumaker/services/std.hpp" -#include "test/codemaker/cppumaker/services/NDEBUG.hpp" -#include "test/codemaker/cppumaker/services/create.hpp" -#include "test/codemaker/cppumaker/singletons/asm.hpp" -#include "test/codemaker/cppumaker/singletons/auto.hpp" -#include "test/codemaker/cppumaker/singletons/bool.hpp" -#include "test/codemaker/cppumaker/singletons/break.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/case.hpp" -#include "test/codemaker/cppumaker/singletons/catch.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/char.hpp" -#include "test/codemaker/cppumaker/singletons/class.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/const.hpp" -#include "test/codemaker/cppumaker/singletons/continue.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/default.hpp" -#include "test/codemaker/cppumaker/singletons/delete.hpp" -#include "test/codemaker/cppumaker/singletons/do.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/double.hpp" -#include "test/codemaker/cppumaker/singletons/else.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/enum.hpp" -#include "test/codemaker/cppumaker/singletons/explicit.hpp" -#include "test/codemaker/cppumaker/singletons/export.hpp" -#include "test/codemaker/cppumaker/singletons/extern.hpp" -#include "test/codemaker/cppumaker/singletons/false.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/float.hpp" -#include "test/codemaker/cppumaker/singletons/for.hpp" -#include "test/codemaker/cppumaker/singletons/friend.hpp" -#include "test/codemaker/cppumaker/singletons/goto.hpp" -#include "test/codemaker/cppumaker/singletons/if.hpp" -#include "test/codemaker/cppumaker/singletons/inline.hpp" -#include "test/codemaker/cppumaker/singletons/int.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/long.hpp" -#include "test/codemaker/cppumaker/singletons/mutable.hpp" -#include "test/codemaker/cppumaker/singletons/namespace.hpp" -#include "test/codemaker/cppumaker/singletons/new.hpp" -#include "test/codemaker/cppumaker/singletons/operator.hpp" -#include "test/codemaker/cppumaker/singletons/private.hpp" -#include "test/codemaker/cppumaker/singletons/protected.hpp" -#include "test/codemaker/cppumaker/singletons/public.hpp" -#include "test/codemaker/cppumaker/singletons/register.hpp" -#include "test/codemaker/cppumaker/singletons/return.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/short.hpp" -#include "test/codemaker/cppumaker/singletons/signed.hpp" -#include "test/codemaker/cppumaker/singletons/sizeof.hpp" -#include "test/codemaker/cppumaker/singletons/static.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/struct.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/switch.hpp" -#include "test/codemaker/cppumaker/singletons/template.hpp" -#include "test/codemaker/cppumaker/singletons/this.hpp" -#include "test/codemaker/cppumaker/singletons/throw.hpp" -#include "test/codemaker/cppumaker/singletons/true.hpp" -#include "test/codemaker/cppumaker/singletons/try.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/typedef.hpp" -#include "test/codemaker/cppumaker/singletons/typeid.hpp" -#include "test/codemaker/cppumaker/singletons/typename.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/union.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/unsigned.hpp" -#include "test/codemaker/cppumaker/singletons/using.hpp" -#include "test/codemaker/cppumaker/singletons/virtual.hpp" -//TODO: #include "test/codemaker/cppumaker/singletons/void.hpp" -#include "test/codemaker/cppumaker/singletons/volatile.hpp" -#include "test/codemaker/cppumaker/singletons/while.hpp" -#include "test/codemaker/cppumaker/singletons/and.hpp" -#include "test/codemaker/cppumaker/singletons/bitand.hpp" -#include "test/codemaker/cppumaker/singletons/bitor.hpp" -#include "test/codemaker/cppumaker/singletons/compl.hpp" -#include "test/codemaker/cppumaker/singletons/not.hpp" -#include "test/codemaker/cppumaker/singletons/or.hpp" -#include "test/codemaker/cppumaker/singletons/xor.hpp" -#include "test/codemaker/cppumaker/singletons/BUFSIZ.hpp" -#include "test/codemaker/cppumaker/singletons/CLOCKS_PER_SEC.hpp" -#include "test/codemaker/cppumaker/singletons/EDOM.hpp" -#include "test/codemaker/cppumaker/singletons/EOF.hpp" -#include "test/codemaker/cppumaker/singletons/ERANGE.hpp" -#include "test/codemaker/cppumaker/singletons/EXIT_FAILURE.hpp" -#include "test/codemaker/cppumaker/singletons/EXIT_SUCCESS.hpp" -#include "test/codemaker/cppumaker/singletons/FILENAME_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/FOPEN_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/HUGE_VAL.hpp" -#include "test/codemaker/cppumaker/singletons/LC_ALL.hpp" -#include "test/codemaker/cppumaker/singletons/LC_COLLATE.hpp" -#include "test/codemaker/cppumaker/singletons/LC_CTYPE.hpp" -#include "test/codemaker/cppumaker/singletons/LC_MONETARY.hpp" -#include "test/codemaker/cppumaker/singletons/LC_NUMERIC.hpp" -#include "test/codemaker/cppumaker/singletons/LC_TIME.hpp" -#include "test/codemaker/cppumaker/singletons/L_tmpnam.hpp" -#include "test/codemaker/cppumaker/singletons/MB_CUR_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/NULL.hpp" -#include "test/codemaker/cppumaker/singletons/RAND_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/SEEK_CUR.hpp" -#include "test/codemaker/cppumaker/singletons/SEEK_END.hpp" -#include "test/codemaker/cppumaker/singletons/SEEK_SET.hpp" -#include "test/codemaker/cppumaker/singletons/SIGABRT.hpp" -#include "test/codemaker/cppumaker/singletons/SIGFPE.hpp" -#include "test/codemaker/cppumaker/singletons/SIGILL.hpp" -#include "test/codemaker/cppumaker/singletons/SIGINT.hpp" -#include "test/codemaker/cppumaker/singletons/SIGSEGV.hpp" -#include "test/codemaker/cppumaker/singletons/SIGTERM.hpp" -#include "test/codemaker/cppumaker/singletons/SIG_DFL.hpp" -#include "test/codemaker/cppumaker/singletons/SIG_ERR.hpp" -#include "test/codemaker/cppumaker/singletons/SIG_IGN.hpp" -#include "test/codemaker/cppumaker/singletons/TMP_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/WCHAR_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/WCHAR_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/WEOF.hpp" -#include "test/codemaker/cppumaker/singletons/assert.hpp" -#include "test/codemaker/cppumaker/singletons/errno.hpp" -#include "test/codemaker/cppumaker/singletons/offsetof.hpp" -#include "test/codemaker/cppumaker/singletons/setjmp.hpp" -#include "test/codemaker/cppumaker/singletons/stderr.hpp" -#include "test/codemaker/cppumaker/singletons/stdin.hpp" -#include "test/codemaker/cppumaker/singletons/stdout.hpp" -#include "test/codemaker/cppumaker/singletons/CHAR_BIT.hpp" -#include "test/codemaker/cppumaker/singletons/CHAR_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/CHAR_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_DIG.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_EPSILON.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MANT_DIG.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MAX_10_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MAX_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MIN_10_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/DBL_MIN_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_DIG.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_EPSILON.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MANT_DIG.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MAX_10_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MAX_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MIN_10_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_MIN_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_RADIX.hpp" -#include "test/codemaker/cppumaker/singletons/FLT_ROUNDS.hpp" -#include "test/codemaker/cppumaker/singletons/INT_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/INT_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_DIG.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_EPSILON.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MANT_DIG.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MAX_10_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MAX_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MIN_10_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/LDBL_MIN_EXP.hpp" -#include "test/codemaker/cppumaker/singletons/LONG_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/LONG_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/MB_LEN_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/SCHAR_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/SCHAR_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/SHRT_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/SHRT_MIN.hpp" -#include "test/codemaker/cppumaker/singletons/UCHAR_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/UINT_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/ULONG_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/USHRT_MAX.hpp" -#include "test/codemaker/cppumaker/singletons/FILE.hpp" -#include "test/codemaker/cppumaker/singletons/lconv.hpp" -#include "test/codemaker/cppumaker/singletons/tm.hpp" -#include "test/codemaker/cppumaker/singletons/std.hpp" -#include "test/codemaker/cppumaker/singletons/NDEBUG.hpp" -#include "test/codemaker/cppumaker/singletons/get.hpp" -#include "test/codemaker/cppumaker/HelperEnum.hpp" -#include "test/codemaker/cppumaker/HelperStruct.hpp" -#include "test/codemaker/cppumaker/BigStruct.hpp" -#include "test/codemaker/cppumaker/Struct.hpp" -#include "test/codemaker/cppumaker/StructUsage.hpp" -#include "test/codemaker/cppumaker/AlignmentDerivedStruct.hpp" -#include "test/codemaker/cppumaker/TestException1.hpp" -#include "test/codemaker/cppumaker/TestException2.hpp" -#include "test/codemaker/cppumaker/Constants.hpp" - -#include "boost/scoped_array.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Type.hxx" -#include "com/sun/star/uno/TypeClass.hpp" -#include -#include -#include -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" - -#include -#include - -namespace { - -class Test: public CppUnit::TestFixture { -public: - void testBigStruct(); - - void testPolyStruct(); - - void testExceptions(); - - void testConstants(); - - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(testBigStruct); - CPPUNIT_TEST(testPolyStruct); - CPPUNIT_TEST(testExceptions); - CPPUNIT_TEST(testConstants); - CPPUNIT_TEST_SUITE_END(); -}; - -struct Guard { - explicit Guard(void * buffer): - p(new(buffer) test::codemaker::cppumaker::BigStruct) {} - - ~Guard() { p->test::codemaker::cppumaker::BigStruct::~BigStruct(); } - - test::codemaker::cppumaker::BigStruct * const p; -}; - -void Test::testBigStruct() { - // Default-initialize a BigStruct instance on top of a memory buffer filled - // with random data, and make sure that all members are default-initialized: - boost::scoped_array< char > buffer( - new char[sizeof (test::codemaker::cppumaker::BigStruct)]); - for (std::size_t i = 0; i < sizeof (test::codemaker::cppumaker::BigStruct); - ++i) - { - buffer[i] = '\x56'; - } - Guard guard(buffer.get()); - CPPUNIT_ASSERT_EQUAL(guard.p->m1, sal_False); - CPPUNIT_ASSERT_EQUAL(guard.p->m2, static_cast< sal_Int8 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m3, static_cast< sal_Int16 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m4, static_cast< sal_uInt16 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m5, static_cast< sal_Int32 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m6, static_cast< sal_uInt32 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m7, static_cast< sal_Int64 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m8, static_cast< sal_uInt64 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m9, 0.0f); - CPPUNIT_ASSERT_EQUAL(guard.p->m10, 0.0); - CPPUNIT_ASSERT_EQUAL(guard.p->m11, static_cast< sal_Unicode >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m12.getLength(), static_cast< sal_Int32 >(0)); - CPPUNIT_ASSERT_EQUAL( - guard.p->m13.getTypeClass(), com::sun::star::uno::TypeClass_VOID); - CPPUNIT_ASSERT_EQUAL(guard.p->m14.hasValue(), sal_False); - CPPUNIT_ASSERT_EQUAL(guard.p->m15.getLength(), static_cast< sal_Int32 >(0)); - CPPUNIT_ASSERT_EQUAL( - guard.p->m16, test::codemaker::cppumaker::HelperEnum_ZERO); - CPPUNIT_ASSERT_EQUAL(guard.p->m17.m1, sal_False); - CPPUNIT_ASSERT_EQUAL(guard.p->m17.m2.is(), sal_False); - CPPUNIT_ASSERT_EQUAL(guard.p->m18.is(), sal_False); - CPPUNIT_ASSERT_EQUAL(guard.p->m19, static_cast< sal_Int8 >(0)); - CPPUNIT_ASSERT_EQUAL( - guard.p->m20, test::codemaker::cppumaker::HelperEnum_ZERO); - CPPUNIT_ASSERT_EQUAL(guard.p->m21.getLength(), static_cast< sal_Int32 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m22.getLength(), static_cast< sal_Int32 >(0)); - CPPUNIT_ASSERT_EQUAL(guard.p->m23.getLength(), static_cast< sal_Int32 >(0)); - -//This is a very platform specific test. -#if defined __GNUC__ && __GNUC__ >= 3 // see CPPU_GCC3_ALIGN -#if defined(LINUX) && (defined (X86_64) || defined(X86) || defined(PPC)) - CPPUNIT_ASSERT_EQUAL( -#if defined X86_64 || defined PPC - static_cast< std::size_t >(24), -#else - static_cast< std::size_t >(16), -#endif - sizeof (test::codemaker::cppumaker::AlignmentDerivedStruct)); -#endif -#endif - - com::sun::star::uno::Type t( - cppu::UnoType< test::codemaker::cppumaker::BigStruct >::get()); - typelib_TypeDescription * td = NULL; - t.getDescription(&td); - typelib_typedescription_complete(&td); - fprintf(stdout, "#### 1\n"); - CPPUNIT_ASSERT(td != NULL); - CPPUNIT_ASSERT_EQUAL(typelib_TypeClass_STRUCT, td->eTypeClass); - typelib_StructTypeDescription * std = - reinterpret_cast< typelib_StructTypeDescription * >(td); - CPPUNIT_ASSERT_EQUAL(typelib_TypeClass_UNSIGNED_SHORT, std->aBase.ppTypeRefs[3]->eTypeClass); // unsigned short m4; - CPPUNIT_ASSERT_EQUAL(typelib_TypeClass_CHAR, std->aBase.ppTypeRefs[10]->eTypeClass); // char m11; -} - -void Test::testPolyStruct() { - CPPUNIT_ASSERT_EQUAL( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "test.codemaker.cppumaker.Struct")), - (com::sun::star::uno::makeAny( - test::codemaker::cppumaker::Struct< sal_Unicode, sal_Int16 >()). - getValueType().getTypeName())); - - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > > - aEmptySequence; - - CPPUNIT_ASSERT_EQUAL( - (test::codemaker::cppumaker::make_Struct< sal_uInt32, sal_Bool >(5, - aEmptySequence).member1), - static_cast< sal_uInt32 >(5)); -} - -namespace { - -bool operator ==( - test::codemaker::cppumaker::TestException1 const & e1, - test::codemaker::cppumaker::TestException1 const & e2) -{ - return e1.Message == e2.Message && e1.Context == e2.Context - && e1.m1 == e2.m1 && e1.m2 == e2.m2 && e1.m3 == e2.m3 - && e1.m4.member1 == e2.m4.member1 && e1.m4.member2 == e2.m4.member2; -} - -std::ostream & operator <<( - std::ostream & out, com::sun::star::uno::Exception const &) -{ - return out << ""; -} - -} - -void Test::testExceptions() { - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > > - aEmptySequence; - - test::codemaker::cppumaker::TestException1 e11( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("abc")), 0, 1, - com::sun::star::uno::makeAny(123.0), - test::codemaker::cppumaker::HelperEnum_ONE, - test::codemaker::cppumaker::Struct(5, aEmptySequence), 2); - test::codemaker::cppumaker::TestException1 e12(e11); - CPPUNIT_ASSERT_EQUAL(e11, e12); - test::codemaker::cppumaker::TestException1 e13; - e13 = e11; - CPPUNIT_ASSERT_EQUAL(e11, e13); - test::codemaker::cppumaker::TestException2 e21( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("abc")), 0, 1, - com::sun::star::uno::makeAny(123.0), - test::codemaker::cppumaker::HelperEnum_ONE, - test::codemaker::cppumaker::Struct(5, aEmptySequence), 2); - test::codemaker::cppumaker::TestException2 e22(e21); - CPPUNIT_ASSERT_EQUAL(e21, e22); - test::codemaker::cppumaker::TestException2 e23; - e23 = e21; - CPPUNIT_ASSERT_EQUAL(e21, e23); -} - -void Test::testConstants() { - CPPUNIT_ASSERT_EQUAL( - SAL_MIN_INT8, test::codemaker::cppumaker::Constants::byteMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_INT8, test::codemaker::cppumaker::Constants::byteMax); - CPPUNIT_ASSERT_EQUAL( - static_cast< sal_Int8 >(-1), - test::codemaker::cppumaker::Constants::byteNeg); - CPPUNIT_ASSERT_EQUAL( - SAL_MIN_INT16, test::codemaker::cppumaker::Constants::shortMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_INT16, test::codemaker::cppumaker::Constants::shortMax); - CPPUNIT_ASSERT_EQUAL( - static_cast< sal_uInt16 >(0), - test::codemaker::cppumaker::Constants::unsignedShortMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_UINT16, - test::codemaker::cppumaker::Constants::unsignedShortMax); - CPPUNIT_ASSERT_EQUAL( - SAL_MIN_INT32, test::codemaker::cppumaker::Constants::longMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_INT32, test::codemaker::cppumaker::Constants::longMax); - CPPUNIT_ASSERT_EQUAL( - static_cast< sal_uInt32 >(0), - test::codemaker::cppumaker::Constants::unsignedLongMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_UINT32, test::codemaker::cppumaker::Constants::unsignedLongMax); - CPPUNIT_ASSERT_EQUAL( - SAL_MIN_INT64, test::codemaker::cppumaker::Constants::hyperMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_INT64, test::codemaker::cppumaker::Constants::hyperMax); - CPPUNIT_ASSERT_EQUAL( - static_cast< sal_uInt64 >(0), - test::codemaker::cppumaker::Constants::unsignedHyperMin); - CPPUNIT_ASSERT_EQUAL( - SAL_MAX_UINT64, - test::codemaker::cppumaker::Constants::unsignedHyperMax); -} - -CPPUNIT_TEST_SUITE_REGISTRATION(Test); - -} - -CPPUNIT_PLUGIN_IMPLEMENT(); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/qa/cppumaker/types.idl b/cppu/qa/cppumaker/types.idl deleted file mode 100644 index 20e2dad46..000000000 --- a/cppu/qa/cppumaker/types.idl +++ /dev/null @@ -1,717 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -/*TODO: Do not depend on types for which C++ header files are only generated - later in the build process in offuh: */ -#include "com/sun/star/lang/ClassNotFoundException.idl" -#include "com/sun/star/lang/IllegalAccessException.idl" -#include "com/sun/star/lang/Locale.idl" -#include "com/sun/star/uno/DeploymentException.idl" -#include "com/sun/star/uno/Exception.idl" -#include "com/sun/star/uno/RuntimeException.idl" -#include "com/sun/star/uno/XInterface.idl" -#include "com/sun/star/uno/XNamingService.idl" - -singleton FILE: com::sun::star::uno::XInterface; -singleton lconv: com::sun::star::uno::XInterface; -singleton tm: com::sun::star::uno::XInterface; - -singleton std: com::sun::star::uno::XInterface; - -module test { module codemaker { module cppumaker { - -interface XTest { - boolean test(); - - [attribute, bound] long A1; - [attribute, bound, readonly] long A2; - [attribute] long A3 { - get raises - (com::sun::star::uno::Exception, - com::sun::star::lang::ClassNotFoundException); - set raises (com::sun::star::uno::RuntimeException); - }; - [attribute, readonly] long A4 { - get raises (com::sun::star::uno::DeploymentException); - }; -}; - -typedef boolean Boolean; -typedef byte Byte; -typedef short Short; -typedef unsigned short UnsignedShort; -typedef long Long; -typedef unsigned long UnsignedLong; -typedef hyper Hyper; -typedef unsigned hyper UnsignedHyper; -typedef float Float; -typedef double Double; -typedef char Char; -typedef string String; -typedef type Type; -typedef any Any; -typedef com::sun::star::lang::Locale Locale; -typedef com::sun::star::uno::XInterface XInterface; -typedef com::sun::star::uno::XNamingService XNamingService; - -typedef sequence< Boolean > SequenceBoolean; -typedef sequence< Byte > SequenceByte; -typedef sequence< Short > SequenceShort; -typedef sequence< UnsignedShort > SequenceUnsignedShort; -typedef sequence< Long > SequenceLong; -typedef sequence< UnsignedLong > SequenceUnsignedLong; -typedef sequence< Hyper > SequenceHyper; -typedef sequence< UnsignedHyper > SequenceUnsignedHyper; -typedef sequence< Float > SequenceFloat; -typedef sequence< Double > SequenceDouble; -typedef sequence< Char > SequenceChar; -typedef sequence< String > SequenceString; -typedef sequence< Type > SequenceType; -typedef sequence< Any > SequenceAny; -typedef sequence< Locale > SequenceLocale; -typedef sequence< XInterface > SequenceXInterface; -typedef sequence< XNamingService > SequenceXNamingService; - -service S1: XTest { - create1(); - - create2([in] any... create2) - raises (com::sun::star::uno::RuntimeException, - com::sun::star::lang::ClassNotFoundException, - com::sun::star::uno::Exception, - com::sun::star::lang::IllegalAccessException, - com::sun::star::uno::DeploymentException); - - create3([in] sequence S1) - raises (com::sun::star::uno::RuntimeException, - com::sun::star::lang::ClassNotFoundException, - com::sun::star::lang::IllegalAccessException, - com::sun::star::uno::DeploymentException); - - create4([in] long javamaker, [in] long S1, [in] long create4); - - create5( - [in] boolean p1, - [in] byte p2, - [in] short p3, - [in] unsigned short p4, - [in] long p5, - [in] unsigned long p6, - [in] hyper p7, - [in] unsigned hyper p8, - [in] float p9, - [in] double p10, - [in] char p11, - [in] string p12, - [in] type p13, - [in] any p14, - [in] com::sun::star::lang::Locale p15, - [in] com::sun::star::uno::XInterface p16, - [in] com::sun::star::uno::XNamingService p17, - [in] Boolean t1, - [in] Byte t2, - [in] Short t3, - [in] UnsignedShort t4, - [in] Long t5, - [in] UnsignedLong t6, - [in] Hyper t7, - [in] UnsignedHyper t8, - [in] Float t9, - [in] Double t10, - [in] Char t11, - [in] String t12, - [in] Type t13, - [in] Any t14, - [in] Locale t15, - [in] XInterface t16, - [in] XNamingService t17, - [in] sequence< sequence< boolean > > a1, - [in] sequence< sequence< byte > > a2, - [in] sequence< sequence< short > > a3, - [in] sequence< sequence< unsigned short > > a4, - [in] sequence< sequence< long > > a5, - [in] sequence< sequence< unsigned long > > a6, - [in] sequence< sequence< hyper > > a7, - [in] sequence< sequence< unsigned hyper > > a8, - [in] sequence< sequence< float > > a9, - [in] sequence< sequence< double > > a10, - [in] sequence< sequence< char > > a11, - [in] sequence< sequence< string > > a12, - [in] sequence< sequence< type > > a13, - [in] sequence< sequence< any > > a14, - [in] sequence< sequence< com::sun::star::lang::Locale > > a15, - [in] sequence< sequence< com::sun::star::uno::XInterface > > a16, - [in] sequence< sequence< - com::sun::star::uno::XNamingService > > a17, - [in] sequence< SequenceBoolean > at1, - [in] sequence< SequenceByte > at2, - [in] sequence< SequenceShort > at3, - [in] sequence< SequenceUnsignedShort > at4, - [in] sequence< SequenceLong > at5, - [in] sequence< SequenceUnsignedLong > at6, - [in] sequence< SequenceHyper > at7, - [in] sequence< SequenceUnsignedHyper > at8, - [in] sequence< SequenceFloat > at9, - [in] sequence< SequenceDouble > at10, - [in] sequence< SequenceChar > at11, - [in] sequence< SequenceString > at12, - [in] sequence< SequenceType > at13, - [in] sequence< SequenceAny > at14, - [in] sequence< SequenceLocale > at15, - [in] sequence< SequenceXInterface > at16, - [in] sequence< SequenceXNamingService > at17); -}; - -service S2: XTest; - -service S3 { interface XTest; }; - -singleton S4 { service S2; }; - -module services { - -service asm: com::sun::star::uno::XInterface { asm([in] long asm); }; -service auto: com::sun::star::uno::XInterface { auto([in] long auto); }; -service bool: com::sun::star::uno::XInterface { bool([in] long bool); }; -service break: com::sun::star::uno::XInterface { break([in] long break); }; -//TODO: service case: com::sun::star::uno::XInterface { case([in] long case); }; -service catch: com::sun::star::uno::XInterface { catch([in] long catch); }; -//TODO: service char: com::sun::star::uno::XInterface { char([in] long char); }; -service class: com::sun::star::uno::XInterface { class([in] long class); }; -//TODO: service const: com::sun::star::uno::XInterface { -// const([in] long const); }; -service continue: com::sun::star::uno::XInterface { - continue([in] long continue); }; -//TODO: service default: com::sun::star::uno::XInterface { -// default([in] long default); }; -service delete: com::sun::star::uno::XInterface { delete([in] long delete); }; -service do: com::sun::star::uno::XInterface { do([in] long do); }; -//TODO: service double: com::sun::star::uno::XInterface { -// double([in] long double); }; -service else: com::sun::star::uno::XInterface { else([in] long else); }; -//TODO: service enum: com::sun::star::uno::XInterface { enum([in] long enum); }; -service explicit: com::sun::star::uno::XInterface { - explicit([in] long explicit); }; -service export: com::sun::star::uno::XInterface { export([in] long export); }; -service extern: com::sun::star::uno::XInterface { extern([in] long extern); }; -service false: com::sun::star::uno::XInterface { false([in] long false); }; -//TODO: service float: com::sun::star::uno::XInterface { -// float([in] long float); }; -service for: com::sun::star::uno::XInterface { for([in] long for); }; -service friend: com::sun::star::uno::XInterface { friend([in] long friend); }; -service goto: com::sun::star::uno::XInterface { goto([in] long goto); }; -service if: com::sun::star::uno::XInterface { if([in] long if); }; -service inline: com::sun::star::uno::XInterface { inline([in] long inline); }; -service int: com::sun::star::uno::XInterface { int([in] long int); }; -//TODO: service long: com::sun::star::uno::XInterface { long([in] long long); }; -service mutable: com::sun::star::uno::XInterface { - mutable([in] long mutable); }; -service namespace: com::sun::star::uno::XInterface { - namespace([in] long namespace); }; -service new: com::sun::star::uno::XInterface { new([in] long new); }; -service operator: com::sun::star::uno::XInterface { - operator([in] long operator); }; -service private: com::sun::star::uno::XInterface { - private([in] long private); }; -service protected: com::sun::star::uno::XInterface { - protected([in] long protected); }; -service public: com::sun::star::uno::XInterface { public([in] long public); }; -service register: com::sun::star::uno::XInterface { - register([in] long register); }; -service return: com::sun::star::uno::XInterface { return([in] long return); }; -//TODO: service short: com::sun::star::uno::XInterface { -// short([in] long short); }; -service signed: com::sun::star::uno::XInterface { signed([in] long signed); }; -service sizeof: com::sun::star::uno::XInterface { sizeof([in] long sizeof); }; -service static: com::sun::star::uno::XInterface { static([in] long static); }; -//TODO: service struct: com::sun::star::uno::XInterface { -// struct([in] long struct); }; -//TODO: service switch: com::sun::star::uno::XInterface { -// switch([in] long switch); }; -service template: com::sun::star::uno::XInterface { - template([in] long template); }; -service this: com::sun::star::uno::XInterface { this([in] long this); }; -service throw: com::sun::star::uno::XInterface { throw([in] long throw); }; -service true: com::sun::star::uno::XInterface { true([in] long true); }; -service try: com::sun::star::uno::XInterface { try([in] long try); }; -//TODO: service typedef: com::sun::star::uno::XInterface { -// typedef([in] long typedef); }; -service typeid: com::sun::star::uno::XInterface { typeid([in] long typeid); }; -service typename: com::sun::star::uno::XInterface { - typename([in] long typename); }; -//TODO: service union: com::sun::star::uno::XInterface { -// union([in] long union); }; -//TODO: service unsigned: com::sun::star::uno::XInterface { -// unsigned([in] long unsigned); }; -service using: com::sun::star::uno::XInterface { using([in] long using); }; -service virtual: com::sun::star::uno::XInterface { - virtual([in] long virtual); }; -//TODO: service void: com::sun::star::uno::XInterface { void([in] long void); }; -service volatile: com::sun::star::uno::XInterface { - volatile([in] long volatile); }; -service while: com::sun::star::uno::XInterface { while([in] long while); }; - -service and: com::sun::star::uno::XInterface { and([in] long and); }; -service bitand: com::sun::star::uno::XInterface { bitand([in] long bitand); }; -service bitor: com::sun::star::uno::XInterface { bitor([in] long bitor); }; -service compl: com::sun::star::uno::XInterface { compl([in] long compl); }; -service not: com::sun::star::uno::XInterface { not([in] long not); }; -service or: com::sun::star::uno::XInterface { or([in] long or); }; -service xor: com::sun::star::uno::XInterface { xor([in] long xor); }; - -service BUFSIZ: com::sun::star::uno::XInterface { BUFSIZ([in] long BUFSIZ); }; -service CLOCKS_PER_SEC: com::sun::star::uno::XInterface { - CLOCKS_PER_SEC([in] long CLOCKS_PER_SEC); }; -service EDOM: com::sun::star::uno::XInterface { EDOM([in] long EDOM); }; -service EOF: com::sun::star::uno::XInterface { EOF([in] long EOF); }; -service ERANGE: com::sun::star::uno::XInterface { ERANGE([in] long ERANGE); }; -service EXIT_FAILURE: com::sun::star::uno::XInterface { - EXIT_FAILURE([in] long EXIT_FAILURE); }; -service EXIT_SUCCESS: com::sun::star::uno::XInterface { - EXIT_SUCCESS([in] long EXIT_SUCCESS); }; -service FILENAME_MAX: com::sun::star::uno::XInterface { - FILENAME_MAX([in] long FILENAME_MAX); }; -service FOPEN_MAX: com::sun::star::uno::XInterface { - FOPEN_MAX([in] long FOPEN_MAX); }; -service HUGE_VAL: com::sun::star::uno::XInterface { - HUGE_VAL([in] long HUGE_VAL); }; -service LC_ALL: com::sun::star::uno::XInterface { LC_ALL([in] long LC_ALL); }; -service LC_COLLATE: com::sun::star::uno::XInterface { - LC_COLLATE([in] long LC_COLLATE); }; -service LC_CTYPE: com::sun::star::uno::XInterface { - LC_CTYPE([in] long LC_CTYPE); }; -service LC_MONETARY: com::sun::star::uno::XInterface { - LC_MONETARY([in] long LC_MONETARY); }; -service LC_NUMERIC: com::sun::star::uno::XInterface { - LC_NUMERIC([in] long LC_NUMERIC); }; -service LC_TIME: com::sun::star::uno::XInterface { - LC_TIME([in] long LC_TIME); }; -service L_tmpnam: com::sun::star::uno::XInterface { - L_tmpnam([in] long L_tmpnam); }; -service MB_CUR_MAX: com::sun::star::uno::XInterface { - MB_CUR_MAX([in] long MB_CUR_MAX); }; -service NULL: com::sun::star::uno::XInterface { NULL([in] long NULL); }; -service RAND_MAX: com::sun::star::uno::XInterface { - RAND_MAX([in] long RAND_MAX); }; -service SEEK_CUR: com::sun::star::uno::XInterface { - SEEK_CUR([in] long SEEK_CUR); }; -service SEEK_END: com::sun::star::uno::XInterface { - SEEK_END([in] long SEEK_END); }; -service SEEK_SET: com::sun::star::uno::XInterface { - SEEK_SET([in] long SEEK_SET); }; -service SIGABRT: com::sun::star::uno::XInterface { - SIGABRT([in] long SIGABRT); }; -service SIGFPE: com::sun::star::uno::XInterface { SIGFPE([in] long SIGFPE); }; -service SIGILL: com::sun::star::uno::XInterface { SIGILL([in] long SIGILL); }; -service SIGINT: com::sun::star::uno::XInterface { SIGINT([in] long SIGINT); }; -service SIGSEGV: com::sun::star::uno::XInterface { - SIGSEGV([in] long SIGSEGV); }; -service SIGTERM: com::sun::star::uno::XInterface { - SIGTERM([in] long SIGTERM); }; -service SIG_DFL: com::sun::star::uno::XInterface { - SIG_DFL([in] long SIG_DFL); }; -service SIG_ERR: com::sun::star::uno::XInterface { - SIG_ERR([in] long SIG_ERR); }; -service SIG_IGN: com::sun::star::uno::XInterface { - SIG_IGN([in] long SIG_IGN); }; -service TMP_MAX: com::sun::star::uno::XInterface { - TMP_MAX([in] long TMP_MAX); }; -service WCHAR_MAX: com::sun::star::uno::XInterface { - WCHAR_MAX([in] long WCHAR_MAX); }; -service WCHAR_MIN: com::sun::star::uno::XInterface { - WCHAR_MIN([in] long WCHAR_MIN); }; -service WEOF: com::sun::star::uno::XInterface { WEOF([in] long WEOF); }; -service assert: com::sun::star::uno::XInterface { assert([in] long assert); }; -service errno: com::sun::star::uno::XInterface { errno([in] long errno); }; -service offsetof: com::sun::star::uno::XInterface { - offsetof([in] long offsetof); }; -service setjmp: com::sun::star::uno::XInterface { setjmp([in] long setjmp); }; -service stderr: com::sun::star::uno::XInterface { stderr([in] long stderr); }; -service stdin: com::sun::star::uno::XInterface { stdin([in] long stdin); }; -service stdout: com::sun::star::uno::XInterface { stdout([in] long stdout); }; - -service CHAR_BIT: com::sun::star::uno::XInterface { - CHAR_BIT([in] long CHAR_BIT); }; -service CHAR_MAX: com::sun::star::uno::XInterface { - CHAR_MAX([in] long CHAR_MAX); }; -service CHAR_MIN: com::sun::star::uno::XInterface { - CHAR_MIN([in] long CHAR_MIN); }; -service DBL_DIG: com::sun::star::uno::XInterface { - DBL_DIG([in] long DBL_DIG); }; -service DBL_EPSILON: com::sun::star::uno::XInterface { - DBL_EPSILON([in] long DBL_EPSILON); }; -service DBL_MANT_DIG: com::sun::star::uno::XInterface { - DBL_MANT_DIG([in] long DBL_MANT_DIG); }; -service DBL_MAX: com::sun::star::uno::XInterface { - DBL_MAX([in] long DBL_MAX); }; -service DBL_MAX_10_EXP: com::sun::star::uno::XInterface { - DBL_MAX_10_EXP([in] long DBL_MAX_10_EXP); }; -service DBL_MAX_EXP: com::sun::star::uno::XInterface { - DBL_MAX_EXP([in] long DBL_MAX_EXP); }; -service DBL_MIN: com::sun::star::uno::XInterface { - DBL_MIN([in] long DBL_MIN); }; -service DBL_MIN_10_EXP: com::sun::star::uno::XInterface { - DBL_MIN_10_EXP([in] long DBL_MIN_10_EXP); }; -service DBL_MIN_EXP: com::sun::star::uno::XInterface { - DBL_MIN_EXP([in] long DBL_MIN_EXP); }; -service FLT_DIG: com::sun::star::uno::XInterface { - FLT_DIG([in] long FLT_DIG); }; -service FLT_EPSILON: com::sun::star::uno::XInterface { - FLT_EPSILON([in] long FLT_EPSILON); }; -service FLT_MANT_DIG: com::sun::star::uno::XInterface { - FLT_MANT_DIG([in] long FLT_MANT_DIG); }; -service FLT_MAX: com::sun::star::uno::XInterface { - FLT_MAX([in] long FLT_MAX); }; -service FLT_MAX_10_EXP: com::sun::star::uno::XInterface { - FLT_MAX_10_EXP([in] long FLT_MAX_10_EXP); }; -service FLT_MAX_EXP: com::sun::star::uno::XInterface { - FLT_MAX_EXP([in] long FLT_MAX_EXP); }; -service FLT_MIN: com::sun::star::uno::XInterface { - FLT_MIN([in] long FLT_MIN); }; -service FLT_MIN_10_EXP: com::sun::star::uno::XInterface { - FLT_MIN_10_EXP([in] long FLT_MIN_10_EXP); }; -service FLT_MIN_EXP: com::sun::star::uno::XInterface { - FLT_MIN_EXP([in] long FLT_MIN_EXP); }; -service FLT_RADIX: com::sun::star::uno::XInterface { - FLT_RADIX([in] long FLT_RADIX); }; -service FLT_ROUNDS: com::sun::star::uno::XInterface { - FLT_ROUNDS([in] long FLT_ROUNDS); }; -service INT_MAX: com::sun::star::uno::XInterface { - INT_MAX([in] long INT_MAX); }; -service INT_MIN: com::sun::star::uno::XInterface { - INT_MIN([in] long INT_MIN); }; -service LDBL_DIG: com::sun::star::uno::XInterface { - LDBL_DIG([in] long LDBL_DIG); }; -service LDBL_EPSILON: com::sun::star::uno::XInterface { - LDBL_EPSILON([in] long LDBL_EPSILON); }; -service LDBL_MANT_DIG: com::sun::star::uno::XInterface { - LDBL_MANT_DIG([in] long LDBL_MANT_DIG); }; -service LDBL_MAX: com::sun::star::uno::XInterface { - LDBL_MAX([in] long LDBL_MAX); }; -service LDBL_MAX_10_EXP: com::sun::star::uno::XInterface { - LDBL_MAX_10_EXP([in] long LDBL_MAX_10_EXP); }; -service LDBL_MAX_EXP: com::sun::star::uno::XInterface { - LDBL_MAX_EXP([in] long LDBL_MAX_EXP); }; -service LDBL_MIN: com::sun::star::uno::XInterface { - LDBL_MIN([in] long LDBL_MIN); }; -service LDBL_MIN_10_EXP: com::sun::star::uno::XInterface { - LDBL_MIN_10_EXP([in] long LDBL_MIN_10_EXP); }; -service LDBL_MIN_EXP: com::sun::star::uno::XInterface { - LDBL_MIN_EXP([in] long LDBL_MIN_EXP); }; -service LONG_MAX: com::sun::star::uno::XInterface { - LONG_MAX([in] long LONG_MAX); }; -service LONG_MIN: com::sun::star::uno::XInterface { - LONG_MIN([in] long LONG_MIN); }; -service MB_LEN_MAX: com::sun::star::uno::XInterface { - MB_LEN_MAX([in] long MB_LEN_MAX); }; -service SCHAR_MAX: com::sun::star::uno::XInterface { - SCHAR_MAX([in] long SCHAR_MAX); }; -service SCHAR_MIN: com::sun::star::uno::XInterface { - SCHAR_MIN([in] long SCHAR_MIN); }; -service SHRT_MAX: com::sun::star::uno::XInterface { - SHRT_MAX([in] long SHRT_MAX); }; -service SHRT_MIN: com::sun::star::uno::XInterface { - SHRT_MIN([in] long SHRT_MIN); }; -service UCHAR_MAX: com::sun::star::uno::XInterface { - UCHAR_MAX([in] long UCHAR_MAX); }; -service UINT_MAX: com::sun::star::uno::XInterface { - UINT_MAX([in] long UINT_MAX); }; -service ULONG_MAX: com::sun::star::uno::XInterface { - ULONG_MAX([in] long ULONG_MAX); }; -service USHRT_MAX: com::sun::star::uno::XInterface { - USHRT_MAX([in] long USHRT_MAX); }; - -service FILE: com::sun::star::uno::XInterface { FILE([in] long FILE); }; -service lconv: com::sun::star::uno::XInterface { lconv([in] long lconv); }; -service tm: com::sun::star::uno::XInterface { tm([in] long tm); }; - -service std: com::sun::star::uno::XInterface { std([in] long std); }; - -service NDEBUG: com::sun::star::uno::XInterface { NDEBUG([in] long NDEBUG); }; - -service create: com::sun::star::uno::XInterface; - -}; - -module singletons { - -singleton asm: com::sun::star::uno::XInterface; -singleton auto: com::sun::star::uno::XInterface; -singleton bool: com::sun::star::uno::XInterface; -singleton break: com::sun::star::uno::XInterface; -//TODO: singleton case: com::sun::star::uno::XInterface; -singleton catch: com::sun::star::uno::XInterface; -//TODO: singleton char: com::sun::star::uno::XInterface; -singleton class: com::sun::star::uno::XInterface; -//TODO: singleton const: com::sun::star::uno::XInterface; -singleton continue: com::sun::star::uno::XInterface; -//TODO: singleton default: com::sun::star::uno::XInterface; -singleton delete: com::sun::star::uno::XInterface; -singleton do: com::sun::star::uno::XInterface; -//TODO: singleton double: com::sun::star::uno::XInterface; -singleton else: com::sun::star::uno::XInterface; -//TODO: singleton enum: com::sun::star::uno::XInterface; -singleton explicit: com::sun::star::uno::XInterface; -singleton export: com::sun::star::uno::XInterface; -singleton extern: com::sun::star::uno::XInterface; -singleton false: com::sun::star::uno::XInterface; -//TODO: singleton float: com::sun::star::uno::XInterface; -singleton for: com::sun::star::uno::XInterface; -singleton friend: com::sun::star::uno::XInterface; -singleton goto: com::sun::star::uno::XInterface; -singleton if: com::sun::star::uno::XInterface; -singleton inline: com::sun::star::uno::XInterface; -singleton int: com::sun::star::uno::XInterface; -//TODO: singleton long: com::sun::star::uno::XInterface; -singleton mutable: com::sun::star::uno::XInterface; -singleton namespace: com::sun::star::uno::XInterface; -singleton new: com::sun::star::uno::XInterface; -singleton operator: com::sun::star::uno::XInterface; -singleton private: com::sun::star::uno::XInterface; -singleton protected: com::sun::star::uno::XInterface; -singleton public: com::sun::star::uno::XInterface; -singleton register: com::sun::star::uno::XInterface; -singleton return: com::sun::star::uno::XInterface; -//TODO: singleton short: com::sun::star::uno::XInterface; -singleton signed: com::sun::star::uno::XInterface; -singleton sizeof: com::sun::star::uno::XInterface; -singleton static: com::sun::star::uno::XInterface; -//TODO: singleton struct: com::sun::star::uno::XInterface; -//TODO: singleton switch: com::sun::star::uno::XInterface; -singleton template: com::sun::star::uno::XInterface; -singleton this: com::sun::star::uno::XInterface; -singleton throw: com::sun::star::uno::XInterface; -singleton true: com::sun::star::uno::XInterface; -singleton try: com::sun::star::uno::XInterface; -//TODO: singleton typedef: com::sun::star::uno::XInterface; -singleton typeid: com::sun::star::uno::XInterface; -singleton typename: com::sun::star::uno::XInterface; -//TODO: singleton union: com::sun::star::uno::XInterface; -//TODO: singleton unsigned: com::sun::star::uno::XInterface; -singleton using: com::sun::star::uno::XInterface; -singleton virtual: com::sun::star::uno::XInterface; -//TODO: singleton void: com::sun::star::uno::XInterface; -singleton volatile: com::sun::star::uno::XInterface; -singleton while: com::sun::star::uno::XInterface; - -singleton and: com::sun::star::uno::XInterface; -singleton bitand: com::sun::star::uno::XInterface; -singleton bitor: com::sun::star::uno::XInterface; -singleton compl: com::sun::star::uno::XInterface; -singleton not: com::sun::star::uno::XInterface; -singleton or: com::sun::star::uno::XInterface; -singleton xor: com::sun::star::uno::XInterface; - -singleton BUFSIZ: com::sun::star::uno::XInterface; -singleton CLOCKS_PER_SEC: com::sun::star::uno::XInterface; -singleton EDOM: com::sun::star::uno::XInterface; -singleton EOF: com::sun::star::uno::XInterface; -singleton ERANGE: com::sun::star::uno::XInterface; -singleton EXIT_FAILURE: com::sun::star::uno::XInterface; -singleton EXIT_SUCCESS: com::sun::star::uno::XInterface; -singleton FILENAME_MAX: com::sun::star::uno::XInterface; -singleton FOPEN_MAX: com::sun::star::uno::XInterface; -singleton HUGE_VAL: com::sun::star::uno::XInterface; -singleton LC_ALL: com::sun::star::uno::XInterface; -singleton LC_COLLATE: com::sun::star::uno::XInterface; -singleton LC_CTYPE: com::sun::star::uno::XInterface; -singleton LC_MONETARY: com::sun::star::uno::XInterface; -singleton LC_NUMERIC: com::sun::star::uno::XInterface; -singleton LC_TIME: com::sun::star::uno::XInterface; -singleton L_tmpnam: com::sun::star::uno::XInterface; -singleton MB_CUR_MAX: com::sun::star::uno::XInterface; -singleton NULL: com::sun::star::uno::XInterface; -singleton RAND_MAX: com::sun::star::uno::XInterface; -singleton SEEK_CUR: com::sun::star::uno::XInterface; -singleton SEEK_END: com::sun::star::uno::XInterface; -singleton SEEK_SET: com::sun::star::uno::XInterface; -singleton SIGABRT: com::sun::star::uno::XInterface; -singleton SIGFPE: com::sun::star::uno::XInterface; -singleton SIGILL: com::sun::star::uno::XInterface; -singleton SIGINT: com::sun::star::uno::XInterface; -singleton SIGSEGV: com::sun::star::uno::XInterface; -singleton SIGTERM: com::sun::star::uno::XInterface; -singleton SIG_DFL: com::sun::star::uno::XInterface; -singleton SIG_ERR: com::sun::star::uno::XInterface; -singleton SIG_IGN: com::sun::star::uno::XInterface; -singleton TMP_MAX: com::sun::star::uno::XInterface; -singleton WCHAR_MAX: com::sun::star::uno::XInterface; -singleton WCHAR_MIN: com::sun::star::uno::XInterface; -singleton WEOF: com::sun::star::uno::XInterface; -singleton assert: com::sun::star::uno::XInterface; -singleton errno: com::sun::star::uno::XInterface; -singleton offsetof: com::sun::star::uno::XInterface; -singleton setjmp: com::sun::star::uno::XInterface; -singleton stderr: com::sun::star::uno::XInterface; -singleton stdin: com::sun::star::uno::XInterface; -singleton stdout: com::sun::star::uno::XInterface; - -singleton CHAR_BIT: com::sun::star::uno::XInterface; -singleton CHAR_MAX: com::sun::star::uno::XInterface; -singleton CHAR_MIN: com::sun::star::uno::XInterface; -singleton DBL_DIG: com::sun::star::uno::XInterface; -singleton DBL_EPSILON: com::sun::star::uno::XInterface; -singleton DBL_MANT_DIG: com::sun::star::uno::XInterface; -singleton DBL_MAX: com::sun::star::uno::XInterface; -singleton DBL_MAX_10_EXP: com::sun::star::uno::XInterface; -singleton DBL_MAX_EXP: com::sun::star::uno::XInterface; -singleton DBL_MIN: com::sun::star::uno::XInterface; -singleton DBL_MIN_10_EXP: com::sun::star::uno::XInterface; -singleton DBL_MIN_EXP: com::sun::star::uno::XInterface; -singleton FLT_DIG: com::sun::star::uno::XInterface; -singleton FLT_EPSILON: com::sun::star::uno::XInterface; -singleton FLT_MANT_DIG: com::sun::star::uno::XInterface; -singleton FLT_MAX: com::sun::star::uno::XInterface; -singleton FLT_MAX_10_EXP: com::sun::star::uno::XInterface; -singleton FLT_MAX_EXP: com::sun::star::uno::XInterface; -singleton FLT_MIN: com::sun::star::uno::XInterface; -singleton FLT_MIN_10_EXP: com::sun::star::uno::XInterface; -singleton FLT_MIN_EXP: com::sun::star::uno::XInterface; -singleton FLT_RADIX: com::sun::star::uno::XInterface; -singleton FLT_ROUNDS: com::sun::star::uno::XInterface; -singleton INT_MAX: com::sun::star::uno::XInterface; -singleton INT_MIN: com::sun::star::uno::XInterface; -singleton LDBL_DIG: com::sun::star::uno::XInterface; -singleton LDBL_EPSILON: com::sun::star::uno::XInterface; -singleton LDBL_MANT_DIG: com::sun::star::uno::XInterface; -singleton LDBL_MAX: com::sun::star::uno::XInterface; -singleton LDBL_MAX_10_EXP: com::sun::star::uno::XInterface; -singleton LDBL_MAX_EXP: com::sun::star::uno::XInterface; -singleton LDBL_MIN: com::sun::star::uno::XInterface; -singleton LDBL_MIN_10_EXP: com::sun::star::uno::XInterface; -singleton LDBL_MIN_EXP: com::sun::star::uno::XInterface; -singleton LONG_MAX: com::sun::star::uno::XInterface; -singleton LONG_MIN: com::sun::star::uno::XInterface; -singleton MB_LEN_MAX: com::sun::star::uno::XInterface; -singleton SCHAR_MAX: com::sun::star::uno::XInterface; -singleton SCHAR_MIN: com::sun::star::uno::XInterface; -singleton SHRT_MAX: com::sun::star::uno::XInterface; -singleton SHRT_MIN: com::sun::star::uno::XInterface; -singleton UCHAR_MAX: com::sun::star::uno::XInterface; -singleton UINT_MAX: com::sun::star::uno::XInterface; -singleton ULONG_MAX: com::sun::star::uno::XInterface; -singleton USHRT_MAX: com::sun::star::uno::XInterface; - -singleton FILE: com::sun::star::uno::XInterface; -singleton lconv: com::sun::star::uno::XInterface; -singleton tm: com::sun::star::uno::XInterface; - -singleton std: com::sun::star::uno::XInterface; - -singleton NDEBUG: com::sun::star::uno::XInterface; - -singleton get: com::sun::star::uno::XInterface; - -}; - -enum HelperEnum { ZERO, ONE }; - -struct HelperStruct { boolean m1; com::sun::star::uno::XInterface m2; }; - -typedef byte TDByte; -typedef HelperEnum TDEnum1; -typedef TDEnum1 TDEnum; - -struct BigStruct { - boolean m1; - byte m2; - short m3; - unsigned short m4; - long m5; - unsigned long m6; - hyper m7; - unsigned hyper m8; - float m9; - double m10; - char m11; - string m12; - type m13; - any m14; - sequence m15; - HelperEnum m16; - HelperStruct m17; - com::sun::star::uno::XInterface m18; - TDByte m19; - TDEnum m20; - sequence m21; - sequence m22; - sequence< sequence > m23; -}; - -struct Struct { - T member1; - sequence member2; -}; - -struct StructUsage { - Struct< long, short > member1; - sequence< - sequence< - Struct< - sequence< Struct< any, boolean > >, - com::sun::star::uno::XInterface > > > - member2; -}; - -struct AlignmentBaseStruct { - double member1; - short member2; -}; - -struct AlignmentDerivedStruct: AlignmentBaseStruct { - short member3; -}; - -exception TestException1: com::sun::star::uno::RuntimeException { - long m1; - any m2; - HelperEnum m3; - Struct m4; - unsigned short m5; -}; - -exception TestException2: TestException1 {}; - -constants Constants { - const byte byteMin = -128; - const byte byteMax = 127; - const byte byteNeg = 255; - const short shortMin = -32768; - const short shortMax = 32767; - const unsigned short unsignedShortMin = 0; - const unsigned short unsignedShortMax = 65535; - const long longMin = -2147483648; - const long longMax = 2147483647; - const unsigned long unsignedLongMin = 0; - const unsigned long unsignedLongMax = 4294967295; - const hyper hyperMin = -9223372036854775808; - const hyper hyperMax = 9223372036854775807; - const unsigned hyper unsignedHyperMin = 0; - const unsigned hyper unsignedHyperMax = 18446744073709551615; -}; - -}; }; }; diff --git a/cppu/qa/cppumaker/version.map b/cppu/qa/cppumaker/version.map deleted file mode 100644 index 0dbbcc5a7..000000000 --- a/cppu/qa/cppumaker/version.map +++ /dev/null @@ -1,34 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -UDK_3_0_0 { - global: - cppunitTestPlugIn; - - local: - *; -}; diff --git a/cppu/qa/makefile.mk b/cppu/qa/makefile.mk deleted file mode 100644 index 9d3d5c207..000000000 --- a/cppu/qa/makefile.mk +++ /dev/null @@ -1,107 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ := .. -PRJNAME := cppu -TARGET := qa - -ENABLE_EXCEPTIONS := TRUE - -.INCLUDE: settings.mk - -CFLAGSCXX+=$(CPPUNIT_CFLAGS) - -.IF "$(OS)" == "IOS" -CFLAGSCXX += $(OBJCXXFLAGS) -.ENDIF - -DLLPRE=# no leading "lib" on .so files - -INCPRE+=$(MISC)$/$(TARGET)$/inc - -SHL1TARGET = $(TARGET)_any -SHL1OBJS = $(SLO)$/test_any.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) -SHL1VERSIONMAP = version.map -SHL1IMPLIB = i$(SHL1TARGET) -DEF1NAME = $(SHL1TARGET) - -SHL2TARGET = $(TARGET)_unotype -SHL2OBJS = $(SLO)$/test_unotype.obj -SHL2STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) -SHL2VERSIONMAP = version.map -SHL2IMPLIB = i$(SHL2TARGET) -DEF2NAME = $(SHL2TARGET) - -SHL3TARGET = $(TARGET)_reference -SHL3OBJS = $(SLO)$/test_reference.obj -SHL3STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) -SHL3VERSIONMAP = version.map -SHL3IMPLIB = i$(SHL3TARGET) -DEF3NAME = $(SHL3TARGET) - -SHL4TARGET = $(TARGET)_recursion -SHL4OBJS = $(SLO)$/test_recursion.obj -SHL4STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) -SHL4VERSIONMAP = version.map -SHL4IMPLIB = i$(SHL4TARGET) -DEF4NAME = $(SHL4TARGET) - -SLOFILES = $(SHL1OBJS) $(SHL2OBJS) $(SHL3OBJS) $(SHL4OBJS) - -.IF "$(OS)" == "IOS" -APP5OBJS = $(OBJ)/cppu_cppunittester_all.obj $(SHL1OBJS) $(SHL2OBJS) $(SHL3OBJS) $(SHL4OBJS) -APP5RPATH = NONE -APP5STDLIBS = $(CPPUNITLIB) $(CPPULIB) $(SALLIB) -APP5TARGET = cppu_cppunittester_all -.ENDIF - -.INCLUDE: target.mk - -$(SHL1OBJS): $(MISC)$/$(TARGET).cppumaker.flag - -$(SHL2OBJS): $(MISC)$/$(TARGET).cppumaker.flag - -$(SHL3OBJS): $(MISC)$/$(TARGET).cppumaker.flag - -$(SHL4OBJS): $(MISC)$/$(TARGET).cppumaker.flag - -$(MISC)$/$(TARGET).cppumaker.flag: $(MISC)$/$(TARGET).rdb - - $(MKDIRHIER) $(MISC)$/$(TARGET)$/inc - $(CPPUMAKER) -O$(MISC)$/$(TARGET)$/inc -BUCR -C $< \ - $(SOLARBINDIR)$/udkapi.rdb - $(TOUCH) $@ - -$(MISC)$/$(TARGET).rdb: $(MISC)$/$(TARGET)$/types.urd - - $(RM) $@ - $(REGMERGE) $@ /UCR $< - -$(MISC)$/$(TARGET)$/types.urd: types.idl - - $(MKDIR) $(MISC)$/$(TARGET) - $(IDLC) -O$(MISC)$/$(TARGET) -I$(SOLARIDLDIR) -cid -we $< - -.INCLUDE : _cppunit.mk diff --git a/cppu/qa/test_any.cxx b/cppu/qa/test_any.cxx deleted file mode 100644 index ec5bbc628..000000000 --- a/cppu/qa/test_any.cxx +++ /dev/null @@ -1,2322 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#ifdef IOS -#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTest_qa_cppu_any -#endif - -#include "sal/config.h" - -#include // wntmsci10 does not like - -#include -#include -#include -#include -#include - -#include "Enum1.hpp" -#include "Enum2.hpp" -#include "Exception1.hpp" -#include "Exception2.hpp" -#include "Exception2a.hpp" -#include "Exception2b.hpp" -#include "Interface1.hpp" -#include "Interface2.hpp" -#include "Interface2a.hpp" -#include "Interface2b.hpp" -#include "Interface3.hpp" -#include "Poly.hpp" -#include "Struct1.hpp" -#include "Struct2.hpp" -#include "Struct2a.hpp" -#include "Struct2b.hpp" -#include "boost/type_traits/is_same.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/Type.hxx" -#include "com/sun/star/uno/XInterface.hpp" -#include "osl/diagnose.h" -#include "osl/interlck.h" -#include "rtl/string.h" -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -namespace { - -namespace css = com::sun::star; - -class Base { -public: - Base(): m_count(0) {} - - void acquire() { - if (osl_incrementInterlockedCount(&m_count) == SAL_MAX_INT32) { - abort(); - } - } - - void release() { - if (osl_decrementInterlockedCount(&m_count) == 0) { - delete this; - } - } - -protected: - virtual ~Base() {} - -private: - Base(Base &); // not declared - void operator =(Base &); // not declared - - oslInterlockedCount m_count; -}; - -class Impl1: public Interface1, private Base { -public: - virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type) - throw (css::uno::RuntimeException) - { - if (type - == getCppuType< css::uno::Reference< css::uno::XInterface > >()) - { - css::uno::Reference< css::uno::XInterface > ref( - static_cast< css::uno::XInterface * >(this)); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface1 > >()) { - css::uno::Reference< Interface1 > ref(this); - return css::uno::Any(&ref, type); - } else { - return css::uno::Any(); - } - } - - virtual void SAL_CALL acquire() throw () { - Base::acquire(); - } - - virtual void SAL_CALL release() throw () { - Base::release(); - } -}; - -class Impl2: public Interface2a, public Interface3, private Base { -public: - virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type) - throw (css::uno::RuntimeException) - { - if (type - == getCppuType< css::uno::Reference< css::uno::XInterface > >()) - { - css::uno::Reference< css::uno::XInterface > ref( - static_cast< css::uno::XInterface * >( - static_cast< Interface2a * >(this))); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface2 > >()) { - css::uno::Reference< Interface2 > ref(this); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface2a > >()) - { - css::uno::Reference< Interface2a > ref(this); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface3 > >()) { - css::uno::Reference< Interface3 > ref(this); - return css::uno::Any(&ref, type); - } else { - return css::uno::Any(); - } - } - - virtual void SAL_CALL acquire() throw () { - Base::acquire(); - } - - virtual void SAL_CALL release() throw () { - Base::release(); - } -}; - -class Impl2b: public Interface2b, private Base { -public: - virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type) - throw (css::uno::RuntimeException) - { - if (type - == getCppuType< css::uno::Reference< css::uno::XInterface > >()) - { - css::uno::Reference< css::uno::XInterface > ref( - static_cast< css::uno::XInterface * >( - static_cast< Interface2a * >(this))); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface2 > >()) { - css::uno::Reference< Interface2 > ref(this); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface2a > >()) - { - css::uno::Reference< Interface2a > ref(this); - return css::uno::Any(&ref, type); - } else if (type == getCppuType< css::uno::Reference< Interface2b > >()) - { - css::uno::Reference< Interface2b > ref(this); - return css::uno::Any(&ref, type); - } else { - return css::uno::Any(); - } - } - - virtual void SAL_CALL acquire() throw () { - Base::acquire(); - } - - virtual void SAL_CALL release() throw () { - Base::release(); - } -}; - -class Test: public CppUnit::TestFixture { -public: - void testVoid(); - void testBoolean(); - void testByte(); - void testShort(); - void testUnsignedShort(); - void testLong(); - void testUnsignedLong(); - void testHyper(); - void testUnsignedHyper(); - void testFloat(); - void testDouble(); - void testChar(); - void testString(); - void testType(); - void testSequence(); - void testEnum(); - void testStruct(); - void testPoly(); - void testException(); - void testInterface(); - void testNull(); - - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(testVoid); - CPPUNIT_TEST(testBoolean); - CPPUNIT_TEST(testByte); - CPPUNIT_TEST(testShort); - CPPUNIT_TEST(testUnsignedShort); - CPPUNIT_TEST(testLong); - CPPUNIT_TEST(testUnsignedLong); - CPPUNIT_TEST(testHyper); - CPPUNIT_TEST(testUnsignedHyper); - CPPUNIT_TEST(testFloat); - CPPUNIT_TEST(testDouble); - CPPUNIT_TEST(testChar); - CPPUNIT_TEST(testString); - CPPUNIT_TEST(testType); - CPPUNIT_TEST(testSequence); - CPPUNIT_TEST(testEnum); - CPPUNIT_TEST(testStruct); - CPPUNIT_TEST(testPoly); - CPPUNIT_TEST(testException); - CPPUNIT_TEST(testInterface); - CPPUNIT_TEST(testNull); - CPPUNIT_TEST_SUITE_END(); -}; - -void Test::testVoid() { - css::uno::Any a; - CPPUNIT_ASSERT(a.getValueType() == getVoidCppuType()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testBoolean() { - css::uno::Any a(false); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Bool >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", (a >>= b) && !b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", (a >>= b) && !b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - if (boost::is_same< sal_uInt8, sal_Bool >::value) { - CPPUNIT_ASSERT_MESSAGE("@sal_uInt8", (a >>= b) && b == 0); - } else { - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testByte() { - css::uno::Any a(static_cast< sal_Int8 >(1)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int8 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", (a >>= b) && b == 1); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", (a >>= b) && b == 1); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", (a >>= b) && b == 1); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { - CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", (a >>= b) && b == 1); - } else { - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testShort() { - css::uno::Any a(static_cast< sal_Int16 >(1)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int16 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", (a >>= b) && b == 1); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", (a >>= b) && b == 1); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { - CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", (a >>= b) && b == 1); - } else { - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testUnsignedShort() { - sal_uInt16 n = 1; - css::uno::Any a(&n, getCppuType(static_cast< sal_uInt16 const * >(0))); - CPPUNIT_ASSERT( - a.getValueType() == getCppuType(static_cast< sal_uInt16 const * >(0))); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", (a >>= b) && b == 1); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", (a >>= b) && b == 1); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { - CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", (a >>= b) && b == 1); - } else { - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testLong() { - css::uno::Any a(static_cast< sal_Int32 >(1)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int32 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testUnsignedLong() { - css::uno::Any a(static_cast< sal_uInt32 >(1)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_uInt32 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testHyper() { - css::uno::Any a(static_cast< sal_Int64 >(1)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int64 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testUnsignedHyper() { - css::uno::Any a(static_cast< sal_uInt64 >(1)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_uInt64 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testFloat() { - css::uno::Any a(1.f); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< float >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testDouble() { - css::uno::Any a(1.); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< double >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testChar() { - sal_Unicode c = '1'; - css::uno::Any a(&c, getCppuType< sal_Unicode >()); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Unicode >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { - CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", !(a >>= b) && b == '2'); - } else { - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", (a >>= b) && b == '1'); - } - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testString() { - css::uno::Any a(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("1"))); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< rtl::OUString >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - (a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("1"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testType() { - css::uno::Any a(getCppuType< sal_Int32 >()); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< css::uno::Type >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", (a >>= b) && b == getCppuType< sal_Int32 >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testSequence() { - sal_Int32 n = 1; - css::uno::Any a(css::uno::Sequence< sal_Int32 >(&n, 1)); - CPPUNIT_ASSERT( - a.getValueType() == getCppuType< css::uno::Sequence< sal_Int32 > >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - css::uno::Sequence< sal_Int32 > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - (a >>= b) && b.getLength() == 1 && b[0] == 1); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testEnum() { - css::uno::Any a(Enum2_M1); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< Enum2 >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Enum2 b = Enum2_M2; - CPPUNIT_ASSERT_MESSAGE("Enum2", (a >>= b) && b == Enum2_M1); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testStruct() { - css::uno::Any a(Struct2a(1, 3)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< Struct2a >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Struct2 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct2", (a >>= b) && b.member == 1); - } - { - Struct2a b(2, 2); - CPPUNIT_ASSERT_MESSAGE( - "Struct2a", (a >>= b) && b.member == 1 && b.member2 == 3); - } - { - Struct2b b(2, 2, 2); - CPPUNIT_ASSERT_MESSAGE("Struct2b", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testPoly() { - css::uno::Any a; - a <<= Poly< css::uno::Sequence< ::sal_Unicode > >(); - CPPUNIT_ASSERT_MESSAGE( - "type name", - a.getValueType().getTypeName().equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM("Poly<[]char>"))); - CPPUNIT_ASSERT_MESSAGE( - "constructor", - a == css::uno::Any(Poly< css::uno::Sequence< ::sal_Unicode > >())); -} - -void Test::testException() { - css::uno::Any a( - Exception2a( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 1, - 3)); - CPPUNIT_ASSERT(a.getValueType() == getCppuType< Exception2a >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - Exception2 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception2", (a >>= b) && b.member == 1); - } - { - Exception2a b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2, - 2); - CPPUNIT_ASSERT_MESSAGE( - "Exception2a", (a >>= b) && b.member == 1 && b.member2 == 3); - } - { - Exception2b b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2, - 2); - CPPUNIT_ASSERT_MESSAGE("Exception2b", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } -} - -void Test::testInterface() { - css::uno::Reference< Interface2a > i2(new Impl2); - css::uno::Any a(i2); - CPPUNIT_ASSERT( - a.getValueType() - == getCppuType< css::uno::Reference< Interface2a > >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > i(new Impl1); - css::uno::Reference< Interface1 > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i); - } - { - css::uno::Reference< Interface2 > b(new Impl2); - CPPUNIT_ASSERT_MESSAGE("Interface2", (a >>= b) && b == i2); - } - { - css::uno::Reference< Interface2a > b(new Impl2); - CPPUNIT_ASSERT_MESSAGE("Interface2a", (a >>= b) && b == i2); - } - { - css::uno::Reference< Interface2b > i(new Impl2b); - css::uno::Reference< Interface2b > b(i); - CPPUNIT_ASSERT_MESSAGE("Interface2b", !(a >>= b) && b == i); - } - { - css::uno::Reference< Interface3 > b(new Impl2); - CPPUNIT_ASSERT_MESSAGE("Interface3", (a >>= b) && b == i2); - } -} - -void Test::testNull() { - css::uno::Any a = css::uno::Any(css::uno::Reference< Interface2a >()); - CPPUNIT_ASSERT( - a.getValueType() - == getCppuType< css::uno::Reference< Interface2a > >()); - { - bool b = true; - CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b); - } - { - sal_Bool b = true; - CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b); - } - { - sal_Int8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2); - } - { - sal_uInt8 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2); - } - { - sal_Int16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2); - } - { - sal_uInt16 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2); - } - { - sal_Int32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2); - } - { - sal_uInt32 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2); - } - { - sal_Int64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2); - } - { - sal_uInt64 b = 2; - CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2); - } - { - float b = 2; - CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2); - } - { - double b = 2; - CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2); - } - { - sal_Unicode b = '2'; - CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2'); - } - { - rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); - CPPUNIT_ASSERT_MESSAGE( - "rtl::OUString", - !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))); - } - { - css::uno::Type b(getCppuType< rtl::OUString >()); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Type", - !(a >>= b) && b == getCppuType< rtl::OUString >()); - } - { - css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); - CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a); - } - { - css::uno::Sequence< rtl::OUString > b(2); - CPPUNIT_ASSERT_MESSAGE( - "css::uno::Sequence", - !(a >>= b) && b.getLength() == 2); - } - { - Enum1 b = Enum1_M2; - CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2); - } - { - Struct1 b(2); - CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2); - } - { - Exception1 b( - rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); - CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2); - } - { - css::uno::Reference< Interface1 > b(new Impl1); - CPPUNIT_ASSERT_MESSAGE( - "Interface1", (a >>= b) && !b.is()); - } - { - css::uno::Reference< Interface2 > b(new Impl2); - CPPUNIT_ASSERT_MESSAGE( - "Interface2", (a >>= b) && !b.is()); - } - { - css::uno::Reference< Interface2a > b(new Impl2); - CPPUNIT_ASSERT_MESSAGE("Interface2a", (a >>= b) && !b.is()); - } - { - css::uno::Reference< Interface2b > b(new Impl2b); - CPPUNIT_ASSERT_MESSAGE( - "Interface2b", (a >>= b) && !b.is()); - } - { - css::uno::Reference< Interface3 > b(new Impl2); - CPPUNIT_ASSERT_MESSAGE( - "Interface3", (a >>= b) && !b.is()); - } -} - -CPPUNIT_TEST_SUITE_REGISTRATION(Test); - -} - -CPPUNIT_PLUGIN_IMPLEMENT(); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/qa/test_recursion.cxx b/cppu/qa/test_recursion.cxx deleted file mode 100644 index ca4a4c400..000000000 --- a/cppu/qa/test_recursion.cxx +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "precompiled_cppu.hxx" - -#ifdef IOS -#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTest_qa_cppu_recursion -#endif - -#include "sal/config.h" - -#include -#include -#include -#include -#include - -#include "sal/types.h" - -#include "Rec.hpp" - -namespace -{ - -class Test: public CppUnit::TestFixture { - -public: - void testRecursion(); - - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(testRecursion); - CPPUNIT_TEST_SUITE_END(); -}; - -void Test::testRecursion() { - CPPUNIT_ASSERT_EQUAL(static_cast< sal_Int32 >(0), Rec().x.getLength()); -} - -CPPUNIT_TEST_SUITE_REGISTRATION(Test); - -} - -CPPUNIT_PLUGIN_IMPLEMENT(); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/qa/test_reference.cxx b/cppu/qa/test_reference.cxx deleted file mode 100644 index cb44084f7..000000000 --- a/cppu/qa/test_reference.cxx +++ /dev/null @@ -1,168 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#ifdef IOS -#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTest_qa_cppu_reference -#endif - -#include "sal/config.h" - -#include -#include -#include -#include -#include - -#include "Interface1.hpp" - -#include "rtl/ustring.hxx" -#include "sal/types.h" - -namespace -{ - -using ::com::sun::star::uno::Type; -using ::com::sun::star::uno::Any; -using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::RuntimeException; -using ::com::sun::star::uno::UNO_SET_THROW; - -class Foo: public Interface1 -{ -public: - Foo() - :m_refCount(0) - { - } - - virtual Any SAL_CALL queryInterface(const Type & _type) - throw (RuntimeException) - { - Any aInterface; - if (_type == getCppuType< Reference< XInterface > >()) - { - Reference< XInterface > ref( static_cast< XInterface * >( this ) ); - aInterface.setValue( &ref, _type ); - } - else if (_type == getCppuType< Reference< Interface1 > >()) - { - Reference< Interface1 > ref( this ); - aInterface.setValue( &ref, _type ); - } - - return Any(); - } - - virtual void SAL_CALL acquire() throw () - { - osl_incrementInterlockedCount( &m_refCount ); - } - - virtual void SAL_CALL release() throw () - { - if ( 0 == osl_decrementInterlockedCount( &m_refCount ) ) - delete this; - } - -protected: - virtual ~Foo() - { - } - -private: - Foo(Foo &); // not declared - Foo& operator =(const Foo&); // not declared - -private: - oslInterlockedCount m_refCount; -}; - -class Test: public ::CppUnit::TestFixture -{ - -public: - void testUnoSetThrow(); - - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(testUnoSetThrow); - CPPUNIT_TEST_SUITE_END(); -}; - -void Test::testUnoSetThrow() -{ - Reference< Interface1 > xNull; - Reference< Interface1 > xFoo( new Foo ); - - // ctor taking Reference< interface_type > - bool bCaughtException = false; - try { Reference< Interface1 > x( xNull, UNO_SET_THROW ); (void)x; } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( true, bCaughtException ); - - bCaughtException = false; - try { Reference< Interface1 > x( xFoo, UNO_SET_THROW ); (void)x; } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( false, bCaughtException ); - - // ctor taking interface_type* - bCaughtException = false; - try { Reference< Interface1 > x( xNull.get(), UNO_SET_THROW ); (void)x; } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( true, bCaughtException ); - - bCaughtException = false; - try { Reference< Interface1 > x( xFoo.get(), UNO_SET_THROW ); (void)x; } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( false, bCaughtException ); - - Reference< Interface1 > x; - // "set" taking Reference< interface_type > - bCaughtException = false; - try { x.set( xNull, UNO_SET_THROW ); } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( true, bCaughtException ); - - bCaughtException = false; - try { x.set( xFoo, UNO_SET_THROW ); } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( false, bCaughtException ); - - // "set" taking interface_type* - bCaughtException = false; - try { x.set( xNull.get(), UNO_SET_THROW ); } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( true, bCaughtException ); - - bCaughtException = false; - try { x.set( xFoo.get(), UNO_SET_THROW ); } catch( const RuntimeException& ) { bCaughtException = true; } - CPPUNIT_ASSERT_EQUAL( false, bCaughtException ); -} - -CPPUNIT_TEST_SUITE_REGISTRATION(Test); - -} // namespace - -CPPUNIT_PLUGIN_IMPLEMENT(); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/qa/test_unotype.cxx b/cppu/qa/test_unotype.cxx deleted file mode 100644 index c06296f5e..000000000 --- a/cppu/qa/test_unotype.cxx +++ /dev/null @@ -1,824 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#ifdef IOS -#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTest_qa_cppu_unotype -#endif - -#include "sal/config.h" - -#include -#include -#include -#include -#include - -#include - -#include "com/sun/star/beans/Optional.hpp" -#include "com/sun/star/beans/PropertyChangeEvent.hpp" -#include "com/sun/star/lang/EventObject.hpp" -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/Type.hxx" -#include "com/sun/star/uno/TypeClass.hpp" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "com/sun/star/uno/XInterface.hpp" -#include "cppu/unotype.hxx" -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -namespace com { namespace sun { namespace star { namespace uno { - class Any; -} } } } - -namespace { - -namespace css = com::sun::star; - -struct DerivedStruct1: css::lang::EventObject {}; - -struct DerivedStruct2: css::beans::PropertyChangeEvent {}; - -struct DerivedException1: css::uno::Exception {}; - -struct DerivedException2: css::uno::RuntimeException {}; - -struct DerivedInterface1: css::uno::XInterface {}; - -struct DerivedInterface2: css::uno::XComponentContext {}; - -class Test: public ::CppUnit::TestFixture { -public: - void testUnoType(); - - void testGetTypeFavourUnsigned(); - - void testGetTypeFavourChar(); - - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(testUnoType); - CPPUNIT_TEST(testGetTypeFavourUnsigned); - CPPUNIT_TEST(testGetTypeFavourChar); - CPPUNIT_TEST_SUITE_END(); -}; - -void Test::testUnoType() { - css::uno::Type t; - t = ::cppu::UnoType< ::cppu::UnoVoidType >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_VOID, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("void")), t.getTypeName()); - t = ::cppu::UnoType< bool >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_BOOLEAN, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("boolean")), - t.getTypeName()); - CPPUNIT_ASSERT(::cppu::UnoType< ::sal_Bool >::get() == t); - t = ::cppu::UnoType< ::sal_Int8 >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_BYTE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("byte")), t.getTypeName()); - t = ::cppu::UnoType< ::sal_Int16 >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SHORT, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("short")), t.getTypeName()); - t = ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_UNSIGNED_SHORT, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unsigned short")), - t.getTypeName()); - t = ::cppu::UnoType< ::sal_Int32 >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_LONG, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("long")), t.getTypeName()); - t = ::cppu::UnoType< ::sal_uInt32 >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_UNSIGNED_LONG, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unsigned long")), - t.getTypeName()); - t = ::cppu::UnoType< ::sal_Int64 >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_HYPER, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("hyper")), t.getTypeName()); - t = ::cppu::UnoType< ::sal_uInt64 >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_UNSIGNED_HYPER, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unsigned hyper")), - t.getTypeName()); - t = ::cppu::UnoType< float >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_FLOAT, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("float")), t.getTypeName()); - t = ::cppu::UnoType< double >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_DOUBLE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("double")), - t.getTypeName()); - t = ::cppu::UnoType< ::cppu::UnoCharType >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_CHAR, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("char")), t.getTypeName()); - t = ::cppu::UnoType< ::rtl::OUString >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_STRING, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("string")), - t.getTypeName()); - t = ::cppu::UnoType< css::uno::Type >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_TYPE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("type")), t.getTypeName()); - t = ::cppu::UnoType< css::uno::Any >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_ANY, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("any")), t.getTypeName()); - t = ::cppu::UnoType< ::cppu::UnoSequenceType< ::sal_Int8 > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SEQUENCE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[]byte")), - t.getTypeName()); - CPPUNIT_ASSERT( - ::cppu::UnoType< css::uno::Sequence< ::sal_Int8 > >::get() == t); - t = ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SEQUENCE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[]unsigned short")), - t.getTypeName()); - t = ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoCharType > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SEQUENCE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[]char")), - t.getTypeName()); - t = ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::sal_Int8 > > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SEQUENCE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[][]byte")), - t.getTypeName()); - CPPUNIT_ASSERT( - ::cppu::UnoType< - css::uno::Sequence< css::uno::Sequence< ::sal_Int8 > > >::get() == t); - t = ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SEQUENCE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[][]unsigned short")), - t.getTypeName()); - t = ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoCharType > > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_SEQUENCE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[][]char")), - t.getTypeName()); - t = ::cppu::UnoType< css::uno::TypeClass >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_ENUM, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.TypeClass")), - t.getTypeName()); - t = ::cppu::UnoType< css::lang::EventObject >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_STRUCT, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.lang.EventObject")), - t.getTypeName()); - CPPUNIT_ASSERT(::cppu::UnoType< DerivedStruct1 >::get() == t); - t = ::cppu::UnoType< css::beans::PropertyChangeEvent >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_STRUCT, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.beans.PropertyChangeEvent")), - t.getTypeName()); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT(::cppu::UnoType< DerivedStruct2 >::get() == t); -#endif - t = ::cppu::UnoType< css::beans::Optional< ::sal_Int8 > >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_STRUCT, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.beans.Optional")), - t.getTypeName()); - t = ::cppu::UnoType< css::uno::Exception >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_EXCEPTION, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.Exception")), - t.getTypeName()); - CPPUNIT_ASSERT(::cppu::UnoType< DerivedException1 >::get() == t); - t = ::cppu::UnoType< css::uno::RuntimeException >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_EXCEPTION, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.RuntimeException")), - t.getTypeName()); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT(::cppu::UnoType< DerivedException2 >::get() == t); -#endif - t = ::cppu::UnoType< css::uno::XInterface >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_INTERFACE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface")), - t.getTypeName()); - CPPUNIT_ASSERT( - ::cppu::UnoType< css::uno::Reference< css::uno::XInterface > >::get() == - t); - CPPUNIT_ASSERT(::cppu::UnoType< DerivedInterface1 >::get() == t); - CPPUNIT_ASSERT( - ::cppu::UnoType< css::uno::Reference< DerivedInterface1 > >::get() == - t); - t = ::cppu::UnoType< css::uno::XComponentContext >::get(); - CPPUNIT_ASSERT_EQUAL(css::uno::TypeClass_INTERFACE, t.getTypeClass()); - CPPUNIT_ASSERT_EQUAL( - ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XComponentContext")), - t.getTypeName()); - CPPUNIT_ASSERT( - ::cppu::UnoType< - css::uno::Reference< css::uno::XComponentContext > >::get() == t); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT(::cppu::UnoType< DerivedInterface2 >::get() == t); - CPPUNIT_ASSERT( - ::cppu::UnoType< css::uno::Reference< DerivedInterface2 > >::get() == - t); -#endif -} - -void Test::testGetTypeFavourUnsigned() { - CPPUNIT_ASSERT(typeid(::sal_Unicode) == typeid(::sal_uInt16)); - CPPUNIT_ASSERT( - ::getCppuType(static_cast< ::sal_Unicode * >(0)) == - ::getCppuType(static_cast< ::sal_uInt16 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< ::cppu::UnoVoidType * >(0)) == - ::cppu::UnoType< ::cppu::UnoVoidType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< bool * >(0)) == - ::cppu::UnoType< bool >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< bool * >(0)) == - ::getCppuType(static_cast< bool * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Bool * >(0)) == - ::cppu::UnoType< bool >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Bool * >(0)) == - ::getCppuType(static_cast< ::sal_Bool * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int8 * >(0)) == - ::cppu::UnoType< ::sal_Int8 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int8 * >(0)) == - ::getCppuType(static_cast< ::sal_Int8 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int16 * >(0)) == - ::cppu::UnoType< ::sal_Int16 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int16 * >(0)) == - ::getCppuType(static_cast< ::sal_Int16 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< ::cppu::UnoUnsignedShortType * >(0)) == - ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_uInt16 * >(0)) == - ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_uInt16 * >(0)) == - ::getCppuType(static_cast< ::sal_uInt16 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int32 * >(0)) == - ::cppu::UnoType< ::sal_Int32 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int32 * >(0)) == - ::getCppuType(static_cast< ::sal_Int32 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_uInt32 * >(0)) == - ::cppu::UnoType< ::sal_uInt32 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_uInt32 * >(0)) == - ::getCppuType(static_cast< ::sal_uInt32 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int64 * >(0)) == - ::cppu::UnoType< ::sal_Int64 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Int64 * >(0)) == - ::getCppuType(static_cast< ::sal_Int64 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_uInt64 * >(0)) == - ::cppu::UnoType< ::sal_uInt64 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_uInt64 * >(0)) == - ::getCppuType(static_cast< ::sal_uInt64 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< float * >(0)) == - ::cppu::UnoType< float >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< float * >(0)) == - ::getCppuType(static_cast< float * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< double * >(0)) == - ::cppu::UnoType< double >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< double * >(0)) == - ::getCppuType(static_cast< double * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< ::cppu::UnoCharType * >(0)) == - ::cppu::UnoType< ::cppu::UnoCharType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Unicode * >(0)) == - ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::sal_Unicode * >(0)) == - ::getCppuType(static_cast< ::sal_Unicode * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::rtl::OUString * >(0)) == - ::cppu::UnoType< ::rtl::OUString >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< ::rtl::OUString * >(0)) == - ::getCppuType(static_cast< ::rtl::OUString * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< css::uno::Type * >(0)) == - ::cppu::UnoType< css::uno::Type >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< css::uno::Type * >(0)) == - ::getCppuType(static_cast< css::uno::Type * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< css::uno::Any * >(0)) == - ::cppu::UnoType< css::uno::Any >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< css::uno::Any * >(0)) == - ::getCppuType(static_cast< css::uno::Any * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > * >(0)) == - ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< ::sal_uInt16 > * >(0)) == - ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< ::sal_uInt16 > * >(0)) == - ::getCppuType(static_cast< css::uno::Sequence< ::sal_uInt16 > * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > * >(0)) == - ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_uInt16 > > * >(0)) == - ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_uInt16 > > * >(0)) == - ::getCppuType( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_uInt16 > > * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< ::sal_Unicode > * >(0)) == - ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< ::sal_Unicode > * >(0)) == - ::getCppuType(static_cast< css::uno::Sequence< ::sal_Unicode > * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_Unicode > > * >(0)) == - ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_Unicode > > * >(0)) == - ::getCppuType( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_Unicode > > * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::TypeClass * >(0)) == - ::cppu::UnoType< css::uno::TypeClass >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::TypeClass * >(0)) == - ::getCppuType(static_cast< css::uno::TypeClass * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::lang::EventObject * >(0)) == - ::cppu::UnoType< css::lang::EventObject >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::lang::EventObject * >(0)) == - ::getCppuType(static_cast< css::lang::EventObject * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedStruct1 * >(0)) == - ::cppu::UnoType< css::lang::EventObject >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedStruct1 * >(0)) == - ::getCppuType(static_cast< DerivedStruct1 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::beans::PropertyChangeEvent * >(0)) == - ::cppu::UnoType< css::beans::PropertyChangeEvent >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::beans::PropertyChangeEvent * >(0)) == - ::getCppuType(static_cast< css::beans::PropertyChangeEvent * >(0))); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedStruct2 * >(0)) == - ::cppu::UnoType< css::beans::PropertyChangeEvent >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedStruct2 * >(0)) == - ::getCppuType(static_cast< DerivedStruct2 * >(0))); -#endif - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::beans::Optional< ::sal_Int8 > * >(0)) == - ::cppu::UnoType< css::beans::Optional< ::sal_Int8 > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::beans::Optional< ::sal_Int8 > * >(0)) == - ::getCppuType(static_cast< css::beans::Optional< ::sal_Int8 > * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Exception * >(0)) == - ::cppu::UnoType< css::uno::Exception >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Exception * >(0)) == - ::getCppuType(static_cast< css::uno::Exception * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedException1 * >(0)) == - ::cppu::UnoType< css::uno::Exception >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedException1 * >(0)) == - ::getCppuType(static_cast< DerivedException1 * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::RuntimeException * >(0)) == - ::cppu::UnoType< css::uno::RuntimeException >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::RuntimeException * >(0)) == - ::getCppuType(static_cast< css::uno::RuntimeException * >(0))); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedException2 * >(0)) == - ::cppu::UnoType< css::uno::RuntimeException >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedException2 * >(0)) == - ::getCppuType(static_cast< DerivedException2 * >(0))); -#endif - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::XInterface * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Reference< css::uno::XInterface > * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Reference< css::uno::XInterface > * >(0)) == - ::getCppuType( - static_cast< css::uno::Reference< css::uno::XInterface > * >(0))); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedInterface1 * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Reference< DerivedInterface1 > * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::XComponentContext * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< - css::uno::Reference< css::uno::XComponentContext > * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< - css::uno::Reference< css::uno::XComponentContext > * >(0)) == - ::getCppuType( - static_cast< - css::uno::Reference< css::uno::XComponentContext > * >(0))); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned(static_cast< DerivedInterface2 * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourUnsigned( - static_cast< css::uno::Reference< DerivedInterface2 > * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); -#endif -} - -void Test::testGetTypeFavourChar() { - CPPUNIT_ASSERT(typeid(::sal_Unicode) == typeid(::sal_uInt16)); - CPPUNIT_ASSERT( - ::getCppuType< ::sal_Unicode >() == ::getCppuType< ::sal_uInt16 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::cppu::UnoVoidType * >(0)) == - ::cppu::UnoType< ::cppu::UnoVoidType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< bool * >(0)) == - ::cppu::UnoType< bool >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< bool * >(0)) == - ::getCppuType< bool >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Bool * >(0)) == - ::cppu::UnoType< bool >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Bool * >(0)) == - ::getCppuType< ::sal_Bool >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int8 * >(0)) == - ::cppu::UnoType< ::sal_Int8 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int8 * >(0)) == - ::getCppuType< ::sal_Int8 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int16 * >(0)) == - ::cppu::UnoType< ::sal_Int16 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int16 * >(0)) == - ::getCppuType< ::sal_Int16 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< ::cppu::UnoUnsignedShortType * >(0)) == - ::cppu::UnoType< ::cppu::UnoUnsignedShortType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_uInt16 * >(0)) == - ::cppu::UnoType< ::cppu::UnoCharType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int32 * >(0)) == - ::cppu::UnoType< ::sal_Int32 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int32 * >(0)) == - ::getCppuType< ::sal_Int32 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_uInt32 * >(0)) == - ::cppu::UnoType< ::sal_uInt32 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_uInt32 * >(0)) == - ::getCppuType< ::sal_uInt32 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int64 * >(0)) == - ::cppu::UnoType< ::sal_Int64 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Int64 * >(0)) == - ::getCppuType< ::sal_Int64 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_uInt64 * >(0)) == - ::cppu::UnoType< ::sal_uInt64 >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_uInt64 * >(0)) == - ::getCppuType< ::sal_uInt64 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< float * >(0)) == - ::cppu::UnoType< float >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< float * >(0)) == - ::getCppuType< float >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< double * >(0)) == - ::cppu::UnoType< double >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< double * >(0)) == - ::getCppuType< double >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::cppu::UnoCharType * >(0)) == - ::cppu::UnoType< ::cppu::UnoCharType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Unicode * >(0)) == - ::cppu::UnoType< ::cppu::UnoCharType >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::sal_Unicode * >(0)) == - ::getCppuType< ::sal_Unicode >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::rtl::OUString * >(0)) == - ::cppu::UnoType< ::rtl::OUString >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< ::rtl::OUString * >(0)) == - ::getCppuType< ::rtl::OUString >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::Type * >(0)) == - ::cppu::UnoType< css::uno::Type >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::Type * >(0)) == - ::getCppuType< css::uno::Type >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::Any * >(0)) == - ::cppu::UnoType< css::uno::Any >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::Any * >(0)) == - ::getCppuType< css::uno::Any >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > * >(0)) == - ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoUnsignedShortType > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Sequence< ::sal_uInt16 > * >(0)) == - ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoCharType > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > * >(0)) == - ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoUnsignedShortType > > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_uInt16 > > * >(0)) == - ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoCharType > > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Sequence< ::sal_Unicode > * >(0)) == - ::cppu::UnoType< - ::cppu::UnoSequenceType< ::cppu::UnoCharType > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Sequence< css::uno::Sequence< - ::sal_Unicode > > * >(0)) == - ::cppu::UnoType< ::cppu::UnoSequenceType< ::cppu::UnoSequenceType< - ::cppu::UnoCharType > > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::TypeClass * >(0)) == - ::cppu::UnoType< css::uno::TypeClass >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::TypeClass * >(0)) == - ::getCppuType< css::uno::TypeClass >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::lang::EventObject * >(0)) == - ::cppu::UnoType< css::lang::EventObject >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::lang::EventObject * >(0)) == - ::getCppuType< css::lang::EventObject >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedStruct1 * >(0)) == - ::cppu::UnoType< css::lang::EventObject >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedStruct1 * >(0)) == - ::getCppuType< DerivedStruct1 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::beans::PropertyChangeEvent * >(0)) == - ::cppu::UnoType< css::beans::PropertyChangeEvent >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::beans::PropertyChangeEvent * >(0)) == - ::getCppuType< css::beans::PropertyChangeEvent >()); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedStruct2 * >(0)) == - ::cppu::UnoType< css::beans::PropertyChangeEvent >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedStruct2 * >(0)) == - ::getCppuType< DerivedStruct2 >()); -#endif - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::beans::Optional< ::sal_Int8 > * >(0)) == - ::cppu::UnoType< css::beans::Optional< ::sal_Int8 > >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::beans::Optional< ::sal_Int8 > * >(0)) == - ::getCppuType< css::beans::Optional< ::sal_Int8 > >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::Exception * >(0)) == - ::cppu::UnoType< css::uno::Exception >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< css::uno::Exception * >(0)) == - ::getCppuType< css::uno::Exception >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedException1 * >(0)) == - ::cppu::UnoType< css::uno::Exception >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedException1 * >(0)) == - ::getCppuType< DerivedException1 >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::RuntimeException * >(0)) == - ::cppu::UnoType< css::uno::RuntimeException >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::RuntimeException * >(0)) == - ::getCppuType< css::uno::RuntimeException >()); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedException2 * >(0)) == - ::cppu::UnoType< css::uno::RuntimeException >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedException2 * >(0)) == - ::getCppuType< DerivedException2 >()); -#endif - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::XInterface * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Reference< css::uno::XInterface > * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Reference< css::uno::XInterface > * >(0)) == - ::getCppuType< css::uno::Reference< css::uno::XInterface > >()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedInterface1 * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Reference< DerivedInterface1 > * >(0)) == - ::cppu::UnoType< css::uno::XInterface >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::XComponentContext * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< - css::uno::Reference< css::uno::XComponentContext > * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< - css::uno::Reference< css::uno::XComponentContext > * >(0)) == - ::getCppuType< css::uno::Reference< css::uno::XComponentContext > >()); -#if !(defined __SUNPRO_CC && __SUNPRO_CC <= 0x550) // erroneous ambiguity stated - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar(static_cast< DerivedInterface2 * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); - CPPUNIT_ASSERT( - ::cppu::getTypeFavourChar( - static_cast< css::uno::Reference< DerivedInterface2 > * >(0)) == - ::cppu::UnoType< css::uno::XComponentContext >::get()); -#endif -} - -CPPUNIT_TEST_SUITE_REGISTRATION(Test); - -} - -CPPUNIT_PLUGIN_IMPLEMENT(); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/qa/types.idl b/cppu/qa/types.idl deleted file mode 100644 index d40119858..000000000 --- a/cppu/qa/types.idl +++ /dev/null @@ -1,63 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "com/sun/star/uno/Exception.idl" -#include "com/sun/star/uno/XInterface.idl" - -enum Enum1 { M0, M1, M2 }; - -enum Enum2 { M0, M1, M2 }; - -struct Struct1 { long member; }; - -struct Struct2 { long member; }; - -struct Struct2a: Struct2 { long member2; }; - -struct Struct2b: Struct2a { long member3; }; - -struct Poly< T > { long member; }; - -struct Rec { sequence< Rec > x; }; - -exception Exception1: com::sun::star::uno::Exception { long member; }; - -exception Exception2: com::sun::star::uno::Exception { long member; }; - -exception Exception2a: Exception2 { long member2; }; - -exception Exception2b: Exception2a {}; - -interface Interface1 {}; - -interface Interface2 {}; - -interface Interface2a: Interface2 {}; - -interface Interface2b: Interface2a {}; - -interface Interface3 {}; diff --git a/cppu/qa/version.map b/cppu/qa/version.map deleted file mode 100644 index 0dbbcc5a7..000000000 --- a/cppu/qa/version.map +++ /dev/null @@ -1,34 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -UDK_3_0_0 { - global: - cppunitTestPlugIn; - - local: - *; -}; diff --git a/cppu/source/AffineBridge/AffineBridge.cxx b/cppu/source/AffineBridge/AffineBridge.cxx deleted file mode 100644 index ab2399fcb..000000000 --- a/cppu/source/AffineBridge/AffineBridge.cxx +++ /dev/null @@ -1,366 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "osl/thread.hxx" -#include "osl/conditn.hxx" -#include "osl/mutex.hxx" - -#include "cppu/helper/purpenv/Environment.hxx" -#include "cppu/helper/purpenv/Mapping.hxx" - - -#ifdef debug -# define LOG_LIFECYCLE_AffineBridge -#endif - -#ifdef LOG_LIFECYCLE_AffineBridge -# include -# define LOG_LIFECYCLE_AffineBridge_emit(x) x - -#else -# define LOG_LIFECYCLE_AffineBridge_emit(x) - -#endif - -class InnerThread; -class OuterThread; - -class SAL_DLLPRIVATE AffineBridge : public cppu::Enterable -{ -public: - enum Msg - { - CB_DONE, - CB_FPOINTER - }; - - Msg m_message; - uno_EnvCallee * m_pCallee; - va_list * m_pParam; - - osl::Mutex m_innerMutex; - oslThreadIdentifier m_innerThreadId; - InnerThread * m_pInnerThread; - osl::Condition m_innerCondition; - sal_Int32 m_enterCount; - - osl::Mutex m_outerMutex; - oslThreadIdentifier m_outerThreadId; - osl::Condition m_outerCondition; - OuterThread * m_pOuterThread; - - explicit AffineBridge(void); - virtual ~AffineBridge(void); - - virtual void v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam); - virtual void v_callOut_v (uno_EnvCallee * pCallee, va_list * pParam); - - virtual void v_enter(void); - virtual void v_leave(void); - - virtual int v_isValid(rtl::OUString * pReason); - - void innerDispatch(void); - void outerDispatch(int loop); -}; - -class SAL_DLLPRIVATE InnerThread : public osl::Thread -{ - virtual void SAL_CALL run(void); - - AffineBridge * m_pAffineBridge; - -public: - InnerThread(AffineBridge * threadEnvironment) - : m_pAffineBridge(threadEnvironment) - { - create(); - } -}; - -void InnerThread::run(void) -{ - m_pAffineBridge->enter(); - m_pAffineBridge->innerDispatch(); - m_pAffineBridge->leave(); -} - -class SAL_DLLPRIVATE OuterThread : public osl::Thread -{ - virtual void SAL_CALL run(void); - - AffineBridge * m_pAffineBridge; - -public: - OuterThread(AffineBridge * threadEnvironment); -}; - -OuterThread::OuterThread(AffineBridge * threadEnvironment) - : m_pAffineBridge(threadEnvironment) -{ - create(); -} - -void OuterThread::run(void) -{ - osl::MutexGuard guard(m_pAffineBridge->m_outerMutex); - - m_pAffineBridge->m_outerThreadId = getIdentifier(); - m_pAffineBridge->outerDispatch(0); - m_pAffineBridge->m_outerThreadId = 0; - - m_pAffineBridge->m_pOuterThread = NULL; - m_pAffineBridge = NULL; -} - - -AffineBridge::AffineBridge(void) - : m_innerThreadId(0), - m_pInnerThread (NULL), - m_enterCount (0), - m_outerThreadId(0), - m_pOuterThread (NULL) -{ - LOG_LIFECYCLE_AffineBridge_emit(fprintf(stderr, "LIFE: %s -> %p\n", "AffineBridge::AffineBridge(uno_Environment * pEnv)", this)); -} - -AffineBridge::~AffineBridge(void) -{ - LOG_LIFECYCLE_AffineBridge_emit(fprintf(stderr, "LIFE: %s -> %p\n", "AffineBridge::~AffineBridge(void)", this)); - - if (m_pInnerThread && osl_getThreadIdentifier(NULL) != m_innerThreadId) - { - m_message = CB_DONE; - m_innerCondition.set(); - - m_pInnerThread->join(); - } - - delete m_pInnerThread; - - if (m_pOuterThread) - { - m_pOuterThread->join(); - delete m_pOuterThread; - } -} - - -void AffineBridge::outerDispatch(int loop) -{ - OSL_ASSERT(m_outerThreadId == osl_getThreadIdentifier(NULL)); - OSL_ASSERT(m_innerThreadId != m_outerThreadId); - - Msg mm; - - do - { - // FIXME: created outer thread must not wait - // in case of no message - // note: no message can happen in case newly created - // outer thread acquire outerMutex after a real outer - // thread enters outerDispatch! - m_outerCondition.wait(); - m_outerCondition.reset(); - - mm = m_message; - - switch(mm) - { - case CB_DONE: - break; - - case CB_FPOINTER: - { - m_pCallee(m_pParam); - - m_message = CB_DONE; - m_innerCondition.set(); - break; - } - default: - abort(); - } - } - while(mm != CB_DONE && loop); -} - -void AffineBridge::innerDispatch(void) -{ - OSL_ASSERT(m_innerThreadId == osl_getThreadIdentifier(NULL)); - OSL_ASSERT(m_innerThreadId != m_outerThreadId); - - Msg mm; - - do - { - m_innerCondition.wait(); - m_innerCondition.reset(); - - mm = m_message; - - switch(mm) - { - case CB_DONE: - break; - - case CB_FPOINTER: - { - m_pCallee(m_pParam); - - m_message = CB_DONE; - m_outerCondition.set(); - break; - } - default: - abort(); - } - } - while(mm != CB_DONE); -} - -void AffineBridge::v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - osl::MutexGuard guard(m_outerMutex); // only one thread at a time can call into - - if (m_innerThreadId == 0) // no inner thread yet - { - m_pInnerThread = new InnerThread(this); - m_pInnerThread->resume(); - } - - bool resetId = false; - if (!m_outerThreadId) - { - m_outerThreadId = osl_getThreadIdentifier(NULL); - resetId = true; - } - - m_message = CB_FPOINTER; - m_pCallee = pCallee; - m_pParam = pParam; - m_innerCondition.set(); - - outerDispatch(1); - - if (resetId) - m_outerThreadId = 0; -} - -void AffineBridge::v_callOut_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - OSL_ASSERT(m_innerThreadId); - - osl::MutexGuard guard(m_innerMutex); - - if (m_outerThreadId == 0) // no outer thread yet - { - osl::MutexGuard guard_m_outerMutex(m_outerMutex); - - if (m_outerThreadId == 0) - { - if (m_pOuterThread) - { - m_pOuterThread->join(); - delete m_pOuterThread; - } - - m_pOuterThread = new OuterThread(this); - } - } - - m_message = CB_FPOINTER; - m_pCallee = pCallee; - m_pParam = pParam; - m_outerCondition.set(); - - innerDispatch(); -} - -void AffineBridge::v_enter(void) -{ - m_innerMutex.acquire(); - - if (!m_enterCount) - m_innerThreadId = osl_getThreadIdentifier(NULL); - - OSL_ASSERT(m_innerThreadId == osl_getThreadIdentifier(NULL)); - - ++ m_enterCount; -} - -void AffineBridge::v_leave(void) -{ - OSL_ASSERT(m_innerThreadId == osl_getThreadIdentifier(NULL)); - - -- m_enterCount; - if (!m_enterCount) - m_innerThreadId = 0; - - m_innerMutex.release(); -} - -int AffineBridge::v_isValid(rtl::OUString * pReason) -{ - int result = 1; - - result = m_enterCount > 0; - if (!result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("not entered")); - - else - { - result = m_innerThreadId == osl_getThreadIdentifier(NULL); - - if (!result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("wrong thread")); - } - - if (result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OK")); - - return result; -} - -extern "C" void SAL_DLLPUBLIC_EXPORT SAL_CALL uno_initEnvironment(uno_Environment * pEnv) - SAL_THROW_EXTERN_C() -{ - cppu::helper::purpenv::Environment_initWithEnterable(pEnv, new AffineBridge()); -} - -extern "C" void SAL_DLLPUBLIC_EXPORT SAL_CALL uno_ext_getMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo ) -{ - cppu::helper::purpenv::createMapping(ppMapping, pFrom, pTo); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/AffineBridge/makefile.mk b/cppu/source/AffineBridge/makefile.mk deleted file mode 100644 index c25062c15..000000000 --- a/cppu/source/AffineBridge/makefile.mk +++ /dev/null @@ -1,44 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ := ..$/.. -PRJNAME := cppu -TARGET := AffineBridge - -ENABLE_EXCEPTIONS := TRUE -NO_BSYMBOLIC := TRUE -USE_DEFFILE := FALSE - - -.INCLUDE: settings.mk - - -SLOFILES := $(SLO)$/AffineBridge.obj - - -.INCLUDE: target.mk - diff --git a/cppu/source/LogBridge/LogBridge.cxx b/cppu/source/LogBridge/LogBridge.cxx deleted file mode 100644 index a29014449..000000000 --- a/cppu/source/LogBridge/LogBridge.cxx +++ /dev/null @@ -1,280 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "osl/mutex.hxx" -#include "osl/thread.h" -#include "uno/dispatcher.h" -#include "typelib/typedescription.hxx" -#include "cppu/helper/purpenv/Environment.hxx" -#include "cppu/helper/purpenv/Mapping.hxx" -#include "cppu/EnvDcp.hxx" -#include "rtl/logfile.hxx" -#include "uno/environment.hxx" -#include -#include -#include - -namespace -{ -class LogBridge : public cppu::Enterable -{ - osl::Mutex m_mutex; - sal_Int32 m_count; - oslThreadIdentifier m_threadId; - - virtual ~LogBridge(void); - -public: - explicit LogBridge(void); - - virtual void v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam); - virtual void v_callOut_v (uno_EnvCallee * pCallee, va_list * pParam); - - virtual void v_enter(void); - virtual void v_leave(void); - - virtual int v_isValid(rtl::OUString * pReason); -}; - -LogBridge::LogBridge(void) - : m_count (0) - ,m_threadId(0) -{ -} - -LogBridge::~LogBridge(void) -{ - OSL_ASSERT(m_count >= 0); -} - -void LogBridge::v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - enter(); - pCallee(pParam); - leave(); -} - -void LogBridge::v_callOut_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - OSL_ASSERT(m_count > 0); - - -- m_count; - pCallee(pParam); - ++ m_count; - - if (!m_threadId) - m_threadId = osl_getThreadIdentifier(NULL); -} - -void LogBridge::v_enter(void) -{ - m_mutex.acquire(); - - OSL_ASSERT(m_count >= 0); - - if (m_count == 0) - m_threadId = osl_getThreadIdentifier(NULL); - - ++ m_count; -} - -void LogBridge::v_leave(void) -{ - OSL_ASSERT(m_count > 0); - - -- m_count; - if (!m_count) - m_threadId = 0; - - - m_mutex.release(); -} - -int LogBridge::v_isValid(rtl::OUString * pReason) -{ - int result = 1; - - result = m_count > 0; - if (!result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("not entered")); - - else - { - result = m_threadId == osl_getThreadIdentifier(NULL); - - if (!result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("wrong thread")); - } - - if (result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OK")); - - return result; -} - - void traceValue(typelib_TypeDescriptionReference* _pTypeRef,void* pArg) - { - switch(_pTypeRef->eTypeClass) - { - case typelib_TypeClass_STRING: - { - const ::rtl::OString sValue( ::rtl::OUStringToOString(*static_cast< ::rtl::OUString*>(pArg),osl_getThreadTextEncoding())); - rtl_logfile_trace( "%s", sValue.getStr()); - } - break; - case typelib_TypeClass_BOOLEAN: - rtl_logfile_trace( "%d", *static_cast(pArg)); - break; - case typelib_TypeClass_BYTE: - rtl_logfile_trace( "%d", *static_cast(pArg)); - break; - case typelib_TypeClass_CHAR: - rtl_logfile_trace( "%c", *static_cast(pArg)); - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - rtl_logfile_trace( "%d", *static_cast(pArg)); - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_ENUM: - rtl_logfile_trace( "%d", *static_cast(pArg)); - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - rtl_logfile_trace( "%d", *static_cast(pArg)); - break; - case typelib_TypeClass_FLOAT: - rtl_logfile_trace( "%f", *static_cast(pArg)); - break; - case typelib_TypeClass_DOUBLE: - rtl_logfile_trace( "%f", *static_cast(pArg)); - break; - case typelib_TypeClass_TYPE: - { - const ::rtl::OString sValue( ::rtl::OUStringToOString(((com::sun::star::uno::Type*)pArg)->getTypeName(),osl_getThreadTextEncoding())); - rtl_logfile_trace( "%s", sValue.getStr()); - } - break; - case typelib_TypeClass_ANY: - if ( static_cast(pArg)->pData ) - traceValue(static_cast(pArg)->pType,static_cast(pArg)->pData); - else - rtl_logfile_trace( "void"); - break; - case typelib_TypeClass_EXCEPTION: - rtl_logfile_trace( "exception"); - break; - case typelib_TypeClass_INTERFACE: - { - const ::rtl::OString sValue( ::rtl::OUStringToOString(_pTypeRef->pTypeName,osl_getThreadTextEncoding())); - rtl_logfile_trace( "%s 0x%p", sValue.getStr(),pArg); - } - break; - case typelib_TypeClass_VOID: - rtl_logfile_trace( "void"); - break; - default: - rtl_logfile_trace( "0x%p", pArg); - break; - } // switch(pParams[i].pTypeRef->eTypeClass) - } -} - -void LogProbe( - bool pre, - void * /*pThis*/, - void * /*pContext*/, - typelib_TypeDescriptionReference * pReturnTypeRef, - typelib_MethodParameter * pParams, - sal_Int32 nParams, - typelib_TypeDescription const * pMemberType, - void * pReturn, - void * pArgs[], - uno_Any ** ppException ) -{ - static ::std::auto_ptr< ::rtl::Logfile> pLogger; - ::rtl::OString sTemp; - if ( pMemberType && pMemberType->pTypeName ) - sTemp = ::rtl::OUStringToOString(pMemberType->pTypeName,RTL_TEXTENCODING_ASCII_US); - if ( pre ) - { - rtl_logfile_longTrace( "{ LogBridge () %s", sTemp.getStr() ); - if ( nParams ) - { - rtl_logfile_trace( "\n| : ( LogBridge "); - for(sal_Int32 i = 0;i < nParams;++i) - { - if ( i > 0 ) - rtl_logfile_trace( ","); - traceValue(pParams[i].pTypeRef,pArgs[i]); - - } - rtl_logfile_trace( ")"); - } // if ( nParams ) - rtl_logfile_trace( "\n"); - } - else if ( !pre ) - { - rtl_logfile_longTrace( "} LogBridge () %s",sTemp.getStr()); - if ( ppException && *ppException ) - { - rtl_logfile_trace( " excption occurred : "); - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, (*ppException)->pType ); - const ::rtl::OString sValue( ::rtl::OUStringToOString(pElementTypeDescr->pTypeName,osl_getThreadTextEncoding())); - rtl_logfile_trace( "%s", sValue.getStr()); - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - } - else if ( pReturnTypeRef ) - { - rtl_logfile_trace( " return : "); - traceValue(pReturnTypeRef,pReturn); - } // if ( pReturn && pReturnTypeRef ) - - rtl_logfile_trace( "\n"); - } -} - -extern "C" void SAL_DLLPUBLIC_EXPORT SAL_CALL uno_initEnvironment(uno_Environment * pEnv) - SAL_THROW_EXTERN_C() -{ - cppu::helper::purpenv::Environment_initWithEnterable(pEnv, new LogBridge()); -} - -extern "C" void SAL_DLLPUBLIC_EXPORT SAL_CALL uno_ext_getMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo ) -{ - cppu::helper::purpenv::createMapping(ppMapping, pFrom, pTo,LogProbe); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/LogBridge/makefile.mk b/cppu/source/LogBridge/makefile.mk deleted file mode 100755 index 2759c3ddf..000000000 --- a/cppu/source/LogBridge/makefile.mk +++ /dev/null @@ -1,44 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ := ..$/.. -PRJNAME := cppu -TARGET := LogBridge - -ENABLE_EXCEPTIONS := TRUE -NO_BSYMBOLIC := TRUE -USE_DEFFILE := FALSE - - -.INCLUDE: settings.mk - - -SLOFILES := $(SLO)$/LogBridge.obj - - -.INCLUDE: target.mk - diff --git a/cppu/source/UnsafeBridge/UnsafeBridge.cxx b/cppu/source/UnsafeBridge/UnsafeBridge.cxx deleted file mode 100644 index 1e6f003a2..000000000 --- a/cppu/source/UnsafeBridge/UnsafeBridge.cxx +++ /dev/null @@ -1,165 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "osl/mutex.hxx" -#include "osl/thread.h" - -#include "cppu/helper/purpenv/Environment.hxx" -#include "cppu/helper/purpenv/Mapping.hxx" - - -#ifdef debug -# define LOG_LIFECYCLE_UnsafeBridge -#endif - -#ifdef LOG_LIFECYCLE_UnsafeBridge -# include -# define LOG_LIFECYCLE_UnsafeBridge_emit(x) x - -#else -# define LOG_LIFECYCLE_UnsafeBridge_emit(x) - -#endif - - -class SAL_DLLPRIVATE UnsafeBridge : public cppu::Enterable -{ - osl::Mutex m_mutex; - sal_Int32 m_count; - oslThreadIdentifier m_threadId; - - virtual ~UnsafeBridge(void); - -public: - explicit UnsafeBridge(void); - - virtual void v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam); - virtual void v_callOut_v (uno_EnvCallee * pCallee, va_list * pParam); - - virtual void v_enter(void); - virtual void v_leave(void); - - virtual int v_isValid(rtl::OUString * pReason); -}; - -UnsafeBridge::UnsafeBridge(void) - : m_count (0), - m_threadId(0) -{ - LOG_LIFECYCLE_UnsafeBridge_emit(fprintf(stderr, "LIFE: %s -> %p\n", "UnsafeBridge::UnsafeBridge(uno_Environment * pEnv)", this)); -} - -UnsafeBridge::~UnsafeBridge(void) -{ - LOG_LIFECYCLE_UnsafeBridge_emit(fprintf(stderr, "LIFE: %s -> %p\n", "UnsafeBridge::~UnsafeBridge(void)", this)); - - OSL_ASSERT(m_count >= 0); -} - -void UnsafeBridge::v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - enter(); - pCallee(pParam); - leave(); -} - -void UnsafeBridge::v_callOut_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - OSL_ASSERT(m_count > 0); - - -- m_count; - pCallee(pParam); - ++ m_count; - - if (!m_threadId) - m_threadId = osl_getThreadIdentifier(NULL); -} - -void UnsafeBridge::v_enter(void) -{ - m_mutex.acquire(); - - OSL_ASSERT(m_count >= 0); - - if (m_count == 0) - m_threadId = osl_getThreadIdentifier(NULL); - - ++ m_count; -} - -void UnsafeBridge::v_leave(void) -{ - OSL_ASSERT(m_count > 0); - - -- m_count; - if (!m_count) - m_threadId = 0; - - - m_mutex.release(); -} - -int UnsafeBridge::v_isValid(rtl::OUString * pReason) -{ - int result = 1; - - result = m_count > 0; - if (!result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("not entered")); - - else - { - result = m_threadId == osl_getThreadIdentifier(NULL); - - if (!result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("wrong thread")); - } - - if (result) - *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OK")); - - return result; -} - -extern "C" void SAL_DLLPUBLIC_EXPORT SAL_CALL uno_initEnvironment(uno_Environment * pEnv) - SAL_THROW_EXTERN_C() -{ - cppu::helper::purpenv::Environment_initWithEnterable(pEnv, new UnsafeBridge()); -} - -extern "C" void SAL_DLLPUBLIC_EXPORT SAL_CALL uno_ext_getMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo ) -{ - cppu::helper::purpenv::createMapping(ppMapping, pFrom, pTo); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/UnsafeBridge/makefile.mk b/cppu/source/UnsafeBridge/makefile.mk deleted file mode 100644 index 0c1c4a988..000000000 --- a/cppu/source/UnsafeBridge/makefile.mk +++ /dev/null @@ -1,44 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ := ..$/.. -PRJNAME := cppu -TARGET := UnsafeBridge - -ENABLE_EXCEPTIONS := TRUE -NO_BSYMBOLIC := TRUE -USE_DEFFILE := FALSE - - -.INCLUDE: settings.mk - - -SLOFILES := $(SLO)$/UnsafeBridge.obj - - -.INCLUDE: target.mk - diff --git a/cppu/source/cppu/cppu_opt.cxx b/cppu/source/cppu/cppu_opt.cxx deleted file mode 100644 index 912fb76b8..000000000 --- a/cppu/source/cppu/cppu_opt.cxx +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "typelib/typedescription.h" -#include "uno/any2.h" -#include "rtl/ustrbuf.hxx" - - -using namespace ::rtl; - -//################################################################################################## -extern "C" rtl_uString * SAL_CALL cppu_unsatisfied_iquery_msg( - typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C() -{ - OUStringBuffer buf( 64 ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("unsatisfied query for interface of type ") ); - buf.append( OUString::unacquired( &pType->pTypeName ) ); - buf.append( (sal_Unicode) '!' ); - OUString ret( buf.makeStringAndClear() ); - rtl_uString_acquire( ret.pData ); - return ret.pData; -} - -//################################################################################################## -extern "C" rtl_uString * SAL_CALL cppu_unsatisfied_iset_msg( - typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C() -{ - OUStringBuffer buf( 64 ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("invalid attempt to assign an empty interface of type ") ); - buf.append( OUString::unacquired( &pType->pTypeName ) ); - buf.append( (sal_Unicode) '!' ); - OUString ret( buf.makeStringAndClear() ); - rtl_uString_acquire( ret.pData ); - return ret.pData; -} - -//############################################################################## -extern "C" rtl_uString * SAL_CALL cppu_Any_extraction_failure_msg( - uno_Any * pAny, typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C() -{ - OUStringBuffer buf; - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( - "Cannot extract an Any(") ); - buf.append( OUString::unacquired(&pAny->pType->pTypeName) ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM(") to ") ); - buf.append( OUString::unacquired(&pType->pTypeName) ); - buf.append( static_cast('!') ); - const OUString ret( buf.makeStringAndClear() ); - rtl_uString_acquire( ret.pData ); - return ret.pData; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/cppu/makefile.mk b/cppu/source/cppu/makefile.mk deleted file mode 100644 index 5a42ec311..000000000 --- a/cppu/source/cppu/makefile.mk +++ /dev/null @@ -1,45 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=..$/.. - -PRJNAME=cppu -TARGET=cppu_cppu - -# --- Settings ----------------------------------------------------- - -.INCLUDE : ..$/..$/util$/makefile.pmk -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -SLOFILES= \ - $(SLO)$/cppu_opt.obj - -# --- Targets ------------------------------------------------------ - -.INCLUDE : ..$/..$/util$/target.pmk -.INCLUDE : target.mk diff --git a/cppu/source/helper/purpenv/Proxy.hxx b/cppu/source/helper/purpenv/Proxy.hxx deleted file mode 100644 index 9eec6b61c..000000000 --- a/cppu/source/helper/purpenv/Proxy.hxx +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_Proxy_hxx -#define INCLUDED_Proxy_hxx - -#include "osl/interlck.h" - -#include "uno/environment.hxx" -#include "uno/mapping.hxx" -#include "uno/dispatcher.h" - -#include "cppu/helper/purpenv/Mapping.hxx" - - -namespace cssu = com::sun::star::uno; - - -class SAL_DLLPRIVATE Proxy : public uno_Interface -{ - oslInterlockedCount m_nRef; - - cssu::Environment m_from; - cssu::Environment m_to; - - cssu::Mapping m_from_to; - cssu::Mapping m_to_from; - - // mapping information - uno_Interface * m_pUnoI; // wrapped interface - typelib_InterfaceTypeDescription * m_pTypeDescr; - rtl::OUString m_aOId; - - cppu::helper::purpenv::ProbeFun * m_probeFun; - void * m_pProbeContext; - -public: - explicit Proxy(cssu::Mapping const & to_from, - uno_Environment * pTo, - uno_Environment * pFrom, - uno_Interface * pUnoI, - typelib_InterfaceTypeDescription * pTypeDescr, - rtl::OUString const & rOId, - cppu::helper::purpenv::ProbeFun * probeFun, - void * pProbeContext) - SAL_THROW( () ); - ~Proxy(void); - - void acquire(void); - void release(void); - - void dispatch( - typelib_TypeDescriptionReference * pReturnTypeRef, - typelib_MethodParameter * pParams, - sal_Int32 nParams, - typelib_TypeDescription const * pMemberType, - void * pReturn, - void * pArgs[], - uno_Any ** ppException ); - -}; - -extern "C" SAL_DLLPRIVATE void SAL_CALL Proxy_free(uno_ExtEnvironment * pEnv, void * pProxy) SAL_THROW_EXTERN_C(); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/helper/purpenv/export.mk b/cppu/source/helper/purpenv/export.mk deleted file mode 100644 index 004787e4f..000000000 --- a/cppu/source/helper/purpenv/export.mk +++ /dev/null @@ -1,15 +0,0 @@ - -.IF "$(GUI)"=="UNX" || "$(GUI)"=="MAC" -NAMEpurpenv_helper := uno_purpenvhelper$(COMID) - -purpenv_helper_LIB := -l$(NAMEpurpenv_helper) - -.ELSE -NAMEpurpenv_helper := purpenvhelper$(UDK_MAJOR)$(COMID) -.IF "$(COM)"=="GCC" -purpenv_helper_LIB := -l$(NAMEpurpenv_helper) -.ELSE -purpenv_helper_LIB := $(LIBPRE) i$(NAMEpurpenv_helper).lib -.ENDIF - -.ENDIF diff --git a/cppu/source/helper/purpenv/helper_purpenv_Environment.cxx b/cppu/source/helper/purpenv/helper_purpenv_Environment.cxx deleted file mode 100644 index b0b6388f1..000000000 --- a/cppu/source/helper/purpenv/helper_purpenv_Environment.cxx +++ /dev/null @@ -1,540 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "cppu/helper/purpenv/Environment.hxx" - -#include "osl/diagnose.h" -#include "uno/lbnames.h" - -#include "typelib/typedescription.h" -#include "osl/interlck.h" - -#ifdef debug -# define LOG_LIFECYCLE_cppu_helper_purpenv_Base -#endif - -#ifdef LOG_LIFECYCLE_cppu_helper_purpenv_Base -# include -# define LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(x) x - -#else -# define LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(x) - -#endif - - -extern "C" { -typedef void SAL_CALL EnvFun_P (uno_Environment *); -typedef void SAL_CALL EnvFun_PP_P(uno_Environment ** ppHardEnv, uno_Environment *); -typedef void SAL_CALL ExtEnv_registerProxyInterface (uno_ExtEnvironment *, - void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl_uString * pOId, - typelib_InterfaceTypeDescription * pTypeDescr); -typedef void SAL_CALL ExtEnv_revokeInterface (uno_ExtEnvironment *, - void * pInterface); -typedef void SAL_CALL ExtEnv_getObjectIdentifier (uno_ExtEnvironment *, - rtl_uString **, - void *); -typedef void SAL_CALL ExtEnv_getRegisteredInterface (uno_ExtEnvironment *, - void **, - rtl_uString *, - typelib_InterfaceTypeDescription *); -typedef void SAL_CALL ExtEnv_getRegisteredInterfaces(uno_ExtEnvironment *, - void *** pppInterfaces, - sal_Int32 * pnLen, - uno_memAlloc memAlloc); -typedef void SAL_CALL ExtEnv_computeObjectIdentifier(uno_ExtEnvironment *, - rtl_uString ** ppOId, - void * pInterface); -typedef void SAL_CALL ExtEnv_acquireInterface (uno_ExtEnvironment *, - void * pInterface); -typedef void SAL_CALL ExtEnv_releaseInterface (uno_ExtEnvironment *, - void * pInterface); -} - -class Base : public cppu::Enterable -{ -public: - explicit Base(uno_Environment * pEnv, cppu::Enterable * pEnterable); - - void acquireWeak(void); - void releaseWeak(void); - void harden (uno_Environment ** ppHardEnv); - void acquire (void); - void release (void); - - void registerProxyInterface (void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription * pTypeDescr); - void revokeInterface (void * pInterface); - void getObjectIdentifier (void * pInterface, - rtl::OUString * pOid); - void getRegisteredInterface (void **, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription *); - void getRegisteredInterfaces(void ***, - sal_Int32 * pnLen, - uno_memAlloc memAlloc); - void computeObjectIdentifier(void * pInterface, - rtl::OUString * pOid); - void acquireInterface (void * pInterface); - void releaseInterface (void * pInterface); - - virtual void v_enter (void); - virtual void v_leave (void); - virtual void v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam); - virtual void v_callOut_v (uno_EnvCallee * pCallee, va_list * pParam); - virtual int v_isValid (rtl::OUString * pReason); - -protected: - oslInterlockedCount m_nRef; - uno_Environment * m_pEnv; - cppu::Enterable * m_pEnterable; - - EnvFun_P * m_env_acquire; - EnvFun_P * m_env_release; - EnvFun_PP_P * m_env_harden; - EnvFun_P * m_env_acquireWeak; - EnvFun_P * m_env_releaseWeak; - - ExtEnv_registerProxyInterface * m_env_registerProxyInterface; - ExtEnv_revokeInterface * m_env_revokeInterface; - ExtEnv_getObjectIdentifier * m_env_getObjectIdentifier; - ExtEnv_getRegisteredInterface * m_env_getRegisteredInterface; - ExtEnv_getRegisteredInterfaces * m_env_getRegisteredInterfaces; - ExtEnv_computeObjectIdentifier * m_env_computeObjectIdentifier; - ExtEnv_acquireInterface * m_env_acquireInterface; - ExtEnv_releaseInterface * m_env_releaseInterface; - - virtual ~Base(); -}; - -extern "C" { -static void SAL_CALL s_acquire(uno_Environment * pEnv) //SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast(pEnv->pReserved); - pBase->acquire(); -} - -static void SAL_CALL s_release(uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast(pEnv->pReserved); - pBase->release(); -} - -static void SAL_CALL s_harden(uno_Environment ** ppHardEnv, uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast(pEnv->pReserved); - pBase->harden(ppHardEnv); -} - -static void SAL_CALL s_acquireWeak(uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast(pEnv->pReserved); - pBase->acquireWeak(); -} - -static void SAL_CALL s_releaseWeak(uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast(pEnv->pReserved); - pBase->releaseWeak(); -} - - -static void SAL_CALL s_registerProxyInterface(uno_ExtEnvironment * pExtEnv, - void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl_uString * pOId, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->registerProxyInterface(ppProxy, freeProxy, pOId, pTypeDescr); -} - -static void SAL_CALL s_revokeInterface(uno_ExtEnvironment * pExtEnv, void * pInterface) -{ - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->revokeInterface(pInterface); -} - -static void SAL_CALL s_getObjectIdentifier(uno_ExtEnvironment * pExtEnv, - rtl_uString ** ppOId, - void * pInterface) -{ - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->getObjectIdentifier(pInterface, reinterpret_cast(ppOId)); -} - -static void SAL_CALL s_getRegisteredInterface(uno_ExtEnvironment * pExtEnv, - void ** ppInterface, - rtl_uString * pOId, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->getRegisteredInterface(ppInterface, pOId, pTypeDescr); -} - -static void SAL_CALL s_getRegisteredInterfaces(uno_ExtEnvironment * pExtEnv, - void *** pppInterface, - sal_Int32 * pnLen, - uno_memAlloc memAlloc) -{ - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->getRegisteredInterfaces(pppInterface, pnLen, memAlloc); -} - -static void SAL_CALL s_computeObjectIdentifier(uno_ExtEnvironment * pExtEnv, - rtl_uString ** ppOId, - void * pInterface) -{ - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->computeObjectIdentifier(pInterface, reinterpret_cast(ppOId)); -} - -static void SAL_CALL s_acquireInterface(uno_ExtEnvironment * pExtEnv, void * pInterface) { - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->acquireInterface(pInterface); -} - -static void SAL_CALL s_releaseInterface(uno_ExtEnvironment * pExtEnv, void * pInterface) { - Base * pBase = static_cast(pExtEnv->aBase.pReserved); - pBase->releaseInterface(pInterface); -} - -} - -Base::Base(uno_Environment * pEnv, cppu::Enterable * pEnterable) - :m_nRef(1), - m_pEnv(pEnv), - m_pEnterable (pEnterable), - m_env_acquire (pEnv->acquire), - m_env_release (pEnv->release), - m_env_harden (pEnv->harden), - m_env_acquireWeak(pEnv->acquireWeak), - m_env_releaseWeak(pEnv->releaseWeak), - m_env_registerProxyInterface (pEnv->pExtEnv->registerProxyInterface), - m_env_revokeInterface (pEnv->pExtEnv->revokeInterface), - m_env_getObjectIdentifier (pEnv->pExtEnv->getObjectIdentifier), - m_env_getRegisteredInterface (pEnv->pExtEnv->getRegisteredInterface), - m_env_getRegisteredInterfaces(pEnv->pExtEnv->getRegisteredInterfaces), - m_env_computeObjectIdentifier(pEnv->pExtEnv->computeObjectIdentifier), - m_env_acquireInterface (pEnv->pExtEnv->acquireInterface), - m_env_releaseInterface (pEnv->pExtEnv->releaseInterface) -{ - LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(fprintf(stderr, "LIFE: %s -> %p\n", "cppu::helper::purpenv::Base::Base(uno_Environment * pEnv)", this)); - OSL_ENSURE( - rtl_ustr_ascii_compare_WithLength(pEnv->pTypeName->buffer, rtl_str_getLength(UNO_LB_UNO), UNO_LB_UNO) - == 0, - "### wrong environment type!"); - - pEnv->acquire = s_acquire; - pEnv->release = s_release; - pEnv->harden = s_harden; - pEnv->acquireWeak = s_acquireWeak; - pEnv->releaseWeak = s_releaseWeak; - - pEnv->pExtEnv->registerProxyInterface = s_registerProxyInterface; - pEnv->pExtEnv->revokeInterface = s_revokeInterface; - pEnv->pExtEnv->getObjectIdentifier = s_getObjectIdentifier; - pEnv->pExtEnv->getRegisteredInterface = s_getRegisteredInterface; - pEnv->pExtEnv->getRegisteredInterfaces = s_getRegisteredInterfaces; - pEnv->pExtEnv->computeObjectIdentifier = s_computeObjectIdentifier; - pEnv->pExtEnv->acquireInterface = s_acquireInterface; - pEnv->pExtEnv->releaseInterface = s_releaseInterface; - - pEnv->pReserved = this; -} - -Base::~Base() -{ - LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(fprintf(stderr, "LIFE: %s -> %p\n", "cppu::helper::purpenv::Base::~Base()", this)); - - m_pEnv->acquire = m_env_acquire; - m_pEnv->release = m_env_release; - m_pEnv->harden = m_env_harden; - m_pEnv->acquireWeak = m_env_acquireWeak; - m_pEnv->releaseWeak = m_env_releaseWeak; - - m_pEnv->pReserved = NULL; - - delete m_pEnterable; - m_pEnv->release(m_pEnv); -} - -void Base::acquire(void) -{ - m_env_acquire(m_pEnv); - - osl_incrementInterlockedCount(&m_nRef); -} - -void Base::release(void) -{ - if (osl_decrementInterlockedCount(&m_nRef) == 0) - delete this; - - else - m_env_release(m_pEnv); -} - -void Base::harden(uno_Environment ** ppHardEnv) -{ - m_env_harden(ppHardEnv, m_pEnv); - osl_incrementInterlockedCount(&m_nRef); -} - -void Base::acquireWeak(void) -{ - m_env_acquireWeak(m_pEnv); -} - -void Base::releaseWeak(void) -{ - m_env_releaseWeak(m_pEnv); -} - - -extern "C" { static void s_registerProxyInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void ** ppProxy = va_arg(*pParam, void **); - uno_freeProxyFunc freeProxy = va_arg(*pParam, uno_freeProxyFunc); - rtl_uString * pOId = va_arg(*pParam, rtl_uString *); - typelib_InterfaceTypeDescription * pTypeDescr = va_arg(*pParam, typelib_InterfaceTypeDescription *); - ExtEnv_registerProxyInterface * pRegisterProxyInterface - = va_arg(*pParam, ExtEnv_registerProxyInterface *); - - pRegisterProxyInterface(pExtEnv, ppProxy, freeProxy, pOId, pTypeDescr); -}} - -void Base::registerProxyInterface(void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - uno_Environment_invoke(m_pEnv, - s_registerProxyInterface_v, - m_pEnv->pExtEnv, - ppProxy, - freeProxy, - oid.pData, - pTypeDescr, - m_env_registerProxyInterface); -} - - -extern "C" { static void s_revokeInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - ExtEnv_revokeInterface * pRevokeInterface = va_arg(*pParam, ExtEnv_revokeInterface *); - - pRevokeInterface(pExtEnv, pInterface); -}} - -void Base::revokeInterface(void * pInterface) -{ - uno_Environment_invoke(m_pEnv, - s_revokeInterface_v, - m_pEnv->pExtEnv, - pInterface, - m_env_revokeInterface); -} - - -extern "C" { static void s_getObjectIdentifier_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - rtl::OUString * pOId = va_arg(*pParam, rtl::OUString *); - ExtEnv_getObjectIdentifier * pGetObjectIdentifier - = va_arg(*pParam, ExtEnv_getObjectIdentifier *); - - pGetObjectIdentifier(pExtEnv, reinterpret_cast(pOId), pInterface); -}} - -void Base::getObjectIdentifier(void * pInterface, rtl::OUString * pOid) -{ - uno_Environment_invoke(m_pEnv, - s_getObjectIdentifier_v, - m_pEnv->pExtEnv, - pInterface, - pOid, - m_env_getObjectIdentifier); -} - - -extern "C" { static void s_getRegisteredInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void ** ppInterface = va_arg(*pParam, void **); - rtl_uString * pOId = va_arg(*pParam, rtl_uString *); - typelib_InterfaceTypeDescription * pTypeDescr = va_arg(*pParam, typelib_InterfaceTypeDescription *); - ExtEnv_getRegisteredInterface * pGetRegisteredInterface - = va_arg(*pParam, ExtEnv_getRegisteredInterface *); - - pGetRegisteredInterface(pExtEnv, ppInterface, pOId, pTypeDescr); -}} - -void Base::getRegisteredInterface(void ** ppInterface, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - uno_Environment_invoke(m_pEnv, - s_getRegisteredInterface_v, - m_pEnv->pExtEnv, - ppInterface, - oid.pData, - pTypeDescr, - m_env_getRegisteredInterface); -} - - -extern "C" { static void s_getRegisteredInterfaces_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void *** pppInterface = va_arg(*pParam, void ***); - sal_Int32 * pnLen = va_arg(*pParam, sal_Int32 *); - uno_memAlloc memAlloc = va_arg(*pParam, uno_memAlloc); - ExtEnv_getRegisteredInterfaces * pGetRegisteredInterfaces - = va_arg(*pParam, ExtEnv_getRegisteredInterfaces *); - - pGetRegisteredInterfaces(pExtEnv, pppInterface, pnLen, memAlloc); -}} - -void Base::getRegisteredInterfaces(void *** pppInterface, - sal_Int32 * pnLen, - uno_memAlloc memAlloc) -{ - uno_Environment_invoke(m_pEnv, - s_getRegisteredInterfaces_v, - m_pEnv->pExtEnv, - pppInterface, - pnLen, - memAlloc, - m_env_getRegisteredInterfaces); -} - - -extern "C" { static void s_computeObjectIdentifier_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - rtl::OUString * pOId = va_arg(*pParam, rtl::OUString *); - ExtEnv_computeObjectIdentifier * pComputeObjectIdentifier - = va_arg(*pParam, ExtEnv_computeObjectIdentifier *); - - pComputeObjectIdentifier(pExtEnv, reinterpret_cast(pOId), pInterface); -}} - -void Base::computeObjectIdentifier(void * pInterface, rtl::OUString * pOid) -{ - uno_Environment_invoke(m_pEnv, - s_computeObjectIdentifier_v, - m_pEnv->pExtEnv, - pInterface, - pOid, - m_env_computeObjectIdentifier); -} - - -extern "C" { static void s_acquireInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - ExtEnv_acquireInterface * pAcquireInterface - = va_arg(*pParam, ExtEnv_acquireInterface *); - - pAcquireInterface(pExtEnv, pInterface); -}} - -void Base::acquireInterface(void * pInterface) -{ - uno_Environment_invoke(m_pEnv, s_acquireInterface_v, m_pEnv->pExtEnv, pInterface, m_env_acquireInterface); -} - - -extern "C" { static void s_releaseInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - ExtEnv_releaseInterface * pReleaseInterface - = va_arg(*pParam, ExtEnv_releaseInterface *); - - pReleaseInterface(pExtEnv, pInterface); -}} - -void Base::releaseInterface(void * pInterface) -{ - uno_Environment_invoke(m_pEnv, - s_releaseInterface_v, - m_pEnv->pExtEnv, - pInterface, - m_env_releaseInterface); -} - -void Base::v_enter(void) -{ - m_pEnterable->enter(); -} - -void Base::v_leave(void) -{ - m_pEnterable->leave(); -} - -void Base::v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - m_pEnterable->callInto_v(pCallee, pParam); -} - -void Base::v_callOut_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - m_pEnterable->callOut_v(pCallee, pParam); -} - -int Base::v_isValid(rtl::OUString * pReason) -{ - return m_pEnterable->isValid(pReason); -} - -namespace cppu { namespace helper { namespace purpenv { - -void Environment_initWithEnterable(uno_Environment * pEnvironment, cppu::Enterable * pEnterable) -{ - new Base(pEnvironment, pEnterable); -} - -}}} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/helper/purpenv/helper_purpenv_Mapping.cxx b/cppu/source/helper/purpenv/helper_purpenv_Mapping.cxx deleted file mode 100644 index a299e1eb1..000000000 --- a/cppu/source/helper/purpenv/helper_purpenv_Mapping.cxx +++ /dev/null @@ -1,236 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "cppu/helper/purpenv/Mapping.hxx" - -#include "Proxy.hxx" - -#include "osl/interlck.h" -#include "uno/environment.hxx" -#include "uno/dispatcher.h" -#include "typelib/typedescription.h" - - -#ifdef debug -# define LOG_LIFECYCLE_cppu_helper_purpenv_Mapping -#endif - -#ifdef LOG_LIFECYCLE_cppu_helper_purpenv_Mapping -# include -# define LOG_LIFECYCLE_cppu_helper_purpenv_Mapping_emit(x) x - -#else -# define LOG_LIFECYCLE_cppu_helper_purpenv_Mapping_emit(x) - -#endif - - -using namespace com::sun::star; - - -class Mapping : public uno_Mapping -{ - uno::Environment m_from; - uno::Environment m_to; - - oslInterlockedCount m_nCount; - - cppu::helper::purpenv::ProbeFun * m_probeFun; - void * m_pContext; - -public: - explicit Mapping(uno_Environment * pFrom, - uno_Environment * pTo, - cppu::helper::purpenv::ProbeFun * probeFun, - void * pProbeContext); - virtual ~Mapping(void); - - void mapInterface( - uno_Interface ** ppOut, - uno_Interface * pUnoI, - typelib_InterfaceTypeDescription * pTypeDescr); - - void acquire(void); - void release(void); -}; - -static void SAL_CALL s_mapInterface( - uno_Mapping * puno_Mapping, - uno_Interface ** ppOut, - uno_Interface * pUnoI, - typelib_InterfaceTypeDescription * pTypeDescr ) - SAL_THROW_EXTERN_C() -{ - Mapping * pMapping = static_cast(puno_Mapping); - pMapping->mapInterface(ppOut, pUnoI, pTypeDescr); -} - -extern "C" { -static void SAL_CALL s_acquire(uno_Mapping * puno_Mapping) - SAL_THROW_EXTERN_C() -{ - Mapping * pMapping = static_cast(puno_Mapping); - pMapping->acquire(); -} - -static void SAL_CALL s_release(uno_Mapping * puno_Mapping) - SAL_THROW_EXTERN_C() -{ - Mapping * pMapping = static_cast(puno_Mapping); - pMapping->release(); -} - - -static void s_getIdentifier_v(va_list * pParam) -{ - uno_ExtEnvironment * pEnv = va_arg(*pParam, uno_ExtEnvironment *); - rtl_uString ** ppOid = va_arg(*pParam, rtl_uString **); - uno_Interface * pUnoI = va_arg(*pParam, uno_Interface *); - - pEnv->getObjectIdentifier(pEnv, ppOid, pUnoI); -} - -static void SAL_CALL s_free(uno_Mapping * puno_Mapping) - SAL_THROW_EXTERN_C() -{ - Mapping * pMapping = static_cast(puno_Mapping); - delete pMapping; -} -} - -Mapping::Mapping(uno_Environment * pFrom, - uno_Environment * pTo, - cppu::helper::purpenv::ProbeFun * probeFun, - void * pProbeContext -) SAL_THROW( () ) - : m_from (pFrom), - m_to (pTo), - m_nCount (1), - m_probeFun(probeFun), - m_pContext(pProbeContext) -{ - LOG_LIFECYCLE_cppu_helper_purpenv_Mapping_emit(fprintf(stderr, "LIFE: %s -> %p\n", "Mapping::Mapping(uno_Environment * pFrom, uno_Environment * pTo) SAL_THROW( () )", this)); - - uno_Mapping::acquire = s_acquire; - uno_Mapping::release = s_release; - uno_Mapping::mapInterface = (uno_MapInterfaceFunc)s_mapInterface; -} - -Mapping::~Mapping(void) -{ - LOG_LIFECYCLE_cppu_helper_purpenv_Mapping_emit(fprintf(stderr, "LIFE: %s -> %p\n", "Mapping::~Mapping(void)", this)); -} - - -void Mapping::mapInterface( - uno_Interface ** ppOut, - uno_Interface * pUnoI, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - OSL_ASSERT(ppOut && pTypeDescr); - if (*ppOut) - { - (*ppOut)->release(*ppOut); - *ppOut = 0; - } - - if (!pUnoI) - return; - - // get object id of uno interface to be wrapped - // need to enter environment because of potential "queryInterface" call - rtl_uString * pOId = 0; - uno_Environment_invoke(m_from.get(), s_getIdentifier_v, m_from.get(), &pOId, pUnoI); - OSL_ASSERT(pOId); - - // try to get any known interface from target environment - m_to.get()->pExtEnv->getRegisteredInterface(m_to.get()->pExtEnv, (void **)ppOut, pOId, pTypeDescr); - - if (!*ppOut) // not yet there, register new proxy interface - { - // try to publish a new proxy (ref count initially 1) - uno_Interface * pProxy = new Proxy(this, - m_from.get(), - m_to.get(), - pUnoI, - pTypeDescr, - pOId, - m_probeFun, - m_pContext); - - // proxy may be exchanged during registration - m_to.get()->pExtEnv->registerProxyInterface(m_to.get()->pExtEnv, - (void **)&pProxy, - Proxy_free, - pOId, - pTypeDescr); - - *ppOut = pProxy; - } - - rtl_uString_release(pOId); -} - - -void Mapping::acquire() SAL_THROW(()) -{ - if (osl_incrementInterlockedCount(&m_nCount) == 1) - { - uno_Mapping * pMapping = this; - - ::uno_registerMapping(&pMapping, s_free, m_from.get(), m_to.get(), NULL); - } -} - -void Mapping::release() SAL_THROW(()) -{ - if (osl_decrementInterlockedCount(&m_nCount) == 0) - ::uno_revokeMapping(this); -} - - -namespace cppu { namespace helper { namespace purpenv { - -void createMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo, - ProbeFun * probeFun, - void * pContext - ) -{ - *ppMapping = new Mapping(pFrom, pTo, probeFun, pContext); - - ::uno_registerMapping(ppMapping, s_free, pFrom, pTo, NULL); -} - -}}} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx b/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx deleted file mode 100644 index 500909905..000000000 --- a/cppu/source/helper/purpenv/helper_purpenv_Proxy.cxx +++ /dev/null @@ -1,532 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "Proxy.hxx" - -#include "sal/alloca.h" -#include "uno/dispatcher.h" -#include "typelib/typedescription.hxx" -#include "cppu/EnvDcp.hxx" - - -//#define LOG_LIFECYCLE_Proxy -#ifdef LOG_LIFECYCLE_Proxy -# include -# define LOG_LIFECYCLE_Proxy_emit(x) x - -#else -# define LOG_LIFECYCLE_Proxy_emit(x) - -#endif - - -using namespace com::sun::star; - - -static bool relatesToInterface(typelib_TypeDescription * pTypeDescr) - SAL_THROW( () ) -{ - switch (pTypeDescr->eTypeClass) - { -// case typelib_TypeClass_TYPEDEF: - case typelib_TypeClass_SEQUENCE: - { - 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: - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType ); - bool bRel = relatesToInterface( pTD ); - TYPELIB_DANGER_RELEASE( pTD ); - return bRel; - } - default: - ; - } - return false; - } - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - // ...optimized... to avoid getDescription() calls! - typelib_CompoundTypeDescription * pComp = (typelib_CompoundTypeDescription *)pTypeDescr; - typelib_TypeDescriptionReference ** pTypes = pComp->ppTypeRefs; - for ( sal_Int32 nPos = pComp->nMembers; nPos--; ) - { - 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: - case typelib_TypeClass_SEQUENCE: - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, pTypes[nPos] ); - bool bRel = relatesToInterface( pTD ); - TYPELIB_DANGER_RELEASE( pTD ); - if (bRel) - return true; - } - default: - ; - } - } - if (pComp->pBaseTypeDescription) - 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; - - default: - ; - } - return false; -} - -extern "C" { static void SAL_CALL s_Proxy_dispatch( - uno_Interface * pUnoI, - typelib_TypeDescription const * pMemberType, - void * pReturn, - void * pArgs[], - uno_Any ** ppException) - SAL_THROW_EXTERN_C() -{ - Proxy * pThis = static_cast(pUnoI); - - typelib_MethodParameter param; - sal_Int32 nParams = 0; - typelib_MethodParameter * pParams = 0; - typelib_TypeDescriptionReference * pReturnTypeRef = 0; - // sal_Int32 nOutParams = 0; - - switch (pMemberType->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - if (pReturn) - { - pReturnTypeRef = - ((typelib_InterfaceAttributeTypeDescription *) - pMemberType)->pAttributeTypeRef; - nParams = 0; - pParams = NULL; - } - else - { - param.pTypeRef = ((typelib_InterfaceAttributeTypeDescription *) - pMemberType)->pAttributeTypeRef; - param.bIn = sal_True; - param.bOut = sal_False; - nParams = 1; - pParams = ¶m; - } - break; - case typelib_TypeClass_INTERFACE_METHOD: - { - typelib_InterfaceMethodTypeDescription * method_td = - (typelib_InterfaceMethodTypeDescription *) pMemberType; - pReturnTypeRef = method_td->pReturnTypeRef; - nParams = method_td->nParams; - pParams = method_td->pParams; - break; - } - default: - OSL_FAIL( "### illegal member typeclass!" ); - abort(); - } - - pThis->dispatch( pReturnTypeRef, - pParams, - nParams, - pMemberType, - pReturn, - pArgs, - ppException ); -}} - -extern "C" void SAL_CALL Proxy_free(uno_ExtEnvironment * /*pEnv*/, void * pProxy) SAL_THROW_EXTERN_C() -{ - Proxy * pThis = static_cast(reinterpret_cast(pProxy)); - delete pThis; -} - -extern "C" { -static void SAL_CALL s_Proxy_acquire(uno_Interface * pUnoI) SAL_THROW_EXTERN_C() -{ - Proxy * pProxy = static_cast(pUnoI); - pProxy->acquire(); -} - -static void SAL_CALL s_Proxy_release(uno_Interface * pUnoI) SAL_THROW_EXTERN_C() -{ - Proxy * pProxy = static_cast(pUnoI); - pProxy->release(); -} - -static void s_acquireAndRegister_v(va_list * pParam) -{ - uno_Interface * pUnoI = va_arg(*pParam, uno_Interface *); - rtl_uString * pOid = va_arg(*pParam, rtl_uString *); - typelib_InterfaceTypeDescription * pTypeDescr = va_arg(*pParam, typelib_InterfaceTypeDescription *); - uno_ExtEnvironment * pEnv = va_arg(*pParam, uno_ExtEnvironment *); - - pUnoI->acquire(pUnoI); - pEnv->registerInterface(pEnv, reinterpret_cast(&pUnoI), pOid, pTypeDescr); -} -} - -Proxy::Proxy(uno::Mapping const & to_from, - uno_Environment * pTo, - uno_Environment * pFrom, - uno_Interface * pUnoI, - typelib_InterfaceTypeDescription * pTypeDescr, - rtl::OUString const & rOId, - cppu::helper::purpenv::ProbeFun * probeFun, - void * pProbeContext -) - SAL_THROW(()) - : m_nRef (1), - m_from (pFrom), - m_to (pTo), - m_from_to (pFrom, pTo), - m_to_from (to_from), - m_pUnoI (pUnoI), - m_pTypeDescr (pTypeDescr), - m_aOId (rOId), - m_probeFun (probeFun), - m_pProbeContext(pProbeContext) -{ - LOG_LIFECYCLE_Proxy_emit(fprintf(stderr, "LIFE: %s -> %p\n", "Proxy::Proxy(<>)", this)); - - typelib_typedescription_acquire((typelib_TypeDescription *)m_pTypeDescr); - if (!((typelib_TypeDescription *)m_pTypeDescr)->bComplete) - typelib_typedescription_complete((typelib_TypeDescription **)&m_pTypeDescr); - - OSL_ENSURE(((typelib_TypeDescription *)m_pTypeDescr)->bComplete, "### type is incomplete!"); - - uno_Environment_invoke(m_to.get(), s_acquireAndRegister_v, m_pUnoI, rOId.pData, pTypeDescr, m_to.get()); - - // uno_Interface - uno_Interface::acquire = s_Proxy_acquire; - uno_Interface::release = s_Proxy_release; - uno_Interface::pDispatcher = s_Proxy_dispatch; -} - -extern "C" { static void s_releaseAndRevoke_v(va_list * pParam) -{ - uno_ExtEnvironment * pEnv = va_arg(*pParam, uno_ExtEnvironment *); - uno_Interface * pUnoI = va_arg(*pParam, uno_Interface *); - - pEnv->revokeInterface(pEnv, reinterpret_cast(pUnoI)); - pUnoI->release(pUnoI); -}} - -Proxy::~Proxy() -{ - LOG_LIFECYCLE_Proxy_emit(fprintf(stderr, "LIFE: %s -> %p\n", "Proxy::~Proxy()", this)); - - uno_Environment_invoke(m_to.get(), s_releaseAndRevoke_v, m_to.get(), m_pUnoI); - - typelib_typedescription_release((typelib_TypeDescription *)m_pTypeDescr); -} - -static uno::TypeDescription getAcquireMethod(void) -{ - typelib_TypeDescriptionReference * type_XInterface = - * typelib_static_type_getByTypeClass(typelib_TypeClass_INTERFACE); - - typelib_TypeDescription * pTXInterfaceDescr = 0; - TYPELIB_DANGER_GET (&pTXInterfaceDescr, type_XInterface); - uno::TypeDescription acquire( - reinterpret_cast< typelib_InterfaceTypeDescription * >( - pTXInterfaceDescr)->ppAllMembers[1]); - TYPELIB_DANGER_RELEASE(pTXInterfaceDescr); - - return acquire; -} - -static uno::TypeDescription getReleaseMethod(void) -{ - typelib_TypeDescriptionReference * type_XInterface = - * typelib_static_type_getByTypeClass(typelib_TypeClass_INTERFACE); - - typelib_TypeDescription * pTXInterfaceDescr = 0; - TYPELIB_DANGER_GET (&pTXInterfaceDescr, type_XInterface); - uno::TypeDescription release( - reinterpret_cast< typelib_InterfaceTypeDescription * >( - pTXInterfaceDescr)->ppAllMembers[2]); - TYPELIB_DANGER_RELEASE(pTXInterfaceDescr); - - return release; -} - -static uno::TypeDescription s_acquireMethod(getAcquireMethod()); -static uno::TypeDescription s_releaseMethod(getReleaseMethod()); - -void Proxy::acquire(void) -{ - if (m_probeFun) - m_probeFun(true, - this, - m_pProbeContext, - *typelib_static_type_getByTypeClass(typelib_TypeClass_VOID), - NULL, - 0, - s_acquireMethod.get(), - NULL, - NULL, - NULL); - - if (osl_incrementInterlockedCount(&m_nRef) == 1) - { - // rebirth of proxy zombie - void * pThis = this; - m_from.get()->pExtEnv->registerProxyInterface(m_from.get()->pExtEnv, - &pThis, - Proxy_free, - m_aOId.pData, - m_pTypeDescr); - OSL_ASSERT(pThis == this); - } - - if (m_probeFun) - m_probeFun(false, - this, - m_pProbeContext, - *typelib_static_type_getByTypeClass(typelib_TypeClass_VOID), - NULL, - 0, - s_acquireMethod.get(), - NULL, - NULL, - NULL); - -} - -void Proxy::release(void) -{ - cppu::helper::purpenv::ProbeFun * probeFun = m_probeFun; - void * pProbeContext = m_pProbeContext; - - if (m_probeFun) - m_probeFun(true, - this, - m_pProbeContext, - *typelib_static_type_getByTypeClass(typelib_TypeClass_VOID), - NULL, - 0, - s_releaseMethod.get(), - NULL, - NULL, - NULL); - - if (osl_decrementInterlockedCount(&m_nRef) == 0) - m_from.get()->pExtEnv->revokeInterface(m_from.get()->pExtEnv, this); - - if (probeFun) - probeFun(false, - this, - pProbeContext, - *typelib_static_type_getByTypeClass(typelib_TypeClass_VOID), - NULL, - 0, - s_releaseMethod.get(), - NULL, - NULL, - NULL); - -} - - -extern "C" { -static void s_type_destructData_v(va_list * pParam) -{ - void * ret = va_arg(*pParam, void *); - typelib_TypeDescriptionReference * pReturnTypeRef = va_arg(*pParam, typelib_TypeDescriptionReference *); - - uno_type_destructData(ret, pReturnTypeRef, 0); -} - -static void s_dispatcher_v(va_list * pParam) -{ - uno_Interface * pUnoI = va_arg(*pParam, uno_Interface *); - typelib_TypeDescription const * pMemberType = va_arg(*pParam, typelib_TypeDescription const *); - void * pReturn = va_arg(*pParam, void *); - void ** pArgs = va_arg(*pParam, void **); - uno_Any ** ppException = va_arg(*pParam, uno_Any **); - - pUnoI->pDispatcher(pUnoI, pMemberType, pReturn, pArgs, ppException); -} -} - -void Proxy::dispatch(typelib_TypeDescriptionReference * pReturnTypeRef, - typelib_MethodParameter * pParams, - sal_Int32 nParams, - typelib_TypeDescription const * pMemberType, - void * pReturn, - void * pArgs[], - uno_Any ** ppException) -{ - if (m_probeFun) - m_probeFun(true, - this, - m_pProbeContext, - pReturnTypeRef, - pParams, - nParams, - pMemberType, - pReturn, - pArgs, - ppException); - - void ** args = (void **) alloca( sizeof (void *) * nParams ); - - typelib_TypeDescription * return_td = 0; - void * ret = pReturn; - if (pReturnTypeRef) - { - TYPELIB_DANGER_GET(&return_td, pReturnTypeRef); - - if (relatesToInterface(return_td)) - ret = alloca(return_td->nSize); - - TYPELIB_DANGER_RELEASE(return_td); - } - - for (sal_Int32 nPos = 0; nPos < nParams; ++ nPos) - { - typelib_MethodParameter const & param = pParams[nPos]; - typelib_TypeDescription * td = 0; - TYPELIB_DANGER_GET( &td, param.pTypeRef ); - if (relatesToInterface(td)) - { - args[nPos] = alloca(td->nSize); - if (param.bIn) - { - uno_copyAndConvertData(args[nPos], pArgs[nPos], td, m_from_to.get()); - } - } - else - { - args[nPos] = pArgs[nPos]; - } - TYPELIB_DANGER_RELEASE( td ); - } - - uno_Any exc_data; - uno_Any * exc = &exc_data; - - // do the UNO call... - uno_Environment_invoke(m_to.get(), s_dispatcher_v, m_pUnoI, pMemberType, ret, args, &exc); - - if (exc == 0) - { - for (sal_Int32 nPos = 0; nPos < nParams; ++ nPos) - { - if (args[nPos] != pArgs[nPos]) - { - typelib_MethodParameter const & param = pParams[nPos]; - if (param.bOut) - { - if (param.bIn) // is inout - { - uno_type_destructData(pArgs[nPos], param.pTypeRef, 0); - } - uno_type_copyAndConvertData(pArgs[ nPos ], - args[ nPos ], - param.pTypeRef, - m_to_from.get()); - } - uno_Environment_invoke(m_to.get(), s_type_destructData_v, args[nPos], param.pTypeRef, 0); - } - } - if (ret != pReturn) - { - uno_type_copyAndConvertData(pReturn, - ret, - pReturnTypeRef, - m_to_from.get()); - - uno_Environment_invoke(m_to.get(), s_type_destructData_v, ret, pReturnTypeRef, 0); - } - - *ppException = 0; - } - else // exception occurred - { - for (sal_Int32 nPos = 0; nPos < nParams; ++ nPos) - { - if (args[nPos] != pArgs[nPos]) - { - typelib_MethodParameter const & param = pParams[nPos]; - if (param.bIn) - { - uno_Environment_invoke(m_to.get(), s_type_destructData_v, args[nPos], param.pTypeRef, 0); - } - } - } - - uno_type_any_constructAndConvert(*ppException, - exc->pData, - exc->pType, - m_to_from.get()); - - // FIXME: need to destruct in m_to - uno_any_destruct(exc, 0); - } - - if (m_probeFun) - m_probeFun(false, - this, - m_pProbeContext, - pReturnTypeRef, - pParams, - nParams, - pMemberType, - pReturn, - pArgs, - ppException); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/helper/purpenv/makefile.mk b/cppu/source/helper/purpenv/makefile.mk deleted file mode 100644 index 0517a9557..000000000 --- a/cppu/source/helper/purpenv/makefile.mk +++ /dev/null @@ -1,46 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ := ..$/..$/.. -PRJNAME := cppu -TARGET := helper_purpenv - - -ENABLE_EXCEPTIONS := TRUE -NO_BSYMBOLIC := TRUE -USE_DEFFILE := TRUE - - -.INCLUDE : settings.mk - -SLOFILES := \ - $(SLO)$/helper_purpenv_Environment.obj \ - $(SLO)$/helper_purpenv_Mapping.obj \ - $(SLO)$/helper_purpenv_Proxy.obj - - -.INCLUDE : target.mk diff --git a/cppu/source/threadpool/current.cxx b/cppu/source/threadpool/current.cxx deleted file mode 100644 index 6fad81749..000000000 --- a/cppu/source/threadpool/current.cxx +++ /dev/null @@ -1,300 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "rtl/uuid.h" -#include "osl/thread.h" -#include "osl/mutex.hxx" - -#include "uno/environment.hxx" -#include "uno/mapping.hxx" -#include "uno/lbnames.h" -#include "typelib/typedescription.h" - -#include "current.hxx" - - -using namespace ::osl; -using namespace ::rtl; -using namespace ::cppu; -using namespace ::com::sun::star::uno; - -namespace cppu -{ - -//-------------------------------------------------------------------------------------------------- -class SAL_NO_VTABLE XInterface -{ -public: - virtual void SAL_CALL slot_queryInterface() = 0; - virtual void SAL_CALL acquire() throw () = 0; - virtual void SAL_CALL release() throw () = 0; -}; -//-------------------------------------------------------------------------------------------------- -static typelib_InterfaceTypeDescription * get_type_XCurrentContext() -{ - static typelib_InterfaceTypeDescription * s_type_XCurrentContext = 0; - if (0 == s_type_XCurrentContext) - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - if (0 == s_type_XCurrentContext) - { - OUString sTypeName( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XCurrentContext") ); - typelib_InterfaceTypeDescription * pTD = 0; - typelib_TypeDescriptionReference * pMembers[1] = { 0 }; - OUString sMethodName0( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XCurrentContext::getValueByName") ); - typelib_typedescriptionreference_new( - &pMembers[0], - typelib_TypeClass_INTERFACE_METHOD, - sMethodName0.pData ); - typelib_typedescription_newInterface( - &pTD, - sTypeName.pData, 0x00000000, 0x0000, 0x0000, 0x00000000, 0x00000000, - * typelib_static_type_getByTypeClass( typelib_TypeClass_INTERFACE ), - 1, - pMembers ); - - typelib_typedescription_register( (typelib_TypeDescription**)&pTD ); - typelib_typedescriptionreference_release( pMembers[0] ); - - typelib_InterfaceMethodTypeDescription * pMethod = 0; - typelib_Parameter_Init aParameters[1]; - OUString sParamName0( RTL_CONSTASCII_USTRINGPARAM("Name") ); - OUString sParamType0( RTL_CONSTASCII_USTRINGPARAM("string") ); - aParameters[0].pParamName = sParamName0.pData; - aParameters[0].eTypeClass = typelib_TypeClass_STRING; - aParameters[0].pTypeName = sParamType0.pData; - aParameters[0].bIn = sal_True; - aParameters[0].bOut = sal_False; - rtl_uString * pExceptions[1]; - OUString sExceptionName0( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.RuntimeException") ); - pExceptions[0] = sExceptionName0.pData; - OUString sReturnType0( RTL_CONSTASCII_USTRINGPARAM("any") ); - typelib_typedescription_newInterfaceMethod( - &pMethod, - 3, sal_False, - sMethodName0.pData, - typelib_TypeClass_ANY, sReturnType0.pData, - 1, aParameters, 1, pExceptions ); - typelib_typedescription_register( (typelib_TypeDescription**)&pMethod ); - typelib_typedescription_release( (typelib_TypeDescription*)pMethod ); - // another static ref: - ++reinterpret_cast< typelib_TypeDescription * >( pTD )-> - nStaticRefCount; - s_type_XCurrentContext = pTD; - } - } - return s_type_XCurrentContext; -} - -//################################################################################################## - -//================================================================================================== -class ThreadKey -{ - sal_Bool _bInit; - oslThreadKey _hThreadKey; - oslThreadKeyCallbackFunction _pCallback; - -public: - inline oslThreadKey getThreadKey() SAL_THROW( () ); - - inline ThreadKey( oslThreadKeyCallbackFunction pCallback ) SAL_THROW( () ); - inline ~ThreadKey() SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -inline ThreadKey::ThreadKey( oslThreadKeyCallbackFunction pCallback ) SAL_THROW( () ) - : _bInit( sal_False ) - , _pCallback( pCallback ) -{ -} -//__________________________________________________________________________________________________ -inline ThreadKey::~ThreadKey() SAL_THROW( () ) -{ - if (_bInit) - { - ::osl_destroyThreadKey( _hThreadKey ); - } -} -//__________________________________________________________________________________________________ -inline oslThreadKey ThreadKey::getThreadKey() SAL_THROW( () ) -{ - if (! _bInit) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if (! _bInit) - { - _hThreadKey = ::osl_createThreadKey( _pCallback ); - _bInit = sal_True; - } - } - return _hThreadKey; -} - -//================================================================================================== -extern "C" void SAL_CALL delete_IdContainer( void * p ) -{ - if (p) - { - IdContainer * pId = reinterpret_cast< IdContainer * >( p ); - if (pId->pCurrentContext) - { - (*pId->pCurrentContextEnv->releaseInterface)( - pId->pCurrentContextEnv, pId->pCurrentContext ); - (*((uno_Environment *)pId->pCurrentContextEnv)->release)( - (uno_Environment *)pId->pCurrentContextEnv ); - } - if (pId->bInit) - { - ::rtl_byte_sequence_release( pId->pLocalThreadId ); - ::rtl_byte_sequence_release( pId->pCurrentId ); - } - delete pId; - } -} -//================================================================================================== -IdContainer * getIdContainer() SAL_THROW( () ) -{ - static ThreadKey s_key( delete_IdContainer ); - oslThreadKey aKey = s_key.getThreadKey(); - - IdContainer * pId = reinterpret_cast< IdContainer * >( ::osl_getThreadKeyData( aKey ) ); - if (! pId) - { - pId = new IdContainer(); - pId->pCurrentContext = 0; - pId->pCurrentContextEnv = 0; - pId->bInit = sal_False; - ::osl_setThreadKeyData( aKey, pId ); - } - return pId; -} - -} - -//################################################################################################## -extern "C" sal_Bool SAL_CALL uno_setCurrentContext( - void * pCurrentContext, - rtl_uString * pEnvTypeName, void * pEnvContext ) - SAL_THROW_EXTERN_C() -{ - IdContainer * pId = getIdContainer(); - OSL_ASSERT( pId ); - - // free old one - if (pId->pCurrentContext) - { - (*pId->pCurrentContextEnv->releaseInterface)( - pId->pCurrentContextEnv, pId->pCurrentContext ); - (*((uno_Environment *)pId->pCurrentContextEnv)->release)( - (uno_Environment *)pId->pCurrentContextEnv ); - pId->pCurrentContextEnv = 0; - - pId->pCurrentContext = 0; - } - - if (pCurrentContext) - { - uno_Environment * pEnv = 0; - ::uno_getEnvironment( &pEnv, pEnvTypeName, pEnvContext ); - OSL_ASSERT( pEnv && pEnv->pExtEnv ); - if (pEnv) - { - if (pEnv->pExtEnv) - { - pId->pCurrentContextEnv = pEnv->pExtEnv; - (*pId->pCurrentContextEnv->acquireInterface)( - pId->pCurrentContextEnv, pCurrentContext ); - pId->pCurrentContext = pCurrentContext; - } - else - { - (*pEnv->release)( pEnv ); - return sal_False; - } - } - else - { - return sal_False; - } - } - return sal_True; -} -//################################################################################################## -extern "C" sal_Bool SAL_CALL uno_getCurrentContext( - void ** ppCurrentContext, rtl_uString * pEnvTypeName, void * pEnvContext ) - SAL_THROW_EXTERN_C() -{ - IdContainer * pId = getIdContainer(); - OSL_ASSERT( pId ); - - Environment target_env; - - // release inout parameter - if (*ppCurrentContext) - { - target_env = Environment(rtl::OUString(pEnvTypeName), pEnvContext); - OSL_ASSERT( target_env.is() ); - if (! target_env.is()) - return sal_False; - uno_ExtEnvironment * pEnv = target_env.get()->pExtEnv; - OSL_ASSERT( 0 != pEnv ); - if (0 == pEnv) - return sal_False; - (*pEnv->releaseInterface)( pEnv, *ppCurrentContext ); - - *ppCurrentContext = 0; - } - - // case: null-ref - if (0 == pId->pCurrentContext) - return sal_True; - - if (! target_env.is()) - { - target_env = Environment(rtl::OUString(pEnvTypeName), pEnvContext); - OSL_ASSERT( target_env.is() ); - if (! target_env.is()) - return sal_False; - } - - Mapping mapping((uno_Environment *) pId->pCurrentContextEnv, target_env.get()); - OSL_ASSERT( mapping.is() ); - if (! mapping.is()) - return sal_False; - - mapping.mapInterface(ppCurrentContext, pId->pCurrentContext, ::cppu::get_type_XCurrentContext() ); - - return sal_True; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/current.hxx b/cppu/source/threadpool/current.hxx deleted file mode 100644 index cf9b04b1c..000000000 --- a/cppu/source/threadpool/current.hxx +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "rtl/byteseq.h" - -typedef struct _uno_ExtEnvironment uno_ExtEnvironment; - -namespace cppu -{ -struct CurrentContext; - -struct IdContainer -{ - void * pCurrentContext; - uno_ExtEnvironment * pCurrentContextEnv; - // - sal_Bool bInit; - sal_Sequence * pLocalThreadId; - sal_Int32 nRefCountOfCurrentId; - sal_Sequence * pCurrentId; -}; - -IdContainer * getIdContainer() SAL_THROW( () ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/jobqueue.cxx b/cppu/source/threadpool/jobqueue.cxx deleted file mode 100644 index 56793f609..000000000 --- a/cppu/source/threadpool/jobqueue.cxx +++ /dev/null @@ -1,199 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" -#include "jobqueue.hxx" -#include "threadpool.hxx" - -#include - -using namespace ::osl; - -namespace cppu_threadpool { - - JobQueue::JobQueue() : - m_nToDo( 0 ), - m_bSuspended( sal_False ), - m_cndWait( osl_createCondition() ) - { - osl_resetCondition( m_cndWait ); - m_DisposedCallerAdmin = DisposedCallerAdmin::getInstance(); - } - - JobQueue::~JobQueue() - { - osl_destroyCondition( m_cndWait ); - } - - - void JobQueue::add( void *pThreadSpecificData, RequestFun * doRequest ) - { - MutexGuard guard( m_mutex ); - Job job = { pThreadSpecificData , doRequest }; - m_lstJob.push_back( job ); - if( ! m_bSuspended ) - { - osl_setCondition( m_cndWait ); - } - m_nToDo ++; - } - - void *JobQueue::enter( sal_Int64 nDisposeId , sal_Bool bReturnWhenNoJob ) - { - void *pReturn = 0; - { - // synchronize with the dispose calls - MutexGuard guard( m_mutex ); - if( m_DisposedCallerAdmin->isDisposed( nDisposeId ) ) - { - return 0; - } - m_lstCallstack.push_front( nDisposeId ); - } - - - while( sal_True ) - { - if( bReturnWhenNoJob ) - { - MutexGuard guard( m_mutex ); - if( m_lstJob.empty() ) - { - break; - } - } - - osl_waitCondition( m_cndWait , 0 ); - - struct Job job={0,0}; - { - // synchronize with add and dispose calls - MutexGuard guard( m_mutex ); - - if( 0 == m_lstCallstack.front() ) - { - // disposed ! - if( m_lstJob.empty() ) - { - osl_resetCondition( m_cndWait ); - } - break; - } - - OSL_ASSERT( ! m_lstJob.empty() ); - if( ! m_lstJob.empty() ) - { - job = m_lstJob.front(); - m_lstJob.pop_front(); - } - if( m_lstJob.empty() ) - { - osl_resetCondition( m_cndWait ); - } - } - - if( job.doRequest ) - { - job.doRequest( job.pThreadSpecificData ); - m_nToDo --; - } - else - { - m_nToDo --; - pReturn = job.pThreadSpecificData; - break; - } - } - - { - // synchronize with the dispose calls - MutexGuard guard( m_mutex ); - m_lstCallstack.pop_front(); - } - - return pReturn; - } - - void JobQueue::dispose( sal_Int64 nDisposeId ) - { - MutexGuard guard( m_mutex ); - for( CallStackList::iterator ii = m_lstCallstack.begin() ; - ii != m_lstCallstack.end() ; - ++ii ) - { - if( (*ii) == nDisposeId ) - { - (*ii) = 0; - } - } - - if( !m_lstCallstack.empty() && ! m_lstCallstack.front() ) - { - // The thread is waiting for a disposed pCallerId, let it go - osl_setCondition( m_cndWait ); - } - } - - void JobQueue::suspend() - { - MutexGuard guard( m_mutex ); - m_bSuspended = sal_True; - } - - void JobQueue::resume() - { - MutexGuard guard( m_mutex ); - m_bSuspended = sal_False; - if( ! m_lstJob.empty() ) - { - osl_setCondition( m_cndWait ); - } - } - - sal_Bool JobQueue::isEmpty() - { - MutexGuard guard( m_mutex ); - return m_lstJob.empty(); - } - - sal_Bool JobQueue::isCallstackEmpty() - { - MutexGuard guard( m_mutex ); - return m_lstCallstack.empty(); - } - - sal_Bool JobQueue::isBusy() const - { - return m_nToDo > 0; - } - - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/jobqueue.hxx b/cppu/source/threadpool/jobqueue.hxx deleted file mode 100644 index 9d4a35ba6..000000000 --- a/cppu/source/threadpool/jobqueue.hxx +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _CPPU_THREADPOOL_JOBQUEUE_HXX_ -#define _CPPU_THREADPOOL_JOBQUEUE_HXX_ - -#include -#include - -#include -#include - -#include - -namespace cppu_threadpool -{ - extern "C" typedef void (SAL_CALL RequestFun)(void *); - - struct Job - { - void *pThreadSpecificData; - RequestFun * doRequest; - }; - - typedef ::std::list < struct Job > JobList; - - typedef ::std::list < sal_Int64 > CallStackList; - - class DisposedCallerAdmin; - typedef boost::shared_ptr DisposedCallerAdminHolder; - - class JobQueue - { - public: - JobQueue(); - ~JobQueue(); - - void add( void *pThreadSpecificData, RequestFun * doRequest ); - - void *enter( sal_Int64 nDisposeId , sal_Bool bReturnWhenNoJob = sal_False ); - void dispose( sal_Int64 nDisposeId ); - - void suspend(); - void resume(); - - sal_Bool isEmpty(); - sal_Bool isCallstackEmpty(); - sal_Bool isBusy() const; - - private: - ::osl::Mutex m_mutex; - JobList m_lstJob; - CallStackList m_lstCallstack; - sal_Int32 m_nToDo; - sal_Bool m_bSuspended; - oslCondition m_cndWait; - DisposedCallerAdminHolder m_DisposedCallerAdmin; - }; -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/makefile.mk b/cppu/source/threadpool/makefile.mk deleted file mode 100644 index ea5e146b9..000000000 --- a/cppu/source/threadpool/makefile.mk +++ /dev/null @@ -1,49 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=..$/.. - -PRJNAME=cppu -TARGET=cppu_threadpool - -# --- Settings ----------------------------------------------------- - -.INCLUDE : ..$/..$/util$/makefile.pmk -.INCLUDE : settings.mk - -# ------------------------------------------------------------------ - -SLOFILES=\ - $(SLO)$/threadpool.obj\ - $(SLO)$/jobqueue.obj\ - $(SLO)$/thread.obj\ - $(SLO)$/threadident.obj\ - $(SLO)$/current.obj - -# --- Targets ------------------------------------------------------ - -.INCLUDE : ..$/..$/util$/target.pmk -.INCLUDE : target.mk diff --git a/cppu/source/threadpool/thread.cxx b/cppu/source/threadpool/thread.cxx deleted file mode 100644 index 5a849a331..000000000 --- a/cppu/source/threadpool/thread.cxx +++ /dev/null @@ -1,222 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" -#include -#include -#include - -#include - -#include "thread.hxx" -#include "jobqueue.hxx" -#include "threadpool.hxx" - - -using namespace osl; -extern "C" { - -void SAL_CALL cppu_requestThreadWorker( void *pVoid ) -{ - ::cppu_threadpool::ORequestThread *pThread = ( ::cppu_threadpool::ORequestThread * ) pVoid; - - pThread->run(); - pThread->onTerminated(); -} - -} - -namespace cppu_threadpool { - -// ---------------------------------------------------------------------------------- - ThreadAdmin::~ThreadAdmin() - { -#if OSL_DEBUG_LEVEL > 1 - if( m_lst.size() ) - { - fprintf( stderr, "%lu Threads left\n" , static_cast(m_lst.size()) ); - } -#endif - } - - void ThreadAdmin::add( ORequestThread *p ) - { - MutexGuard aGuard( m_mutex ); - m_lst.push_back( p ); - } - - void ThreadAdmin::remove( ORequestThread * p ) - { - MutexGuard aGuard( m_mutex ); - ::std::list< ORequestThread * >::iterator ii = ::std::find( m_lst.begin(), m_lst.end(), p ); - OSL_ASSERT( ii != m_lst.end() ); - m_lst.erase( ii ); - } - - void ThreadAdmin::join() - { - ORequestThread *pCurrent; - do - { - pCurrent = 0; - { - MutexGuard aGuard( m_mutex ); - if( ! m_lst.empty() ) - { - pCurrent = m_lst.front(); - pCurrent->setDeleteSelf( sal_False ); - } - } - if ( pCurrent ) - { - pCurrent->join(); - delete pCurrent; - } - } while( pCurrent ); - } - - struct theThreadAdmin : public rtl::StaticWithInit< ThreadAdminHolder, theThreadAdmin > - { - ThreadAdminHolder operator () () { - ThreadAdminHolder aRet(new ThreadAdmin()); - return aRet; - } - }; - - ThreadAdminHolder& ThreadAdmin::getInstance() - { - return theThreadAdmin::get(); - } - -// ---------------------------------------------------------------------------------- - ORequestThread::ORequestThread( JobQueue *pQueue, - const ByteSequence &aThreadId, - sal_Bool bAsynchron ) - : m_thread( 0 ) - , m_aThreadAdmin( ThreadAdmin::getInstance() ) - , m_pQueue( pQueue ) - , m_aThreadId( aThreadId ) - , m_bAsynchron( bAsynchron ) - , m_bDeleteSelf( sal_True ) - { - m_aThreadAdmin->add( this ); - } - - - ORequestThread::~ORequestThread() - { - if (m_thread != 0) - { - osl_destroyThread(m_thread); - } - } - - - void ORequestThread::setTask( JobQueue *pQueue, - const ByteSequence &aThreadId, - sal_Bool bAsynchron ) - { - m_pQueue = pQueue; - m_aThreadId = aThreadId; - m_bAsynchron = bAsynchron; - } - - sal_Bool ORequestThread::create() - { - OSL_ASSERT(m_thread == 0); // only one running thread per instance - - m_thread = osl_createSuspendedThread( cppu_requestThreadWorker, (void*)this); - if ( m_thread ) - { - osl_resumeThread( m_thread ); - } - - return m_thread != 0; - } - - void ORequestThread::join() - { - osl_joinWithThread( m_thread ); - } - - void ORequestThread::onTerminated() - { - m_aThreadAdmin->remove( this ); - if( m_bDeleteSelf ) - { - delete this; - } - } - - void ORequestThread::run() - { - ThreadPoolHolder theThreadPool = cppu_threadpool::ThreadPool::getInstance(); - - while ( m_pQueue ) - { - if( ! m_bAsynchron ) - { - if ( !uno_bindIdToCurrentThread( m_aThreadId.getHandle() ) ) - { - OSL_ASSERT( false ); - } - } - - while( ! m_pQueue->isEmpty() ) - { - // Note : Oneways should not get a disposable disposeid, - // It does not make sense to dispose a call in this state. - // That's way we put it an disposeid, that can't be used otherwise. - m_pQueue->enter( - sal::static_int_cast< sal_Int64 >( - reinterpret_cast< sal_IntPtr >(this)), - sal_True ); - - if( m_pQueue->isEmpty() ) - { - theThreadPool->revokeQueue( m_aThreadId , m_bAsynchron ); - // Note : revokeQueue might have failed because m_pQueue.isEmpty() - // may be false (race). - } - } - - delete m_pQueue; - m_pQueue = 0; - - if( ! m_bAsynchron ) - { - uno_releaseIdFromCurrentThread(); - } - - theThreadPool->waitInPool( this ); - } - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/thread.hxx b/cppu/source/threadpool/thread.hxx deleted file mode 100644 index 7ece3b5f0..000000000 --- a/cppu/source/threadpool/thread.hxx +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _CPPU_THREADPOOL_THREAD_HXX -#define _CPPU_THREADPOOL_THREAD_HXX - -#include -#include - -#include - -#include "jobqueue.hxx" - -namespace cppu_threadpool { - - class JobQueue; - class ThreadAdmin; - typedef boost::shared_ptr ThreadAdminHolder; - - //----------------------------------------- - // private thread class for the threadpool - // independent from vos - //----------------------------------------- - class ORequestThread - { - public: - ORequestThread( JobQueue * , - const ::rtl::ByteSequence &aThreadId, - sal_Bool bAsynchron ); - ~ORequestThread(); - - void setTask( JobQueue * , const ::rtl::ByteSequence & aThreadId , sal_Bool bAsynchron ); - - sal_Bool create(); - void join(); - void onTerminated(); - void run(); - inline void setDeleteSelf( sal_Bool b ) - { m_bDeleteSelf = b; } - - private: - oslThread m_thread; - ThreadAdminHolder m_aThreadAdmin; - JobQueue *m_pQueue; - ::rtl::ByteSequence m_aThreadId; - sal_Bool m_bAsynchron; - sal_Bool m_bDeleteSelf; - }; - - class ThreadAdmin - { - public: - ~ThreadAdmin (); - static ThreadAdminHolder &getInstance(); - void add( ORequestThread * ); - void remove( ORequestThread * ); - void join(); - - private: - ::osl::Mutex m_mutex; - ::std::list< ORequestThread * > m_lst; - }; - -} // end cppu_threadpool - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/threadident.cxx b/cppu/source/threadpool/threadident.cxx deleted file mode 100644 index d9a933ef0..000000000 --- a/cppu/source/threadpool/threadident.cxx +++ /dev/null @@ -1,138 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" -#include - -#include - -#include -#include -#include - -#include -#include - -#include - -#include "current.hxx" - - -using namespace ::std; -using namespace ::osl; -using namespace ::rtl; -using namespace ::cppu; - - -static inline void createLocalId( sal_Sequence **ppThreadId ) -{ - rtl_byte_sequence_constructNoDefault( ppThreadId , 4 + 16 ); - *((sal_Int32*) ((*ppThreadId)->elements)) = osl_getThreadIdentifier(0); - - rtl_getGlobalProcessId( (sal_uInt8 * ) &( (*ppThreadId)->elements[4]) ); -} - - -extern "C" void SAL_CALL -uno_getIdOfCurrentThread( sal_Sequence **ppThreadId ) - SAL_THROW_EXTERN_C() -{ - IdContainer * p = getIdContainer(); - if( ! p->bInit ) - { - // first time, that the thread enters the bridge - createLocalId( ppThreadId ); - - // TODO - // note : this is a leak ! - p->pLocalThreadId = *ppThreadId; - p->pCurrentId = *ppThreadId; - p->nRefCountOfCurrentId = 1; - rtl_byte_sequence_acquire( p->pLocalThreadId ); - rtl_byte_sequence_acquire( p->pCurrentId ); - p->bInit = sal_True; - } - else - { - p->nRefCountOfCurrentId ++; - if( *ppThreadId ) - { - rtl_byte_sequence_release( *ppThreadId ); - } - *ppThreadId = p->pCurrentId; - rtl_byte_sequence_acquire( *ppThreadId ); - } -} - - -extern "C" void SAL_CALL uno_releaseIdFromCurrentThread() - SAL_THROW_EXTERN_C() -{ - IdContainer *p = getIdContainer(); - OSL_ASSERT( p ); - OSL_ASSERT( p->nRefCountOfCurrentId ); - - p->nRefCountOfCurrentId --; - if( ! p->nRefCountOfCurrentId && (p->pLocalThreadId != p->pCurrentId) ) - { - rtl_byte_sequence_assign( &(p->pCurrentId) , p->pLocalThreadId ); - } -} - -extern "C" sal_Bool SAL_CALL uno_bindIdToCurrentThread( sal_Sequence *pThreadId ) - SAL_THROW_EXTERN_C() -{ - IdContainer *p = getIdContainer(); - if( ! p->bInit ) - { - p->pLocalThreadId = 0; - createLocalId( &(p->pLocalThreadId) ); - p->nRefCountOfCurrentId = 1; - p->pCurrentId = pThreadId; - rtl_byte_sequence_acquire( p->pCurrentId ); - p->bInit = sal_True; - } - else - { - OSL_ASSERT( 0 == p->nRefCountOfCurrentId ); - if( 0 == p->nRefCountOfCurrentId ) - { - rtl_byte_sequence_assign(&( p->pCurrentId ), pThreadId ); - p->nRefCountOfCurrentId ++; - } - else - { - return sal_False; - } - - } - return sal_True; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/threadpool.cxx b/cppu/source/threadpool/threadpool.cxx deleted file mode 100644 index 052be04e6..000000000 --- a/cppu/source/threadpool/threadpool.cxx +++ /dev/null @@ -1,509 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" -#include -#include - -#include -#include -#include -#include - -#include - -#include "threadpool.hxx" -#include "thread.hxx" - -using namespace ::std; -using namespace ::osl; - -namespace cppu_threadpool -{ - struct theDisposedCallerAdmin : - public rtl::StaticWithInit< DisposedCallerAdminHolder, theDisposedCallerAdmin > - { - DisposedCallerAdminHolder operator () () { - return DisposedCallerAdminHolder(new DisposedCallerAdmin()); - } - }; - - DisposedCallerAdminHolder DisposedCallerAdmin::getInstance() - { - return theDisposedCallerAdmin::get(); - } - - DisposedCallerAdmin::~DisposedCallerAdmin() - { -#if OSL_DEBUG_LEVEL > 1 - if( !m_lst.empty() ) - { - printf( "DisposedCallerList : %lu left\n" , static_cast(m_lst.size( ))); - } -#endif - } - - void DisposedCallerAdmin::dispose( sal_Int64 nDisposeId ) - { - MutexGuard guard( m_mutex ); - m_lst.push_back( nDisposeId ); - } - - void DisposedCallerAdmin::stopDisposing( sal_Int64 nDisposeId ) - { - MutexGuard guard( m_mutex ); - for( DisposedCallerList::iterator ii = m_lst.begin() ; - ii != m_lst.end() ; - ++ ii ) - { - if( (*ii) == nDisposeId ) - { - m_lst.erase( ii ); - break; - } - } - } - - sal_Bool DisposedCallerAdmin::isDisposed( sal_Int64 nDisposeId ) - { - MutexGuard guard( m_mutex ); - for( DisposedCallerList::iterator ii = m_lst.begin() ; - ii != m_lst.end() ; - ++ ii ) - { - if( (*ii) == nDisposeId ) - { - return sal_True; - } - } - return sal_False; - } - - - //------------------------------------------------------------------------------- - - struct theThreadPool : - public rtl::StaticWithInit< ThreadPoolHolder, theThreadPool > - { - ThreadPoolHolder operator () () { - ThreadPoolHolder aRet(new ThreadPool()); - return aRet; - } - }; - - ThreadPool::ThreadPool() - { - m_DisposedCallerAdmin = DisposedCallerAdmin::getInstance(); - } - - ThreadPool::~ThreadPool() - { -#if OSL_DEBUG_LEVEL > 1 - if( m_mapQueue.size() ) - { - printf( "ThreadIdHashMap : %lu left\n" , static_cast(m_mapQueue.size()) ); - } -#endif - } - ThreadPoolHolder ThreadPool::getInstance() - { - return theThreadPool::get(); - } - - - void ThreadPool::dispose( sal_Int64 nDisposeId ) - { - if( nDisposeId ) - { - m_DisposedCallerAdmin->dispose( nDisposeId ); - - MutexGuard guard( m_mutex ); - for( ThreadIdHashMap::iterator ii = m_mapQueue.begin() ; - ii != m_mapQueue.end(); - ++ii) - { - if( (*ii).second.first ) - { - (*ii).second.first->dispose( nDisposeId ); - } - if( (*ii).second.second ) - { - (*ii).second.second->dispose( nDisposeId ); - } - } - } - else - { - { - MutexGuard guard( m_mutexWaitingThreadList ); - for( WaitingThreadList::iterator ii = m_lstThreads.begin() ; - ii != m_lstThreads.end() ; - ++ ii ) - { - // wake the threads up - osl_setCondition( (*ii)->condition ); - } - } - ThreadAdmin::getInstance()->join(); - } - } - - void ThreadPool::stopDisposing( sal_Int64 nDisposeId ) - { - m_DisposedCallerAdmin->stopDisposing( nDisposeId ); - } - - /****************** - * This methods lets the thread wait a certain amount of time. If within this timespan - * a new request comes in, this thread is reused. This is done only to improve performance, - * it is not required for threadpool functionality. - ******************/ - void ThreadPool::waitInPool( ORequestThread * pThread ) - { - struct WaitingThread waitingThread; - waitingThread.condition = osl_createCondition(); - waitingThread.thread = pThread; - { - MutexGuard guard( m_mutexWaitingThreadList ); - m_lstThreads.push_front( &waitingThread ); - } - - // let the thread wait 2 seconds - TimeValue time = { 2 , 0 }; - osl_waitCondition( waitingThread.condition , &time ); - - { - MutexGuard guard ( m_mutexWaitingThreadList ); - if( waitingThread.thread ) - { - // thread wasn't reused, remove it from the list - WaitingThreadList::iterator ii = find( - m_lstThreads.begin(), m_lstThreads.end(), &waitingThread ); - OSL_ASSERT( ii != m_lstThreads.end() ); - m_lstThreads.erase( ii ); - } - } - - osl_destroyCondition( waitingThread.condition ); - } - - void ThreadPool::createThread( JobQueue *pQueue , - const ByteSequence &aThreadId, - sal_Bool bAsynchron ) - { - sal_Bool bCreate = sal_True; - { - // Can a thread be reused ? - MutexGuard guard( m_mutexWaitingThreadList ); - if( ! m_lstThreads.empty() ) - { - // inform the thread and let it go - struct WaitingThread *pWaitingThread = m_lstThreads.back(); - pWaitingThread->thread->setTask( pQueue , aThreadId , bAsynchron ); - pWaitingThread->thread = 0; - - // remove from list - m_lstThreads.pop_back(); - - // let the thread go - osl_setCondition( pWaitingThread->condition ); - bCreate = sal_False; - } - } - - if( bCreate ) - { - ORequestThread *pThread = - new ORequestThread( pQueue , aThreadId, bAsynchron); - // deletes itself ! - pThread->create(); - } - } - - sal_Bool ThreadPool::revokeQueue( const ByteSequence &aThreadId, sal_Bool bAsynchron ) - { - MutexGuard guard( m_mutex ); - - ThreadIdHashMap::iterator ii = m_mapQueue.find( aThreadId ); - OSL_ASSERT( ii != m_mapQueue.end() ); - - if( bAsynchron ) - { - if( ! (*ii).second.second->isEmpty() ) - { - // another thread has put something into the queue - return sal_False; - } - - (*ii).second.second = 0; - if( (*ii).second.first ) - { - // all oneway request have been processed, now - // synchronus requests may go on - (*ii).second.first->resume(); - } - } - else - { - if( ! (*ii).second.first->isEmpty() ) - { - // another thread has put something into the queue - return sal_False; - } - (*ii).second.first = 0; - } - - if( 0 == (*ii).second.first && 0 == (*ii).second.second ) - { - m_mapQueue.erase( ii ); - } - - return sal_True; - } - - - void ThreadPool::addJob( - const ByteSequence &aThreadId , - sal_Bool bAsynchron, - void *pThreadSpecificData, - RequestFun * doRequest ) - { - sal_Bool bCreateThread = sal_False; - JobQueue *pQueue = 0; - { - MutexGuard guard( m_mutex ); - - ThreadIdHashMap::iterator ii = m_mapQueue.find( aThreadId ); - - if( ii == m_mapQueue.end() ) - { - m_mapQueue[ aThreadId ] = pair < JobQueue * , JobQueue * > ( (JobQueue *)0 , (JobQueue*)0 ); - ii = m_mapQueue.find( aThreadId ); - OSL_ASSERT( ii != m_mapQueue.end() ); - } - - if( bAsynchron ) - { - if( ! (*ii).second.second ) - { - (*ii).second.second = new JobQueue(); - bCreateThread = sal_True; - } - pQueue = (*ii).second.second; - } - else - { - if( ! (*ii).second.first ) - { - (*ii).second.first = new JobQueue(); - bCreateThread = sal_True; - } - pQueue = (*ii).second.first; - - if( (*ii).second.second && ( (*ii).second.second->isBusy() ) ) - { - pQueue->suspend(); - } - } - pQueue->add( pThreadSpecificData , doRequest ); - } - - if( bCreateThread ) - { - createThread( pQueue , aThreadId , bAsynchron); - } - } - - void ThreadPool::prepare( const ByteSequence &aThreadId ) - { - MutexGuard guard( m_mutex ); - - ThreadIdHashMap::iterator ii = m_mapQueue.find( aThreadId ); - - if( ii == m_mapQueue.end() ) - { - JobQueue *p = new JobQueue(); - m_mapQueue[ aThreadId ] = pair< JobQueue * , JobQueue * > ( p , (JobQueue*)0 ); - } - else if( 0 == (*ii).second.first ) - { - (*ii).second.first = new JobQueue(); - } - } - - void * ThreadPool::enter( const ByteSequence & aThreadId , sal_Int64 nDisposeId ) - { - JobQueue *pQueue = 0; - { - MutexGuard guard( m_mutex ); - - ThreadIdHashMap::iterator ii = m_mapQueue.find( aThreadId ); - - OSL_ASSERT( ii != m_mapQueue.end() ); - pQueue = (*ii).second.first; - } - - OSL_ASSERT( pQueue ); - void *pReturn = pQueue->enter( nDisposeId ); - - if( pQueue->isCallstackEmpty() ) - { - if( revokeQueue( aThreadId , sal_False) ) - { - // remove queue - delete pQueue; - } - } - return pReturn; - } -} - - -using namespace cppu_threadpool; - -struct uno_ThreadPool_Equal -{ - sal_Bool operator () ( const uno_ThreadPool &a , const uno_ThreadPool &b ) const - { - return a == b; - } -}; - -struct uno_ThreadPool_Hash -{ - sal_Size operator () ( const uno_ThreadPool &a ) const - { - return (sal_Size) a; - } -}; - - - -typedef ::boost::unordered_map< uno_ThreadPool, ThreadPoolHolder, uno_ThreadPool_Hash, uno_ThreadPool_Equal > ThreadpoolHashSet; - -static ThreadpoolHashSet *g_pThreadpoolHashSet; - -struct _uno_ThreadPool -{ - sal_Int32 dummy; -}; - -extern "C" uno_ThreadPool SAL_CALL -uno_threadpool_create() SAL_THROW_EXTERN_C() -{ - MutexGuard guard( Mutex::getGlobalMutex() ); - if( ! g_pThreadpoolHashSet ) - { - g_pThreadpoolHashSet = new ThreadpoolHashSet(); - } - - // Just ensure that the handle is unique in the process (via heap) - uno_ThreadPool h = new struct _uno_ThreadPool; - g_pThreadpoolHashSet->insert( ThreadpoolHashSet::value_type(h, ThreadPool::getInstance()) ); - return h; -} - -extern "C" void SAL_CALL -uno_threadpool_attach( uno_ThreadPool ) SAL_THROW_EXTERN_C() -{ - sal_Sequence *pThreadId = 0; - uno_getIdOfCurrentThread( &pThreadId ); - ThreadPool::getInstance()->prepare( pThreadId ); - rtl_byte_sequence_release( pThreadId ); - uno_releaseIdFromCurrentThread(); -} - -extern "C" void SAL_CALL -uno_threadpool_enter( uno_ThreadPool hPool , void **ppJob ) - SAL_THROW_EXTERN_C() -{ - sal_Sequence *pThreadId = 0; - uno_getIdOfCurrentThread( &pThreadId ); - *ppJob = - ThreadPool::getInstance()->enter( - pThreadId, - sal::static_int_cast< sal_Int64 >( - reinterpret_cast< sal_IntPtr >(hPool)) ); - rtl_byte_sequence_release( pThreadId ); - uno_releaseIdFromCurrentThread(); -} - -extern "C" void SAL_CALL -uno_threadpool_detach( uno_ThreadPool ) SAL_THROW_EXTERN_C() -{ - // we might do here some tiding up in case a thread called attach but never detach -} - -extern "C" void SAL_CALL -uno_threadpool_putJob( - uno_ThreadPool, - sal_Sequence *pThreadId, - void *pJob, - void ( SAL_CALL * doRequest ) ( void *pThreadSpecificData ), - sal_Bool bIsOneway ) SAL_THROW_EXTERN_C() -{ - ThreadPool::getInstance()->addJob( pThreadId, bIsOneway, pJob ,doRequest ); -} - -extern "C" void SAL_CALL -uno_threadpool_dispose( uno_ThreadPool hPool ) SAL_THROW_EXTERN_C() -{ - ThreadPool::getInstance()->dispose( - sal::static_int_cast< sal_Int64 >( - reinterpret_cast< sal_IntPtr >(hPool)) ); -} - -extern "C" void SAL_CALL -uno_threadpool_destroy( uno_ThreadPool hPool ) SAL_THROW_EXTERN_C() -{ - ThreadPool::getInstance()->stopDisposing( - sal::static_int_cast< sal_Int64 >( - reinterpret_cast< sal_IntPtr >(hPool)) ); - - if( hPool ) - { - // special treatment for 0 ! - OSL_ASSERT( g_pThreadpoolHashSet ); - - MutexGuard guard( Mutex::getGlobalMutex() ); - - ThreadpoolHashSet::iterator ii = g_pThreadpoolHashSet->find( hPool ); - OSL_ASSERT( ii != g_pThreadpoolHashSet->end() ); - g_pThreadpoolHashSet->erase( ii ); - delete hPool; - - if( g_pThreadpoolHashSet->empty() ) - { - delete g_pThreadpoolHashSet; - g_pThreadpoolHashSet = 0; - } - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/threadpool/threadpool.hxx b/cppu/source/threadpool/threadpool.hxx deleted file mode 100644 index 3de924915..000000000 --- a/cppu/source/threadpool/threadpool.hxx +++ /dev/null @@ -1,143 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#include - -#include - -#include - -#include - -#include "jobqueue.hxx" - - -using namespace ::rtl; -namespace cppu_threadpool { - class ORequestThread; - - struct EqualThreadId - { - sal_Int32 operator () ( const ::rtl::ByteSequence &a , const ::rtl::ByteSequence &b ) const - { - return a == b; - } - }; - - struct HashThreadId - { - sal_Int32 operator () ( const ::rtl::ByteSequence &a ) const - { - if( a.getLength() >= 4 ) - { - return *(sal_Int32 *)a.getConstArray(); - } - return 0; - } - }; - - typedef ::boost::unordered_map - < - ByteSequence, // ThreadID - ::std::pair < JobQueue * , JobQueue * >, - HashThreadId, - EqualThreadId - > ThreadIdHashMap; - - typedef ::std::list < sal_Int64 > DisposedCallerList; - - - struct WaitingThread - { - oslCondition condition; - ORequestThread *thread; - }; - - typedef ::std::list < struct ::cppu_threadpool::WaitingThread * > WaitingThreadList; - - class DisposedCallerAdmin; - typedef boost::shared_ptr DisposedCallerAdminHolder; - - class DisposedCallerAdmin - { - public: - ~DisposedCallerAdmin(); - - static DisposedCallerAdminHolder getInstance(); - - void dispose( sal_Int64 nDisposeId ); - void stopDisposing( sal_Int64 nDisposeId ); - sal_Bool isDisposed( sal_Int64 nDisposeId ); - - private: - ::osl::Mutex m_mutex; - DisposedCallerList m_lst; - }; - - class ThreadPool; - typedef boost::shared_ptr ThreadPoolHolder; - - class ThreadPool - { - public: - ThreadPool(); - ~ThreadPool(); - static ThreadPoolHolder getInstance(); - - void dispose( sal_Int64 nDisposeId ); - void stopDisposing( sal_Int64 nDisposeId ); - - void addJob( const ByteSequence &aThreadId, - sal_Bool bAsynchron, - void *pThreadSpecificData, - RequestFun * doRequest ); - - void prepare( const ByteSequence &aThreadId ); - void * enter( const ByteSequence &aThreadId, sal_Int64 nDisposeId ); - - /******** - * @return true, if queue could be succesfully revoked. - ********/ - sal_Bool revokeQueue( const ByteSequence & aThreadId , sal_Bool bAsynchron ); - - void waitInPool( ORequestThread *pThread ); - private: - void createThread( JobQueue *pQueue, const ByteSequence &aThreadId, sal_Bool bAsynchron); - - - ThreadIdHashMap m_mapQueue; - ::osl::Mutex m_mutex; - - ::osl::Mutex m_mutexWaitingThreadList; - WaitingThreadList m_lstThreads; - - DisposedCallerAdminHolder m_DisposedCallerAdmin; - }; - -} // end namespace cppu_threadpool - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/typelib/makefile.mk b/cppu/source/typelib/makefile.mk deleted file mode 100644 index 5a09459fe..000000000 --- a/cppu/source/typelib/makefile.mk +++ /dev/null @@ -1,45 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=..$/.. - -PRJNAME=cppu -TARGET=cppu_typelib - -# --- Settings ----------------------------------------------------- - -.INCLUDE : ..$/..$/util$/makefile.pmk -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -SLOFILES= \ - $(SLO)$/typelib.obj \ - $(SLO)$/static_types.obj - -.INCLUDE : ..$/..$/util$/target.pmk -.INCLUDE : target.mk - diff --git a/cppu/source/typelib/static_types.cxx b/cppu/source/typelib/static_types.cxx deleted file mode 100644 index 64dcd31f4..000000000 --- a/cppu/source/typelib/static_types.cxx +++ /dev/null @@ -1,657 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - - -using namespace osl; - -using ::rtl::OUString; -using ::rtl::OUStringBuffer; - -extern "C" -{ - -//------------------------------------------------------------------------ -sal_Int32 SAL_CALL typelib_typedescription_getAlignedUnoSize( - const typelib_TypeDescription * pTypeDescription, - sal_Int32 nOffset, - sal_Int32 & rMaxIntegralTypeSize ) - SAL_THROW_EXTERN_C(); -//------------------------------------------------------------------------ -void SAL_CALL typelib_typedescription_newEmpty( - typelib_TypeDescription ** ppRet, - typelib_TypeClass eTypeClass, - rtl_uString * pTypeName ) - SAL_THROW_EXTERN_C(); -//----------------------------------------------------------------------------- -void SAL_CALL typelib_typedescriptionreference_getByName( - typelib_TypeDescriptionReference ** ppRet, - rtl_uString * pName ) - SAL_THROW_EXTERN_C(); - -#ifdef SAL_W32 -#pragma pack(push, 8) -#endif - -/** - * The double member determin the alignment. - * Under Os2 and MS-Windows the Alignment is min( 8, sizeof( type ) ). - * The aligment of a strukture is min( 8, sizeof( max basic type ) ), the greatest basic type - * determine the aligment. - */ -struct AlignSize_Impl -{ - sal_Int16 nInt16; -#ifdef AIX - //double: doubleword aligned if -qalign=natural/-malign=natural - //which isn't the default ABI. Otherwise word aligned, While a long long int - //is always doubleword aligned, so use that instead. - sal_Int64 dDouble; -#else - double dDouble; -#endif -}; - -#ifdef SAL_W32 -#pragma pack(pop) -#endif - -// the value of the maximal alignment -static sal_Int32 nMaxAlignment = (sal_Int32)( (sal_Size)(&((AlignSize_Impl *) 16)->dDouble) - 16); - -static inline sal_Int32 adjustAlignment( sal_Int32 nRequestedAlignment ) - SAL_THROW( () ) -{ - if( nRequestedAlignment > nMaxAlignment ) - nRequestedAlignment = nMaxAlignment; - return nRequestedAlignment; -} - -/** - * Calculate the new size of the struktur. - */ -static inline sal_Int32 newAlignedSize( - sal_Int32 OldSize, sal_Int32 ElementSize, sal_Int32 NeededAlignment ) - SAL_THROW( () ) -{ - NeededAlignment = adjustAlignment( NeededAlignment ); - return (OldSize + NeededAlignment -1) / NeededAlignment * NeededAlignment + ElementSize; -} - -//-------------------------------------------------------------------------------------------------- - -namespace -{ - struct typelib_StaticInitMutex : public rtl::Static< Mutex, typelib_StaticInitMutex > {}; -} - -// !for NOT REALLY WEAK TYPES only! -static inline typelib_TypeDescriptionReference * igetTypeByName( rtl_uString * pTypeName ) - SAL_THROW( () ) -{ - typelib_TypeDescriptionReference * pRef = 0; - ::typelib_typedescriptionreference_getByName( &pRef, pTypeName ); - if (pRef && pRef->pType && pRef->pType->pWeakRef) // found initialized td - { - return pRef; - } - else - { - return 0; - } -} - -extern "C" -{ -//################################################################################################## -typelib_TypeDescriptionReference ** SAL_CALL typelib_static_type_getByTypeClass( - typelib_TypeClass eTypeClass ) - SAL_THROW_EXTERN_C() -{ - static typelib_TypeDescriptionReference * s_aTypes[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 }; - - if (! s_aTypes[eTypeClass]) - { - MutexGuard aGuard( typelib_StaticInitMutex::get() ); - if (! s_aTypes[eTypeClass]) - { - static const char * s_aTypeNames[] = { - "void", "char", "boolean", "byte", - "short", "unsigned short", "long", "unsigned long", - "hyper", "unsigned hyper", "float", "double", - "string", "type", "any" }; - - switch (eTypeClass) - { - case typelib_TypeClass_EXCEPTION: - case typelib_TypeClass_INTERFACE: - { - // type - if (! s_aTypes[typelib_TypeClass_TYPE]) - { - OUString sTypeName( RTL_CONSTASCII_USTRINGPARAM("type") ); - ::typelib_typedescriptionreference_new( - &s_aTypes[typelib_TypeClass_TYPE], typelib_TypeClass_TYPE, sTypeName.pData ); - // another static ref: - ++s_aTypes[typelib_TypeClass_TYPE]->nStaticRefCount; - } - // any - if (! s_aTypes[typelib_TypeClass_ANY]) - { - OUString sTypeName( RTL_CONSTASCII_USTRINGPARAM("any") ); - ::typelib_typedescriptionreference_new( - &s_aTypes[typelib_TypeClass_ANY], typelib_TypeClass_ANY, sTypeName.pData ); - // another static ref: - ++s_aTypes[typelib_TypeClass_ANY]->nStaticRefCount; - } - // string - if (! s_aTypes[typelib_TypeClass_STRING]) - { - OUString sTypeName( RTL_CONSTASCII_USTRINGPARAM("string") ); - ::typelib_typedescriptionreference_new( - &s_aTypes[typelib_TypeClass_STRING], typelib_TypeClass_STRING, sTypeName.pData ); - // another static ref: - ++s_aTypes[typelib_TypeClass_STRING]->nStaticRefCount; - } - // XInterface - if (! s_aTypes[typelib_TypeClass_INTERFACE]) - { - OUString sTypeName( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface") ); - - typelib_InterfaceTypeDescription * pTD = 0; - - typelib_TypeDescriptionReference * pMembers[3] = { 0,0,0 }; - OUString sMethodName0( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface::queryInterface") ); - ::typelib_typedescriptionreference_new( - &pMembers[0], typelib_TypeClass_INTERFACE_METHOD, sMethodName0.pData ); - OUString sMethodName1( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface::acquire") ); - ::typelib_typedescriptionreference_new( - &pMembers[1], typelib_TypeClass_INTERFACE_METHOD, sMethodName1.pData ); - OUString sMethodName2( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface::release") ); - ::typelib_typedescriptionreference_new( - &pMembers[2], typelib_TypeClass_INTERFACE_METHOD, sMethodName2.pData ); - - ::typelib_typedescription_newInterface( - &pTD, sTypeName.pData, 0xe227a391, 0x33d6, 0x11d1, 0xaabe00a0, 0x249d5590, - 0, 3, pMembers ); - - ::typelib_typedescription_register( (typelib_TypeDescription **)&pTD ); - ::typelib_typedescriptionreference_acquire( - s_aTypes[typelib_TypeClass_INTERFACE] = ((typelib_TypeDescription *)pTD)->pWeakRef ); - // another static ref: - ++s_aTypes[typelib_TypeClass_INTERFACE]->nStaticRefCount; - ::typelib_typedescription_release( (typelib_TypeDescription*)pTD ); - - ::typelib_typedescriptionreference_release( pMembers[0] ); - ::typelib_typedescriptionreference_release( pMembers[1] ); - ::typelib_typedescriptionreference_release( pMembers[2] ); - // Exception - OSL_ASSERT( ! s_aTypes[typelib_TypeClass_EXCEPTION] ); - { - typelib_TypeDescription * pTD1 = 0; - OUString sTypeName1( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.Exception") ); - - typelib_CompoundMember_Init aMembers[2]; - OUString sMemberType0( RTL_CONSTASCII_USTRINGPARAM("string") ); - OUString sMemberName0( RTL_CONSTASCII_USTRINGPARAM("Message") ); - aMembers[0].eTypeClass = typelib_TypeClass_STRING; - aMembers[0].pTypeName = sMemberType0.pData; - aMembers[0].pMemberName = sMemberName0.pData; - OUString sMemberType1( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface") ); - OUString sMemberName1( RTL_CONSTASCII_USTRINGPARAM("Context") ); - aMembers[1].eTypeClass = typelib_TypeClass_INTERFACE; - aMembers[1].pTypeName = sMemberType1.pData; - aMembers[1].pMemberName = sMemberName1.pData; - - ::typelib_typedescription_new( - &pTD1, typelib_TypeClass_EXCEPTION, sTypeName1.pData, 0, 2, aMembers ); - typelib_typedescription_register( &pTD1 ); - typelib_typedescriptionreference_acquire( - s_aTypes[typelib_TypeClass_EXCEPTION] = pTD1->pWeakRef ); - // another static ref: - ++s_aTypes[typelib_TypeClass_EXCEPTION]->nStaticRefCount; - // RuntimeException - OUString sTypeName2( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.RuntimeException") ); - ::typelib_typedescription_new( - &pTD1, typelib_TypeClass_EXCEPTION, sTypeName2.pData, s_aTypes[typelib_TypeClass_EXCEPTION], 0, 0 ); - ::typelib_typedescription_register( &pTD1 ); - ::typelib_typedescription_release( pTD1 ); - } - // XInterface members - typelib_InterfaceMethodTypeDescription * pMethod = 0; - typelib_Parameter_Init aParameters[1]; - OUString sParamName0( RTL_CONSTASCII_USTRINGPARAM("aType") ); - OUString sParamType0( RTL_CONSTASCII_USTRINGPARAM("type") ); - aParameters[0].pParamName = sParamName0.pData; - aParameters[0].eTypeClass = typelib_TypeClass_TYPE; - aParameters[0].pTypeName = sParamType0.pData; - aParameters[0].bIn = sal_True; - aParameters[0].bOut = sal_False; - rtl_uString * pExceptions[1]; - OUString sExceptionName0( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.RuntimeException") ); - pExceptions[0] = sExceptionName0.pData; - OUString sReturnType0( RTL_CONSTASCII_USTRINGPARAM("any") ); - typelib_typedescription_newInterfaceMethod( - &pMethod, 0, sal_False, sMethodName0.pData, - typelib_TypeClass_ANY, sReturnType0.pData, - 1, aParameters, 1, pExceptions ); - ::typelib_typedescription_register( (typelib_TypeDescription**)&pMethod ); - - OUString sReturnType1( RTL_CONSTASCII_USTRINGPARAM("void") ); - ::typelib_typedescription_newInterfaceMethod( - &pMethod, 1, sal_True, sMethodName1.pData, - typelib_TypeClass_VOID, sReturnType1.pData, 0, 0, 0, 0 ); - ::typelib_typedescription_register( (typelib_TypeDescription**)&pMethod ); - - ::typelib_typedescription_newInterfaceMethod( - &pMethod, 2, sal_True, sMethodName2.pData, - typelib_TypeClass_VOID, sReturnType1.pData, - 0, 0, 0, 0 ); - ::typelib_typedescription_register( (typelib_TypeDescription**)&pMethod ); - ::typelib_typedescription_release( (typelib_TypeDescription*)pMethod ); - } - break; - } - default: - { - OUString aTypeName( OUString::createFromAscii( s_aTypeNames[eTypeClass] ) ); - ::typelib_typedescriptionreference_new( &s_aTypes[eTypeClass], eTypeClass, aTypeName.pData ); - // another static ref: - ++s_aTypes[eTypeClass]->nStaticRefCount; - } - } - } - } - return &s_aTypes[eTypeClass]; -} - -//################################################################################################## -void SAL_CALL typelib_static_type_init( - typelib_TypeDescriptionReference ** ppRef, - typelib_TypeClass eTypeClass, const sal_Char * pTypeName ) - SAL_THROW_EXTERN_C() -{ - if (! *ppRef) - { - MutexGuard aGuard( typelib_StaticInitMutex::get() ); - if (! *ppRef) - { - OUString aTypeName( OUString::createFromAscii( pTypeName ) ); - ::typelib_typedescriptionreference_new( ppRef, eTypeClass, aTypeName.pData ); - - // another static ref: - ++((*ppRef)->nStaticRefCount); - } - } -} - -//################################################################################################## -void SAL_CALL typelib_static_sequence_type_init( - typelib_TypeDescriptionReference ** ppRef, - typelib_TypeDescriptionReference * pElementType ) - SAL_THROW_EXTERN_C() -{ - if (! *ppRef) - { - MutexGuard aGuard( typelib_StaticInitMutex::get() ); - if (! *ppRef) - { - OUStringBuffer aBuf( 32 ); - aBuf.appendAscii( "[]" ); - aBuf.append( pElementType->pTypeName ); - OUString aTypeName( aBuf.makeStringAndClear() ); - - OSL_ASSERT( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_SEQUENCE) ); - *ppRef = igetTypeByName( aTypeName.pData ); - if (!*ppRef) - { - typelib_TypeDescription * pReg = 0; - ::typelib_typedescription_new( - &pReg, typelib_TypeClass_SEQUENCE, - aTypeName.pData, pElementType, 0, 0 ); - - ::typelib_typedescription_register( &pReg ); - *ppRef = (typelib_TypeDescriptionReference *)pReg; - OSL_ASSERT( *ppRef == pReg->pWeakRef ); - } - // another static ref: - ++((*ppRef)->nStaticRefCount); - } - } -} - -//################################################################################################## -namespace { - -void init( - typelib_TypeDescriptionReference ** ppRef, - typelib_TypeClass eTypeClass, const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType, - sal_Int32 nMembers, typelib_TypeDescriptionReference ** ppMembers, - sal_Bool const * pParameterizedTypes) -{ - OSL_ENSURE( typelib_TypeClass_STRUCT == eTypeClass || - typelib_TypeClass_EXCEPTION == eTypeClass, "### unexpected type class!" ); - - if (! *ppRef) - { - MutexGuard aGuard( typelib_StaticInitMutex::get() ); - if (! *ppRef) - { - OSL_ASSERT( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(eTypeClass) ); - OUString aTypeName( OUString::createFromAscii( pTypeName ) ); - *ppRef = igetTypeByName( aTypeName.pData ); - if (!*ppRef) - { - typelib_CompoundTypeDescription * pComp = 0; - ::typelib_typedescription_newEmpty( - (typelib_TypeDescription **)&pComp, eTypeClass, aTypeName.pData ); - - sal_Int32 nOffset = 0; - if (pBaseType) - { - ::typelib_typedescriptionreference_getDescription( - (typelib_TypeDescription **)&pComp->pBaseTypeDescription, pBaseType ); - OSL_ASSERT( pComp->pBaseTypeDescription ); - nOffset = ((typelib_TypeDescription *)pComp->pBaseTypeDescription)->nSize; - OSL_ENSURE( newAlignedSize( 0, ((typelib_TypeDescription *)pComp->pBaseTypeDescription)->nSize, ((typelib_TypeDescription *)pComp->pBaseTypeDescription)->nAlignment ) == ((typelib_TypeDescription *)pComp->pBaseTypeDescription)->nSize, "### unexpected offset!" ); - } - - if (nMembers) - { - pComp->nMembers = nMembers; - pComp->pMemberOffsets = new sal_Int32[ nMembers ]; - pComp->ppTypeRefs = new typelib_TypeDescriptionReference *[ nMembers ]; - if (pParameterizedTypes != 0) { - reinterpret_cast< typelib_StructTypeDescription * >( - pComp)->pParameterizedTypes - = new sal_Bool[nMembers]; - } - for ( sal_Int32 i = 0 ; i < nMembers; ++i ) - { - ::typelib_typedescriptionreference_acquire( - pComp->ppTypeRefs[i] = ppMembers[i] ); - // write offset - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, pComp->ppTypeRefs[i] ); - OSL_ENSURE( pTD->nSize, "### void member?" ); - nOffset = newAlignedSize( nOffset, pTD->nSize, pTD->nAlignment ); - pComp->pMemberOffsets[i] = nOffset - pTD->nSize; - TYPELIB_DANGER_RELEASE( pTD ); - - if (pParameterizedTypes != 0) { - reinterpret_cast< typelib_StructTypeDescription * >( - pComp)->pParameterizedTypes[i] - = pParameterizedTypes[i]; - } - } - } - - typelib_TypeDescription * pReg = (typelib_TypeDescription *)pComp; - 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_False; - - ::typelib_typedescription_register( &pReg ); - *ppRef = (typelib_TypeDescriptionReference *)pReg; - OSL_ASSERT( *ppRef == pReg->pWeakRef ); - } - // another static ref: - ++((*ppRef)->nStaticRefCount); - } - } -} - -} - -void SAL_CALL typelib_static_compound_type_init( - typelib_TypeDescriptionReference ** ppRef, - typelib_TypeClass eTypeClass, const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType, - sal_Int32 nMembers, typelib_TypeDescriptionReference ** ppMembers ) - SAL_THROW_EXTERN_C() -{ - init(ppRef, eTypeClass, pTypeName, pBaseType, nMembers, ppMembers, 0); -} - -void SAL_CALL typelib_static_struct_type_init( - typelib_TypeDescriptionReference ** ppRef, const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType, - sal_Int32 nMembers, typelib_TypeDescriptionReference ** ppMembers, - sal_Bool const * pParameterizedTypes ) - SAL_THROW_EXTERN_C() -{ - init( - ppRef, typelib_TypeClass_STRUCT, pTypeName, pBaseType, nMembers, - ppMembers, pParameterizedTypes); -} - -//################################################################################################## -void SAL_CALL typelib_static_interface_type_init( - typelib_TypeDescriptionReference ** ppRef, - const sal_Char * pTypeName, - typelib_TypeDescriptionReference * pBaseType ) - SAL_THROW_EXTERN_C() -{ - typelib_static_mi_interface_type_init( - ppRef, pTypeName, pBaseType == 0 ? 0 : 1, &pBaseType); -} - -//################################################################################################## -void SAL_CALL typelib_static_mi_interface_type_init( - typelib_TypeDescriptionReference ** ppRef, - const sal_Char * pTypeName, - sal_Int32 nBaseTypes, - typelib_TypeDescriptionReference ** ppBaseTypes ) - SAL_THROW_EXTERN_C() -{ - if (! *ppRef) - { - MutexGuard aGuard( typelib_StaticInitMutex::get() ); - if (! *ppRef) - { - OSL_ASSERT( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_INTERFACE) ); - OUString aTypeName( OUString::createFromAscii( pTypeName ) ); - *ppRef = igetTypeByName( aTypeName.pData ); - if (!*ppRef) - { - typelib_InterfaceTypeDescription * pIface = 0; - ::typelib_typedescription_newEmpty( - (typelib_TypeDescription **)&pIface, typelib_TypeClass_INTERFACE, aTypeName.pData ); - - pIface->nBaseTypes = std::max< sal_Int32 >(nBaseTypes, 1); - pIface->ppBaseTypes = new typelib_InterfaceTypeDescription *[ - pIface->nBaseTypes]; - if (nBaseTypes > 0) - { - for (sal_Int32 i = 0; i < nBaseTypes; ++i) { - pIface->ppBaseTypes[i] = 0; - ::typelib_typedescriptionreference_getDescription( - (typelib_TypeDescription **)&pIface->ppBaseTypes[i], ppBaseTypes[i] ); - OSL_ASSERT( pIface->ppBaseTypes[i] ); - } - } - else - { - pIface->ppBaseTypes[0] = 0; - ::typelib_typedescriptionreference_getDescription( - (typelib_TypeDescription **)&pIface->ppBaseTypes[0], - * ::typelib_static_type_getByTypeClass( typelib_TypeClass_INTERFACE ) ); - OSL_ASSERT( pIface->ppBaseTypes[0] ); - } - pIface->pBaseTypeDescription = pIface->ppBaseTypes[0]; - typelib_typedescription_acquire( - &pIface->pBaseTypeDescription->aBase); - - typelib_TypeDescription * pReg = (typelib_TypeDescription *)pIface; - 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_False; - - ::typelib_typedescription_register( &pReg ); - *ppRef = (typelib_TypeDescriptionReference *)pReg; - OSL_ASSERT( *ppRef == pReg->pWeakRef ); - } - // another static ref: - ++((*ppRef)->nStaticRefCount); - } - } -} - -//################################################################################################## -void SAL_CALL typelib_static_enum_type_init( - typelib_TypeDescriptionReference ** ppRef, - const sal_Char * pTypeName, - sal_Int32 nDefaultValue ) - SAL_THROW_EXTERN_C() -{ - if (! *ppRef) - { - MutexGuard aGuard( typelib_StaticInitMutex::get() ); - if (! *ppRef) - { - OSL_ASSERT( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_ENUM) ); - OUString aTypeName( OUString::createFromAscii( pTypeName ) ); - *ppRef = igetTypeByName( aTypeName.pData ); - if (!*ppRef) - { - typelib_TypeDescription * pReg = 0; - ::typelib_typedescription_newEmpty( - &pReg, typelib_TypeClass_ENUM, aTypeName.pData ); - typelib_EnumTypeDescription * pEnum = (typelib_EnumTypeDescription *)pReg; - - pEnum->nDefaultEnumValue = nDefaultValue; - - 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_False; - - ::typelib_typedescription_register( &pReg ); - *ppRef = (typelib_TypeDescriptionReference *)pReg; - OSL_ASSERT( *ppRef == pReg->pWeakRef ); - } - // another static ref: - ++(*(sal_Int32 *)&(*ppRef)->pReserved); - } - } -} - -//################################################################################################## -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() ); - - OSL_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; - OSL_ASSERT( *ppRef == pReg->pWeakRef ); - } else - delete [] pDimensions; - // another static ref: - ++((*ppRef)->nStaticRefCount); - } - } -} - -} // extern "C" - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx deleted file mode 100644 index f87d8a68b..000000000 --- a/cppu/source/typelib/typelib.cxx +++ /dev/null @@ -1,2665 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#if OSL_DEBUG_LEVEL > 1 -#include -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace osl; - -using ::rtl::OUString; -using ::rtl::OUStringBuffer; -using ::rtl::OString; - -#ifdef SAL_W32 -#pragma pack(push, 8) -#endif - -/** - * The double member determin the alignment. - * Under Os2 and MS-Windows the Alignment is min( 8, sizeof( type ) ). - * The aligment of a strukture is min( 8, sizeof( max basic type ) ), the greatest basic type - * determine the aligment. - */ -struct AlignSize_Impl -{ - sal_Int16 nInt16; -#ifdef AIX - //double: doubleword aligned if -qalign=natural/-malign=natural - //which isn't the default ABI. Otherwise word aligned, While a long long int - //is always doubleword aligned, so use that instead. - sal_Int64 dDouble; -#else - double dDouble; -#endif -}; - -#ifdef SAL_W32 -#pragma pack(pop) -#endif - -// the value of the maximal alignment -static sal_Int32 nMaxAlignment = (sal_Int32)( (sal_Size)(&((AlignSize_Impl *) 16)->dDouble) - 16); - -static inline sal_Int32 adjustAlignment( sal_Int32 nRequestedAlignment ) - SAL_THROW( () ) -{ - if( nRequestedAlignment > nMaxAlignment ) - nRequestedAlignment = nMaxAlignment; - return nRequestedAlignment; -} - -/** - * Calculate the new size of the struktur. - */ -static inline sal_Int32 newAlignedSize( - sal_Int32 OldSize, sal_Int32 ElementSize, sal_Int32 NeededAlignment ) - SAL_THROW( () ) -{ - NeededAlignment = adjustAlignment( NeededAlignment ); - return (OldSize + NeededAlignment -1) / NeededAlignment * NeededAlignment + ElementSize; -} - -static inline sal_Bool reallyWeak( typelib_TypeClass eTypeClass ) - SAL_THROW( () ) -{ - return TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( eTypeClass ); -} - -static inline sal_Int32 getDescriptionSize( typelib_TypeClass eTypeClass ) - SAL_THROW( () ) -{ - OSL_ASSERT( typelib_TypeClass_TYPEDEF != eTypeClass ); - - sal_Int32 nSize; - // The reference is the description - // if the description is empty, than it must be filled with - // 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; - - case typelib_TypeClass_EXCEPTION: - nSize = (sal_Int32)sizeof( typelib_CompoundTypeDescription ); - break; - - case typelib_TypeClass_ENUM: - nSize = (sal_Int32)sizeof( typelib_EnumTypeDescription ); - break; - - case typelib_TypeClass_INTERFACE: - nSize = (sal_Int32)sizeof( typelib_InterfaceTypeDescription ); - break; - - case typelib_TypeClass_INTERFACE_METHOD: - nSize = (sal_Int32)sizeof( typelib_InterfaceMethodTypeDescription ); - break; - - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - nSize = (sal_Int32)sizeof( typelib_InterfaceAttributeTypeDescription ); - break; - - default: - nSize = (sal_Int32)sizeof( typelib_TypeDescription ); - } - return nSize; -} - - -//----------------------------------------------------------------------------- -extern "C" void SAL_CALL typelib_typedescriptionreference_getByName( - typelib_TypeDescriptionReference ** ppRet, rtl_uString * pName ) - SAL_THROW_EXTERN_C(); - -//----------------------------------------------------------------------------- -struct equalStr_Impl -{ - sal_Bool operator()(const sal_Unicode * const & s1, const sal_Unicode * const & s2) const SAL_THROW( () ) - { return 0 == rtl_ustr_compare( s1, s2 ); } -}; - -//----------------------------------------------------------------------------- -struct hashStr_Impl -{ - size_t operator()(const sal_Unicode * const & s) const SAL_THROW( () ) - { return rtl_ustr_hashCode( s ); } -}; - - -//----------------------------------------------------------------------------- -// Heavy hack, the const sal_Unicode * is hold by the typedescription reference -typedef boost::unordered_map< const sal_Unicode *, typelib_TypeDescriptionReference *, - hashStr_Impl, equalStr_Impl > WeakMap_Impl; - -typedef pair< void *, typelib_typedescription_Callback > CallbackEntry; -typedef list< CallbackEntry > CallbackSet_Impl; -typedef list< typelib_TypeDescription * > TypeDescriptionList_Impl; - -// # of cached elements -static sal_Int32 nCacheSize = 256; - -//----------------------------------------------------------------------------- -/** - * All members must set initial to 0 and no constructor is needed. So it - * doesn't care, when this class is static initialized.
- */ -struct TypeDescriptor_Init_Impl -{ - //sal_Bool bDesctructorCalled; - // all type description references - WeakMap_Impl * pWeakMap; - // all type description callbacks - CallbackSet_Impl * pCallbacks; - // A cache to hold descriptions - TypeDescriptionList_Impl * pCache; - // The mutex to guard all type library accesses - Mutex * pMutex; - - inline Mutex & getMutex() SAL_THROW( () ); - - inline void callChain( typelib_TypeDescription ** ppRet, rtl_uString * pName ) SAL_THROW( () ); - -#if OSL_DEBUG_LEVEL > 1 - // 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; - sal_Int32 nInterfaceTypeDescriptionCount; - sal_Int32 nTypeDescriptionReferenceCount; -#endif - ~TypeDescriptor_Init_Impl() SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -inline Mutex & TypeDescriptor_Init_Impl::getMutex() SAL_THROW( () ) -{ - if( !pMutex ) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( !pMutex ) - pMutex = new Mutex(); - } - return * pMutex; -} -//__________________________________________________________________________________________________ -inline void TypeDescriptor_Init_Impl::callChain( - typelib_TypeDescription ** ppRet, rtl_uString * pName ) - SAL_THROW( () ) -{ - if (pCallbacks) - { - CallbackSet_Impl::const_iterator aIt = pCallbacks->begin(); - while( aIt != pCallbacks->end() ) - { - const CallbackEntry & rEntry = *aIt; - (*rEntry.second)( rEntry.first, ppRet, pName ); - if( *ppRet ) - return; - ++aIt; - } - } - if (*ppRet) - { - typelib_typedescription_release( *ppRet ); - *ppRet = 0; - } -} - -//__________________________________________________________________________________________________ -TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () ) -{ - if( pCache ) - { - TypeDescriptionList_Impl::const_iterator aIt = pCache->begin(); - while( aIt != pCache->end() ) - { - typelib_typedescription_release( (*aIt) ); - ++aIt; - } - delete pCache; - pCache = 0; - } - - if( pWeakMap ) - { - sal_Int32 nSize = pWeakMap->size(); - typelib_TypeDescriptionReference ** ppTDR = new typelib_TypeDescriptionReference *[ nSize ]; - // save al weak references - WeakMap_Impl::const_iterator aIt = pWeakMap->begin(); - sal_Int32 i = 0; - while( aIt != pWeakMap->end() ) - { - typelib_typedescriptionreference_acquire( ppTDR[i++] = (*aIt).second ); - ++aIt; - } - - for( i = 0; i < nSize; i++ ) - { - typelib_TypeDescriptionReference * pTDR = ppTDR[i]; - OSL_ASSERT( pTDR->nRefCount > pTDR->nStaticRefCount ); - pTDR->nRefCount -= pTDR->nStaticRefCount; - - if( pTDR->pType && !pTDR->pType->bOnDemand ) - { - pTDR->pType->bOnDemand = sal_True; - typelib_typedescription_release( pTDR->pType ); - } - typelib_typedescriptionreference_release( pTDR ); - } - - delete [] ppTDR; - -#if OSL_DEBUG_LEVEL > 1 - aIt = pWeakMap->begin(); - while( aIt != pWeakMap->end() ) - { - typelib_TypeDescriptionReference * pTDR = (*aIt).second; - if (pTDR) - { - OString aTypeName( OUStringToOString( pTDR->pTypeName, RTL_TEXTENCODING_ASCII_US ) ); - OSL_TRACE( - "### remaining type: %s; ref count = %d", aTypeName.getStr(), pTDR->nRefCount ); - } - else - { - OSL_TRACE( "### remaining null type entry!?" ); - } - ++aIt; - } -#endif - - delete pWeakMap; - pWeakMap = 0; - } -#if OSL_DEBUG_LEVEL > 1 - OSL_ENSURE( !nTypeDescriptionCount ); - OSL_ENSURE( !nCompoundTypeDescriptionCount ); - OSL_ENSURE( !nUnionTypeDescriptionCount ); - OSL_ENSURE( !nIndirectTypeDescriptionCount ); - OSL_ENSURE( !nArrayTypeDescriptionCount ); - OSL_ENSURE( !nEnumTypeDescriptionCount ); - OSL_ENSURE( !nInterfaceMethodTypeDescriptionCount ); - OSL_ENSURE( !nInterfaceAttributeTypeDescriptionCount ); - OSL_ENSURE( !nInterfaceTypeDescriptionCount ); - OSL_ENSURE( !nTypeDescriptionReferenceCount ); - - OSL_ENSURE( !pCallbacks || pCallbacks->empty() ); -#endif - - delete pCallbacks; - pCallbacks = 0; - - if( pMutex ) - { - delete pMutex; - pMutex = 0; - } -}; - -namespace { struct Init : public rtl::Static< TypeDescriptor_Init_Impl, Init > {}; } - -extern "C" void SAL_CALL typelib_typedescription_registerCallback( - void * pContext, typelib_typedescription_Callback pCallback ) - SAL_THROW_EXTERN_C() -{ - // todo mt safe: guard is no solution, can not acquire while calling callback! - TypeDescriptor_Init_Impl &rInit = Init::get(); -// OslGuard aGuard( rInit.getMutex() ); - if( !rInit.pCallbacks ) - rInit.pCallbacks = new CallbackSet_Impl; - rInit.pCallbacks->push_back( CallbackEntry( pContext, pCallback ) ); -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_revokeCallback( - void * pContext, typelib_typedescription_Callback pCallback ) - SAL_THROW_EXTERN_C() -{ - TypeDescriptor_Init_Impl &rInit = Init::get(); - if( rInit.pCallbacks ) - { - // todo mt safe: guard is no solution, can not acquire while calling callback! -// OslGuard aGuard( rInit.getMutex() ); - CallbackEntry aEntry( pContext, pCallback ); - CallbackSet_Impl::iterator iPos( rInit.pCallbacks->begin() ); - while (!(iPos == rInit.pCallbacks->end())) - { - if (*iPos == aEntry) - { - rInit.pCallbacks->erase( iPos ); - iPos = rInit.pCallbacks->begin(); - } - else - { - ++iPos; - } - } - } -} - -extern "C" sal_Int32 SAL_CALL typelib_typedescription_getAlignedUnoSize( - const typelib_TypeDescription * pTypeDescription, - sal_Int32 nOffset, sal_Int32 & rMaxIntegralTypeSize ) - SAL_THROW_EXTERN_C(); - -//------------------------------------------------------------------------ -static inline void typelib_typedescription_initTables( - typelib_TypeDescription * pTD ) - SAL_THROW( () ) -{ - typelib_InterfaceTypeDescription * pITD = (typelib_InterfaceTypeDescription *)pTD; - - sal_Bool * pReadWriteAttributes = (sal_Bool *)alloca( pITD->nAllMembers ); - for ( sal_Int32 i = pITD->nAllMembers; i--; ) - { - pReadWriteAttributes[i] = sal_False; - if( typelib_TypeClass_INTERFACE_ATTRIBUTE == pITD->ppAllMembers[i]->eTypeClass ) - { - typelib_TypeDescription * pM = 0; - TYPELIB_DANGER_GET( &pM, pITD->ppAllMembers[i] ); - OSL_ASSERT( pM ); - if (pM) - { - pReadWriteAttributes[i] = !((typelib_InterfaceAttributeTypeDescription *)pM)->bReadOnly; - TYPELIB_DANGER_RELEASE( pM ); - } -#if OSL_DEBUG_LEVEL > 1 - else - { - OString aStr( OUStringToOString( pITD->ppAllMembers[i]->pTypeName, RTL_TEXTENCODING_ASCII_US ) ); - OSL_TRACE( "\n### cannot get attribute type description: %s", aStr.getStr() ); - } -#endif - } - } - - MutexGuard aGuard( Init::get().getMutex() ); - if( !pTD->bComplete ) - { - // create the index table from member to function table - pITD->pMapMemberIndexToFunctionIndex = new sal_Int32[ pITD->nAllMembers ]; - sal_Int32 nAdditionalOffset = 0; // +1 for read/write attributes - sal_Int32 i; - for( i = 0; i < pITD->nAllMembers; i++ ) - { - // index to the get method of the attribute - pITD->pMapMemberIndexToFunctionIndex[i] = i + nAdditionalOffset; - // extra offset if it is a read/write attribute? - if( pReadWriteAttributes[i] ) - { - // a read/write attribute - nAdditionalOffset++; - } - } - - // create the index table from function to member table - pITD->pMapFunctionIndexToMemberIndex = new sal_Int32[ pITD->nAllMembers + nAdditionalOffset ]; - nAdditionalOffset = 0; // +1 for read/write attributes - for( i = 0; i < pITD->nAllMembers; i++ ) - { - // index to the get method of the attribute - pITD->pMapFunctionIndexToMemberIndex[i + nAdditionalOffset] = i; - // extra offset if it is a read/write attribute? - if( pReadWriteAttributes[i] ) - { - // a read/write attribute - pITD->pMapFunctionIndexToMemberIndex[i + ++nAdditionalOffset] = i; - } - } - // must be the last action after all initialization is done - pITD->nMapFunctionIndexToMemberIndex = pITD->nAllMembers + nAdditionalOffset; - pTD->bComplete = sal_True; - } -} - -namespace { - -// In some situations (notably typelib_typedescription_newInterfaceMethod and -// typelib_typedescription_newInterfaceAttribute), only the members nMembers, -// ppMembers, nAllMembers, and ppAllMembers of an incomplete interface type -// description are necessary, but not the additional -// pMapMemberIndexToFunctionIndex, nMapFunctionIndexToMemberIndex, and -// pMapFunctionIndexToMemberIndex (which are computed by -// typelib_typedescription_initTables). Furthermore, in those situations, it -// might be illegal to compute those tables, as the creation of the interface -// member type descriptions would recursively require a complete interface type -// description. The parameter initTables controls whether or not to call -// typelib_typedescription_initTables in those situations. -bool complete(typelib_TypeDescription ** ppTypeDescr, bool initTables) { - if (! (*ppTypeDescr)->bComplete) - { - 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 ) ); - - if (typelib_TypeClass_INTERFACE == (*ppTypeDescr)->eTypeClass && - ((typelib_InterfaceTypeDescription *)*ppTypeDescr)->ppAllMembers) - { - if (initTables) { - typelib_typedescription_initTables( *ppTypeDescr ); - } - return true; - } - - typelib_TypeDescription * pTD = 0; - // on demand access of complete td - TypeDescriptor_Init_Impl &rInit = Init::get(); - rInit.callChain( &pTD, (*ppTypeDescr)->pTypeName ); - if (pTD) - { - if (typelib_TypeClass_TYPEDEF == pTD->eTypeClass) - { - typelib_typedescriptionreference_getDescription( - &pTD, ((typelib_IndirectTypeDescription *)pTD)->pType ); - OSL_ASSERT( pTD ); - if (! pTD) - return false; - } - - OSL_ASSERT( typelib_TypeClass_TYPEDEF != pTD->eTypeClass ); - // typedescription found - // set to on demand - pTD->bOnDemand = sal_True; - - if (pTD->eTypeClass == typelib_TypeClass_INTERFACE - && !pTD->bComplete && initTables) - { - // mandatory info from callback chain - OSL_ASSERT( ((typelib_InterfaceTypeDescription *)pTD)->ppAllMembers ); - // complete except of tables init - typelib_typedescription_initTables( pTD ); - pTD->bComplete = sal_True; - } - - // The type description is hold by the reference until - // on demand is activated. - ::typelib_typedescription_register( &pTD ); // replaces incomplete one - OSL_ASSERT( pTD == *ppTypeDescr ); // has to merge into existing one - - // insert into the chache - MutexGuard aGuard( rInit.getMutex() ); - if( !rInit.pCache ) - rInit.pCache = new TypeDescriptionList_Impl; - if( (sal_Int32)rInit.pCache->size() >= nCacheSize ) - { - typelib_typedescription_release( rInit.pCache->front() ); - rInit.pCache->pop_front(); - } - // descriptions in the cache must be acquired! - typelib_typedescription_acquire( pTD ); - rInit.pCache->push_back( pTD ); - - OSL_ASSERT( - pTD->bComplete - || (pTD->eTypeClass == typelib_TypeClass_INTERFACE - && !initTables)); - - ::typelib_typedescription_release( *ppTypeDescr ); - *ppTypeDescr = pTD; - } - else - { -#if OSL_DEBUG_LEVEL > 1 - OString aStr( - OUStringToOString( (*ppTypeDescr)->pTypeName, RTL_TEXTENCODING_ASCII_US ) ); - OSL_TRACE( "\n### type cannot be completed: %s", aStr.getStr() ); -#endif - return false; - } - } - return true; -} - -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_newEmpty( - typelib_TypeDescription ** ppRet, - typelib_TypeClass eTypeClass, rtl_uString * pTypeName ) - SAL_THROW_EXTERN_C() -{ - if( *ppRet ) - { - typelib_typedescription_release( *ppRet ); - *ppRet = 0; - } - - OSL_ASSERT( typelib_TypeClass_TYPEDEF != eTypeClass ); - - 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_incrementInterlockedCount( - &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(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nIndirectTypeDescriptionCount ); -#endif - pTmp->pType = 0; - } - break; - - case typelib_TypeClass_UNION: - { - typelib_UnionTypeDescription * pTmp; - pTmp = new typelib_UnionTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &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 - typelib_StructTypeDescription * pTmp; - pTmp = new typelib_StructTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nCompoundTypeDescriptionCount ); -#endif - pTmp->aBase.pBaseTypeDescription = 0; - pTmp->aBase.nMembers = 0; - pTmp->aBase.pMemberOffsets = 0; - pTmp->aBase.ppTypeRefs = 0; - pTmp->aBase.ppMemberNames = 0; - pTmp->pParameterizedTypes = 0; - } - break; - - case typelib_TypeClass_EXCEPTION: - { - // FEATURE_EMPTYCLASS - typelib_CompoundTypeDescription * pTmp; - pTmp = new typelib_CompoundTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nCompoundTypeDescriptionCount ); -#endif - pTmp->pBaseTypeDescription = 0; - pTmp->nMembers = 0; - pTmp->pMemberOffsets = 0; - pTmp->ppTypeRefs = 0; - pTmp->ppMemberNames = 0; - } - break; - - case typelib_TypeClass_ENUM: - { - typelib_EnumTypeDescription * pTmp = new typelib_EnumTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nEnumTypeDescriptionCount ); -#endif - pTmp->nDefaultEnumValue = 0; - pTmp->nEnumValues = 0; - pTmp->ppEnumNames = 0; - pTmp->pEnumValues = 0; - } - break; - - case typelib_TypeClass_INTERFACE: - { - typelib_InterfaceTypeDescription * pTmp = new typelib_InterfaceTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nInterfaceTypeDescriptionCount ); -#endif - pTmp->pBaseTypeDescription = 0; - pTmp->nMembers = 0; - pTmp->ppMembers = 0; - pTmp->nAllMembers = 0; - pTmp->ppAllMembers = 0; - pTmp->nMapFunctionIndexToMemberIndex = 0; - pTmp->pMapFunctionIndexToMemberIndex = 0; - pTmp->pMapMemberIndexToFunctionIndex= 0; - pTmp->nBaseTypes = 0; - pTmp->ppBaseTypes = 0; - } - break; - - case typelib_TypeClass_INTERFACE_METHOD: - { - typelib_InterfaceMethodTypeDescription * pTmp = new typelib_InterfaceMethodTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nInterfaceMethodTypeDescriptionCount ); -#endif - pTmp->aBase.pMemberName = 0; - pTmp->pReturnTypeRef = 0; - pTmp->nParams = 0; - pTmp->pParams = 0; - pTmp->nExceptions = 0; - pTmp->ppExceptions = 0; - pTmp->pInterface = 0; - pTmp->pBaseRef = 0; - pTmp->nIndex = 0; - } - break; - - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - typelib_InterfaceAttributeTypeDescription * pTmp = new typelib_InterfaceAttributeTypeDescription(); - pRet = (typelib_TypeDescription *)pTmp; -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( - &Init::get().nInterfaceAttributeTypeDescriptionCount ); -#endif - pTmp->aBase.pMemberName = 0; - pTmp->pAttributeTypeRef = 0; - pTmp->pInterface = 0; - pTmp->pBaseRef = 0; - pTmp->nIndex = 0; - pTmp->nGetExceptions = 0; - pTmp->ppGetExceptions = 0; - pTmp->nSetExceptions = 0; - pTmp->ppSetExceptions = 0; - } - break; - - default: - { - pRet = new typelib_TypeDescription(); -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( &Init::get().nTypeDescriptionCount ); -#endif - } - } - - pRet->nRefCount = 1; // reference count is initially 1 - pRet->nStaticRefCount = 0; - pRet->eTypeClass = eTypeClass; - pRet->pTypeName = 0; - pRet->pUniqueIdentifier = 0; - pRet->pReserved = 0; - rtl_uString_acquire( pRet->pTypeName = pTypeName ); - pRet->pSelf = pRet; - pRet->bComplete = sal_True; - pRet->nSize = 0; - pRet->nAlignment = 0; - pRet->pWeakRef = 0; - pRet->bOnDemand = sal_False; - *ppRet = pRet; -} - -//------------------------------------------------------------------------ -namespace { - -void newTypeDescription( - typelib_TypeDescription ** ppRet, typelib_TypeClass eTypeClass, - rtl_uString * pTypeName, typelib_TypeDescriptionReference * pType, - sal_Int32 nMembers, typelib_CompoundMember_Init * pCompoundMembers, - typelib_StructMember_Init * pStructMembers) -{ - OSL_ASSERT( - (pCompoundMembers == 0 || pStructMembers == 0) - && (pStructMembers == 0 || eTypeClass == typelib_TypeClass_STRUCT)); - if (typelib_TypeClass_TYPEDEF == eTypeClass) - { - OSL_TRACE( "### unexpected typedef!" ); - typelib_typedescriptionreference_getDescription( ppRet, pType ); - return; - } - - typelib_typedescription_newEmpty( ppRet, eTypeClass, pTypeName ); - - switch( eTypeClass ) - { - case typelib_TypeClass_SEQUENCE: - { - OSL_ASSERT( nMembers == 0 ); - typelib_typedescriptionreference_acquire( pType ); - ((typelib_IndirectTypeDescription *)*ppRet)->pType = pType; - } - break; - - case typelib_TypeClass_EXCEPTION: - case typelib_TypeClass_STRUCT: - { - // FEATURE_EMPTYCLASS - typelib_CompoundTypeDescription * pTmp = (typelib_CompoundTypeDescription*)*ppRet; - - sal_Int32 nOffset = 0; - if( pType ) - { - typelib_typedescriptionreference_getDescription( - (typelib_TypeDescription **)&pTmp->pBaseTypeDescription, pType ); - nOffset = ((typelib_TypeDescription *)pTmp->pBaseTypeDescription)->nSize; - OSL_ENSURE( newAlignedSize( 0, ((typelib_TypeDescription *)pTmp->pBaseTypeDescription)->nSize, ((typelib_TypeDescription *)pTmp->pBaseTypeDescription)->nAlignment ) == ((typelib_TypeDescription *)pTmp->pBaseTypeDescription)->nSize, "### unexpected offset!" ); - } - if( nMembers ) - { - pTmp->nMembers = nMembers; - pTmp->pMemberOffsets = new sal_Int32[ nMembers ]; - pTmp->ppTypeRefs = new typelib_TypeDescriptionReference *[ nMembers ]; - pTmp->ppMemberNames = new rtl_uString *[ nMembers ]; - bool polymorphic = eTypeClass == typelib_TypeClass_STRUCT - && rtl::OUString::unacquired(&pTypeName).indexOf('<') >= 0; - OSL_ASSERT(!polymorphic || pStructMembers != 0); - if (polymorphic) { - reinterpret_cast< typelib_StructTypeDescription * >(pTmp)-> - pParameterizedTypes = new sal_Bool[nMembers]; - } - for( sal_Int32 i = 0 ; i < nMembers; i++ ) - { - // read the type and member names - pTmp->ppTypeRefs[i] = 0; - if (pCompoundMembers != 0) { - typelib_typedescriptionreference_new( - pTmp->ppTypeRefs +i, pCompoundMembers[i].eTypeClass, - pCompoundMembers[i].pTypeName ); - rtl_uString_acquire( - pTmp->ppMemberNames[i] - = pCompoundMembers[i].pMemberName ); - } else { - typelib_typedescriptionreference_new( - pTmp->ppTypeRefs +i, - pStructMembers[i].aBase.eTypeClass, - pStructMembers[i].aBase.pTypeName ); - rtl_uString_acquire( - pTmp->ppMemberNames[i] - = pStructMembers[i].aBase.pMemberName ); - } - // write offset - sal_Int32 size; - sal_Int32 alignment; - if (pTmp->ppTypeRefs[i]->eTypeClass == - typelib_TypeClass_SEQUENCE) - { - // Take care of recursion like - // struct S { sequence x; }; - size = sizeof(void *); - alignment = adjustAlignment(size); - } else { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, pTmp->ppTypeRefs[i] ); - OSL_ENSURE( pTD->nSize, "### void member?" ); - size = pTD->nSize; - alignment = pTD->nAlignment; - TYPELIB_DANGER_RELEASE( pTD ); - } - nOffset = newAlignedSize( nOffset, size, alignment ); - pTmp->pMemberOffsets[i] = nOffset - size; - - if (polymorphic) { - reinterpret_cast< typelib_StructTypeDescription * >( - pTmp)->pParameterizedTypes[i] - = pStructMembers[i].bParameterizedType; - } - } - } - } - break; - - default: - break; - } - - if( !reallyWeak( eTypeClass ) ) - (*ppRet)->pWeakRef = (typelib_TypeDescriptionReference *)*ppRet; - if( eTypeClass != typelib_TypeClass_VOID ) - { - // sizeof( void ) not allowed - (*ppRet)->nSize = typelib_typedescription_getAlignedUnoSize( (*ppRet), 0, (*ppRet)->nAlignment ); - (*ppRet)->nAlignment = adjustAlignment( (*ppRet)->nAlignment ); - } -} - -} - -extern "C" void SAL_CALL typelib_typedescription_new( - typelib_TypeDescription ** ppRet, - typelib_TypeClass eTypeClass, - rtl_uString * pTypeName, - typelib_TypeDescriptionReference * pType, - sal_Int32 nMembers, - typelib_CompoundMember_Init * pMembers ) - SAL_THROW_EXTERN_C() -{ - newTypeDescription( - ppRet, eTypeClass, pTypeName, pType, nMembers, pMembers, 0); -} - -extern "C" void SAL_CALL typelib_typedescription_newStruct( - typelib_TypeDescription ** ppRet, - rtl_uString * pTypeName, - typelib_TypeDescriptionReference * pType, - sal_Int32 nMembers, - typelib_StructMember_Init * pMembers ) - SAL_THROW_EXTERN_C() -{ - newTypeDescription( - ppRet, typelib_TypeClass_STRUCT, pTypeName, pType, nMembers, 0, - pMembers); -} - -//------------------------------------------------------------------------ -extern "C" 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" void SAL_CALL typelib_typedescription_newEnum( - typelib_TypeDescription ** ppRet, - rtl_uString * pTypeName, - sal_Int32 nDefaultValue, - sal_Int32 nEnumValues, - rtl_uString ** ppEnumNames, - sal_Int32 * pEnumValues ) - SAL_THROW_EXTERN_C() -{ - typelib_typedescription_newEmpty( ppRet, typelib_TypeClass_ENUM, pTypeName ); - typelib_EnumTypeDescription * pEnum = (typelib_EnumTypeDescription *)*ppRet; - - pEnum->nDefaultEnumValue = nDefaultValue; - pEnum->nEnumValues = nEnumValues; - pEnum->ppEnumNames = new rtl_uString * [ nEnumValues ]; - for ( sal_Int32 nPos = nEnumValues; nPos--; ) - { - rtl_uString_acquire( pEnum->ppEnumNames[nPos] = ppEnumNames[nPos] ); - } - pEnum->pEnumValues = new sal_Int32[ nEnumValues ]; - ::memcpy( pEnum->pEnumValues, pEnumValues, nEnumValues * sizeof(sal_Int32) ); - - (*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" 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" void SAL_CALL typelib_typedescription_newInterface( - typelib_InterfaceTypeDescription ** ppRet, - rtl_uString * pTypeName, - sal_uInt32 nUik1, sal_uInt16 nUik2, sal_uInt16 nUik3, sal_uInt32 nUik4, sal_uInt32 nUik5, - typelib_TypeDescriptionReference * pBaseInterface, - sal_Int32 nMembers, - typelib_TypeDescriptionReference ** ppMembers ) - SAL_THROW_EXTERN_C() -{ - typelib_typedescription_newMIInterface( - ppRet, pTypeName, nUik1, nUik2, nUik3, nUik4, nUik5, - pBaseInterface == 0 ? 0 : 1, &pBaseInterface, nMembers, ppMembers); -} - -//------------------------------------------------------------------------ - -namespace { - -class BaseList { -public: - struct Entry { - sal_Int32 memberOffset; - sal_Int32 directBaseIndex; - sal_Int32 directBaseMemberOffset; - typelib_InterfaceTypeDescription const * base; - }; - - typedef std::vector< Entry > List; - - BaseList(typelib_InterfaceTypeDescription const * desc); - - List const & getList() const { return list; } - - sal_Int32 getBaseMembers() const { return members; } - -private: - typedef std::set< rtl::OUString > Set; - - void calculate( - sal_Int32 directBaseIndex, Set & directBaseSet, - sal_Int32 * directBaseMembers, - typelib_InterfaceTypeDescription const * desc); - - Set set; - List list; - sal_Int32 members; -}; - -BaseList::BaseList(typelib_InterfaceTypeDescription const * desc) { - members = 0; - for (sal_Int32 i = 0; i < desc->nBaseTypes; ++i) { - Set directBaseSet; - sal_Int32 directBaseMembers = 0; - calculate(i, directBaseSet, &directBaseMembers, desc->ppBaseTypes[i]); - } -} - -void BaseList::calculate( - sal_Int32 directBaseIndex, Set & directBaseSet, - sal_Int32 * directBaseMembers, - typelib_InterfaceTypeDescription const * desc) -{ - for (sal_Int32 i = 0; i < desc->nBaseTypes; ++i) { - calculate( - directBaseIndex, directBaseSet, directBaseMembers, - desc->ppBaseTypes[i]); - } - if (set.insert(desc->aBase.pTypeName).second) { - Entry e; - e.memberOffset = members; - e.directBaseIndex = directBaseIndex; - e.directBaseMemberOffset = *directBaseMembers; - e.base = desc; - list.push_back(e); - OSL_ASSERT(desc->ppAllMembers != 0); - members += desc->nMembers; - } - if (directBaseSet.insert(desc->aBase.pTypeName).second) { - OSL_ASSERT(desc->ppAllMembers != 0); - *directBaseMembers += desc->nMembers; - } -} - -} - -extern "C" void SAL_CALL typelib_typedescription_newMIInterface( - typelib_InterfaceTypeDescription ** ppRet, - rtl_uString * pTypeName, - sal_uInt32 nUik1, sal_uInt16 nUik2, sal_uInt16 nUik3, sal_uInt32 nUik4, sal_uInt32 nUik5, - sal_Int32 nBaseInterfaces, - typelib_TypeDescriptionReference ** ppBaseInterfaces, - sal_Int32 nMembers, - typelib_TypeDescriptionReference ** ppMembers ) - SAL_THROW_EXTERN_C() -{ - if (*ppRet != 0) { - typelib_typedescription_release(&(*ppRet)->aBase); - *ppRet = 0; - } - - typelib_InterfaceTypeDescription * pITD = 0; - typelib_typedescription_newEmpty( - (typelib_TypeDescription **)&pITD, typelib_TypeClass_INTERFACE, pTypeName ); - - pITD->nBaseTypes = nBaseInterfaces; - pITD->ppBaseTypes = new typelib_InterfaceTypeDescription *[nBaseInterfaces]; - for (sal_Int32 i = 0; i < nBaseInterfaces; ++i) { - pITD->ppBaseTypes[i] = 0; - typelib_typedescriptionreference_getDescription( - reinterpret_cast< typelib_TypeDescription ** >( - &pITD->ppBaseTypes[i]), - ppBaseInterfaces[i]); - if (pITD->ppBaseTypes[i] == 0 - || !complete( - reinterpret_cast< typelib_TypeDescription ** >( - &pITD->ppBaseTypes[i]), - false)) - { - OSL_ASSERT(false); - return; - } - OSL_ASSERT(pITD->ppBaseTypes[i] != 0); - } - if (nBaseInterfaces > 0) { - pITD->pBaseTypeDescription = pITD->ppBaseTypes[0]; - } - // set the - pITD->aUik.m_Data1 = nUik1; - pITD->aUik.m_Data2 = nUik2; - pITD->aUik.m_Data3 = nUik3; - pITD->aUik.m_Data4 = nUik4; - pITD->aUik.m_Data5 = nUik5; - - BaseList aBaseList(pITD); - pITD->nAllMembers = nMembers + aBaseList.getBaseMembers(); - pITD->nMembers = nMembers; - - if( pITD->nAllMembers ) - { - // at minimum one member exist, allocate the memory - pITD->ppAllMembers = new typelib_TypeDescriptionReference *[ pITD->nAllMembers ]; - sal_Int32 n = 0; - - BaseList::List const & rList = aBaseList.getList(); - {for (BaseList::List::const_iterator i(rList.begin()); i != rList.end(); - ++i) - { - typelib_InterfaceTypeDescription const * pBase = i->base; - typelib_InterfaceTypeDescription const * pDirectBase - = pITD->ppBaseTypes[i->directBaseIndex]; - OSL_ASSERT(pBase->ppAllMembers != 0); - for (sal_Int32 j = 0; j < pBase->nMembers; ++j) { - typelib_TypeDescriptionReference const * pDirectBaseMember - = pDirectBase->ppAllMembers[i->directBaseMemberOffset + j]; - rtl::OUStringBuffer aBuf(pDirectBaseMember->pTypeName); - aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM(":@")); - aBuf.append(i->directBaseIndex); - aBuf.append(static_cast< sal_Unicode >(',')); - aBuf.append(i->memberOffset + j); - aBuf.append(static_cast< sal_Unicode >(':')); - aBuf.append(pITD->aBase.pTypeName); - rtl::OUString aName(aBuf.makeStringAndClear()); - typelib_TypeDescriptionReference * pDerivedMember = 0; - typelib_typedescriptionreference_new( - &pDerivedMember, pDirectBaseMember->eTypeClass, - aName.pData); - pITD->ppAllMembers[n++] = pDerivedMember; - } - }} - - if( nMembers ) - { - pITD->ppMembers = pITD->ppAllMembers + aBaseList.getBaseMembers(); - } - - // add own members - {for( sal_Int32 i = 0; i < nMembers; i++ ) - { - typelib_typedescriptionreference_acquire( ppMembers[i] ); - pITD->ppAllMembers[n++] = ppMembers[i]; - }} - } - - typelib_TypeDescription * pTmp = (typelib_TypeDescription *)pITD; - if( !reallyWeak( typelib_TypeClass_INTERFACE ) ) - pTmp->pWeakRef = (typelib_TypeDescriptionReference *)pTmp; - pTmp->nSize = typelib_typedescription_getAlignedUnoSize( pTmp, 0, pTmp->nAlignment ); - pTmp->nAlignment = adjustAlignment( pTmp->nAlignment ); - pTmp->bComplete = sal_False; - - *ppRet = pITD; -} - -//------------------------------------------------------------------------ - -namespace { - -typelib_TypeDescriptionReference ** copyExceptions( - sal_Int32 count, rtl_uString ** typeNames) -{ - OSL_ASSERT(count >= 0); - if (count == 0) { - return 0; - } - typelib_TypeDescriptionReference ** p - = new typelib_TypeDescriptionReference *[count]; - for (sal_Int32 i = 0; i < count; ++i) { - p[i] = 0; - typelib_typedescriptionreference_new( - p + i, typelib_TypeClass_EXCEPTION, typeNames[i]); - } - return p; -} - -} - -extern "C" void SAL_CALL typelib_typedescription_newInterfaceMethod( - typelib_InterfaceMethodTypeDescription ** ppRet, - sal_Int32 nAbsolutePosition, - sal_Bool bOneWay, - rtl_uString * pTypeName, - typelib_TypeClass eReturnTypeClass, - rtl_uString * pReturnTypeName, - sal_Int32 nParams, - typelib_Parameter_Init * pParams, - sal_Int32 nExceptions, - rtl_uString ** ppExceptionNames ) - SAL_THROW_EXTERN_C() -{ - if (*ppRet != 0) { - typelib_typedescription_release(&(*ppRet)->aBase.aBase); - *ppRet = 0; - } - sal_Int32 nOffset = rtl_ustr_lastIndexOfChar_WithLength( - pTypeName->buffer, pTypeName->length, ':'); - if (nOffset <= 0 || pTypeName->buffer[nOffset - 1] != ':') { - OSL_FAIL("Bad interface method type name"); - return; - } - rtl::OUString aInterfaceTypeName(pTypeName->buffer, nOffset - 1); - typelib_InterfaceTypeDescription * pInterface = 0; - typelib_typedescription_getByName( - reinterpret_cast< typelib_TypeDescription ** >(&pInterface), - aInterfaceTypeName.pData); - if (pInterface == 0 - || pInterface->aBase.eTypeClass != typelib_TypeClass_INTERFACE - || !complete( - reinterpret_cast< typelib_TypeDescription ** >(&pInterface), false)) - { - OSL_FAIL("No interface corresponding to interface method"); - return; - } - - typelib_typedescription_newEmpty( - (typelib_TypeDescription **)ppRet, typelib_TypeClass_INTERFACE_METHOD, pTypeName ); - typelib_TypeDescription * pTmp = (typelib_TypeDescription *)*ppRet; - - rtl_uString_newFromStr_WithLength( &(*ppRet)->aBase.pMemberName, - pTypeName->buffer + nOffset +1, - pTypeName->length - nOffset -1 ); - (*ppRet)->aBase.nPosition = nAbsolutePosition; - (*ppRet)->bOneWay = bOneWay; - typelib_typedescriptionreference_new( &(*ppRet)->pReturnTypeRef, eReturnTypeClass, pReturnTypeName ); - (*ppRet)->nParams = nParams; - if( nParams ) - { - (*ppRet)->pParams = new typelib_MethodParameter[ nParams ]; - - for( sal_Int32 i = 0; i < nParams; i++ ) - { - // get the name of the parameter - (*ppRet)->pParams[ i ].pName = 0; - rtl_uString_acquire( (*ppRet)->pParams[ i ].pName = pParams[i].pParamName ); - (*ppRet)->pParams[ i ].pTypeRef = 0; - // get the type name of the parameter and create the weak reference - typelib_typedescriptionreference_new( - &(*ppRet)->pParams[ i ].pTypeRef, pParams[i].eTypeClass, pParams[i].pTypeName ); - (*ppRet)->pParams[ i ].bIn = pParams[i].bIn; - (*ppRet)->pParams[ i ].bOut = pParams[i].bOut; - } - } - (*ppRet)->nExceptions = nExceptions; - (*ppRet)->ppExceptions = copyExceptions(nExceptions, ppExceptionNames); - (*ppRet)->pInterface = pInterface; - (*ppRet)->pBaseRef = 0; - OSL_ASSERT( - (nAbsolutePosition >= pInterface->nAllMembers - pInterface->nMembers) - && nAbsolutePosition < pInterface->nAllMembers); - (*ppRet)->nIndex = nAbsolutePosition - - (pInterface->nAllMembers - pInterface->nMembers); - if( !reallyWeak( typelib_TypeClass_INTERFACE_METHOD ) ) - pTmp->pWeakRef = (typelib_TypeDescriptionReference *)pTmp; -} - - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_newInterfaceAttribute( - typelib_InterfaceAttributeTypeDescription ** ppRet, - sal_Int32 nAbsolutePosition, - rtl_uString * pTypeName, - typelib_TypeClass eAttributeTypeClass, - rtl_uString * pAttributeTypeName, - sal_Bool bReadOnly ) - SAL_THROW_EXTERN_C() -{ - typelib_typedescription_newExtendedInterfaceAttribute( - ppRet, nAbsolutePosition, pTypeName, eAttributeTypeClass, - pAttributeTypeName, bReadOnly, 0, 0, 0, 0); -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_newExtendedInterfaceAttribute( - typelib_InterfaceAttributeTypeDescription ** ppRet, - sal_Int32 nAbsolutePosition, - rtl_uString * pTypeName, - typelib_TypeClass eAttributeTypeClass, - rtl_uString * pAttributeTypeName, - sal_Bool bReadOnly, - sal_Int32 nGetExceptions, rtl_uString ** ppGetExceptionNames, - sal_Int32 nSetExceptions, rtl_uString ** ppSetExceptionNames ) - SAL_THROW_EXTERN_C() -{ - if (*ppRet != 0) { - typelib_typedescription_release(&(*ppRet)->aBase.aBase); - *ppRet = 0; - } - sal_Int32 nOffset = rtl_ustr_lastIndexOfChar_WithLength( - pTypeName->buffer, pTypeName->length, ':'); - if (nOffset <= 0 || pTypeName->buffer[nOffset - 1] != ':') { - OSL_FAIL("Bad interface attribute type name"); - return; - } - rtl::OUString aInterfaceTypeName(pTypeName->buffer, nOffset - 1); - typelib_InterfaceTypeDescription * pInterface = 0; - typelib_typedescription_getByName( - reinterpret_cast< typelib_TypeDescription ** >(&pInterface), - aInterfaceTypeName.pData); - if (pInterface == 0 - || pInterface->aBase.eTypeClass != typelib_TypeClass_INTERFACE - || !complete( - reinterpret_cast< typelib_TypeDescription ** >(&pInterface), false)) - { - OSL_FAIL("No interface corresponding to interface attribute"); - return; - } - - typelib_typedescription_newEmpty( - (typelib_TypeDescription **)ppRet, typelib_TypeClass_INTERFACE_ATTRIBUTE, pTypeName ); - typelib_TypeDescription * pTmp = (typelib_TypeDescription *)*ppRet; - - rtl_uString_newFromStr_WithLength( &(*ppRet)->aBase.pMemberName, - pTypeName->buffer + nOffset +1, - pTypeName->length - nOffset -1 ); - (*ppRet)->aBase.nPosition = nAbsolutePosition; - typelib_typedescriptionreference_new( &(*ppRet)->pAttributeTypeRef, eAttributeTypeClass, pAttributeTypeName ); - (*ppRet)->bReadOnly = bReadOnly; - (*ppRet)->pInterface = pInterface; - (*ppRet)->pBaseRef = 0; - OSL_ASSERT( - (nAbsolutePosition >= pInterface->nAllMembers - pInterface->nMembers) - && nAbsolutePosition < pInterface->nAllMembers); - (*ppRet)->nIndex = nAbsolutePosition - - (pInterface->nAllMembers - pInterface->nMembers); - (*ppRet)->nGetExceptions = nGetExceptions; - (*ppRet)->ppGetExceptions = copyExceptions( - nGetExceptions, ppGetExceptionNames); - (*ppRet)->nSetExceptions = nSetExceptions; - (*ppRet)->ppSetExceptions = copyExceptions( - nSetExceptions, ppSetExceptionNames); - if( !reallyWeak( typelib_TypeClass_INTERFACE_ATTRIBUTE ) ) - pTmp->pWeakRef = (typelib_TypeDescriptionReference *)pTmp; -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_acquire( - typelib_TypeDescription * pTypeDescription ) - SAL_THROW_EXTERN_C() -{ - ::osl_incrementInterlockedCount( &pTypeDescription->nRefCount ); -} - -//------------------------------------------------------------------------ - -namespace { - -void deleteExceptions( - sal_Int32 count, typelib_TypeDescriptionReference ** exceptions) -{ - for (sal_Int32 i = 0; i < count; ++i) { - typelib_typedescriptionreference_release(exceptions[i]); - } - delete[] exceptions; -} - -} - -// frees anything except typelib_TypeDescription base! -static inline void typelib_typedescription_destructExtendedMembers( - typelib_TypeDescription * pTD ) - SAL_THROW( () ) -{ - OSL_ASSERT( typelib_TypeClass_TYPEDEF != pTD->eTypeClass ); - - 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; - case typelib_TypeClass_EXCEPTION: - { - typelib_CompoundTypeDescription * pCTD = (typelib_CompoundTypeDescription*)pTD; - if( pCTD->pBaseTypeDescription ) - typelib_typedescription_release( (typelib_TypeDescription *)pCTD->pBaseTypeDescription ); - sal_Int32 i; - for( i = 0; i < pCTD->nMembers; i++ ) - { - typelib_typedescriptionreference_release( pCTD->ppTypeRefs[i] ); - } - if (pCTD->ppMemberNames) - { - for ( i = 0; i < pCTD->nMembers; i++ ) - { - rtl_uString_release( pCTD->ppMemberNames[i] ); - } - delete [] pCTD->ppMemberNames; - } - delete [] pCTD->ppTypeRefs; - delete [] pCTD->pMemberOffsets; - } - break; - case typelib_TypeClass_INTERFACE: - { - typelib_InterfaceTypeDescription * pITD = (typelib_InterfaceTypeDescription*)pTD; - {for( sal_Int32 i = 0; i < pITD->nAllMembers; i++ ) - { - typelib_typedescriptionreference_release( pITD->ppAllMembers[i] ); - }} - delete [] pITD->ppAllMembers; - delete [] pITD->pMapMemberIndexToFunctionIndex; - delete [] pITD->pMapFunctionIndexToMemberIndex; - {for (sal_Int32 i = 0; i < pITD->nBaseTypes; ++i) { - typelib_typedescription_release( - reinterpret_cast< typelib_TypeDescription * >( - pITD->ppBaseTypes[i])); - }} - delete[] pITD->ppBaseTypes; - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - typelib_InterfaceMethodTypeDescription * pIMTD = (typelib_InterfaceMethodTypeDescription*)pTD; - if( pIMTD->pReturnTypeRef ) - typelib_typedescriptionreference_release( pIMTD->pReturnTypeRef ); - for( sal_Int32 i = 0; i < pIMTD->nParams; i++ ) - { - rtl_uString_release( pIMTD->pParams[ i ].pName ); - typelib_typedescriptionreference_release( pIMTD->pParams[ i ].pTypeRef ); - } - delete [] pIMTD->pParams; - deleteExceptions(pIMTD->nExceptions, pIMTD->ppExceptions); - rtl_uString_release( pIMTD->aBase.pMemberName ); - typelib_typedescription_release(&pIMTD->pInterface->aBase); - if (pIMTD->pBaseRef != 0) { - typelib_typedescriptionreference_release(pIMTD->pBaseRef); - } - } - break; - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - typelib_InterfaceAttributeTypeDescription * pIATD = (typelib_InterfaceAttributeTypeDescription*)pTD; - deleteExceptions(pIATD->nGetExceptions, pIATD->ppGetExceptions); - deleteExceptions(pIATD->nSetExceptions, pIATD->ppSetExceptions); - if( pIATD->pAttributeTypeRef ) - typelib_typedescriptionreference_release( pIATD->pAttributeTypeRef ); - if( pIATD->aBase.pMemberName ) - rtl_uString_release( pIATD->aBase.pMemberName ); - typelib_typedescription_release(&pIATD->pInterface->aBase); - if (pIATD->pBaseRef != 0) { - typelib_typedescriptionreference_release(pIATD->pBaseRef); - } - } - break; - case typelib_TypeClass_ENUM: - { - typelib_EnumTypeDescription * pEnum = (typelib_EnumTypeDescription *)pTD; - for ( sal_Int32 nPos = pEnum->nEnumValues; nPos--; ) - { - rtl_uString_release( pEnum->ppEnumNames[nPos] ); - } - delete [] pEnum->ppEnumNames; - delete [] pEnum->pEnumValues; - } - break; - default: - break; - } -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_release( - typelib_TypeDescription * pTD ) - SAL_THROW_EXTERN_C() -{ - sal_Int32 ref = ::osl_decrementInterlockedCount( &pTD->nRefCount ); - OSL_ASSERT(ref >= 0); - if (0 == ref) - { - TypeDescriptor_Init_Impl &rInit = Init::get(); - if( reallyWeak( pTD->eTypeClass ) ) - { - if( pTD->pWeakRef ) - { - { - MutexGuard aGuard( rInit.getMutex() ); - // remove this description from the weak reference - pTD->pWeakRef->pType = 0; - } - typelib_typedescriptionreference_release( pTD->pWeakRef ); - } - } - else - { - // this description is a reference too, so remove it from the hash table - if( rInit.pWeakMap ) - { - MutexGuard aGuard( rInit.getMutex() ); - WeakMap_Impl::iterator aIt = rInit.pWeakMap->find( (sal_Unicode*)pTD->pTypeName->buffer ); - if( aIt != rInit.pWeakMap->end() && (void *)(*aIt).second == (void *)pTD ) - { - // remove only if it contains the same object - rInit.pWeakMap->erase( aIt ); - } - } - } - - typelib_typedescription_destructExtendedMembers( pTD ); - rtl_uString_release( pTD->pTypeName ); - -#if OSL_DEBUG_LEVEL > 1 - switch( pTD->eTypeClass ) - { - case typelib_TypeClass_ARRAY: - osl_decrementInterlockedCount( &rInit.nArrayTypeDescriptionCount ); - break; - case typelib_TypeClass_SEQUENCE: - osl_decrementInterlockedCount( &rInit.nIndirectTypeDescriptionCount ); - break; - case typelib_TypeClass_UNION: - osl_decrementInterlockedCount( &rInit.nUnionTypeDescriptionCount ); - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - osl_decrementInterlockedCount( &rInit.nCompoundTypeDescriptionCount ); - break; - case typelib_TypeClass_INTERFACE: - osl_decrementInterlockedCount( &rInit.nInterfaceTypeDescriptionCount ); - break; - case typelib_TypeClass_INTERFACE_METHOD: - osl_decrementInterlockedCount( &rInit.nInterfaceMethodTypeDescriptionCount ); - break; - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - osl_decrementInterlockedCount( &rInit.nInterfaceAttributeTypeDescriptionCount ); - break; - case typelib_TypeClass_ENUM: - osl_decrementInterlockedCount( &rInit.nEnumTypeDescriptionCount ); - break; - default: - osl_decrementInterlockedCount( &rInit.nTypeDescriptionCount ); - } -#endif - - delete pTD; - } -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescription_register( - typelib_TypeDescription ** ppNewDescription ) - SAL_THROW_EXTERN_C() -{ - // connect the description with the weak reference - TypeDescriptor_Init_Impl &rInit = Init::get(); - ClearableMutexGuard aGuard( rInit.getMutex() ); - - typelib_TypeDescriptionReference * pTDR = 0; - typelib_typedescriptionreference_getByName( &pTDR, (*ppNewDescription)->pTypeName ); - - OSL_ASSERT( (*ppNewDescription)->pWeakRef || reallyWeak( (*ppNewDescription)->eTypeClass ) ); - if( pTDR ) - { - OSL_ASSERT( (*ppNewDescription)->eTypeClass == pTDR->eTypeClass ); - if( pTDR->pType ) - { - if (reallyWeak( pTDR->eTypeClass )) - { - // pRef->pType->pWeakRef == 0 means that the description is empty - if (pTDR->pType->pWeakRef) - { - if (osl_incrementInterlockedCount( &pTDR->pType->nRefCount ) > 1) - { - // The refence is incremented. The object cannot be destroyed. - // Release the guard at the earliest point. - aGuard.clear(); - ::typelib_typedescription_release( *ppNewDescription ); - *ppNewDescription = pTDR->pType; - ::typelib_typedescriptionreference_release( pTDR ); - return; - } - else - { - // destruction of this type in progress (another thread!) - osl_decrementInterlockedCount( &pTDR->pType->nRefCount ); - } - } - // take new descr - pTDR->pType = *ppNewDescription; - OSL_ASSERT( ! (*ppNewDescription)->pWeakRef ); - (*ppNewDescription)->pWeakRef = pTDR; - return; - } - // !reallyWeak - - if (((void *)pTDR != (void *)*ppNewDescription) && // if different - (!pTDR->pType->pWeakRef || // uninit: ref data only set - // new one is complete: - (!pTDR->pType->bComplete && (*ppNewDescription)->bComplete) || - // new one may be partly initialized interface (except of tables): - (typelib_TypeClass_INTERFACE == pTDR->pType->eTypeClass && - !((typelib_InterfaceTypeDescription *)pTDR->pType)->ppAllMembers && - (*(typelib_InterfaceTypeDescription **)ppNewDescription)->ppAllMembers))) - { - // uninitialized or incomplete - - if (pTDR->pType->pWeakRef) // if init - { - typelib_typedescription_destructExtendedMembers( pTDR->pType ); - } - - // pTDR->pType->pWeakRef == 0 means that the description is empty - // description is not weak and the not the same - sal_Int32 nSize = getDescriptionSize( (*ppNewDescription)->eTypeClass ); - - // copy all specific data for the descriptions - ::rtl_copyMemory( - pTDR->pType +1, - *ppNewDescription +1, - nSize - sizeof(typelib_TypeDescription) ); - - pTDR->pType->bComplete = (*ppNewDescription)->bComplete; - pTDR->pType->nSize = (*ppNewDescription)->nSize; - pTDR->pType->nAlignment = (*ppNewDescription)->nAlignment; - - ::rtl_zeroMemory( - *ppNewDescription +1, nSize - sizeof( typelib_TypeDescription ) ); - - if( pTDR->pType->bOnDemand && !(*ppNewDescription)->bOnDemand ) - { - // switch from OnDemand to !OnDemand, so the description must be acquired - typelib_typedescription_acquire( pTDR->pType ); - } - else if( !pTDR->pType->bOnDemand && (*ppNewDescription)->bOnDemand ) - { - // switch from !OnDemand to OnDemand, so the description must be relesed - typelib_typedescription_release( pTDR->pType ); - } - - pTDR->pType->bOnDemand = (*ppNewDescription)->bOnDemand; - // initialized - pTDR->pType->pWeakRef = pTDR; - } - - typelib_typedescription_release( *ppNewDescription ); - // pTDR was acquired by getByName(), so it must not be acquired again - *ppNewDescription = pTDR->pType; - return; - } - } - else if( reallyWeak( (*ppNewDescription)->eTypeClass) ) - { - typelib_typedescriptionreference_new( - &pTDR, (*ppNewDescription)->eTypeClass, (*ppNewDescription)->pTypeName ); - } - else - { - pTDR = (typelib_TypeDescriptionReference *)*ppNewDescription; - if( !rInit.pWeakMap ) - rInit.pWeakMap = new WeakMap_Impl; - - // description is the weak itself, so register it - (*rInit.pWeakMap)[pTDR->pTypeName->buffer] = pTDR; - OSL_ASSERT( (void *)*ppNewDescription == (void *)pTDR ); - } - - // By default this reference is not really weak. The reference hold the description - // and the description hold the reference. - if( !(*ppNewDescription)->bOnDemand ) - { - // nor OnDemand so the description must be acquired if registered - typelib_typedescription_acquire( *ppNewDescription ); - } - - pTDR->pType = *ppNewDescription; - (*ppNewDescription)->pWeakRef = pTDR; - OSL_ASSERT( rtl_ustr_compare( pTDR->pTypeName->buffer, (*ppNewDescription)->pTypeName->buffer ) == 0 ); - OSL_ASSERT( pTDR->eTypeClass == (*ppNewDescription)->eTypeClass ); -} - -//------------------------------------------------------------------------ -static inline sal_Bool type_equals( - typelib_TypeDescriptionReference * p1, typelib_TypeDescriptionReference * p2 ) - SAL_THROW( () ) -{ - return (p1 == p2 || - (p1->eTypeClass == p2->eTypeClass && - p1->pTypeName->length == p2->pTypeName->length && - rtl_ustr_compare( p1->pTypeName->buffer, p2->pTypeName->buffer ) == 0)); -} -extern "C" sal_Bool SAL_CALL typelib_typedescription_equals( - const typelib_TypeDescription * p1, const typelib_TypeDescription * p2 ) - SAL_THROW_EXTERN_C() -{ - return type_equals( - (typelib_TypeDescriptionReference *)p1, (typelib_TypeDescriptionReference *)p2 ); -} - -//------------------------------------------------------------------------ -extern "C" sal_Int32 SAL_CALL typelib_typedescription_getAlignedUnoSize( - const typelib_TypeDescription * pTypeDescription, - sal_Int32 nOffset, sal_Int32 & rMaxIntegralTypeSize ) - SAL_THROW_EXTERN_C() -{ - sal_Int32 nSize; - if( pTypeDescription->nSize ) - { - // size and alignment are set - rMaxIntegralTypeSize = pTypeDescription->nAlignment; - nSize = pTypeDescription->nSize; - } - else - { - nSize = 0; - rMaxIntegralTypeSize = 1; - - OSL_ASSERT( typelib_TypeClass_TYPEDEF != pTypeDescription->eTypeClass ); - - switch( pTypeDescription->eTypeClass ) - { - case typelib_TypeClass_INTERFACE: - // 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; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - // FEATURE_EMPTYCLASS - { - typelib_CompoundTypeDescription * pTmp = (typelib_CompoundTypeDescription *)pTypeDescription; - sal_Int32 nStructSize = 0; - if( pTmp->pBaseTypeDescription ) - { - // inherit structs extends the base struct. - nStructSize = pTmp->pBaseTypeDescription->aBase.nSize; - rMaxIntegralTypeSize = pTmp->pBaseTypeDescription->aBase.nAlignment; - } - for( sal_Int32 i = 0; i < pTmp->nMembers; i++ ) - { - typelib_TypeDescription * pMemberType = 0; - typelib_TypeDescriptionReference * pMemberRef = pTmp->ppTypeRefs[i]; - - sal_Int32 nMaxIntegral; - if (pMemberRef->eTypeClass == typelib_TypeClass_INTERFACE - || pMemberRef->eTypeClass == typelib_TypeClass_SEQUENCE) - { - nMaxIntegral = (sal_Int32)(sizeof(void *)); - nStructSize = newAlignedSize( nStructSize, nMaxIntegral, nMaxIntegral ); - } - else - { - TYPELIB_DANGER_GET( &pMemberType, pMemberRef ); - nStructSize = typelib_typedescription_getAlignedUnoSize( - pMemberType, nStructSize, nMaxIntegral ); - TYPELIB_DANGER_RELEASE( pMemberType ); - } - if( nMaxIntegral > rMaxIntegralTypeSize ) - rMaxIntegralTypeSize = nMaxIntegral; - } -#ifdef __m68k__ - // Anything that is at least 16 bits wide is aligned on a 16-bit - // boundary on the m68k default abi - sal_Int32 nMaxAlign = (rMaxIntegralTypeSize > 2) ? 2 : rMaxIntegralTypeSize; - nStructSize = (nStructSize + nMaxAlign -1) / nMaxAlign * nMaxAlign; -#else - // Example: A { double; int; } structure has a size of 16 instead of 10. The - // compiler must follow this rule if it is possible to access members in arrays through: - // (Element *)((char *)pArray + sizeof( Element ) * ElementPos) - nStructSize = (nStructSize + rMaxIntegralTypeSize -1) - / rMaxIntegralTypeSize * rMaxIntegralTypeSize; -#endif - 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; - case typelib_TypeClass_ANY: - // FEATURE_ANY - nSize = (sal_Int32)(sizeof( uno_Any )); - rMaxIntegralTypeSize = (sal_Int32)(sizeof( void * )); - break; - case typelib_TypeClass_TYPE: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( typelib_TypeDescriptionReference * )); - break; - case typelib_TypeClass_BOOLEAN: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( sal_Bool )); - break; - case typelib_TypeClass_CHAR: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( sal_Unicode )); - break; - case typelib_TypeClass_STRING: - // FEATURE_STRING - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( rtl_uString * )); - break; - case typelib_TypeClass_FLOAT: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( float )); - break; - case typelib_TypeClass_DOUBLE: -#ifdef AIX - //See previous AIX ifdef comment for an explanation - nSize = (sal_Int32)(sizeof(double)); - rMaxIntegralTypeSize = (sal_Int32)(sizeof(void*)); -#else - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( double )); -#endif - break; - case typelib_TypeClass_BYTE: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( sal_Int8 )); - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( sal_Int16 )); - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( sal_Int32 )); - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - nSize = rMaxIntegralTypeSize = (sal_Int32)(sizeof( sal_Int64 )); - break; - case typelib_TypeClass_UNKNOWN: - case typelib_TypeClass_SERVICE: - case typelib_TypeClass_MODULE: - default: - OSL_FAIL( "not convertable type" ); - }; - } - - return newAlignedSize( nOffset, nSize, rMaxIntegralTypeSize ); -} - -//------------------------------------------------------------------------ - -namespace { - -typelib_TypeDescriptionReference ** copyExceptions( - sal_Int32 count, typelib_TypeDescriptionReference ** source) -{ - typelib_TypeDescriptionReference ** p - = new typelib_TypeDescriptionReference *[count]; - for (sal_Int32 i = 0; i < count; ++i) { - typelib_typedescriptionreference_acquire(p[i] = source[i]); - } - return p; -} - -bool createDerivedInterfaceMemberDescription( - typelib_TypeDescription ** result, rtl::OUString const & name, - typelib_TypeDescriptionReference * baseRef, - typelib_TypeDescription const * base, typelib_TypeDescription * interface, - sal_Int32 index, sal_Int32 position) -{ - if (baseRef != 0 && base != 0 && interface != 0) { - switch (base->eTypeClass) { - case typelib_TypeClass_INTERFACE_METHOD: - { - typelib_typedescription_newEmpty( - result, typelib_TypeClass_INTERFACE_METHOD, name.pData); - typelib_InterfaceMethodTypeDescription const * baseMethod - = reinterpret_cast< - typelib_InterfaceMethodTypeDescription const * >(base); - typelib_InterfaceMethodTypeDescription * newMethod - = reinterpret_cast< - typelib_InterfaceMethodTypeDescription * >(*result); - newMethod->aBase.nPosition = position; - rtl_uString_acquire( - newMethod->aBase.pMemberName - = baseMethod->aBase.pMemberName); - typelib_typedescriptionreference_acquire( - newMethod->pReturnTypeRef = baseMethod->pReturnTypeRef); - newMethod->nParams = baseMethod->nParams; - newMethod->pParams = new typelib_MethodParameter[ - newMethod->nParams]; - for (sal_Int32 i = 0; i < newMethod->nParams; ++i) { - rtl_uString_acquire( - newMethod->pParams[i].pName - = baseMethod->pParams[i].pName); - typelib_typedescriptionreference_acquire( - newMethod->pParams[i].pTypeRef - = baseMethod->pParams[i].pTypeRef); - newMethod->pParams[i].bIn = baseMethod->pParams[i].bIn; - newMethod->pParams[i].bOut = baseMethod->pParams[i].bOut; - } - newMethod->nExceptions = baseMethod->nExceptions; - newMethod->ppExceptions = copyExceptions( - baseMethod->nExceptions, baseMethod->ppExceptions); - newMethod->bOneWay = baseMethod->bOneWay; - newMethod->pInterface - = reinterpret_cast< typelib_InterfaceTypeDescription * >( - interface); - newMethod->pBaseRef = baseRef; - newMethod->nIndex = index; - return true; - } - - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - typelib_typedescription_newEmpty( - result, typelib_TypeClass_INTERFACE_ATTRIBUTE, name.pData); - typelib_InterfaceAttributeTypeDescription const * baseAttribute - = reinterpret_cast< - typelib_InterfaceAttributeTypeDescription const * >(base); - typelib_InterfaceAttributeTypeDescription * newAttribute - = reinterpret_cast< - typelib_InterfaceAttributeTypeDescription * >(*result); - newAttribute->aBase.nPosition = position; - rtl_uString_acquire( - newAttribute->aBase.pMemberName - = baseAttribute->aBase.pMemberName); - newAttribute->bReadOnly = baseAttribute->bReadOnly; - typelib_typedescriptionreference_acquire( - newAttribute->pAttributeTypeRef - = baseAttribute->pAttributeTypeRef); - newAttribute->pInterface - = reinterpret_cast< typelib_InterfaceTypeDescription * >( - interface); - newAttribute->pBaseRef = baseRef; - newAttribute->nIndex = index; - newAttribute->nGetExceptions = baseAttribute->nGetExceptions; - newAttribute->ppGetExceptions = copyExceptions( - baseAttribute->nGetExceptions, - baseAttribute->ppGetExceptions); - newAttribute->nSetExceptions = baseAttribute->nSetExceptions; - newAttribute->ppSetExceptions = copyExceptions( - baseAttribute->nSetExceptions, - baseAttribute->ppSetExceptions); - return true; - } - - default: - break; - } - } - return false; -} - -} - -extern "C" void SAL_CALL typelib_typedescription_getByName( - typelib_TypeDescription ** ppRet, rtl_uString * pName ) - SAL_THROW_EXTERN_C() -{ - if( *ppRet ) - { - typelib_typedescription_release( (*ppRet) ); - *ppRet = 0; - } - - static sal_Bool bInited = sal_False; - TypeDescriptor_Init_Impl &rInit = Init::get(); - - if( !bInited ) - { - // guard against multi thread access - MutexGuard aGuard( rInit.getMutex() ); - if( !bInited ) - { - // avoid recursion during the next ...new calls - bInited = sal_True; - - rtl_uString * pTypeName = 0; - typelib_TypeDescription * pType = 0; - rtl_uString_newFromAscii( &pTypeName, "type" ); - typelib_typedescription_new( &pType, typelib_TypeClass_TYPE, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "void" ); - typelib_typedescription_new( &pType, typelib_TypeClass_VOID, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "boolean" ); - typelib_typedescription_new( &pType, typelib_TypeClass_BOOLEAN, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "char" ); - typelib_typedescription_new( &pType, typelib_TypeClass_CHAR, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "byte" ); - typelib_typedescription_new( &pType, typelib_TypeClass_BYTE, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "string" ); - typelib_typedescription_new( &pType, typelib_TypeClass_STRING, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "short" ); - typelib_typedescription_new( &pType, typelib_TypeClass_SHORT, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "unsigned short" ); - typelib_typedescription_new( &pType, typelib_TypeClass_UNSIGNED_SHORT, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "long" ); - typelib_typedescription_new( &pType, typelib_TypeClass_LONG, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "unsigned long" ); - typelib_typedescription_new( &pType, typelib_TypeClass_UNSIGNED_LONG, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "hyper" ); - typelib_typedescription_new( &pType, typelib_TypeClass_HYPER, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "unsigned hyper" ); - typelib_typedescription_new( &pType, typelib_TypeClass_UNSIGNED_HYPER, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "float" ); - typelib_typedescription_new( &pType, typelib_TypeClass_FLOAT, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "double" ); - typelib_typedescription_new( &pType, typelib_TypeClass_DOUBLE, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - rtl_uString_newFromAscii( &pTypeName, "any" ); - typelib_typedescription_new( &pType, typelib_TypeClass_ANY, pTypeName, 0, 0, 0 ); - typelib_typedescription_register( &pType ); - typelib_typedescription_release( pType ); - rtl_uString_release( pTypeName ); - } - } - - typelib_TypeDescriptionReference * pTDR = 0; - typelib_typedescriptionreference_getByName( &pTDR, pName ); - if( pTDR ) - { - { - // guard against multi thread access - MutexGuard aGuard( rInit.getMutex() ); - // pTDR->pType->pWeakRef == 0 means that the description is empty - if( pTDR->pType && pTDR->pType->pWeakRef ) - { - typelib_typedescription_acquire( pTDR->pType ); - *ppRet = pTDR->pType; - } - } - typelib_typedescriptionreference_release( pTDR ); - } - - if (0 == *ppRet) - { - // check for sequence - OUString const & name = *reinterpret_cast< OUString const * >( &pName ); - if (2 < name.getLength() && '[' == name[ 0 ]) - { - OUString element_name( name.copy( 2 ) ); - typelib_TypeDescription * element_td = 0; - typelib_typedescription_getByName( &element_td, element_name.pData ); - if (0 != element_td) - { - typelib_typedescription_new( - ppRet, typelib_TypeClass_SEQUENCE, pName, element_td->pWeakRef, 0, 0 ); - // register? - typelib_typedescription_release( element_td ); - } - } - if (0 == *ppRet) - { - // Check for derived interface member type: - sal_Int32 i1 = name.lastIndexOf( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(":@"))); - if (i1 >= 0) { - sal_Int32 i2 = i1 + RTL_CONSTASCII_LENGTH(":@"); - sal_Int32 i3 = name.indexOf(',', i2); - if (i3 >= 0) { - sal_Int32 i4 = name.indexOf(':', i3); - if (i4 >= 0) { - typelib_TypeDescriptionReference * pBaseRef = 0; - typelib_TypeDescription * pBase = 0; - typelib_TypeDescription * pInterface = 0; - typelib_typedescriptionreference_getByName( - &pBaseRef, name.copy(0, i1).pData); - if (pBaseRef != 0) { - typelib_typedescriptionreference_getDescription( - &pBase, pBaseRef); - } - typelib_typedescription_getByName( - &pInterface, name.copy(i4 + 1).pData); - if (!createDerivedInterfaceMemberDescription( - ppRet, name, pBaseRef, pBase, pInterface, - name.copy(i2, i3 - i2).toInt32(), - name.copy(i3 + 1, i4 - i3 - 1).toInt32())) - { - if (pInterface != 0) { - typelib_typedescription_release(pInterface); - } - if (pBase != 0) { - typelib_typedescription_release(pBase); - } - if (pBaseRef != 0) { - typelib_typedescriptionreference_release( - pBaseRef); - } - } - } - } - } - } - if (0 == *ppRet) - { - // on demand access - rInit.callChain( ppRet, pName ); - } - - if( *ppRet ) - { - // typedescription found - if (typelib_TypeClass_TYPEDEF == (*ppRet)->eTypeClass) - { - typelib_TypeDescription * pTD = 0; - typelib_typedescriptionreference_getDescription( - &pTD, ((typelib_IndirectTypeDescription *)*ppRet)->pType ); - typelib_typedescription_release( *ppRet ); - *ppRet = pTD; - } - else - { - // set to on demand - (*ppRet)->bOnDemand = sal_True; - // The type description is hold by the reference until - // on demand is activated. - typelib_typedescription_register( ppRet ); - - // insert into the chache - MutexGuard aGuard( rInit.getMutex() ); - if( !rInit.pCache ) - rInit.pCache = new TypeDescriptionList_Impl; - if( (sal_Int32)rInit.pCache->size() >= nCacheSize ) - { - typelib_typedescription_release( rInit.pCache->front() ); - rInit.pCache->pop_front(); - } - // descriptions in the cache must be acquired! - typelib_typedescription_acquire( *ppRet ); - rInit.pCache->push_back( *ppRet ); - } - } - } -} - -extern "C" void SAL_CALL typelib_typedescriptionreference_newByAsciiName( - typelib_TypeDescriptionReference ** ppTDR, - typelib_TypeClass eTypeClass, - const sal_Char * pTypeName ) - SAL_THROW_EXTERN_C() -{ - OUString aTypeName( OUString::createFromAscii( pTypeName ) ); - typelib_typedescriptionreference_new( ppTDR, eTypeClass, aTypeName.pData ); -} -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescriptionreference_new( - typelib_TypeDescriptionReference ** ppTDR, - typelib_TypeClass eTypeClass, rtl_uString * pTypeName ) - SAL_THROW_EXTERN_C() -{ - TypeDescriptor_Init_Impl &rInit = Init::get(); - if( eTypeClass == typelib_TypeClass_TYPEDEF ) - { - // on demand access - typelib_TypeDescription * pRet = 0; - rInit.callChain( &pRet, pTypeName ); - if( pRet ) - { - // typedescription found - if (typelib_TypeClass_TYPEDEF == pRet->eTypeClass) - { - typelib_typedescriptionreference_acquire( - ((typelib_IndirectTypeDescription *)pRet)->pType ); - if (*ppTDR) - typelib_typedescriptionreference_release( *ppTDR ); - *ppTDR = ((typelib_IndirectTypeDescription *)pRet)->pType; - typelib_typedescription_release( pRet ); - } - else - { - // set to on demand - pRet->bOnDemand = sal_True; - // The type description is hold by the reference until - // on demand is activated. - typelib_typedescription_register( &pRet ); - - // insert into the chache - MutexGuard aGuard( rInit.getMutex() ); - if( !rInit.pCache ) - rInit.pCache = new TypeDescriptionList_Impl; - if( (sal_Int32)rInit.pCache->size() >= nCacheSize ) - { - typelib_typedescription_release( rInit.pCache->front() ); - rInit.pCache->pop_front(); - } - rInit.pCache->push_back( pRet ); - // pRet kept acquired for cache - - typelib_typedescriptionreference_acquire( pRet->pWeakRef ); - if (*ppTDR) - typelib_typedescriptionreference_release( *ppTDR ); - *ppTDR = pRet->pWeakRef; - } - } - else if (*ppTDR) - { -#if OSL_DEBUG_LEVEL > 1 - OString aStr( OUStringToOString( pTypeName, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( !"### typedef not found: ", aStr.getStr() ); -#endif - typelib_typedescriptionreference_release( *ppTDR ); - *ppTDR = 0; - } - return; - } - - MutexGuard aGuard( rInit.getMutex() ); - typelib_typedescriptionreference_getByName( ppTDR, pTypeName ); - if( *ppTDR ) - return; - - if( reallyWeak( eTypeClass ) ) - { - typelib_TypeDescriptionReference * pTDR = new typelib_TypeDescriptionReference(); -#if OSL_DEBUG_LEVEL > 1 - osl_incrementInterlockedCount( &rInit.nTypeDescriptionReferenceCount ); -#endif - pTDR->nRefCount = 1; - pTDR->nStaticRefCount = 0; - pTDR->eTypeClass = eTypeClass; - pTDR->pUniqueIdentifier = 0; - pTDR->pReserved = 0; - rtl_uString_acquire( pTDR->pTypeName = pTypeName ); - pTDR->pType = 0; - *ppTDR = pTDR; - } - else - { - typelib_typedescription_newEmpty( (typelib_TypeDescription ** )ppTDR, eTypeClass, pTypeName ); - // description will be registered but not acquired - (*(typelib_TypeDescription ** )ppTDR)->bOnDemand = sal_True; - (*(typelib_TypeDescription ** )ppTDR)->bComplete = sal_False; - } - - if( !rInit.pWeakMap ) - rInit.pWeakMap = new WeakMap_Impl; - // Heavy hack, the const sal_Unicode * is hold by the typedescription reference - // not registered - rInit.pWeakMap->operator[]( (*ppTDR)->pTypeName->buffer ) = *ppTDR; -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescriptionreference_acquire( - typelib_TypeDescriptionReference * pRef ) - SAL_THROW_EXTERN_C() -{ - ::osl_incrementInterlockedCount( &pRef->nRefCount ); -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescriptionreference_release( - typelib_TypeDescriptionReference * pRef ) - SAL_THROW_EXTERN_C() -{ - // Is it a type description? - if( reallyWeak( pRef->eTypeClass ) ) - { - if( ! ::osl_decrementInterlockedCount( &pRef->nRefCount ) ) - { - TypeDescriptor_Init_Impl &rInit = Init::get(); - if( rInit.pWeakMap ) - { - MutexGuard aGuard( rInit.getMutex() ); - WeakMap_Impl::iterator aIt = rInit.pWeakMap->find( (sal_Unicode*)pRef->pTypeName->buffer ); - if( !(aIt == rInit.pWeakMap->end()) && (*aIt).second == pRef ) - { - // remove only if it contains the same object - rInit.pWeakMap->erase( aIt ); - } - } - - rtl_uString_release( pRef->pTypeName ); - OSL_ASSERT( pRef->pType == 0 ); -#if OSL_DEBUG_LEVEL > 1 - osl_decrementInterlockedCount( &rInit.nTypeDescriptionReferenceCount ); -#endif - delete pRef; - } - } - else - { - typelib_typedescription_release( (typelib_TypeDescription *)pRef ); - } -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescriptionreference_getDescription( - typelib_TypeDescription ** ppRet, typelib_TypeDescriptionReference * pRef ) - SAL_THROW_EXTERN_C() -{ - if( *ppRet ) - { - typelib_typedescription_release( *ppRet ); - *ppRet = 0; - } - - if( !reallyWeak( pRef->eTypeClass ) && pRef->pType && pRef->pType->pWeakRef ) - { - // reference is a description and initialized - osl_incrementInterlockedCount( &((typelib_TypeDescription *)pRef)->nRefCount ); - *ppRet = (typelib_TypeDescription *)pRef; - return; - } - - { - MutexGuard aGuard( Init::get().getMutex() ); - // pRef->pType->pWeakRef == 0 means that the description is empty - if( pRef->pType && pRef->pType->pWeakRef ) - { - sal_Int32 n = ::osl_incrementInterlockedCount( &pRef->pType->nRefCount ); - if( n > 1 ) - { - // The refence is incremented. The object cannot be destroyed. - // Release the guard at the earliest point. - *ppRet = pRef->pType; - return; - } - else - { - ::osl_decrementInterlockedCount( &pRef->pType->nRefCount ); - // detruction of this type in progress (another thread!) - // no acces through this weak reference - pRef->pType = 0; - } - } - } - - typelib_typedescription_getByName( ppRet, pRef->pTypeName ); - OSL_ASSERT( !*ppRet || rtl_ustr_compare( pRef->pTypeName->buffer, (*ppRet)->pTypeName->buffer ) == 0 ); - OSL_ASSERT( !*ppRet || pRef->eTypeClass == (*ppRet)->eTypeClass ); - OSL_ASSERT( !*ppRet || pRef == (*ppRet)->pWeakRef ); - pRef->pType = *ppRet; -} - -//------------------------------------------------------------------------ -extern "C" void SAL_CALL typelib_typedescriptionreference_getByName( - typelib_TypeDescriptionReference ** ppRet, rtl_uString * pName ) - SAL_THROW_EXTERN_C() -{ - if( *ppRet ) - { - typelib_typedescriptionreference_release( *ppRet ); - *ppRet = 0; - } - TypeDescriptor_Init_Impl &rInit = Init::get(); - if( rInit.pWeakMap ) - { - MutexGuard aGuard( rInit.getMutex() ); - WeakMap_Impl::const_iterator aIt = rInit.pWeakMap->find( (sal_Unicode*)pName->buffer ); - if( !(aIt == rInit.pWeakMap->end()) ) // != failed on msc4.2 - { - sal_Int32 n = ::osl_incrementInterlockedCount( &(*aIt).second->nRefCount ); - if( n > 1 ) - { - // The refence is incremented. The object cannot be destroyed. - // Release the guard at the earliest point. - *ppRet = (*aIt).second; - } - else - { - // detruction of this type in progress (another thread!) - // no acces through this weak reference - ::osl_decrementInterlockedCount( &(*aIt).second->nRefCount ); - } - } - } -} - -//------------------------------------------------------------------------ -extern "C" sal_Bool SAL_CALL typelib_typedescriptionreference_equals( - const typelib_TypeDescriptionReference * p1, - const typelib_TypeDescriptionReference * p2 ) - SAL_THROW_EXTERN_C() -{ - return (p1 == p2 || - (p1->eTypeClass == p2->eTypeClass && - p1->pTypeName->length == p2->pTypeName->length && - rtl_ustr_compare( p1->pTypeName->buffer, p2->pTypeName->buffer ) == 0)); -} - -//################################################################################################## -extern "C" void SAL_CALL typelib_typedescriptionreference_assign( - typelib_TypeDescriptionReference ** ppDest, - typelib_TypeDescriptionReference * pSource ) - SAL_THROW_EXTERN_C() -{ - if (*ppDest != pSource) - { - ::typelib_typedescriptionreference_acquire( pSource ); - ::typelib_typedescriptionreference_release( *ppDest ); - *ppDest = pSource; - } -} - -//################################################################################################## -extern "C" void SAL_CALL typelib_setCacheSize( sal_Int32 nNewSize ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( nNewSize >= 0, "### illegal cache size given!" ); - if (nNewSize >= 0) - { - TypeDescriptor_Init_Impl &rInit = Init::get(); - MutexGuard aGuard( rInit.getMutex() ); - if ((nNewSize < nCacheSize) && rInit.pCache) - { - while ((sal_Int32)rInit.pCache->size() != nNewSize) - { - typelib_typedescription_release( rInit.pCache->front() ); - rInit.pCache->pop_front(); - } - } - nCacheSize = nNewSize; - } -} - - -static sal_Bool s_aAssignableFromTab[11][11] = -{ - /* from CH,BO,BY,SH,US,LO,UL,HY,UH,FL,DO */ -/* TypeClass_CHAR */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* TypeClass_BOOLEAN */ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* TypeClass_BYTE */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, -/* TypeClass_SHORT */ { 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, -/* TypeClass_UNSIGNED_SHORT */ { 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, -/* TypeClass_LONG */ { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, -/* TypeClass_UNSIGNED_LONG */ { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, -/* TypeClass_HYPER */ { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, -/* TypeClass_UNSIGNED_HYPER */ { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, -/* TypeClass_FLOAT */ { 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0 }, -/* TypeClass_DOUBLE */ { 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1 } -}; - -//################################################################################################## -extern "C" sal_Bool SAL_CALL typelib_typedescriptionreference_isAssignableFrom( - typelib_TypeDescriptionReference * pAssignable, - typelib_TypeDescriptionReference * pFrom ) - SAL_THROW_EXTERN_C() -{ - if (pAssignable && pFrom) - { - typelib_TypeClass eAssignable = pAssignable->eTypeClass; - typelib_TypeClass eFrom = pFrom->eTypeClass; - - if (eAssignable == typelib_TypeClass_ANY) // anything can be assigned to an any .) - return sal_True; - if (eAssignable == eFrom) - { - if (type_equals( pAssignable, pFrom )) // first shot - { - return sal_True; - } - else - { - switch (eAssignable) - { - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pFromDescr = 0; - TYPELIB_DANGER_GET( &pFromDescr, pFrom ); - if (! ((typelib_CompoundTypeDescription *)pFromDescr)->pBaseTypeDescription) - { - TYPELIB_DANGER_RELEASE( pFromDescr ); - return sal_False; - } - sal_Bool bRet = typelib_typedescriptionreference_isAssignableFrom( - pAssignable, - ((typelib_TypeDescription *)((typelib_CompoundTypeDescription *)pFromDescr)->pBaseTypeDescription)->pWeakRef ); - TYPELIB_DANGER_RELEASE( pFromDescr ); - return bRet; - } - case typelib_TypeClass_INTERFACE: - { - typelib_TypeDescription * pFromDescr = 0; - TYPELIB_DANGER_GET( &pFromDescr, pFrom ); - typelib_InterfaceTypeDescription * pFromIfc - = reinterpret_cast< - typelib_InterfaceTypeDescription * >(pFromDescr); - bool bRet = false; - for (sal_Int32 i = 0; i < pFromIfc->nBaseTypes; ++i) { - if (typelib_typedescriptionreference_isAssignableFrom( - pAssignable, - pFromIfc->ppBaseTypes[i]->aBase.pWeakRef)) - { - bRet = true; - break; - } - } - TYPELIB_DANGER_RELEASE( pFromDescr ); - return bRet; - } - default: - { - return sal_False; - } - } - } - } - return (eAssignable >= typelib_TypeClass_CHAR && eAssignable <= typelib_TypeClass_DOUBLE && - eFrom >= typelib_TypeClass_CHAR && eFrom <= typelib_TypeClass_DOUBLE && - s_aAssignableFromTab[eAssignable-1][eFrom-1]); - } - return sal_False; -} -//################################################################################################## -extern "C" sal_Bool SAL_CALL typelib_typedescription_isAssignableFrom( - typelib_TypeDescription * pAssignable, - typelib_TypeDescription * pFrom ) - SAL_THROW_EXTERN_C() -{ - return typelib_typedescriptionreference_isAssignableFrom( - pAssignable->pWeakRef, pFrom->pWeakRef ); -} - -//################################################################################################## -extern "C" sal_Bool SAL_CALL typelib_typedescription_complete( - typelib_TypeDescription ** ppTypeDescr ) - SAL_THROW_EXTERN_C() -{ - return complete(ppTypeDescr, true); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/EnvDcp.c b/cppu/source/uno/EnvDcp.c deleted file mode 100644 index f73dc46d6..000000000 --- a/cppu/source/uno/EnvDcp.c +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "uno/EnvDcp.h" - - -void uno_EnvDcp_getTypeName(rtl_uString const * pEnvDcp, rtl_uString ** ppEnvTypeName) -{ - sal_Int32 colIdx = rtl_ustr_indexOfChar_WithLength(pEnvDcp->buffer, pEnvDcp->length, ':'); - if (colIdx >= 0) - rtl_uString_newFromStr_WithLength(ppEnvTypeName, pEnvDcp->buffer, colIdx); - - else - rtl_uString_newFromStr(ppEnvTypeName, pEnvDcp->buffer); -} - -void uno_EnvDcp_getPurpose(rtl_uString const * pEnvDcp, rtl_uString ** ppEnvPurpose) -{ - sal_Int32 colIdx = rtl_ustr_indexOfChar_WithLength(pEnvDcp->buffer, pEnvDcp->length, ':'); - if (colIdx >= 0) - rtl_uString_newFromStr_WithLength(ppEnvPurpose, pEnvDcp->buffer + colIdx, pEnvDcp->length - colIdx); - - else - rtl_uString_new(ppEnvPurpose); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/EnvStack.cxx b/cppu/source/uno/EnvStack.cxx deleted file mode 100644 index b5fa3e357..000000000 --- a/cppu/source/uno/EnvStack.cxx +++ /dev/null @@ -1,386 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "uno/environment.hxx" - -#include "cppu/EnvDcp.hxx" -#include "cppu/Enterable.hxx" - -#include "rtl/instance.hxx" - -#include "osl/thread.h" -#include "osl/mutex.hxx" - -#include - - -using namespace com::sun::star; - - -struct SAL_DLLPRIVATE oslThreadIdentifier_equal -{ - bool operator()(oslThreadIdentifier s1, oslThreadIdentifier s2) const; -}; - -bool oslThreadIdentifier_equal::operator()(oslThreadIdentifier s1, oslThreadIdentifier s2) const -{ - bool result = s1 == s2; - - return result; -} - - -struct SAL_DLLPRIVATE oslThreadIdentifier_hash -{ - size_t operator()(oslThreadIdentifier s1) const; -}; - -size_t oslThreadIdentifier_hash::operator()(oslThreadIdentifier s1) const -{ - return s1; -} - -typedef ::boost::unordered_map ThreadMap; - -namespace -{ - struct s_threadMap_mutex : public rtl::Static< osl::Mutex, s_threadMap_mutex > {}; - struct s_threadMap : public rtl::Static< ThreadMap, s_threadMap > {}; -} - -static rtl::OUString s_uno_envDcp(RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO)); - -static void s_setCurrent(uno_Environment * pEnv) -{ - oslThreadIdentifier threadId = osl_getThreadIdentifier(NULL); - - osl::MutexGuard guard(s_threadMap_mutex::get()); - ThreadMap &rThreadMap = s_threadMap::get(); - if (pEnv) - rThreadMap[threadId] = pEnv; - - else - rThreadMap.erase(threadId); -} - -static uno_Environment * s_getCurrent(void) -{ - uno_Environment * pEnv = NULL; - - oslThreadIdentifier threadId = osl_getThreadIdentifier(NULL); - - osl::MutexGuard guard(s_threadMap_mutex::get()); - ThreadMap &rThreadMap = s_threadMap::get(); - ThreadMap::iterator iEnv = rThreadMap.find(threadId); - if(iEnv != rThreadMap.end()) - pEnv = iEnv->second; - - return pEnv; -} - - -extern "C" void SAL_CALL uno_getCurrentEnvironment(uno_Environment ** ppEnv, rtl_uString * pTypeName) - SAL_THROW_EXTERN_C() -{ - if (*ppEnv) - { - (*ppEnv)->release(*ppEnv); - *ppEnv = NULL; - } - - rtl::OUString currPurpose; - - uno_Environment * pCurrEnv = s_getCurrent(); - if (pCurrEnv) // no environment means no purpose - currPurpose = cppu::EnvDcp::getPurpose(pCurrEnv->pTypeName); - - if (pTypeName && rtl_uString_getLength(pTypeName)) - { - rtl::OUString envDcp(pTypeName); - envDcp += currPurpose; - - uno_getEnvironment(ppEnv, envDcp.pData, NULL); - } - else - { - if (pCurrEnv) - { - *ppEnv = pCurrEnv; - (*ppEnv)->acquire(*ppEnv); - } - else - uno_getEnvironment(ppEnv, s_uno_envDcp.pData, NULL); - - } -} - -static rtl::OUString s_getPrefix(rtl::OUString const & str1, rtl::OUString const & str2) -{ - sal_Int32 nIndex1 = 0; - sal_Int32 nIndex2 = 0; - sal_Int32 sim = 0; - - rtl::OUString token1; - rtl::OUString token2; - - do - { - token1 = str1.getToken(0, ':', nIndex1); - token2 = str2.getToken(0, ':', nIndex2); - - if (token1.equals(token2)) - sim += token1.getLength() + 1; - } - while(nIndex1 == nIndex2 && nIndex1 >= 0 && token1.equals(token2)); - - rtl::OUString result; - - if (sim) - result = str1.copy(0, sim - 1); - - return result; -} - -static int s_getNextEnv(uno_Environment ** ppEnv, uno_Environment * pCurrEnv, uno_Environment * pTargetEnv) -{ - int res = 0; - - rtl::OUString nextPurpose; - - rtl::OUString currPurpose; - if (pCurrEnv) - currPurpose = cppu::EnvDcp::getPurpose(pCurrEnv->pTypeName); - - rtl::OUString targetPurpose; - if (pTargetEnv) - targetPurpose = cppu::EnvDcp::getPurpose(pTargetEnv->pTypeName); - - rtl::OUString intermPurpose(s_getPrefix(currPurpose, targetPurpose)); - if (currPurpose.getLength() > intermPurpose.getLength()) - { - sal_Int32 idx = currPurpose.lastIndexOf(':'); - nextPurpose = currPurpose.copy(0, idx); - - res = -1; - } - else if (intermPurpose.getLength() < targetPurpose.getLength()) - { - sal_Int32 idx = targetPurpose.indexOf(':', intermPurpose.getLength() + 1); - if (idx == -1) - nextPurpose = targetPurpose; - - else - nextPurpose = targetPurpose.copy(0, idx); - - res = 1; - } - - if (nextPurpose.getLength()) - { - rtl::OUString next_envDcp(s_uno_envDcp); - next_envDcp += nextPurpose; - - uno_getEnvironment(ppEnv, next_envDcp.pData, NULL); - } - else - { - if (*ppEnv) - (*ppEnv)->release(*ppEnv); - - *ppEnv = NULL; - } - - return res; -} - -extern "C" { static void s_pull(va_list * pParam) -{ - uno_EnvCallee * pCallee = va_arg(*pParam, uno_EnvCallee *); - va_list * pXparam = va_arg(*pParam, va_list *); - - pCallee(pXparam); -}} - -static void s_callInto_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list * pParam) -{ - cppu::Enterable * pEnterable = reinterpret_cast(pEnv->pReserved); - if (pEnterable) - pEnterable->callInto(s_pull, pCallee, pParam); - - else - pCallee(pParam); -} - -static void s_callInto(uno_Environment * pEnv, uno_EnvCallee * pCallee, ...) -{ - va_list param; - - va_start(param, pCallee); - s_callInto_v(pEnv, pCallee, ¶m); - va_end(param); -} - -static void s_callOut_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list * pParam) -{ - cppu::Enterable * pEnterable = reinterpret_cast(pEnv->pReserved); - if (pEnterable) - pEnterable->callOut_v(pCallee, pParam); - - else - pCallee(pParam); -} - -static void s_callOut(uno_Environment * pEnv, uno_EnvCallee * pCallee, ...) -{ - va_list param; - - va_start(param, pCallee); - s_callOut_v(pEnv, pCallee, ¶m); - va_end(param); -} - -static void s_environment_invoke_v(uno_Environment *, uno_Environment *, uno_EnvCallee *, va_list *); - -extern "C" { static void s_environment_invoke_vv(va_list * pParam) -{ - uno_Environment * pCurrEnv = va_arg(*pParam, uno_Environment *); - uno_Environment * pTargetEnv = va_arg(*pParam, uno_Environment *); - uno_EnvCallee * pCallee = va_arg(*pParam, uno_EnvCallee *); - va_list * pXparam = va_arg(*pParam, va_list *); - - s_environment_invoke_v(pCurrEnv, pTargetEnv, pCallee, pXparam); -}} - -static void s_environment_invoke_v(uno_Environment * pCurrEnv, uno_Environment * pTargetEnv, uno_EnvCallee * pCallee, va_list * pParam) -{ - uno_Environment * pNextEnv = NULL; - switch(s_getNextEnv(&pNextEnv, pCurrEnv, pTargetEnv)) - { - case -1: - s_setCurrent(pNextEnv); - s_callOut(pCurrEnv, s_environment_invoke_vv, pNextEnv, pTargetEnv, pCallee, pParam); - s_setCurrent(pCurrEnv); - break; - - case 0: { - uno_Environment * hld = s_getCurrent(); - s_setCurrent(pCurrEnv); - pCallee(pParam); - s_setCurrent(hld); - } - break; - - case 1: - s_setCurrent(pNextEnv); - s_callInto(pNextEnv, s_environment_invoke_vv, pNextEnv, pTargetEnv, pCallee, pParam); - s_setCurrent(pCurrEnv); - break; - } - - if (pNextEnv) - pNextEnv->release(pNextEnv); -} - -extern "C" void SAL_CALL uno_Environment_invoke_v(uno_Environment * pTargetEnv, uno_EnvCallee * pCallee, va_list * pParam) - SAL_THROW_EXTERN_C() -{ - s_environment_invoke_v(s_getCurrent(), pTargetEnv, pCallee, pParam); -} - -extern "C" void SAL_CALL uno_Environment_invoke(uno_Environment * pEnv, uno_EnvCallee * pCallee, ...) - SAL_THROW_EXTERN_C() -{ - va_list param; - - va_start(param, pCallee); - uno_Environment_invoke_v(pEnv, pCallee, ¶m); - va_end(param); -} - -extern "C" void SAL_CALL uno_Environment_enter(uno_Environment * pTargetEnv) - SAL_THROW_EXTERN_C() -{ - uno_Environment * pNextEnv = NULL; - uno_Environment * pCurrEnv = s_getCurrent(); - - int res; - while ( (res = s_getNextEnv(&pNextEnv, pCurrEnv, pTargetEnv)) != 0) - { - cppu::Enterable * pEnterable; - - switch(res) - { - case -1: - pEnterable = reinterpret_cast(pCurrEnv->pReserved); - if (pEnterable) - pEnterable->leave(); - pCurrEnv->release(pCurrEnv); - break; - - case 1: - pNextEnv->acquire(pNextEnv); - pEnterable = reinterpret_cast(pNextEnv->pReserved); - if (pEnterable) - pEnterable->enter(); - break; - } - - s_setCurrent(pNextEnv); - pCurrEnv = pNextEnv; - } -} - -int SAL_CALL uno_Environment_isValid(uno_Environment * pEnv, rtl_uString ** pReason) - SAL_THROW_EXTERN_C() -{ - int result = 1; - - rtl::OUString typeName(cppu::EnvDcp::getTypeName(pEnv->pTypeName)); - if (typeName.equals(s_uno_envDcp)) - { - cppu::Enterable * pEnterable = reinterpret_cast(pEnv->pReserved); - if (pEnterable) - result = pEnterable->isValid((rtl::OUString *)pReason); - } - else - { - rtl::OUString envDcp(s_uno_envDcp); - envDcp += cppu::EnvDcp::getPurpose(pEnv->pTypeName); - - uno::Environment env(envDcp); - - result = env.isValid((rtl::OUString *)pReason); - } - - return result; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/IdentityMapping.cxx b/cppu/source/uno/IdentityMapping.cxx deleted file mode 100644 index 3b82e2ba3..000000000 --- a/cppu/source/uno/IdentityMapping.cxx +++ /dev/null @@ -1,109 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "IdentityMapping.hxx" - -#include "uno/mapping.h" -#include "uno/environment.hxx" - -#include "osl/interlck.h" - - -using namespace ::com::sun::star; - -struct IdentityMapping : public uno_Mapping -{ - sal_Int32 m_nRef; - uno::Environment m_env; - - IdentityMapping(uno::Environment const & rEnv); -}; - -extern "C" -{ - -static void SAL_CALL s_free(uno_Mapping * pMapping) SAL_THROW(()) -{ - delete static_cast(pMapping); -} - -static void SAL_CALL s_acquire(uno_Mapping * pMapping) SAL_THROW(()) -{ - static rtl::OUString s_purpose; - - if (1 == ::osl_incrementInterlockedCount(&static_cast(pMapping)->m_nRef)) - { - uno_registerMapping( - &pMapping, - s_free, - static_cast(pMapping)->m_env.get(), - static_cast(pMapping)->m_env.get(), - s_purpose.pData); - } -} - -static void SAL_CALL s_release(uno_Mapping * pMapping) SAL_THROW(()) -{ - if (!::osl_decrementInterlockedCount(&static_cast(pMapping )->m_nRef)) - uno_revokeMapping(pMapping); -} - -static void SAL_CALL s_mapInterface(uno_Mapping * pMapping, - void ** ppOut, - void * pInterface, - struct _typelib_InterfaceTypeDescription * /*pInterfaceTypeDescr*/) - SAL_THROW(()) -{ - *ppOut = pInterface; - - if (pInterface) - { - IdentityMapping * that = static_cast(pMapping); - - (that->m_env.get()->pExtEnv->acquireInterface)(that->m_env.get()->pExtEnv, pInterface); - } -} -} - - -IdentityMapping::IdentityMapping(uno::Environment const & rEnv) - : m_nRef(0), - m_env(rEnv) -{ - uno_Mapping::acquire = s_acquire; - uno_Mapping::release = s_release; - uno_Mapping::mapInterface = s_mapInterface; -} - - -uno_Mapping * createIdentityMapping(uno::Environment const & rEnv) SAL_THROW(()) -{ - return new IdentityMapping(rEnv); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/IdentityMapping.hxx b/cppu/source/uno/IdentityMapping.hxx deleted file mode 100644 index ccd1e4834..000000000 --- a/cppu/source/uno/IdentityMapping.hxx +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_IdentityMapping_hxx -#define INCLUDED_IdentityMapping_hxx - -#include "uno/mapping.h" - -namespace com { namespace sun { namespace star { namespace uno { -class Environment; -}}}} - -uno_Mapping * createIdentityMapping(const ::com::sun::star::uno::Environment & rEnv); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/any.cxx b/cppu/source/uno/any.cxx deleted file mode 100644 index 4dfd08e80..000000000 --- a/cppu/source/uno/any.cxx +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "copy.hxx" -#include "destr.hxx" - -using namespace cppu; - - -extern "C" -{ -//################################################################################################## -void SAL_CALL uno_type_any_assign( - uno_Any * pDest, void * pSource, - typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - _destructAny( pDest, release ); - if (pType) - { - _copyConstructAny( pDest, pSource, pType, 0, acquire, 0 ); - } - else - { - CONSTRUCT_EMPTY_ANY( pDest ); - } -} -//################################################################################################## -void SAL_CALL uno_any_assign( - uno_Any * pDest, void * pSource, - typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - _destructAny( pDest, release ); - if (pTypeDescr) - { - _copyConstructAny( pDest, pSource, pTypeDescr->pWeakRef, pTypeDescr, acquire, 0 ); - } - else - { - CONSTRUCT_EMPTY_ANY( pDest ); - } -} -//################################################################################################## -void SAL_CALL uno_type_any_construct( - uno_Any * pDest, void * pSource, - typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C() -{ - if (pType) - { - _copyConstructAny( pDest, pSource, pType, 0, acquire, 0 ); - } - else - { - CONSTRUCT_EMPTY_ANY( pDest ); - } -} -//################################################################################################## -void SAL_CALL uno_any_construct( - uno_Any * pDest, void * pSource, - typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C() -{ - if (pTypeDescr) - { - _copyConstructAny( pDest, pSource, pTypeDescr->pWeakRef, pTypeDescr, acquire, 0 ); - } - else - { - CONSTRUCT_EMPTY_ANY( pDest ); - } -} -//################################################################################################## -void SAL_CALL uno_type_any_constructAndConvert( - uno_Any * pDest, void * pSource, - typelib_TypeDescriptionReference * pType, - uno_Mapping * mapping ) - SAL_THROW_EXTERN_C() -{ - if (pType) - { - _copyConstructAny( pDest, pSource, pType, 0, 0, mapping ); - } - else - { - CONSTRUCT_EMPTY_ANY( pDest ); - } -} -//################################################################################################## -void SAL_CALL uno_any_constructAndConvert( - uno_Any * pDest, void * pSource, - typelib_TypeDescription * pTypeDescr, - uno_Mapping * mapping ) - SAL_THROW_EXTERN_C() -{ - if (pTypeDescr) - { - _copyConstructAny( pDest, pSource, pTypeDescr->pWeakRef, pTypeDescr, 0, mapping ); - } - else - { - CONSTRUCT_EMPTY_ANY( pDest ); - } -} -//################################################################################################## -void SAL_CALL uno_any_destruct( uno_Any * pValue, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - _destructAny( pValue, release ); -} -//################################################################################################## -void SAL_CALL uno_any_clear( uno_Any * pValue, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - _destructAny( pValue, release ); - CONSTRUCT_EMPTY_ANY( pValue ); -} -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/assign.hxx b/cppu/source/uno/assign.hxx deleted file mode 100644 index c7aa7cb9c..000000000 --- a/cppu/source/uno/assign.hxx +++ /dev/null @@ -1,638 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef ASSIGN_HXX -#define ASSIGN_HXX - -#include "prim.hxx" -#include "destr.hxx" -#include "constr.hxx" -#include "copy.hxx" - - -namespace cppu -{ - -//################################################################################################## -//#### assignment ################################################################################## -//################################################################################################## - - -//-------------------------------------------------------------------------------------------------- -inline void _assignInterface( - void ** ppDest, void * pSource, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - _acquire( pSource, acquire ); - void * const pToBeReleased = *ppDest; - *ppDest = pSource; - _release( pToBeReleased, release ); -} -//-------------------------------------------------------------------------------------------------- -inline void * _queryInterface( - void * pSource, - typelib_TypeDescriptionReference * pDestType, - uno_QueryInterfaceFunc queryInterface ) - SAL_THROW( () ) -{ - if (pSource) - { - if (0 == queryInterface) - queryInterface = binuno_queryInterface; - pSource = (*queryInterface)( pSource, pDestType ); - } - return pSource; -} -//================================================================================================== -sal_Bool assignStruct( - void * pDest, void * pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW( () ); -//-------------------------------------------------------------------------------------------------- -inline sal_Bool _assignStruct( - void * pDest, void * pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - if (pTypeDescr->pBaseTypeDescription) - { - // copy base value - if (! assignStruct( pDest, pSource, pTypeDescr->pBaseTypeDescription, - queryInterface, acquire, release )) - { - return sal_False; - } - } - // then copy members - typelib_TypeDescriptionReference ** ppTypeRefs = pTypeDescr->ppTypeRefs; - sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets; - sal_Int32 nDescr = pTypeDescr->nMembers; - while (nDescr--) - { - if (! ::uno_type_assignData( (char *)pDest + pMemberOffsets[nDescr], - ppTypeRefs[nDescr], - (char *)pSource + pMemberOffsets[nDescr], - ppTypeRefs[nDescr], - queryInterface, acquire, release )) - { - return sal_False; - } - } - 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++) - { - ::rtl_copyMemory((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_incrementInterlockedCount( - &(*((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, - void * pSource, - typelib_TypeDescriptionReference * pSourceType, typelib_TypeDescription * pSourceTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - if (pDest == pSource) - return _type_equals( pDestType, pSourceType ); - - if (! pSource) - { - _destructData( pDest, pDestType, pDestTypeDescr, release ); - _defaultConstructData( pDest, pDestType, pDestTypeDescr ); - return sal_True; - } - while (typelib_TypeClass_ANY == pSourceType->eTypeClass) - { - pSourceTypeDescr = 0; - pSourceType = ((uno_Any *)pSource)->pType; - pSource = ((uno_Any *)pSource)->pData; - if (pDest == pSource) - return sal_True; - } - - switch (pDestType->eTypeClass) - { - case typelib_TypeClass_VOID: - return pSourceType->eTypeClass == typelib_TypeClass_VOID; - case typelib_TypeClass_CHAR: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_CHAR: - *(sal_Unicode *)pDest = *(sal_Unicode *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_BOOLEAN: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BOOLEAN: - *(sal_Bool *)pDest = (*(sal_Bool *)pSource != sal_False); - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_BYTE: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_Int8 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_SHORT: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_Int16 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_Int16 *)pDest = *(sal_Int16 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_UNSIGNED_SHORT: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_uInt16 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_uInt16 *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_LONG: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_Int32 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - *(sal_Int32 *)pDest = *(sal_Int16 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_Int32 *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - *(sal_Int32 *)pDest = *(sal_Int32 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_UNSIGNED_LONG: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_uInt32 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - *(sal_uInt32 *)pDest = *(sal_Int16 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_uInt32 *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - *(sal_uInt32 *)pDest = *(sal_uInt32 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_HYPER: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_Int64 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - *(sal_Int64 *)pDest = *(sal_Int16 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_Int64 *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - case typelib_TypeClass_LONG: - *(sal_Int64 *)pDest = *(sal_Int32 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_LONG: - *(sal_Int64 *)pDest = *(sal_uInt32 *)pSource; - return sal_True; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - *(sal_Int64 *)pDest = *(sal_Int64 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_UNSIGNED_HYPER: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(sal_uInt64 *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - *(sal_uInt64 *)pDest = *(sal_Int16 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_uInt64 *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - case typelib_TypeClass_LONG: - *(sal_uInt64 *)pDest = *(sal_Int32 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_LONG: - *(sal_uInt64 *)pDest = *(sal_uInt32 *)pSource; - return sal_True; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - *(sal_uInt64 *)pDest = *(sal_uInt64 *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_FLOAT: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(float *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - *(float *)pDest = *(sal_Int16 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - *(float *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - case typelib_TypeClass_FLOAT: - *(float *)pDest = *(float *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_DOUBLE: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_BYTE: - *(double *)pDest = *(sal_Int8 *)pSource; - return sal_True; - case typelib_TypeClass_SHORT: - *(double *)pDest = *(sal_Int16 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_SHORT: - *(double *)pDest = *(sal_uInt16 *)pSource; - return sal_True; - case typelib_TypeClass_LONG: - *(double *)pDest = *(sal_Int32 *)pSource; - return sal_True; - case typelib_TypeClass_UNSIGNED_LONG: - *(double *)pDest = *(sal_uInt32 *)pSource; - return sal_True; - case typelib_TypeClass_FLOAT: - *(double *)pDest = *(float *)pSource; - return sal_True; - case typelib_TypeClass_DOUBLE: - *(double *)pDest = *(double *)pSource; - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_STRING: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_STRING: - ::rtl_uString_assign( (rtl_uString **)pDest, *(rtl_uString **)pSource ); - return sal_True; - default: - return sal_False; - } - case typelib_TypeClass_TYPE: - switch (pSourceType->eTypeClass) - { - case typelib_TypeClass_TYPE: - { - typelib_TypeDescriptionReference ** pp = (typelib_TypeDescriptionReference **)pDest; - ::typelib_typedescriptionreference_release( *pp ); - *pp = *(typelib_TypeDescriptionReference **)pSource; - TYPE_ACQUIRE( *pp ); - return sal_True; - } - default: - return sal_False; - } - case typelib_TypeClass_ANY: - _destructAny( (uno_Any *)pDest, release ); - _copyConstructAny( (uno_Any *)pDest, pSource, pSourceType, pSourceTypeDescr, acquire, 0 ); - return sal_True; - case typelib_TypeClass_ENUM: - if (_type_equals( pDestType, pSourceType )) - { - *(sal_Int32 *)pDest = *(sal_Int32 *)pSource; - return sal_True; - } - return sal_False; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (typelib_TypeClass_STRUCT == pSourceType->eTypeClass || - typelib_TypeClass_EXCEPTION == pSourceType->eTypeClass) - { - sal_Bool bRet = sal_False; - if (pSourceTypeDescr) - { - typelib_CompoundTypeDescription * pTypeDescr = - (typelib_CompoundTypeDescription *)pSourceTypeDescr; - while (pTypeDescr && - !_type_equals( - ((typelib_TypeDescription *)pTypeDescr)->pWeakRef, pDestType )) - { - pTypeDescr = pTypeDescr->pBaseTypeDescription; - } - if (pTypeDescr) - { - bRet = _assignStruct( - pDest, pSource, pTypeDescr, queryInterface, acquire, release ); - } - } - else - { - TYPELIB_DANGER_GET( &pSourceTypeDescr, pSourceType ); - typelib_CompoundTypeDescription * pTypeDescr = - (typelib_CompoundTypeDescription *)pSourceTypeDescr; - while (pTypeDescr && - !_type_equals( - ((typelib_TypeDescription *)pTypeDescr)->pWeakRef, pDestType )) - { - pTypeDescr = pTypeDescr->pBaseTypeDescription; - } - if (pTypeDescr) - { - bRet = _assignStruct( - pDest, pSource, pTypeDescr, queryInterface, acquire, release ); - } - TYPELIB_DANGER_RELEASE( pSourceTypeDescr ); - } - 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; - // self assignment: - if (*(uno_Sequence **)pSource == *(uno_Sequence **)pDest) - return sal_True; - if (_type_equals( pDestType, pSourceType )) - { - ::osl_incrementInterlockedCount( - &(*(uno_Sequence **)pSource)->nRefCount ); - idestructSequence( - *(uno_Sequence **)pDest, pDestType, pDestTypeDescr, release ); - *(uno_Sequence **)pDest = *(uno_Sequence **)pSource; - return sal_True; - } - return sal_False; - case typelib_TypeClass_INTERFACE: - if (typelib_TypeClass_INTERFACE != pSourceType->eTypeClass) - return sal_False; - if (_type_equals( pDestType, pSourceType )) - { - _assignInterface( (void **)pDest, *(void **)pSource, acquire, release ); - return sal_True; - } - else if (*static_cast< void ** >(pSource) == 0) - { - // A null reference of any interface type can be converted to a null - // reference of any other interface type: - void * const pToBeReleased = *static_cast< void ** >(pDest); - *static_cast< void ** >(pDest) = 0; - _release( pToBeReleased, release ); - return true; - } - else - { - if (pSourceTypeDescr) - { - typelib_TypeDescription * pTD = pSourceTypeDescr; - while (pTD && !_type_equals( pTD->pWeakRef, pDestType )) - { - pTD = (typelib_TypeDescription *) - ((typelib_InterfaceTypeDescription *)pTD)->pBaseTypeDescription; - } - if (pTD) // is base of dest - { - _assignInterface( (void **)pDest, *(void **)pSource, acquire, release ); - return true; - } - } - - // query for interface: - void * pQueried = _queryInterface( *static_cast(pSource), - pDestType, queryInterface ); - if (pQueried != 0) { - void * const pToBeReleased = *static_cast(pDest); - *static_cast(pDest) = pQueried; - _release( pToBeReleased, release ); - } - return (pQueried != 0); - } - default: - OSL_ASSERT(false); - return sal_False; - } -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/cascade_mapping.cxx b/cppu/source/uno/cascade_mapping.cxx deleted file mode 100644 index 560d5330e..000000000 --- a/cppu/source/uno/cascade_mapping.cxx +++ /dev/null @@ -1,339 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "osl/interlck.h" -#include "rtl/ustring.hxx" -#include "uno/environment.hxx" -#include "uno/mapping.hxx" -#include "uno/dispatcher.h" - -#include "cppu/EnvDcp.hxx" - - -#ifdef LOG_LIFECYLE_MediatorMapping -# include -# define LOG_LIFECYLE_MediatorMapping_emit(x) x - -#else -# define LOG_LIFECYLE_MediatorMapping_emit(x) - -#endif - - -using namespace com::sun::star; - -class MediatorMapping : public uno_Mapping -{ - oslInterlockedCount m_refCount; - - uno::Mapping m_from2uno; - uno::Mapping m_uno2to; - - uno::Environment m_from; - uno::Environment m_interm; - uno::Environment m_to; - -public: - void acquire(void); - void release(void); - - void mapInterface(void ** ppOut, - void * pInterface, - typelib_InterfaceTypeDescription * pInterfaceTypeDescr); - MediatorMapping(uno_Environment * pFrom, - uno_Environment * pInterm, - uno_Environment * pTo); - ~MediatorMapping(); -}; - -extern "C" { -static void SAL_CALL s_acquire(uno_Mapping * mapping) -{ - MediatorMapping * pMediatorMapping = static_cast(mapping); - pMediatorMapping->acquire(); -} - -static void SAL_CALL s_release(uno_Mapping * mapping) -{ - MediatorMapping * pMediatorMapping = static_cast(mapping); - pMediatorMapping->release(); -} - -static void SAL_CALL s_mapInterface( - uno_Mapping * mapping, - void ** ppOut, - void * pInterface, - typelib_InterfaceTypeDescription * pInterfaceTypeDescr) -{ - MediatorMapping * pMediatorMapping = static_cast(mapping); - pMediatorMapping->mapInterface(ppOut, pInterface, pInterfaceTypeDescr); -} -} - -MediatorMapping::MediatorMapping(uno_Environment * pFrom, - uno_Environment * pInterm, - uno_Environment * pTo) - : m_refCount(0), - m_from2uno(pFrom, pInterm), - m_uno2to (pInterm, pTo), - m_from (pFrom), - m_interm (pInterm), - m_to (pTo) -{ - LOG_LIFECYLE_MediatorMapping_emit(std::cerr << __FUNCTION__ << std::endl); - - if (!m_from2uno.get() || !m_uno2to.get()) - abort(); - - uno_Mapping::acquire = s_acquire; - uno_Mapping::release = s_release; - uno_Mapping::mapInterface = s_mapInterface; -} - -MediatorMapping::~MediatorMapping() -{ - LOG_LIFECYLE_MediatorMapping_emit(std::cerr << __FUNCTION__ << std::endl); -} - -void MediatorMapping::acquire(void) -{ - LOG_LIFECYLE_MediatorMapping_emit(std::cerr << __FUNCTION__ << std::endl); - - osl_incrementInterlockedCount(&m_refCount); -} - -void MediatorMapping::release(void) -{ - LOG_LIFECYLE_MediatorMapping_emit(std::cerr << __FUNCTION__ << std::endl); - - if (osl_decrementInterlockedCount(&m_refCount) == 0) - { - ::uno_revokeMapping(this); - } -} - -extern "C" { static void s_mapInterface_v(va_list * pParam) -{ - void ** ppOut = va_arg(*pParam, void **); - void * pInterface = va_arg(*pParam, void *); - typelib_InterfaceTypeDescription * pInterfaceTypeDescr = va_arg(*pParam, typelib_InterfaceTypeDescription *); - uno_Mapping * pMapping = va_arg(*pParam, uno_Mapping *); - - pMapping->mapInterface(pMapping, ppOut, pInterface, pInterfaceTypeDescr); -}} - -void MediatorMapping::mapInterface( - void ** ppOut, - void * pInterface, - typelib_InterfaceTypeDescription * pInterfaceTypeDescr) -{ - if (*ppOut != 0) - { - uno_ExtEnvironment * env = m_to.get()->pExtEnv; - OSL_ASSERT( env != 0 ); - env->releaseInterface( env, *ppOut ); - *ppOut = NULL; - } - - void * ret = 0; - uno_Interface * pUnoI = 0; - - m_from.invoke(s_mapInterface_v, &pUnoI, pInterface, pInterfaceTypeDescr, m_from2uno.get()); - - m_uno2to.mapInterface(&ret, pUnoI, pInterfaceTypeDescr); - - if (pUnoI) - m_interm.get()->pExtEnv->releaseInterface(m_interm.get()->pExtEnv, pUnoI); - - *ppOut = ret; -} - -extern "C" { static void SAL_CALL s_MediatorMapping_free(uno_Mapping * pMapping) - SAL_THROW_EXTERN_C() -{ - delete static_cast(pMapping); -}} - - - -static rtl::OUString getPrefix(rtl::OUString const & str1, rtl::OUString const & str2) -{ - sal_Int32 nIndex1 = 0; - sal_Int32 nIndex2 = 0; - sal_Int32 sim = 0; - - rtl::OUString token1; - rtl::OUString token2; - - do - { - token1 = str1.getToken(0, ':', nIndex1); - token2 = str2.getToken(0, ':', nIndex2); - - if (token1.equals(token2)) - sim += token1.getLength() + 1; - } - while(nIndex1 == nIndex2 && nIndex1 >= 0 && token1.equals(token2)); - - rtl::OUString result; - - if (sim) - result = str1.copy(0, sim - 1); - - return result; -} - -// rtl::OUString str1(RTL_CONSTASCII_USTRINGPARAM("abc:def:ghi")); -// rtl::OUString str2(RTL_CONSTASCII_USTRINGPARAM("abc:def")); -// rtl::OUString str3(RTL_CONSTASCII_USTRINGPARAM("abc")); -// rtl::OUString str4(RTL_CONSTASCII_USTRINGPARAM("")); - -// rtl::OUString pref; - -// pref = getPrefix(str1, str1); -// pref = getPrefix(str1, str2); -// pref = getPrefix(str1, str3); -// pref = getPrefix(str1, str4); - -// pref = getPrefix(str2, str1); -// pref = getPrefix(str3, str1); -// pref = getPrefix(str4, str1); - - -void getCascadeMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo, - rtl_uString * pAddPurpose) -{ - if (pAddPurpose && pAddPurpose->length) - return; - - rtl::OUString uno_envType(RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO)); - - rtl::OUString from_envType = cppu::EnvDcp::getTypeName(pFrom->pTypeName); - rtl::OUString to_envType = cppu::EnvDcp::getTypeName(pTo->pTypeName); - rtl::OUString from_envPurpose = cppu::EnvDcp::getPurpose(pFrom->pTypeName); - rtl::OUString to_envPurpose = cppu::EnvDcp::getPurpose(pTo->pTypeName); - -#ifdef LOG_CALLING_named_purpose_getMapping - rtl::OString s_from_name = rtl::OUStringToOString(pFrom->pTypeName, RTL_TEXTENCODING_ASCII_US); - rtl::OString s_to_name = rtl::OUStringToOString(pTo->pTypeName, RTL_TEXTENCODING_ASCII_US); - - std::cerr << __FUNCTION__ << " - creating mediation "; - std::cerr << "pFrom: " << s_from_name.getStr(); - std::cerr <<" pTo: " << s_to_name.getStr() << std::endl; -#endif - - if (from_envPurpose == to_envPurpose) // gcc:bla => uno:bla - return; - - // reaching this point means, we need a mediated mapping!!! - // we generall mediate via uno[:free] - uno_Environment * pInterm = NULL; - - // chained uno -> uno - if (from_envType == uno_envType && to_envType == uno_envType) - { - rtl::OUString purpose = getPrefix(from_envPurpose, to_envPurpose); - - rtl::OUString uno_envDcp = uno_envType; - uno_envDcp += purpose; - - // direct mapping possible? - // uno:bla-->uno:bla:blubb - if (from_envPurpose.equals(purpose)) - { - rtl::OUString rest = to_envPurpose.copy(purpose.getLength()); - - sal_Int32 index = rest.indexOf(':', 1); - if (index == -1) - { - uno_getMapping(ppMapping, pFrom, pTo, rest.copy(1).pData); - return; - } - - uno_envDcp += rest.copy(0, index); - } - else if (to_envPurpose.equals(purpose)) - { - rtl::OUString rest = from_envPurpose.copy(purpose.getLength()); - - sal_Int32 index = rest.indexOf(':', 1); - if (index == -1) - { - uno_getMapping(ppMapping, pFrom, pTo, rest.copy(1).pData); - return; - } - - uno_envDcp += rest.copy(0, index); - } - - uno_getEnvironment(&pInterm, uno_envDcp.pData, NULL); - } - else if (from_envType != uno_envType && to_envType == uno_envType) // -> UNO ? - // mediate via uno:purpose(fromEnv) - { - rtl::OUString envDcp = uno_envType; - - envDcp += from_envPurpose; - uno_getEnvironment(&pInterm, envDcp.pData, NULL); - } - else if (from_envType == uno_envType && to_envType != uno_envType) // UNO -> ? - // mediate via uno(context) - { - rtl::OUString envDcp = uno_envType; - - envDcp += to_envPurpose; - uno_getEnvironment(&pInterm, envDcp.pData, NULL); - } - else // everything else - // mediate via uno:purpose - { - rtl::OUString purpose = getPrefix(from_envPurpose, to_envPurpose); - - rtl::OUString uno_envDcp = uno_envType; - uno_envDcp += purpose; - - uno_getEnvironment(&pInterm, uno_envDcp.pData, NULL); - } - - uno_Mapping * pMapping = new MediatorMapping(pFrom, pInterm, pTo); - pInterm->release(pInterm); - - - pMapping->acquire(pMapping); - - ::uno_registerMapping(&pMapping, s_MediatorMapping_free, pFrom, pTo, pAddPurpose); - - if (*ppMapping) - (*ppMapping)->release(*ppMapping); - - *ppMapping = pMapping; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/cascade_mapping.hxx b/cppu/source/uno/cascade_mapping.hxx deleted file mode 100644 index db826705e..000000000 --- a/cppu/source/uno/cascade_mapping.hxx +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_cascade_mapping_hxx -#define INCLUDED_cascade_mapping_hxx - -#include "uno/environment.h" -#include "uno/mapping.h" -#include "rtl/ustring.h" - - -void getCascadeMapping(uno_Mapping ** ppMapping, - uno_Environment * pFrom, - uno_Environment * pTo, - rtl_uString * pAddPurpose ); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/constr.hxx b/cppu/source/uno/constr.hxx deleted file mode 100644 index 5a9f27d17..000000000 --- a/cppu/source/uno/constr.hxx +++ /dev/null @@ -1,270 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef CONSTR_HXX -#define CONSTR_HXX - -#include "prim.hxx" - - -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, - typelib_CompoundTypeDescription * pCompType ) - SAL_THROW( () ); -//-------------------------------------------------------------------------------------------------- -inline void _defaultConstructStruct( - void * pMem, - typelib_CompoundTypeDescription * pTypeDescr ) - SAL_THROW( () ) -{ - if (pTypeDescr->pBaseTypeDescription) - { - defaultConstructStruct( pMem, pTypeDescr->pBaseTypeDescription ); - } - - typelib_TypeDescriptionReference ** ppTypeRefs = (pTypeDescr)->ppTypeRefs; - sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets; - sal_Int32 nDescr = pTypeDescr->nMembers; - - while (nDescr--) - { - ::uno_type_constructData( (char *)pMem + pMemberOffsets[nDescr], ppTypeRefs[nDescr] ); - } -} - -//-------------------------------------------------------------------------------------------------- -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: - ::rtl_zeroMemory(pMem, 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, - typelib_TypeDescription * pTypeDescr ) - SAL_THROW( () ) -{ - switch (pType->eTypeClass) - { - case typelib_TypeClass_CHAR: - *(sal_Unicode *)pMem = '\0'; - break; - case typelib_TypeClass_BOOLEAN: - *(sal_Bool *)pMem = sal_False; - break; - case typelib_TypeClass_BYTE: - *(sal_Int8 *)pMem = 0; - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_Int16 *)pMem = 0; - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - *(sal_Int32 *)pMem = 0; - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - *(sal_Int64 *)pMem = 0; - break; - case typelib_TypeClass_FLOAT: - *(float *)pMem = 0.0; - break; - case typelib_TypeClass_DOUBLE: - *(double *)pMem = 0.0; - break; - case typelib_TypeClass_STRING: - *(rtl_uString **)pMem = 0; - ::rtl_uString_new( (rtl_uString **)pMem ); - break; - case typelib_TypeClass_TYPE: - *(typelib_TypeDescriptionReference **)pMem = _getVoidType(); - break; - case typelib_TypeClass_ANY: - CONSTRUCT_EMPTY_ANY( (uno_Any *)pMem ); - break; - case typelib_TypeClass_ENUM: - if (pTypeDescr) - { - *(sal_Int32 *)pMem = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue; - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - *(sal_Int32 *)pMem = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue; - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (pTypeDescr) - { - _defaultConstructStruct( pMem, (typelib_CompoundTypeDescription *)pTypeDescr ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - _defaultConstructStruct( pMem, (typelib_CompoundTypeDescription *)pTypeDescr ); - 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; - case typelib_TypeClass_INTERFACE: - *(void **)pMem = 0; // either cpp or c-uno interface - break; - default: - OSL_ASSERT(false); - break; - } -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/copy.hxx b/cppu/source/uno/copy.hxx deleted file mode 100644 index 42796856f..000000000 --- a/cppu/source/uno/copy.hxx +++ /dev/null @@ -1,889 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef COPY_HXX -#define COPY_HXX - -#include "prim.hxx" -#include "constr.hxx" - - -namespace cppu -{ - -//################################################################################################## -//#### copy construction ########################################################################### -//################################################################################################## - -//------------------------------------------------------------------------------ -inline uno_Sequence * allocSeq( - sal_Int32 nElementSize, sal_Int32 nElements ) -{ - OSL_ASSERT( nElements >= 0 && nElementSize >= 0 ); - uno_Sequence * pSeq = 0; - sal_uInt32 nSize = calcSeqMemSize( nElementSize, nElements ); - if (nSize > 0) - { - pSeq = (uno_Sequence *) rtl_allocateMemory( nSize ); - if (pSeq != 0) - { - // header init - pSeq->nRefCount = 1; - pSeq->nElements = nElements; - } - } - return pSeq; -} - -//-------------------------------------------------------------------------------------------------- -void copyConstructStruct( - void * pDest, void * pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_Mapping * mapping ) - SAL_THROW ( () ); -//-------------------------------------------------------------------------------------------------- -inline void _copyConstructStruct( - void * pDest, void * pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_Mapping * mapping ) - SAL_THROW ( () ) -{ - if (pTypeDescr->pBaseTypeDescription) - { - // copy base value - copyConstructStruct( pDest, pSource, pTypeDescr->pBaseTypeDescription, acquire, mapping ); - } - - // then copy members - typelib_TypeDescriptionReference ** ppTypeRefs = pTypeDescr->ppTypeRefs; - sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets; - sal_Int32 nDescr = pTypeDescr->nMembers; - - if (mapping) - { - while (nDescr--) - { - ::uno_type_copyAndConvertData( - (char *)pDest + pMemberOffsets[nDescr], - (char *)pSource + pMemberOffsets[nDescr], - ppTypeRefs[nDescr], mapping ); - } - } - else - { - while (nDescr--) - { - ::uno_type_copyData( - (char *)pDest + pMemberOffsets[nDescr], - (char *)pSource + pMemberOffsets[nDescr], - ppTypeRefs[nDescr], acquire ); - } - } -} -//-------------------------------------------------------------------------------------------------- -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( - uno_Sequence * pSource, - typelib_TypeDescriptionReference * pElementType, - uno_AcquireFunc acquire, uno_Mapping * mapping ); - -//-------------------------------------------------------------------------------------------------- -inline void _copyConstructAnyFromData( - uno_Any * pDestAny, void * pSource, - typelib_TypeDescriptionReference * pType, typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_Mapping * mapping ) - SAL_THROW ( () ) -{ - TYPE_ACQUIRE( pType ); - pDestAny->pType = pType; - - switch (pType->eTypeClass) - { - case typelib_TypeClass_CHAR: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Unicode *)&pDestAny->pReserved = *(sal_Unicode *)pSource; - break; - case typelib_TypeClass_BOOLEAN: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Bool *)&pDestAny->pReserved = (*(sal_Bool *)pSource != sal_False); - break; - case typelib_TypeClass_BYTE: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int8 *)&pDestAny->pReserved = *(sal_Int8 *)pSource; - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int16 *)&pDestAny->pReserved = *(sal_Int16 *)pSource; - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int32 *)&pDestAny->pReserved = *(sal_Int32 *)pSource; - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - if (sizeof(void *) >= sizeof(sal_Int64)) - { - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int64 *)&pDestAny->pReserved = *(sal_Int64 *)pSource; - } - else - { - pDestAny->pData = ::rtl_allocateMemory( sizeof(sal_Int64) ); - *(sal_Int64 *)pDestAny->pData = *(sal_Int64 *)pSource; - } - break; - case typelib_TypeClass_FLOAT: - if (sizeof(void *) >= sizeof(float)) - { - pDestAny->pData = &pDestAny->pReserved; - *(float *)&pDestAny->pReserved = *(float *)pSource; - } - else - { - pDestAny->pData = ::rtl_allocateMemory( sizeof(float) ); - *(float *)pDestAny->pData = *(float *)pSource; - } - break; - case typelib_TypeClass_DOUBLE: - if (sizeof(void *) >= sizeof(double)) - { - pDestAny->pData = &pDestAny->pReserved; - *(double *)&pDestAny->pReserved = *(double *)pSource; - } - else - { - pDestAny->pData = ::rtl_allocateMemory( sizeof(double) ); - *(double *)pDestAny->pData = *(double *)pSource; - } - break; - case typelib_TypeClass_STRING: - ::rtl_uString_acquire( *(rtl_uString **)pSource ); - pDestAny->pData = &pDestAny->pReserved; - *(rtl_uString **)&pDestAny->pReserved = *(rtl_uString **)pSource; - break; - case typelib_TypeClass_TYPE: - TYPE_ACQUIRE( *(typelib_TypeDescriptionReference **)pSource ); - pDestAny->pData = &pDestAny->pReserved; - *(typelib_TypeDescriptionReference **)&pDestAny->pReserved = *(typelib_TypeDescriptionReference **)pSource; - break; - case typelib_TypeClass_ANY: - OSL_FAIL( "### unexpected nested any!" ); - break; - case typelib_TypeClass_ENUM: - pDestAny->pData = &pDestAny->pReserved; - // enum is forced to 32bit long - *(sal_Int32 *)&pDestAny->pReserved = *(sal_Int32 *)pSource; - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (pTypeDescr) - { - pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize ); - _copyConstructStruct( - pDestAny->pData, pSource, - (typelib_CompoundTypeDescription *)pTypeDescr, - acquire, mapping ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize ); - _copyConstructStruct( - pDestAny->pData, pSource, - (typelib_CompoundTypeDescription *)pTypeDescr, - acquire, mapping ); - 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) - { - *(uno_Sequence **)&pDestAny->pReserved = copyConstructSequence( - *(uno_Sequence **)pSource, - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - acquire, mapping ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - *(uno_Sequence **)&pDestAny->pReserved = copyConstructSequence( - *(uno_Sequence **)pSource, - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - acquire, mapping ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - break; - case typelib_TypeClass_INTERFACE: - pDestAny->pData = &pDestAny->pReserved; - if (mapping) - { - pDestAny->pReserved = _map( *(void **)pSource, pType, pTypeDescr, mapping ); - } - else - { - _acquire( pDestAny->pReserved = *(void **)pSource, acquire ); - } - break; - default: - OSL_ASSERT(false); - break; - } -} -//-------------------------------------------------------------------------------------------------- -inline void _copyConstructAny( - uno_Any * pDestAny, void * pSource, - typelib_TypeDescriptionReference * pType, typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_Mapping * mapping ) - SAL_THROW ( () ) -{ - if (typelib_TypeClass_VOID == pType->eTypeClass) - { - CONSTRUCT_EMPTY_ANY( pDestAny ); - } - else - { - if (typelib_TypeClass_ANY == pType->eTypeClass) - { - if (pSource) - { - pType = ((uno_Any *)pSource)->pType; - if (typelib_TypeClass_VOID == pType->eTypeClass) - { - CONSTRUCT_EMPTY_ANY( pDestAny ); - return; - } - pTypeDescr = 0; - pSource = ((uno_Any *)pSource)->pData; - } - else - { - CONSTRUCT_EMPTY_ANY( pDestAny ); - return; - } - } - if (pSource) - { - _copyConstructAnyFromData( pDestAny, pSource, pType, pTypeDescr, acquire, mapping ); - } - else // default construct - { - TYPE_ACQUIRE( pType ); - pDestAny->pType = pType; - switch (pType->eTypeClass) - { - case typelib_TypeClass_CHAR: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Unicode *)&pDestAny->pReserved = '\0'; - break; - case typelib_TypeClass_BOOLEAN: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Bool *)&pDestAny->pReserved = sal_False; - break; - case typelib_TypeClass_BYTE: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int8 *)&pDestAny->pReserved = 0; - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int16 *)&pDestAny->pReserved = 0; - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int32 *)&pDestAny->pReserved = 0; - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - if (sizeof(void *) >= sizeof(sal_Int64)) - { - pDestAny->pData = &pDestAny->pReserved; - *(sal_Int64 *)&pDestAny->pReserved = 0; - } - else - { - pDestAny->pData = ::rtl_allocateMemory( sizeof(sal_Int64) ); - *(sal_Int64 *)pDestAny->pData = 0; - } - break; - case typelib_TypeClass_FLOAT: - if (sizeof(void *) >= sizeof(float)) - { - pDestAny->pData = &pDestAny->pReserved; - *(float *)&pDestAny->pReserved = 0.0; - } - else - { - pDestAny->pData = ::rtl_allocateMemory( sizeof(float) ); - *(float *)pDestAny->pData = 0.0; - } - break; - case typelib_TypeClass_DOUBLE: - if (sizeof(void *) >= sizeof(double)) - { - pDestAny->pData = &pDestAny->pReserved; - *(double *)&pDestAny->pReserved = 0.0; - } - else - { - pDestAny->pData = ::rtl_allocateMemory( sizeof(double) ); - *(double *)pDestAny->pData = 0.0; - } - break; - case typelib_TypeClass_STRING: - pDestAny->pData = &pDestAny->pReserved; - *(rtl_uString **)&pDestAny->pReserved = 0; - ::rtl_uString_new( (rtl_uString **)&pDestAny->pReserved ); - break; - case typelib_TypeClass_TYPE: - pDestAny->pData = &pDestAny->pReserved; - *(typelib_TypeDescriptionReference **)&pDestAny->pReserved = _getVoidType(); - break; - case typelib_TypeClass_ENUM: - pDestAny->pData = &pDestAny->pReserved; - if (pTypeDescr) - { - *(sal_Int32 *)&pDestAny->pReserved = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue; - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - *(sal_Int32 *)&pDestAny->pReserved = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue; - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (pTypeDescr) - { - pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize ); - _defaultConstructStruct( - pDestAny->pData, (typelib_CompoundTypeDescription *)pTypeDescr ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - pDestAny->pData = ::rtl_allocateMemory( pTypeDescr->nSize ); - _defaultConstructStruct( - pDestAny->pData, (typelib_CompoundTypeDescription *)pTypeDescr ); - 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->pReserved = createEmptySequence(); - break; - case typelib_TypeClass_INTERFACE: - pDestAny->pData = &pDestAny->pReserved; - pDestAny->pReserved = 0; // either cpp or c-uno interface - break; - default: - OSL_ASSERT(false); - break; - } - } - } -} -//------------------------------------------------------------------------------ -inline uno_Sequence * icopyConstructSequence( - uno_Sequence * pSource, - typelib_TypeDescriptionReference * pElementType, - uno_AcquireFunc acquire, uno_Mapping * mapping ) -{ - typelib_TypeClass eTypeClass = pElementType->eTypeClass; - if (!mapping || - (eTypeClass <= typelib_TypeClass_ENUM && - eTypeClass != typelib_TypeClass_ANY)) - { - ::osl_incrementInterlockedCount( &pSource->nRefCount ); - return pSource; - } - else // create new sequence - { - uno_Sequence * pDest; - sal_Int32 nElements = pSource->nElements; - if (nElements) - { - switch (eTypeClass) - { - case typelib_TypeClass_ANY: - { - pDest = allocSeq( sizeof (uno_Any), nElements ); - if (pDest != 0) - { - uno_Any * pDestElements = (uno_Any *)pDest->elements; - uno_Any * pSourceElements = (uno_Any *)pSource->elements; - for ( sal_Int32 nPos = nElements; nPos--; ) - { - typelib_TypeDescriptionReference * pType = - pSourceElements[nPos].pType; - if (typelib_TypeClass_VOID == pType->eTypeClass) - { - CONSTRUCT_EMPTY_ANY( &pDestElements[nPos] ); - } - else - { - _copyConstructAnyFromData( - &pDestElements[nPos], - pSourceElements[nPos].pData, - pType, 0, - acquire, mapping ); - } - } - } - break; - } - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - 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--; ) - { - _copyConstructStruct( - pElements + (nPos * nElementSize), - pSourceElements + (nPos * nElementSize), - (typelib_CompoundTypeDescription *) - pElementTypeDescr, - acquire, mapping ); - } - } - 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 ); - if (pDest != 0) - { - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - typelib_TypeDescriptionReference * pSeqElementType = - ((typelib_IndirectTypeDescription *) - pElementTypeDescr)->pType; - - uno_Sequence ** pDestElements = - (uno_Sequence **) pDest->elements; - uno_Sequence ** pSourceElements = - (uno_Sequence **) pSource->elements; - for ( sal_Int32 nPos = nElements; nPos--; ) - { - uno_Sequence * pNew = copyConstructSequence( - pSourceElements[nPos], - pSeqElementType, - acquire, mapping ); - OSL_ASSERT( pNew != 0 ); - // ought never be a memory allocation problem, - // because of reference counted sequence handles - pDestElements[ nPos ] = pNew; - } - - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - } - break; - } - case typelib_TypeClass_INTERFACE: - { - pDest = allocSeq( sizeof (void *), nElements ); - if (pDest != 0) - { - char * pElements = pDest->elements; - void ** pSourceElements = (void **)pSource->elements; - if (mapping) - { - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - for ( sal_Int32 nPos = nElements; nPos--; ) - { - ((void **)pElements)[nPos] = 0; - if (((void **)pSourceElements)[nPos]) - { - (*mapping->mapInterface)( - mapping, (void **)pElements + nPos, - pSourceElements[nPos], - (typelib_InterfaceTypeDescription *) - pElementTypeDescr ); - } - } - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - } - else - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - ((void **)pElements)[nPos] = pSourceElements[nPos]; - _acquire( ((void **)pElements)[nPos], acquire ); - } - } - } - break; - } - default: - OSL_FAIL( "### unexepcted sequence element type!" ); - pDest = 0; - break; - } - } - else // empty sequence - { - pDest = allocSeq( 0, 0 ); - } - - return pDest; - } -} - -//-------------------------------------------------------------------------------------------------- -inline void _copyConstructData( - void * pDest, void * pSource, - typelib_TypeDescriptionReference * pType, typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_Mapping * mapping ) - SAL_THROW ( () ) -{ - switch (pType->eTypeClass) - { - case typelib_TypeClass_CHAR: - *(sal_Unicode *)pDest = *(sal_Unicode *)pSource; - break; - case typelib_TypeClass_BOOLEAN: - *(sal_Bool *)pDest = (*(sal_Bool *)pSource != sal_False); - break; - case typelib_TypeClass_BYTE: - *(sal_Int8 *)pDest = *(sal_Int8 *)pSource; - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *(sal_Int16 *)pDest = *(sal_Int16 *)pSource; - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - *(sal_Int32 *)pDest = *(sal_Int32 *)pSource; - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - *(sal_Int64 *)pDest = *(sal_Int64 *)pSource; - break; - case typelib_TypeClass_FLOAT: - *(float *)pDest = *(float *)pSource; - break; - case typelib_TypeClass_DOUBLE: - *(double *)pDest = *(double *)pSource; - break; - case typelib_TypeClass_STRING: - ::rtl_uString_acquire( *(rtl_uString **)pSource ); - *(rtl_uString **)pDest = *(rtl_uString **)pSource; - break; - case typelib_TypeClass_TYPE: - TYPE_ACQUIRE( *(typelib_TypeDescriptionReference **)pSource ); - *(typelib_TypeDescriptionReference **)pDest = *(typelib_TypeDescriptionReference **)pSource; - break; - case typelib_TypeClass_ANY: - _copyConstructAny( - (uno_Any *)pDest, ((uno_Any *)pSource)->pData, - ((uno_Any *)pSource)->pType, 0, - acquire, mapping ); - break; - case typelib_TypeClass_ENUM: - *(sal_Int32 *)pDest = *(sal_Int32 *)pSource; - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (pTypeDescr) - { - _copyConstructStruct( - pDest, pSource, - (typelib_CompoundTypeDescription *)pTypeDescr, - acquire, mapping ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - _copyConstructStruct( - pDest, pSource, - (typelib_CompoundTypeDescription *)pTypeDescr, - acquire, mapping ); - 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) - { - if (pTypeDescr) - { - *(uno_Sequence **)pDest = icopyConstructSequence( - *(uno_Sequence **)pSource, - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - acquire, mapping ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - *(uno_Sequence **)pDest = icopyConstructSequence( - *(uno_Sequence **)pSource, - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - acquire, mapping ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - } - else - { - ::osl_incrementInterlockedCount( &(*(uno_Sequence **)pSource)->nRefCount ); - *(uno_Sequence **)pDest = *(uno_Sequence **)pSource; - } - break; - case typelib_TypeClass_INTERFACE: - if (mapping) - *(void **)pDest = _map( *(void **)pSource, pType, pTypeDescr, mapping ); - else - _acquire( *(void **)pDest = *(void **)pSource, acquire ); - break; - default: - break; - } -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/data.cxx b/cppu/source/uno/data.cxx deleted file mode 100644 index af4ab7b52..000000000 --- a/cppu/source/uno/data.cxx +++ /dev/null @@ -1,606 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include -#include - -#include "cppu/macros.hxx" - -#include "osl/mutex.hxx" - -#include "constr.hxx" -#include "destr.hxx" -#include "copy.hxx" -#include "assign.hxx" -#include "eq.hxx" - -#include "boost/static_assert.hpp" - - -using namespace ::cppu; -using namespace ::rtl; -using namespace ::osl; - - -namespace cppu -{ - -// Sequence<>() (default ctor) relies on this being static: -uno_Sequence g_emptySeq = { 1, 0, { 0 } }; -typelib_TypeDescriptionReference * g_pVoidType = 0; - -//-------------------------------------------------------------------------------------------------- -void * binuno_queryInterface( void * pUnoI, typelib_TypeDescriptionReference * pDestType ) -{ - // init queryInterface() td - static typelib_TypeDescription * g_pQITD = 0; - if (0 == g_pQITD) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if (0 == g_pQITD) - { - typelib_TypeDescriptionReference * type_XInterface = - * typelib_static_type_getByTypeClass( typelib_TypeClass_INTERFACE ); - typelib_InterfaceTypeDescription * pTXInterfaceDescr = 0; - TYPELIB_DANGER_GET( (typelib_TypeDescription **) &pTXInterfaceDescr, type_XInterface ); - OSL_ASSERT( pTXInterfaceDescr->ppAllMembers ); - typelib_typedescriptionreference_getDescription( - &g_pQITD, pTXInterfaceDescr->ppAllMembers[ 0 ] ); - TYPELIB_DANGER_RELEASE( (typelib_TypeDescription *) pTXInterfaceDescr ); - } - } - - uno_Any aRet, aExc; - uno_Any * pExc = &aExc; - void * aArgs[ 1 ]; - aArgs[ 0 ] = &pDestType; - (*((uno_Interface *) pUnoI)->pDispatcher)( - (uno_Interface *) pUnoI, g_pQITD, &aRet, aArgs, &pExc ); - - uno_Interface * ret = 0; - if (0 == pExc) - { - typelib_TypeDescriptionReference * ret_type = aRet.pType; - switch (ret_type->eTypeClass) - { - case typelib_TypeClass_VOID: // common case - typelib_typedescriptionreference_release( ret_type ); - break; - case typelib_TypeClass_INTERFACE: - // tweaky... avoiding acquire/ release pair - typelib_typedescriptionreference_release( ret_type ); - ret = (uno_Interface *) aRet.pReserved; // serving acquired interface - break; - default: - _destructAny( &aRet, 0 ); - break; - } - } - else - { -#if OSL_DEBUG_LEVEL > 1 - OUStringBuffer buf( 128 ); - buf.appendAscii( - RTL_CONSTASCII_STRINGPARAM("### exception occurred querying for interface ") ); - buf.append( * reinterpret_cast< OUString const * >( &pDestType->pTypeName ) ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM(": [") ); - buf.append( * reinterpret_cast< OUString const * >( &pExc->pType->pTypeName ) ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("] ") ); - // Message is very first member - buf.append( * reinterpret_cast< OUString const * >( pExc->pData ) ); - OString cstr( - OUStringToOString( buf.makeStringAndClear(), RTL_TEXTENCODING_ASCII_US ) ); - OSL_FAIL( cstr.getStr() ); -#endif - uno_any_destruct( pExc, 0 ); - } - return ret; -} - -//================================================================================================== -void defaultConstructStruct( - void * pMem, - typelib_CompoundTypeDescription * pCompType ) - SAL_THROW( () ) -{ - _defaultConstructStruct( pMem, pCompType ); -} -//================================================================================================== -void copyConstructStruct( - void * pDest, void * pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_Mapping * mapping ) - SAL_THROW( () ) -{ - _copyConstructStruct( pDest, pSource, pTypeDescr, acquire, mapping ); -} -//================================================================================================== -void destructStruct( - void * pValue, - typelib_CompoundTypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - _destructStruct( pValue, pTypeDescr, release ); -} -//================================================================================================== -sal_Bool equalStruct( - void * pDest, void *pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - return _equalStruct( pDest, pSource, pTypeDescr, queryInterface, release ); -} -//================================================================================================== -sal_Bool assignStruct( - void * pDest, void * pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - return _assignStruct( pDest, pSource, pTypeDescr, queryInterface, acquire, release ); -} - -//============================================================================== -uno_Sequence * copyConstructSequence( - uno_Sequence * pSource, - typelib_TypeDescriptionReference * pElementType, - uno_AcquireFunc acquire, uno_Mapping * mapping ) -{ - return icopyConstructSequence( pSource, pElementType, acquire, mapping ); -} - -//============================================================================== -void destructSequence( - uno_Sequence * pSequence, - typelib_TypeDescriptionReference * pType, - typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ) -{ - idestructSequence( pSequence, pType, pTypeDescr, release ); -} - -//================================================================================================== -sal_Bool equalSequence( - uno_Sequence * pDest, uno_Sequence * pSource, - typelib_TypeDescriptionReference * pElementType, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - return _equalSequence( pDest, pSource, pElementType, queryInterface, release ); -} - -extern "C" -{ -//################################################################################################## -void SAL_CALL uno_type_constructData( - void * pMem, typelib_TypeDescriptionReference * pType ) - SAL_THROW_EXTERN_C() -{ - _defaultConstructData( pMem, pType, 0 ); -} -//################################################################################################## -void SAL_CALL uno_constructData( - void * pMem, typelib_TypeDescription * pTypeDescr ) - SAL_THROW_EXTERN_C() -{ - _defaultConstructData( pMem, pTypeDescr->pWeakRef, pTypeDescr ); -} -//################################################################################################## -void SAL_CALL uno_type_destructData( - void * pValue, typelib_TypeDescriptionReference * pType, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - _destructData( pValue, pType, 0, release ); -} -//################################################################################################## -void SAL_CALL uno_destructData( - void * pValue, - typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - _destructData( pValue, pTypeDescr->pWeakRef, pTypeDescr, release ); -} -//################################################################################################## -void SAL_CALL uno_type_copyData( - void * pDest, void * pSource, - typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C() -{ - _copyConstructData( pDest, pSource, pType, 0, acquire, 0 ); -} -//################################################################################################## -void SAL_CALL uno_copyData( - void * pDest, void * pSource, - typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C() -{ - _copyConstructData( pDest, pSource, pTypeDescr->pWeakRef, pTypeDescr, acquire, 0 ); -} -//################################################################################################## -void SAL_CALL uno_type_copyAndConvertData( - void * pDest, void * pSource, - typelib_TypeDescriptionReference * pType, - uno_Mapping * mapping ) - SAL_THROW_EXTERN_C() -{ - _copyConstructData( pDest, pSource, pType, 0, 0, mapping ); -} -//################################################################################################## -void SAL_CALL uno_copyAndConvertData( - void * pDest, void * pSource, - typelib_TypeDescription * pTypeDescr, - uno_Mapping * mapping ) - SAL_THROW_EXTERN_C() -{ - _copyConstructData( pDest, pSource, pTypeDescr->pWeakRef, pTypeDescr, 0, mapping ); -} -//################################################################################################## -sal_Bool SAL_CALL uno_type_equalData( - void * pVal1, typelib_TypeDescriptionReference * pVal1Type, - void * pVal2, typelib_TypeDescriptionReference * pVal2Type, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - return _equalData( - pVal1, pVal1Type, 0, - pVal2, pVal2Type, - queryInterface, release ); -} -//################################################################################################## -sal_Bool SAL_CALL uno_equalData( - void * pVal1, typelib_TypeDescription * pVal1TD, - void * pVal2, typelib_TypeDescription * pVal2TD, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - return _equalData( - pVal1, pVal1TD->pWeakRef, pVal1TD, - pVal2, pVal2TD->pWeakRef, - queryInterface, release ); -} -//################################################################################################## -sal_Bool SAL_CALL uno_type_assignData( - void * pDest, typelib_TypeDescriptionReference * pDestType, - void * pSource, typelib_TypeDescriptionReference * pSourceType, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - return _assignData( - pDest, pDestType, 0, - pSource, pSourceType, 0, - queryInterface, acquire, release ); -} -//################################################################################################## -sal_Bool SAL_CALL uno_assignData( - void * pDest, typelib_TypeDescription * pDestTD, - void * pSource, typelib_TypeDescription * pSourceTD, - uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - return _assignData( - pDest, pDestTD->pWeakRef, pDestTD, - pSource, pSourceTD->pWeakRef, pSourceTD, - queryInterface, acquire, release ); -} -//################################################################################################## -sal_Bool SAL_CALL uno_type_isAssignableFromData( - typelib_TypeDescriptionReference * pAssignable, - void * pFrom, typelib_TypeDescriptionReference * pFromType, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - if (::typelib_typedescriptionreference_isAssignableFrom( pAssignable, pFromType )) - return sal_True; - if (typelib_TypeClass_INTERFACE != pFromType->eTypeClass || - typelib_TypeClass_INTERFACE != pAssignable->eTypeClass) - { - return sal_False; - } - - // query - if (0 == pFrom) - return sal_False; - void * pInterface = *(void **)pFrom; - if (0 == pInterface) - return sal_False; - - if (0 == queryInterface) - queryInterface = binuno_queryInterface; - void * p = (*queryInterface)( pInterface, pAssignable ); - _release( p, release ); - return (0 != p); -} -} - - -//################################################################################################## -//################################################################################################## -//################################################################################################## - - -#if OSL_DEBUG_LEVEL > 1 - -#if defined( SAL_W32) -#pragma pack(push, 8) -#endif - -#if defined(INTEL) \ - && (defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) \ - || defined(NETBSD) || defined(OPENBSD)) || defined(MACOSX) || defined(DRAGONFLY) \ - || defined(__SUNPRO_CC) && defined(SOLARIS)) -#define MAX_ALIGNMENT_4 -#endif - -#define OFFSET_OF( s, m ) reinterpret_cast< std::size_t >((char *)&((s *)16)->m -16) - -#define BINTEST_VERIFY( c ) \ - if (! (c)) { fprintf( stderr, "### binary compatibility test failed: %s [line %d]!!!\n", #c, __LINE__ ); abort(); } -#define BINTEST_VERIFYOFFSET( s, m, n ) \ - if (OFFSET_OF(s, m) != n) { fprintf( stderr, "### OFFSET_OF(" #s ", " #m ") = %" SAL_PRI_SIZET "u instead of expected %d!!!\n", OFFSET_OF(s, m), n ); abort(); } - -#define BINTEST_VERIFYSIZE( s, n ) \ - if (sizeof(s) != n) { fprintf( stderr, "### sizeof(" #s ") = %d instead of expected %d!!!\n", sizeof(s), n ); abort(); } - -struct C1 -{ - sal_Int16 n1; -}; -struct C2 : public C1 -{ - sal_Int32 n2 CPPU_GCC3_ALIGN( C1 ); -}; -struct C3 : public C2 -{ - double d3; - sal_Int32 n3; -}; -struct C4 : public C3 -{ - sal_Int32 n4 CPPU_GCC3_ALIGN( C3 ); - double d4; -}; -struct C5 : public C4 -{ - sal_Int64 n5; - sal_Bool b5; -}; -struct C6 : public C1 -{ - C5 c6 CPPU_GCC3_ALIGN( C1 ); - sal_Bool b6; -}; - -struct D -{ - sal_Int16 d; - sal_Int32 e; -}; -struct E -{ - sal_Bool a; - sal_Bool b; - sal_Bool c; - sal_Int16 d; - sal_Int32 e; -}; - -struct M -{ - sal_Int32 n; - sal_Int16 o; -}; - -struct N : public M -{ - sal_Int16 p CPPU_GCC3_ALIGN( M ); -}; -struct N2 -{ - M m; - sal_Int16 p; -}; - -struct O : public M -{ - double p; - sal_Int16 q; -}; -struct O2 : public O -{ - sal_Int16 p2 CPPU_GCC3_ALIGN( O ); -}; - -struct P : public N -{ - double p2; -}; - -struct empty -{ -}; -struct second : public empty -{ - int a; -}; - -struct AlignSize_Impl -{ - sal_Int16 nInt16; - double dDouble; -}; - -struct Char1 -{ - char c1; -}; -struct Char2 : public Char1 -{ - char c2 CPPU_GCC3_ALIGN( Char1 ); -}; -struct Char3 : public Char2 -{ - char c3 CPPU_GCC3_ALIGN( Char2 ); -}; -struct Char4 -{ - Char3 chars; - char c; -}; -class Ref -{ - void * p; -}; -enum Enum -{ - v = SAL_MAX_ENUM -}; - - -class BinaryCompatible_Impl -{ -public: - BinaryCompatible_Impl(); -}; -BinaryCompatible_Impl::BinaryCompatible_Impl() -{ - BOOST_STATIC_ASSERT( ((sal_Bool) true) == sal_True && - (1 != 0) == sal_True ); - BOOST_STATIC_ASSERT( ((sal_Bool) false) == sal_False && - (1 == 0) == sal_False ); -#ifdef MAX_ALIGNMENT_4 - // max alignment is 4 - BINTEST_VERIFYOFFSET( AlignSize_Impl, dDouble, 4 ); - BINTEST_VERIFYSIZE( AlignSize_Impl, 12 ); -#else - // max alignment is 8 - BINTEST_VERIFYOFFSET( AlignSize_Impl, dDouble, 8 ); - BINTEST_VERIFYSIZE( AlignSize_Impl, 16 ); -#endif - - // sequence - BINTEST_VERIFY( (SAL_SEQUENCE_HEADER_SIZE % 8) == 0 ); - // enum - BINTEST_VERIFY( sizeof( Enum ) == sizeof( sal_Int32 ) ); - // any - BINTEST_VERIFY( sizeof(void *) >= sizeof(sal_Int32) ); - BINTEST_VERIFY( sizeof( uno_Any ) == sizeof( void * ) * 3 ); - BINTEST_VERIFYOFFSET( uno_Any, pType, 0 ); - BINTEST_VERIFYOFFSET( uno_Any, pData, 1 * sizeof (void *) ); - BINTEST_VERIFYOFFSET( uno_Any, pReserved, 2 * sizeof (void *) ); - // interface - BINTEST_VERIFY( sizeof( Ref ) == sizeof( void * ) ); - // string - BINTEST_VERIFY( sizeof( OUString ) == sizeof( rtl_uString * ) ); - // struct - BINTEST_VERIFYSIZE( M, 8 ); - BINTEST_VERIFYOFFSET( M, o, 4 ); - BINTEST_VERIFYSIZE( N, 12 ); - BINTEST_VERIFYOFFSET( N, p, 8 ); - BINTEST_VERIFYSIZE( N2, 12 ); - BINTEST_VERIFYOFFSET( N2, p, 8 ); -#ifdef MAX_ALIGNMENT_4 - BINTEST_VERIFYSIZE( O, 20 ); -#else - BINTEST_VERIFYSIZE( O, 24 ); -#endif - BINTEST_VERIFYSIZE( D, 8 ); - BINTEST_VERIFYOFFSET( D, e, 4 ); - BINTEST_VERIFYOFFSET( E, d, 4 ); - BINTEST_VERIFYOFFSET( E, e, 8 ); - - BINTEST_VERIFYSIZE( C1, 2 ); - BINTEST_VERIFYSIZE( C2, 8 ); - BINTEST_VERIFYOFFSET( C2, n2, 4 ); - -#ifdef MAX_ALIGNMENT_4 - BINTEST_VERIFYSIZE( C3, 20 ); - BINTEST_VERIFYOFFSET( C3, d3, 8 ); - BINTEST_VERIFYOFFSET( C3, n3, 16 ); - BINTEST_VERIFYSIZE( C4, 32 ); - BINTEST_VERIFYOFFSET( C4, n4, 20 ); - BINTEST_VERIFYOFFSET( C4, d4, 24 ); - BINTEST_VERIFYSIZE( C5, 44 ); - BINTEST_VERIFYOFFSET( C5, n5, 32 ); - BINTEST_VERIFYOFFSET( C5, b5, 40 ); - BINTEST_VERIFYSIZE( C6, 52 ); - BINTEST_VERIFYOFFSET( C6, c6, 4 ); - BINTEST_VERIFYOFFSET( C6, b6, 48 ); - - BINTEST_VERIFYSIZE( O2, 24 ); - BINTEST_VERIFYOFFSET( O2, p2, 20 ); -#else - BINTEST_VERIFYSIZE( C3, 24 ); - BINTEST_VERIFYOFFSET( C3, d3, 8 ); - BINTEST_VERIFYOFFSET( C3, n3, 16 ); - BINTEST_VERIFYSIZE( C4, 40 ); - BINTEST_VERIFYOFFSET( C4, n4, 24 ); - BINTEST_VERIFYOFFSET( C4, d4, 32 ); - BINTEST_VERIFYSIZE( C5, 56 ); - BINTEST_VERIFYOFFSET( C5, n5, 40 ); - BINTEST_VERIFYOFFSET( C5, b5, 48 ); - BINTEST_VERIFYSIZE( C6, 72 ); - BINTEST_VERIFYOFFSET( C6, c6, 8 ); - BINTEST_VERIFYOFFSET( C6, b6, 64 ); - - BINTEST_VERIFYSIZE( O2, 32 ); - BINTEST_VERIFYOFFSET( O2, p2, 24 ); -#endif - - BINTEST_VERIFYSIZE( Char3, 3 ); - BINTEST_VERIFYOFFSET( Char4, c, 3 ); - -#ifdef MAX_ALIGNMENT_4 - // max alignment is 4 - BINTEST_VERIFYSIZE( P, 20 ); -#else - // alignment of P is 8, because of P[] ... - BINTEST_VERIFYSIZE( P, 24 ); - BINTEST_VERIFYSIZE( second, sizeof( int ) ); -#endif -} - -#ifdef SAL_W32 -# pragma pack(pop) -#endif - -static BinaryCompatible_Impl aTest; - -#endif - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/destr.hxx b/cppu/source/uno/destr.hxx deleted file mode 100644 index d4160625e..000000000 --- a/cppu/source/uno/destr.hxx +++ /dev/null @@ -1,441 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef DESTR_HXX -#define DESTR_HXX - -#include "prim.hxx" - - -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, - typelib_CompoundTypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW( () ); -//-------------------------------------------------------------------------------------------------- -inline void _destructStruct( - void * pValue, - typelib_CompoundTypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - if (pTypeDescr->pBaseTypeDescription) - { - destructStruct( pValue, pTypeDescr->pBaseTypeDescription, release ); - } - - typelib_TypeDescriptionReference ** ppTypeRefs = pTypeDescr->ppTypeRefs; - sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets; - sal_Int32 nDescr = pTypeDescr->nMembers; - while (nDescr--) - { - ::uno_type_destructData( - (char *)pValue + pMemberOffsets[nDescr], - ppTypeRefs[nDescr], release ); - } -} - -//-------------------------------------------------------------------------------------------------- -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, - typelib_TypeDescriptionReference * pType, - typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ); - -//-------------------------------------------------------------------------------------------------- -inline void _destructAny( - uno_Any * pAny, - uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - typelib_TypeDescriptionReference * pType = pAny->pType; - - switch (pType->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - if (sizeof(void *) < sizeof(sal_Int64)) - { - ::rtl_freeMemory( pAny->pData ); - } - break; - case typelib_TypeClass_FLOAT: - if (sizeof(void *) < sizeof(float)) - { - ::rtl_freeMemory( pAny->pData ); - } - break; - case typelib_TypeClass_DOUBLE: - if (sizeof(void *) < sizeof(double)) - { - ::rtl_freeMemory( pAny->pData ); - } - break; - case typelib_TypeClass_STRING: - ::rtl_uString_release( (rtl_uString *)pAny->pReserved ); - break; - case typelib_TypeClass_TYPE: - ::typelib_typedescriptionreference_release( - (typelib_TypeDescriptionReference *)pAny->pReserved ); - break; - case typelib_TypeClass_ANY: - OSL_FAIL( "### unexpected nested any!" ); - ::uno_any_destruct( (uno_Any *)pAny->pData, release ); - ::rtl_freeMemory( pAny->pData ); - break; - case typelib_TypeClass_TYPEDEF: - OSL_FAIL( "### unexpected typedef!" ); - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - _destructStruct( pAny->pData, (typelib_CompoundTypeDescription *)pTypeDescr, release ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - ::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( - *(uno_Sequence **) &pAny->pReserved, pType, 0, release ); - break; - } - case typelib_TypeClass_INTERFACE: - _release( pAny->pReserved, release ); - break; - default: - break; - } -#if OSL_DEBUG_LEVEL > 0 - pAny->pData = (void *)0xdeadbeef; -#endif - - ::typelib_typedescriptionreference_release( pType ); -} -//-------------------------------------------------------------------------------------------------- -inline sal_Int32 idestructElements( - void * pElements, typelib_TypeDescriptionReference * pElementType, - sal_Int32 nStartIndex, sal_Int32 nStopIndex, - uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - switch (pElementType->eTypeClass) - { - case typelib_TypeClass_CHAR: - return (sal_Int32)(sizeof(sal_Unicode)); - case typelib_TypeClass_BOOLEAN: - return (sal_Int32)(sizeof(sal_Bool)); - case typelib_TypeClass_BYTE: - return (sal_Int32)(sizeof(sal_Int8)); - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - return (sal_Int32)(sizeof(sal_Int16)); - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - return (sal_Int32)(sizeof(sal_Int32)); - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - return (sal_Int32)(sizeof(sal_Int64)); - case typelib_TypeClass_FLOAT: - return (sal_Int32)(sizeof(float)); - case typelib_TypeClass_DOUBLE: - return (sal_Int32)(sizeof(double)); - - case typelib_TypeClass_STRING: - { - rtl_uString ** pDest = (rtl_uString **)pElements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - ::rtl_uString_release( pDest[nPos] ); - } - return (sal_Int32)(sizeof(rtl_uString *)); - } - case typelib_TypeClass_TYPE: - { - typelib_TypeDescriptionReference ** pDest = (typelib_TypeDescriptionReference **)pElements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - ::typelib_typedescriptionreference_release( pDest[nPos] ); - } - return (sal_Int32)(sizeof(typelib_TypeDescriptionReference *)); - } - case typelib_TypeClass_ANY: - { - uno_Any * pDest = (uno_Any *)pElements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - _destructAny( &pDest[nPos], release ); - } - return (sal_Int32)(sizeof(uno_Any)); - } - case typelib_TypeClass_ENUM: - return (sal_Int32)(sizeof(sal_Int32)); - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - sal_Int32 nElementSize = pElementTypeDescr->nSize; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - _destructStruct( - (char *)pElements + (nElementSize * nPos), - (typelib_CompoundTypeDescription *)pElementTypeDescr, - release ); - } - sal_Int32 nSize = pElementTypeDescr->nSize; - 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; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - uno_Sequence ** pDest = (uno_Sequence **)pElements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - destructSequence( - pDest[nPos], - pElementTypeDescr->pWeakRef, pElementTypeDescr, - release ); - } - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - return (sal_Int32)(sizeof(uno_Sequence *)); - } - case typelib_TypeClass_INTERFACE: - { - if (release) - { - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - void * p = ((void **)pElements)[nPos]; - if (p) - { - (*release)( p ); - } - } - } - else - { - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - uno_Interface * p = ((uno_Interface **)pElements)[nPos]; - if (p) - { - (*p->release)( p ); - } - } - } - return (sal_Int32)(sizeof(void *)); - } - default: - OSL_ASSERT(false); - return 0; - } -} - -//------------------------------------------------------------------------------ -inline void idestructSequence( - uno_Sequence * pSeq, - typelib_TypeDescriptionReference * pType, - typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ) -{ - if (::osl_decrementInterlockedCount( &pSeq->nRefCount ) == 0) - { - if (pSeq->nElements > 0) - { - if (pTypeDescr) - { - idestructElements( - pSeq->elements, - ((typelib_IndirectTypeDescription *) pTypeDescr)->pType, 0, - pSeq->nElements, release ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - idestructElements( - pSeq->elements, - ((typelib_IndirectTypeDescription *) pTypeDescr)->pType, 0, - pSeq->nElements, release ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - } - ::rtl_freeMemory( pSeq ); - } -} - -//-------------------------------------------------------------------------------------------------- -inline void _destructData( - void * pValue, - typelib_TypeDescriptionReference * pType, - typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - switch (pType->eTypeClass) - { - case typelib_TypeClass_STRING: - ::rtl_uString_release( *(rtl_uString **)pValue ); - break; - case typelib_TypeClass_TYPE: - ::typelib_typedescriptionreference_release( *(typelib_TypeDescriptionReference **)pValue ); - break; - case typelib_TypeClass_ANY: - _destructAny( (uno_Any *)pValue, release ); - break; - case typelib_TypeClass_TYPEDEF: - OSL_FAIL( "### unexpected typedef!" ); - break; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (pTypeDescr) - { - _destructStruct( pValue, (typelib_CompoundTypeDescription *)pTypeDescr, release ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - _destructStruct( pValue, (typelib_CompoundTypeDescription *)pTypeDescr, release ); - 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( - *(uno_Sequence **)pValue, pType, pTypeDescr, release ); - break; - } - case typelib_TypeClass_INTERFACE: - _release( *(void **)pValue, release ); - break; - default: - break; - } -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/env_subst.cxx b/cppu/source/uno/env_subst.cxx deleted file mode 100644 index 56cbb2004..000000000 --- a/cppu/source/uno/env_subst.cxx +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "rtl/ustring.hxx" -#include "uno/environment.h" -#include "env_subst.hxx" - - -void SAL_CALL uno_getEnvironment(uno_Environment ** ppEnv, - rtl_uString * pEnvDcp, - void * pContext) - SAL_THROW_EXTERN_C() -{ - rtl::OUString envDcp(pEnvDcp); - - rtl::OString a_envName("UNO_ENV_SUBST:"); - a_envName += rtl::OUStringToOString(envDcp, RTL_TEXTENCODING_ASCII_US); - char * c_value = getenv(a_envName.getStr()); - if (c_value && rtl_str_getLength(c_value)) - { - rtl::OString a_envDcp(a_envName.copy(a_envName.indexOf(':') + 1)); - - OSL_TRACE("UNO_ENV_SUBST \"%s\" -> \"%s\"", a_envDcp.getStr(), c_value); - rtl::OUString value(c_value, rtl_str_getLength(c_value), RTL_TEXTENCODING_ASCII_US); - - envDcp = value; - } - - uno_direct_getEnvironment(ppEnv, envDcp.pData, pContext); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/env_subst.hxx b/cppu/source/uno/env_subst.hxx deleted file mode 100644 index 50f399188..000000000 --- a/cppu/source/uno/env_subst.hxx +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_env_substs_hxx -#define INCLUDED_env_substs_hxx - -#include "rtl/ustring.hxx" -#include "uno/environment.h" - - -extern "C" void SAL_CALL uno_direct_getEnvironment(uno_Environment ** ppEnv, - rtl_uString * pEnvDcp, - void * pContext) - SAL_THROW_EXTERN_C(); - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/eq.hxx b/cppu/source/uno/eq.hxx deleted file mode 100644 index 638b8332b..000000000 --- a/cppu/source/uno/eq.hxx +++ /dev/null @@ -1,670 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef EQ_HXX -#define EQ_HXX - -#include -#include - -#include "prim.hxx" -#include "destr.hxx" - - -namespace cppu -{ - -//################################################################################################## -//#### equality #################################################################################### -//################################################################################################## - -//-------------------------------------------------------------------------------------------------- -inline sal_Bool _equalObject( - void * pI1, void * pI2, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - if (pI1 == pI2) - return sal_True; - if ((0 == pI1) || (0 == pI2)) - return sal_False; - sal_Bool bRet = sal_False; - - typelib_TypeDescriptionReference * type_XInterface = - * typelib_static_type_getByTypeClass( typelib_TypeClass_INTERFACE ); - if (0 == queryInterface) - queryInterface = binuno_queryInterface; - pI1 = (*queryInterface)( pI1, type_XInterface ); - if (0 != pI1) - { - pI2 = (*queryInterface)( pI2, type_XInterface ); - if (0 != pI2) - { - bRet = (pI1 == pI2); - _release( pI2, release ); - } - _release( pI1, release ); - } - return bRet; -} - -//================================================================================================== -sal_Bool equalStruct( - void * pDest, void *pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ); -//-------------------------------------------------------------------------------------------------- -inline sal_Bool _equalStruct( - void * pDest, void *pSource, - typelib_CompoundTypeDescription * pTypeDescr, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - if (pTypeDescr->pBaseTypeDescription && - !equalStruct( pDest, pSource, pTypeDescr->pBaseTypeDescription, queryInterface, release )) - { - return sal_False; - } - - typelib_TypeDescriptionReference ** ppTypeRefs = pTypeDescr->ppTypeRefs; - sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets; - sal_Int32 nDescr = pTypeDescr->nMembers; - - while (nDescr--) - { - sal_Int32 nOffset = pMemberOffsets[nDescr]; - if (! ::uno_type_equalData( (char *)pDest + nOffset, - ppTypeRefs[nDescr], - (char *)pSource + nOffset, - ppTypeRefs[nDescr], - queryInterface, release )) - { - return sal_False; - } - } - return sal_True; -} -//================================================================================================== -sal_Bool equalSequence( - uno_Sequence * pDest, uno_Sequence * pSource, - typelib_TypeDescriptionReference * pElementType, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ); -//-------------------------------------------------------------------------------------------------- -inline sal_Bool _equalSequence( - uno_Sequence * pDest, uno_Sequence * pSource, - typelib_TypeDescriptionReference * pElementType, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - if (pDest == pSource) - return sal_True; - sal_Int32 nElements = pDest->nElements; - if (nElements != pSource->nElements) - return sal_False; - if (! nElements) - return sal_True; - - void * pDestElements = pDest->elements; - void * pSourceElements = pSource->elements; - - switch (pElementType->eTypeClass) - { - case typelib_TypeClass_CHAR: - return (0 == ::rtl_compareMemory( pDestElements, pSourceElements, sizeof(sal_Unicode) * nElements )); - case typelib_TypeClass_BOOLEAN: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if ((((sal_Bool *)pDestElements)[nPos] != sal_False) != - (((sal_Bool *)pSourceElements)[nPos] != sal_False)) - { - return sal_False; - } - } - return sal_True; - } - case typelib_TypeClass_BYTE: - return (0 == ::rtl_compareMemory( pDestElements, pSourceElements, sizeof(sal_Int8) * nElements )); - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - return (0 == ::rtl_compareMemory( pDestElements, pSourceElements, sizeof(sal_Int16) * nElements )); - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - return (0 == ::rtl_compareMemory( pDestElements, pSourceElements, sizeof(sal_Int32) * nElements )); - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - return (0 == ::rtl_compareMemory( pDestElements, pSourceElements, sizeof(sal_Int64) * nElements )); - case typelib_TypeClass_FLOAT: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (((float *)pDestElements)[nPos] != ((float *)pSourceElements)[nPos]) - return sal_False; - } - return sal_True; - } - case typelib_TypeClass_DOUBLE: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (((double *)pDestElements)[nPos] != ((double *)pSourceElements)[nPos]) - return sal_False; - } - return sal_True; - } - case typelib_TypeClass_STRING: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (! ((::rtl::OUString *)pDestElements +nPos)->equals( ((const ::rtl::OUString *)pSourceElements)[nPos] )) - return sal_False; - } - return sal_True; - } - case typelib_TypeClass_TYPE: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (! _type_equals( ((typelib_TypeDescriptionReference **)pDestElements)[nPos], - ((typelib_TypeDescriptionReference **)pSourceElements)[nPos] )) - { - return sal_False; - } - } - return sal_True; - } - case typelib_TypeClass_ANY: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - uno_Any * pDest2 = (uno_Any *)pDestElements + nPos; - uno_Any * pSource2 = (uno_Any *)pSourceElements + nPos; - if (! ::uno_type_equalData( pDest2->pData, pDest2->pType, - pSource2->pData, pSource2->pType, - queryInterface, release )) - { - return sal_False; - } - } - return sal_True; - } - case typelib_TypeClass_ENUM: - return (0 == ::rtl_compareMemory( pDestElements, pSourceElements, sizeof(sal_Int32) * nElements )); - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - sal_Int32 nElementSize = pElementTypeDescr->nSize; - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (! _equalStruct( (char *)pDestElements + (nPos * nElementSize), - (char *)pSourceElements + (nPos * nElementSize), - (typelib_CompoundTypeDescription *)pElementTypeDescr, - queryInterface, release )) - { - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - return sal_False; - } - } - 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; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - typelib_TypeDescriptionReference * pSeqElementType = - ((typelib_IndirectTypeDescription *)pElementTypeDescr)->pType; - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (! equalSequence( ((uno_Sequence **)pDestElements)[nPos], - ((uno_Sequence **)pSourceElements)[nPos], - pSeqElementType, queryInterface, release )) - { - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - return sal_False; - } - } - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - return sal_True; - } - case typelib_TypeClass_INTERFACE: - { - for ( sal_Int32 nPos = nElements; nPos--; ) - { - if (! _equalObject( ((void **)pDestElements)[nPos], ((void **)pSourceElements)[nPos], - queryInterface, release )) - { - return sal_False; - } - } - return sal_True; - } - default: - OSL_ASSERT(false); - return sal_False; - } -} -//-------------------------------------------------------------------------------------------------- -inline sal_Bool _equalData( - void * pDest, - typelib_TypeDescriptionReference * pDestType, typelib_TypeDescription * pDestTypeDescr, - void * pSource, - typelib_TypeDescriptionReference * pSourceType, - uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) - SAL_THROW( () ) -{ - typelib_TypeClass eSourceTypeClass, eDestTypeClass; - while (typelib_TypeClass_ANY == (eDestTypeClass = pDestType->eTypeClass)) - { - pDestTypeDescr = 0; - pDestType = ((uno_Any *)pDest)->pType; - pDest = ((uno_Any *)pDest)->pData; - } - while (typelib_TypeClass_ANY == (eSourceTypeClass = pSourceType->eTypeClass)) - { - pSourceType = ((uno_Any *)pSource)->pType; - pSource = ((uno_Any *)pSource)->pData; - } - - switch (eDestTypeClass) - { - case typelib_TypeClass_VOID: - return eSourceTypeClass == typelib_TypeClass_VOID; - case typelib_TypeClass_CHAR: - return eSourceTypeClass == typelib_TypeClass_CHAR - && *(sal_Unicode *)pDest == *(sal_Unicode *)pSource; - case typelib_TypeClass_BOOLEAN: - return eSourceTypeClass == typelib_TypeClass_BOOLEAN - && ((*(sal_Bool *)pDest != sal_False) - == (*(sal_Bool *)pSource != sal_False)); - case typelib_TypeClass_BYTE: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(sal_Int8 *)pDest == *(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return ((sal_Int16)*(sal_Int8 *)pDest == *(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return ((sal_Int32)*(sal_Int8 *)pDest == (sal_Int32)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return ((sal_Int32)*(sal_Int8 *)pDest == *(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return ((sal_Int64)*(sal_Int8 *)pDest == (sal_Int64)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return ((sal_Int64)*(sal_Int8 *)pDest == *(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return (*(sal_Int8 *)pDest >= 0 && - (sal_Int64)*(sal_Int8 *)pDest == *(sal_Int64 *)pSource); // same size - case typelib_TypeClass_FLOAT: - return ((float)*(sal_Int8 *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(sal_Int8 *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_SHORT: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(sal_Int16 *)pDest == (sal_Int16)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return (*(sal_Int16 *)pDest == *(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return ((sal_Int32)*(sal_Int16 *)pDest == (sal_Int32)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return ((sal_Int32)*(sal_Int16 *)pDest == *(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return ((sal_Int64)*(sal_Int16 *)pDest == (sal_Int64)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return ((sal_Int64)*(sal_Int16 *)pDest == *(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return (*(sal_Int16 *)pDest >= 0 && - (sal_Int64)*(sal_Int16 *)pDest == *(sal_Int64 *)pSource); // same size - case typelib_TypeClass_FLOAT: - return ((float)*(sal_Int16 *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(sal_Int16 *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_UNSIGNED_SHORT: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return ((sal_Int32)*(sal_uInt16 *)pDest == (sal_Int32)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return ((sal_Int32)*(sal_uInt16 *)pDest == (sal_Int32)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(sal_uInt16 *)pDest == *(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return ((sal_Int32)*(sal_uInt16 *)pDest == *(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return ((sal_uInt32)*(sal_uInt16 *)pDest == *(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return ((sal_Int64)*(sal_uInt16 *)pDest == *(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return ((sal_uInt64)*(sal_uInt16 *)pDest == *(sal_uInt64 *)pSource); - case typelib_TypeClass_FLOAT: - return ((float)*(sal_uInt16 *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(sal_uInt16 *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_LONG: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(sal_Int32 *)pDest == (sal_Int32)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return (*(sal_Int32 *)pDest == (sal_Int32)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(sal_Int32 *)pDest == (sal_Int32)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return (*(sal_Int32 *)pDest == *(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return ((sal_Int64)*(sal_Int32 *)pDest == (sal_Int64)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return ((sal_Int64)*(sal_Int32 *)pDest == *(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return (*(sal_Int32 *)pDest >= 0 && - (sal_Int64)*(sal_Int32 *)pDest == *(sal_Int64 *)pSource); // same size - case typelib_TypeClass_FLOAT: - return ((float)*(sal_Int32 *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(sal_Int32 *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_UNSIGNED_LONG: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return ((sal_Int64)*(sal_uInt32 *)pDest == (sal_Int64)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return ((sal_Int64)*(sal_uInt32 *)pDest == (sal_Int64)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(sal_uInt32 *)pDest == (sal_uInt32)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return ((sal_Int64)*(sal_uInt32 *)pDest == (sal_Int64)*(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return (*(sal_uInt32 *)pDest == *(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return ((sal_Int64)*(sal_uInt32 *)pDest == *(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return ((sal_uInt64)*(sal_uInt32 *)pDest == *(sal_uInt64 *)pSource); - case typelib_TypeClass_FLOAT: - return ((float)*(sal_uInt32 *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(sal_uInt32 *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_HYPER: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(sal_Int64 *)pDest == (sal_Int64)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return (*(sal_Int64 *)pDest == (sal_Int64)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(sal_Int64 *)pDest == (sal_Int64)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return (*(sal_Int64 *)pDest == (sal_Int64)*(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return (*(sal_Int64 *)pDest == (sal_Int64)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return (*(sal_Int64 *)pDest == *(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return (*(sal_Int64 *)pDest >= 0 && - *(sal_Int64 *)pDest == *(sal_Int64 *)pSource); // same size - case typelib_TypeClass_FLOAT: - return ((float)*(sal_Int64 *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(sal_Int64 *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_UNSIGNED_HYPER: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(sal_Int8 *)pSource >= 0 && - *(sal_uInt64 *)pDest == (sal_uInt64)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return (*(sal_Int16 *)pSource >= 0 && - *(sal_uInt64 *)pDest == (sal_uInt64)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(sal_uInt64 *)pDest == (sal_uInt64)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return (*(sal_Int32 *)pSource >= 0 && - *(sal_uInt64 *)pDest == (sal_uInt64)*(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return (*(sal_uInt64 *)pDest == (sal_uInt64)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return (*(sal_Int64 *)pSource >= 0 && - *(sal_uInt64 *)pDest == (sal_uInt64)*(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - return (*(sal_uInt64 *)pDest == *(sal_uInt64 *)pSource); - case typelib_TypeClass_FLOAT: - if (::floor( *(float *)pSource ) != *(float *)pSource || *(float *)pSource < 0) - return sal_False; - return (*(sal_uInt64 *)pDest == (sal_uInt64)*(float *)pSource); - case typelib_TypeClass_DOUBLE: - if (::floor( *(double *)pSource ) != *(double *)pSource || *(double *)pSource < 0) - return sal_False; - return (*(sal_uInt64 *)pDest == (sal_uInt64)*(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_FLOAT: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(float *)pDest == (float)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return (*(float *)pDest == (float)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(float *)pDest == (float)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return (*(float *)pDest == (float)*(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return (*(float *)pDest == (float)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return (*(float *)pDest == (float)*(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - if (::floor( *(float *)pDest ) != *(float *)pDest || *(float *)pDest < 0) - return sal_False; - return ((sal_uInt64)*(float *)pDest == *(sal_uInt64 *)pSource); - case typelib_TypeClass_FLOAT: - return (*(float *)pDest == *(float *)pSource); - case typelib_TypeClass_DOUBLE: - return ((double)*(float *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_DOUBLE: - switch (eSourceTypeClass) - { - case typelib_TypeClass_BYTE: - return (*(double *)pDest == (double)*(sal_Int8 *)pSource); - case typelib_TypeClass_SHORT: - return (*(double *)pDest == (double)*(sal_Int16 *)pSource); - case typelib_TypeClass_UNSIGNED_SHORT: - return (*(double *)pDest == (double)*(sal_uInt16 *)pSource); - case typelib_TypeClass_LONG: - return (*(double *)pDest == (double)*(sal_Int32 *)pSource); - case typelib_TypeClass_UNSIGNED_LONG: - return (*(double *)pDest == (double)*(sal_uInt32 *)pSource); - case typelib_TypeClass_HYPER: - return (*(double *)pDest == (double)*(sal_Int64 *)pSource); - case typelib_TypeClass_UNSIGNED_HYPER: - if (::floor( *(double *)pDest ) != *(double *)pDest || *(double *)pDest < 0) - return sal_False; - return ((sal_uInt64)*(double *)pDest == *(sal_uInt64 *)pSource); - case typelib_TypeClass_FLOAT: - return (*(double *)pDest == (double)*(float *)pSource); - case typelib_TypeClass_DOUBLE: - return (*(double *)pDest == *(double *)pSource); - default: - return sal_False; - } - case typelib_TypeClass_STRING: - return eSourceTypeClass == typelib_TypeClass_STRING - && ((::rtl::OUString *)pDest)->equals( - *(::rtl::OUString const *)pSource ); - case typelib_TypeClass_TYPE: - return eSourceTypeClass == typelib_TypeClass_TYPE - && _type_equals( - *(typelib_TypeDescriptionReference **)pDest, - *(typelib_TypeDescriptionReference **)pSource ); - case typelib_TypeClass_ENUM: - return (_type_equals( pDestType, pSourceType ) && - *(sal_Int32 *)pDest == *(sal_Int32 *)pSource); - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - if (! _type_equals( pDestType, pSourceType )) - return sal_False; - if (pDestTypeDescr) - { - return _equalStruct( - pDest, pSource, - (typelib_CompoundTypeDescription *)pDestTypeDescr, - queryInterface, release ); - } - else - { - TYPELIB_DANGER_GET( &pDestTypeDescr, pDestType ); - sal_Bool bRet = _equalStruct( - pDest, pSource, - (typelib_CompoundTypeDescription *)pDestTypeDescr, - queryInterface, release ); - 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 )) - { - if (pDestTypeDescr) - { - return _equalSequence( - *(uno_Sequence **)pDest, *(uno_Sequence **)pSource, - ((typelib_IndirectTypeDescription *)pDestTypeDescr)->pType, - queryInterface, release ); - } - else - { - TYPELIB_DANGER_GET( &pDestTypeDescr, pDestType ); - sal_Bool bRet = _equalSequence( - *(uno_Sequence **)pDest, *(uno_Sequence **)pSource, - ((typelib_IndirectTypeDescription *)pDestTypeDescr)->pType, - queryInterface, release ); - TYPELIB_DANGER_RELEASE( pDestTypeDescr ); - return bRet; - } - } - return sal_False; - case typelib_TypeClass_INTERFACE: - if (typelib_TypeClass_INTERFACE == eSourceTypeClass) - return _equalObject( *(void **)pDest, *(void **)pSource, queryInterface, release ); - break; - default: - OSL_ASSERT(false); - break; - } - return sal_False; -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/lbenv.cxx b/cppu/source/uno/lbenv.cxx deleted file mode 100644 index 0cbc96214..000000000 --- a/cppu/source/uno/lbenv.cxx +++ /dev/null @@ -1,1195 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "cppu/EnvDcp.hxx" - -#include "sal/alloca.h" -#include "osl/diagnose.h" -#include "osl/interlck.h" -#include "osl/mutex.hxx" -#include "osl/module.h" -#include "osl/process.h" -#include "rtl/process.h" -#include "rtl/unload.h" -#include "rtl/string.hxx" -#include "rtl/ustring.hxx" -#include "rtl/ustrbuf.hxx" -#include "rtl/instance.hxx" -#include "typelib/typedescription.h" -#include "uno/dispatcher.h" -#include "uno/environment.h" -#include "uno/lbnames.h" -#include "prim.hxx" -#include "destr.hxx" -#include "loadmodule.hxx" - -#include -#include -#include - - -using ::rtl::OUString; - -namespace -{ - -//------------------------------------------------------------------------------ -inline static bool td_equals( typelib_InterfaceTypeDescription * pTD1, - typelib_InterfaceTypeDescription * pTD2 ) -{ - return (pTD1 == pTD2 || - (((typelib_TypeDescription *)pTD1)->pTypeName->length == - ((typelib_TypeDescription *)pTD2)->pTypeName->length && - ::rtl_ustr_compare( - ((typelib_TypeDescription *) pTD1)->pTypeName->buffer, - ((typelib_TypeDescription *) pTD2)->pTypeName->buffer ) == 0)); -} - -struct ObjectEntry; -struct uno_DefaultEnvironment; - -//------------------------------------------------------------------------------ -struct InterfaceEntry -{ - sal_Int32 refCount; - void * pInterface; - uno_freeProxyFunc fpFreeProxy; - typelib_InterfaceTypeDescription * pTypeDescr; -}; - -struct ObjectEntry -{ - OUString oid; - sal_Int32 nRef; - ::std::vector< InterfaceEntry > aInterfaces; - bool mixedObject; - - inline ObjectEntry( const OUString & rOId_ ); - - inline void append( - uno_DefaultEnvironment * pEnv, - void * pInterface, typelib_InterfaceTypeDescription * pTypeDescr, - uno_freeProxyFunc fpFreeProxy ); - inline InterfaceEntry * find( - typelib_InterfaceTypeDescription * pTypeDescr ); - inline sal_Int32 find( void * iface_ptr, ::std::size_t pos ); -}; - -//------------------------------------------------------------------------------ -struct FctPtrHash : - public ::std::unary_function< const void *, ::std::size_t > -{ - ::std::size_t operator () ( const void * pKey ) const - { return (::std::size_t) pKey; } -}; - -//------------------------------------------------------------------------------ -struct FctOUStringHash : - public ::std::unary_function< const OUString &, ::std::size_t > -{ - ::std::size_t operator () ( const OUString & rKey ) const - { return rKey.hashCode(); } -}; - -// mapping from environment name to environment -typedef ::boost::unordered_map< - OUString, uno_Environment *, FctOUStringHash, - ::std::equal_to< OUString > > OUString2EnvironmentMap; - -// mapping from ptr to object entry -typedef ::boost::unordered_map< - void *, ObjectEntry *, FctPtrHash, - ::std::equal_to< void * > > Ptr2ObjectMap; -// mapping from oid to object entry -typedef ::boost::unordered_map< - OUString, ObjectEntry *, FctOUStringHash, - ::std::equal_to< OUString > > OId2ObjectMap; - - -//============================================================================== -struct EnvironmentsData -{ - ::osl::Mutex mutex; - OUString2EnvironmentMap aName2EnvMap; - - EnvironmentsData() : isDisposing(false) {} - ~EnvironmentsData(); - - inline void getEnvironment( - uno_Environment ** ppEnv, const OUString & rEnvDcp, void * pContext ); - inline void registerEnvironment( uno_Environment ** ppEnv ); - inline void getRegisteredEnvironments( - uno_Environment *** pppEnvs, sal_Int32 * pnLen, - uno_memAlloc memAlloc, const OUString & rEnvDcp ); - - bool isDisposing; -}; - -namespace -{ - struct theEnvironmentsData : public rtl::Static< EnvironmentsData, theEnvironmentsData > {}; -} - -//============================================================================== -struct uno_DefaultEnvironment : public uno_ExtEnvironment -{ - sal_Int32 nRef; - sal_Int32 nWeakRef; - - ::osl::Mutex mutex; - Ptr2ObjectMap aPtr2ObjectMap; - OId2ObjectMap aOId2ObjectMap; - - uno_DefaultEnvironment( - const OUString & rEnvDcp_, void * pContext_ ); - ~uno_DefaultEnvironment(); -}; - -//______________________________________________________________________________ -inline ObjectEntry::ObjectEntry( OUString const & rOId_ ) - : oid( rOId_ ), - nRef( 0 ), - mixedObject( false ) -{ - aInterfaces.reserve( 2 ); -} - -//______________________________________________________________________________ -inline void ObjectEntry::append( - uno_DefaultEnvironment * pEnv, - void * pInterface, typelib_InterfaceTypeDescription * pTypeDescr, - uno_freeProxyFunc fpFreeProxy ) -{ - InterfaceEntry aNewEntry; - if (! fpFreeProxy) - (*pEnv->acquireInterface)( pEnv, pInterface ); - aNewEntry.refCount = 1; - aNewEntry.pInterface = pInterface; - aNewEntry.fpFreeProxy = fpFreeProxy; - typelib_typedescription_acquire( (typelib_TypeDescription *) pTypeDescr ); - aNewEntry.pTypeDescr = pTypeDescr; - - ::std::pair< Ptr2ObjectMap::iterator, bool > insertion( - pEnv->aPtr2ObjectMap.insert( Ptr2ObjectMap::value_type( - pInterface, this ) ) ); - OSL_ASSERT( insertion.second || - (find( pInterface, 0 ) >= 0 && - // points to the same object entry: - insertion.first->second == this) ); - aInterfaces.push_back( aNewEntry ); -} - -//______________________________________________________________________________ -inline InterfaceEntry * ObjectEntry::find( - typelib_InterfaceTypeDescription * pTypeDescr_ ) -{ - OSL_ASSERT( ! aInterfaces.empty() ); - if (aInterfaces.empty()) - return 0; - - // shortcut common case: - OUString const & type_name = - OUString::unacquired( - &((typelib_TypeDescription *) pTypeDescr_)->pTypeName ); - if (type_name.equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM("com.sun.star.uno.XInterface") )) - { - return &aInterfaces[ 0 ]; - } - - ::std::size_t nSize = aInterfaces.size(); - for ( ::std::size_t nPos = 0; nPos < nSize; ++nPos ) - { - typelib_InterfaceTypeDescription * pITD = - aInterfaces[ nPos ].pTypeDescr; - while (pITD) - { - if (td_equals( pITD, pTypeDescr_ )) - return &aInterfaces[ nPos ]; - pITD = pITD->pBaseTypeDescription; - } - } - return 0; -} - -//______________________________________________________________________________ -inline sal_Int32 ObjectEntry::find( - void * iface_ptr, ::std::size_t pos ) -{ - ::std::size_t size = aInterfaces.size(); - for ( ; pos < size; ++pos ) - { - if (aInterfaces[ pos ].pInterface == iface_ptr) - return pos; - } - return -1; -} - -extern "C" -{ - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_registerInterface( - uno_ExtEnvironment * pEnv, void ** ppInterface, - rtl_uString * pOId, typelib_InterfaceTypeDescription * pTypeDescr ) -{ - OSL_ENSURE( pEnv && ppInterface && pOId && pTypeDescr, "### null ptr!" ); - OUString const & rOId = OUString::unacquired( &pOId ); - - uno_DefaultEnvironment * that = - static_cast< uno_DefaultEnvironment * >( pEnv ); - ::osl::ClearableMutexGuard guard( that->mutex ); - - // try to insert dummy 0: - std::pair const insertion( - that->aOId2ObjectMap.insert( OId2ObjectMap::value_type( rOId, (ObjectEntry*)0 ) ) ); - if (insertion.second) - { - ObjectEntry * pOEntry = new ObjectEntry( rOId ); - insertion.first->second = pOEntry; - ++pOEntry->nRef; // another register call on object - pOEntry->append( that, *ppInterface, pTypeDescr, 0 ); - } - else // object entry exists - { - ObjectEntry * pOEntry = insertion.first->second; - ++pOEntry->nRef; // another register call on object - InterfaceEntry * pIEntry = pOEntry->find( pTypeDescr ); - - if (pIEntry) // type entry exists - { - ++pIEntry->refCount; - if (pIEntry->pInterface != *ppInterface) - { - void * pInterface = pIEntry->pInterface; - (*pEnv->acquireInterface)( pEnv, pInterface ); - guard.clear(); - (*pEnv->releaseInterface)( pEnv, *ppInterface ); - *ppInterface = pInterface; - } - } - else - { - pOEntry->append( that, *ppInterface, pTypeDescr, 0 ); - } - } -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_registerProxyInterface( - uno_ExtEnvironment * pEnv, void ** ppInterface, uno_freeProxyFunc freeProxy, - rtl_uString * pOId, typelib_InterfaceTypeDescription * pTypeDescr ) -{ - OSL_ENSURE( pEnv && ppInterface && pOId && pTypeDescr && freeProxy, - "### null ptr!" ); - OUString const & rOId = OUString::unacquired( &pOId ); - - uno_DefaultEnvironment * that = - static_cast< uno_DefaultEnvironment * >( pEnv ); - ::osl::ClearableMutexGuard guard( that->mutex ); - - // try to insert dummy 0: - std::pair const insertion( - that->aOId2ObjectMap.insert( OId2ObjectMap::value_type( rOId, (ObjectEntry*)0 ) ) ); - if (insertion.second) - { - ObjectEntry * pOEntry = new ObjectEntry( rOId ); - insertion.first->second = pOEntry; - ++pOEntry->nRef; // another register call on object - pOEntry->append( that, *ppInterface, pTypeDescr, freeProxy ); - } - else // object entry exists - { - ObjectEntry * pOEntry = insertion.first->second; - - // first registration was an original, then registerProxyInterface(): - pOEntry->mixedObject |= - (!pOEntry->aInterfaces.empty() && - pOEntry->aInterfaces[ 0 ].fpFreeProxy == 0); - - ++pOEntry->nRef; // another register call on object - InterfaceEntry * pIEntry = pOEntry->find( pTypeDescr ); - - if (pIEntry) // type entry exists - { - if (pIEntry->pInterface == *ppInterface) - { - ++pIEntry->refCount; - } - else - { - void * pInterface = pIEntry->pInterface; - (*pEnv->acquireInterface)( pEnv, pInterface ); - --pOEntry->nRef; // manual revoke of proxy to be freed - guard.clear(); - (*freeProxy)( pEnv, *ppInterface ); - *ppInterface = pInterface; - } - } - else - { - pOEntry->append( that, *ppInterface, pTypeDescr, freeProxy ); - } - } -} - -//------------------------------------------------------------------------------ -static void SAL_CALL s_stub_defenv_revokeInterface(va_list * pParam) -{ - uno_ExtEnvironment * pEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - - OSL_ENSURE( pEnv && pInterface, "### null ptr!" ); - uno_DefaultEnvironment * that = - static_cast< uno_DefaultEnvironment * >( pEnv ); - ::osl::ClearableMutexGuard guard( that->mutex ); - - Ptr2ObjectMap::const_iterator const iFind( - that->aPtr2ObjectMap.find( pInterface ) ); - OSL_ASSERT( iFind != that->aPtr2ObjectMap.end() ); - ObjectEntry * pOEntry = iFind->second; - if (! --pOEntry->nRef) - { - // cleanup maps - that->aOId2ObjectMap.erase( pOEntry->oid ); - sal_Int32 nPos; - for ( nPos = pOEntry->aInterfaces.size(); nPos--; ) - { - that->aPtr2ObjectMap.erase( pOEntry->aInterfaces[nPos].pInterface ); - } - - // the last proxy interface of the environment might kill this - // environment, because of releasing its language binding!!! - guard.clear(); - - // release interfaces - for ( nPos = pOEntry->aInterfaces.size(); nPos--; ) - { - InterfaceEntry const & rEntry = pOEntry->aInterfaces[nPos]; - typelib_typedescription_release( - (typelib_TypeDescription *) rEntry.pTypeDescr ); - if (rEntry.fpFreeProxy) // is proxy or used interface? - { - (*rEntry.fpFreeProxy)( pEnv, rEntry.pInterface ); - } - else - { - (*pEnv->releaseInterface)( pEnv, rEntry.pInterface ); - } - } - - delete pOEntry; - } - else if (pOEntry->mixedObject) - { - OSL_ASSERT( !pOEntry->aInterfaces.empty() && - pOEntry->aInterfaces[ 0 ].fpFreeProxy == 0 ); - - sal_Int32 index = pOEntry->find( pInterface, 1 ); - OSL_ASSERT( index > 0 ); - if (index > 0) - { - InterfaceEntry & entry = pOEntry->aInterfaces[ index ]; - OSL_ASSERT( entry.pInterface == pInterface ); - if (entry.fpFreeProxy != 0) - { - --entry.refCount; - if (entry.refCount == 0) - { - uno_freeProxyFunc fpFreeProxy = entry.fpFreeProxy; - typelib_TypeDescription * pTypeDescr = - reinterpret_cast< typelib_TypeDescription * >( - entry.pTypeDescr ); - - pOEntry->aInterfaces.erase( - pOEntry->aInterfaces.begin() + index ); - if (pOEntry->find( pInterface, index ) < 0) - { - // proxy ptr not registered for another interface: - // remove from ptr map -#if OSL_DEBUG_LEVEL > 0 - ::std::size_t erased = -#endif - that->aPtr2ObjectMap.erase( pInterface ); - OSL_ASSERT( erased == 1 ); - } - - guard.clear(); - - typelib_typedescription_release( pTypeDescr ); - (*fpFreeProxy)( pEnv, pInterface ); - } - } - } - } -} - -static void SAL_CALL defenv_revokeInterface(uno_ExtEnvironment * pEnv, void * pInterface) -{ - uno_Environment_invoke(&pEnv->aBase, s_stub_defenv_revokeInterface, pEnv, pInterface); -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_getObjectIdentifier( - uno_ExtEnvironment * pEnv, rtl_uString ** ppOId, void * pInterface ) -{ - OSL_ENSURE( pEnv && ppOId && pInterface, "### null ptr!" ); - if (*ppOId) - { - ::rtl_uString_release( *ppOId ); - *ppOId = 0; - } - - uno_DefaultEnvironment * that = - static_cast< uno_DefaultEnvironment * >( pEnv ); - ::osl::ClearableMutexGuard guard( that->mutex ); - - Ptr2ObjectMap::const_iterator const iFind( - that->aPtr2ObjectMap.find( pInterface ) ); - if (iFind == that->aPtr2ObjectMap.end()) - { - guard.clear(); - (*pEnv->computeObjectIdentifier)( pEnv, ppOId, pInterface ); - } - else - { - rtl_uString * hstr = iFind->second->oid.pData; - rtl_uString_acquire( hstr ); - *ppOId = hstr; - } -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_getRegisteredInterface( - uno_ExtEnvironment * pEnv, void ** ppInterface, - rtl_uString * pOId, typelib_InterfaceTypeDescription * pTypeDescr ) -{ - OSL_ENSURE( pEnv && ppInterface && pOId && pTypeDescr, "### null ptr!" ); - if (*ppInterface) - { - (*pEnv->releaseInterface)( pEnv, *ppInterface ); - *ppInterface = 0; - } - - OUString const & rOId = OUString::unacquired( &pOId ); - uno_DefaultEnvironment * that = - static_cast< uno_DefaultEnvironment * >( pEnv ); - ::osl::MutexGuard guard( that->mutex ); - - OId2ObjectMap::const_iterator const iFind - ( that->aOId2ObjectMap.find( rOId ) ); - if (iFind != that->aOId2ObjectMap.end()) - { - InterfaceEntry const * pIEntry = iFind->second->find( pTypeDescr ); - if (pIEntry) - { - (*pEnv->acquireInterface)( pEnv, pIEntry->pInterface ); - *ppInterface = pIEntry->pInterface; - } - } -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_getRegisteredInterfaces( - uno_ExtEnvironment * pEnv, void *** pppInterfaces, sal_Int32 * pnLen, - uno_memAlloc memAlloc ) -{ - OSL_ENSURE( pEnv && pppInterfaces && pnLen && memAlloc, "### null ptr!" ); - uno_DefaultEnvironment * that = - static_cast< uno_DefaultEnvironment * >( pEnv ); - ::osl::MutexGuard guard( that->mutex ); - - sal_Int32 nLen = that->aPtr2ObjectMap.size(); - sal_Int32 nPos = 0; - void ** ppInterfaces = (void **) (*memAlloc)( nLen * sizeof (void *) ); - - Ptr2ObjectMap::const_iterator iPos( that->aPtr2ObjectMap.begin() ); - Ptr2ObjectMap::const_iterator const iEnd( that->aPtr2ObjectMap.end() ); - while (iPos != iEnd) - { - (*pEnv->acquireInterface)( pEnv, ppInterfaces[nPos++] = (*iPos).first ); - ++iPos; - } - - *pppInterfaces = ppInterfaces; - *pnLen = nLen; -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_acquire( uno_Environment * pEnv ) -{ - uno_DefaultEnvironment * that = (uno_DefaultEnvironment *)pEnv; - ::osl_incrementInterlockedCount( &that->nWeakRef ); - ::osl_incrementInterlockedCount( &that->nRef ); -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_release( uno_Environment * pEnv ) -{ - uno_DefaultEnvironment * that = (uno_DefaultEnvironment *)pEnv; - if (! ::osl_decrementInterlockedCount( &that->nRef )) - { - // invoke dispose callback - if (pEnv->environmentDisposing) - { - (*pEnv->environmentDisposing)( pEnv ); - } - - OSL_ENSURE( that->aOId2ObjectMap.empty(), "### object entries left!" ); - } - // free memory if no weak refs left - if (! ::osl_decrementInterlockedCount( &that->nWeakRef )) - { - delete that; - } -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_acquireWeak( uno_Environment * pEnv ) -{ - uno_DefaultEnvironment * that = (uno_DefaultEnvironment *)pEnv; - ::osl_incrementInterlockedCount( &that->nWeakRef ); -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_releaseWeak( uno_Environment * pEnv ) -{ - uno_DefaultEnvironment * that = (uno_DefaultEnvironment *)pEnv; - if (! ::osl_decrementInterlockedCount( &that->nWeakRef )) - { - delete that; - } -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_harden( - uno_Environment ** ppHardEnv, uno_Environment * pEnv ) -{ - if (*ppHardEnv) - { - (*(*ppHardEnv)->release)( *ppHardEnv ); - *ppHardEnv = 0; - } - - EnvironmentsData & rData = theEnvironmentsData::get(); - - if (rData.isDisposing) - return; - - uno_DefaultEnvironment * that = (uno_DefaultEnvironment *)pEnv; - { - ::osl::MutexGuard guard( rData.mutex ); - if (1 == ::osl_incrementInterlockedCount( &that->nRef )) // is dead - { - that->nRef = 0; - return; - } - } - ::osl_incrementInterlockedCount( &that->nWeakRef ); - *ppHardEnv = pEnv; -} - -//------------------------------------------------------------------------------ -static void SAL_CALL defenv_dispose( uno_Environment * ) -{ -} -} - -//______________________________________________________________________________ -uno_DefaultEnvironment::uno_DefaultEnvironment( - const OUString & rEnvDcp_, void * pContext_ ) - : nRef( 0 ), - nWeakRef( 0 ) -{ - uno_Environment * that = reinterpret_cast< uno_Environment * >(this); - that->pReserved = 0; - // functions - that->acquire = defenv_acquire; - that->release = defenv_release; - that->acquireWeak = defenv_acquireWeak; - that->releaseWeak = defenv_releaseWeak; - that->harden = defenv_harden; - that->dispose = defenv_dispose; - that->pExtEnv = this; - // identifier - ::rtl_uString_acquire( rEnvDcp_.pData ); - that->pTypeName = rEnvDcp_.pData; - that->pContext = pContext_; - - // will be late initialized - that->environmentDisposing = 0; - - uno_ExtEnvironment::registerInterface = defenv_registerInterface; - uno_ExtEnvironment::registerProxyInterface = defenv_registerProxyInterface; - uno_ExtEnvironment::revokeInterface = defenv_revokeInterface; - uno_ExtEnvironment::getObjectIdentifier = defenv_getObjectIdentifier; - uno_ExtEnvironment::getRegisteredInterface = defenv_getRegisteredInterface; - uno_ExtEnvironment::getRegisteredInterfaces = - defenv_getRegisteredInterfaces; - -} - -//______________________________________________________________________________ -uno_DefaultEnvironment::~uno_DefaultEnvironment() -{ - ::rtl_uString_release( ((uno_Environment *) this)->pTypeName ); -} - -//============================================================================== -static void writeLine( - void * stream, const sal_Char * pLine, const sal_Char * pFilter ) -{ - if (pFilter && *pFilter) - { - // lookup pFilter in pLine - while (*pLine) - { - if (*pLine == *pFilter) - { - sal_Int32 nPos = 1; - while (pLine[nPos] && pFilter[nPos] == pLine[nPos]) - { - ++nPos; - } - if (! pFilter[nPos]) - { - if (stream) - { - fprintf( (FILE *) stream, "%s\n", pLine ); - } - else - { - OSL_TRACE( "%s\n", pLine ); - } - } - } - ++pLine; - } - } - else - { - if (stream) - { - fprintf( (FILE *) stream, "%s\n", pLine ); - } - else - { - fprintf( stderr, "%s\n", pLine ); - } - } -} - -//============================================================================== -static void writeLine( - void * stream, const OUString & rLine, const sal_Char * pFilter ) -{ - ::rtl::OString aLine( ::rtl::OUStringToOString( - rLine, RTL_TEXTENCODING_ASCII_US ) ); - writeLine( stream, aLine.getStr(), pFilter ); -} - -//############################################################################## -extern "C" void SAL_CALL uno_dumpEnvironment( - void * stream, uno_Environment * pEnv, const sal_Char * pFilter ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( pEnv, "### null ptr!" ); - ::rtl::OUStringBuffer buf; - - if (! pEnv->pExtEnv) - { - writeLine( stream, "###################################" - "###########################################", pFilter ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("environment: ") ); - buf.append( pEnv->pTypeName ); - writeLine( stream, buf.makeStringAndClear(), pFilter ); - writeLine( stream, "NO INTERFACE INFORMATION AVAILABLE!", pFilter ); - return; - } - - writeLine( stream, "########################################" - "######################################", pFilter ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("environment dump: ") ); - buf.append( pEnv->pTypeName ); - writeLine( stream, buf.makeStringAndClear(), pFilter ); - - uno_DefaultEnvironment * that = - reinterpret_cast< uno_DefaultEnvironment * >(pEnv); - ::osl::MutexGuard guard( that->mutex ); - - Ptr2ObjectMap ptr2obj( that->aPtr2ObjectMap ); - OId2ObjectMap::const_iterator iPos( that->aOId2ObjectMap.begin() ); - while (iPos != that->aOId2ObjectMap.end()) - { - ObjectEntry * pOEntry = iPos->second; - - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("+ ") ); - if (pOEntry->mixedObject) - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("mixed ") ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("object entry: nRef=") ); - buf.append( pOEntry->nRef, 10 ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("; oid=\"") ); - buf.append( pOEntry->oid ); - buf.append( (sal_Unicode) '\"' ); - writeLine( stream, buf.makeStringAndClear(), pFilter ); - - for ( ::std::size_t nPos = 0; - nPos < pOEntry->aInterfaces.size(); ++nPos ) - { - const InterfaceEntry & rIEntry = pOEntry->aInterfaces[nPos]; - - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM(" - ") ); - buf.append( - ((typelib_TypeDescription *) rIEntry.pTypeDescr)->pTypeName ); - if (rIEntry.fpFreeProxy) - { - buf.appendAscii( - RTL_CONSTASCII_STRINGPARAM("; proxy free=0x") ); - buf.append( - reinterpret_cast< sal_IntPtr >(rIEntry.fpFreeProxy), 16 ); - } - else - { - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("; original") ); - } - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("; ptr=0x") ); - buf.append( - reinterpret_cast< sal_IntPtr >(rIEntry.pInterface), 16 ); - - if (pOEntry->find( rIEntry.pInterface, nPos + 1 ) < 0) - { - ::std::size_t erased = ptr2obj.erase( rIEntry.pInterface ); - if (erased != 1) - { - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( - " (ptr not found in map!)") ); - } - } - writeLine( stream, buf.makeStringAndClear(), pFilter ); - } - ++iPos; - } - if (! ptr2obj.empty()) - writeLine( stream, "ptr map inconsistency!!!", pFilter ); - writeLine( stream, "#####################################" - "#########################################", pFilter ); -} - -//############################################################################## -extern "C" void SAL_CALL uno_dumpEnvironmentByName( - void * stream, rtl_uString * pEnvDcp, const sal_Char * pFilter ) - SAL_THROW_EXTERN_C() -{ - uno_Environment * pEnv = 0; - uno_getEnvironment( &pEnv, pEnvDcp, 0 ); - if (pEnv) - { - ::uno_dumpEnvironment( stream, pEnv, pFilter ); - (*pEnv->release)( pEnv ); - } - else - { - ::rtl::OUStringBuffer buf( 32 ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("environment \"") ); - buf.append( pEnvDcp ); - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("\" does not exist!") ); - writeLine( stream, buf.makeStringAndClear(), pFilter ); - } -} - -namespace -{ - class makeOIdPart - { - private: - OUString m_sOidPart; - public: - makeOIdPart() - { - ::rtl::OUStringBuffer aRet( 64 ); - aRet.appendAscii( RTL_CONSTASCII_STRINGPARAM("];") ); - // pid - oslProcessInfo info; - info.Size = sizeof(oslProcessInfo); - if (::osl_getProcessInfo( 0, osl_Process_IDENTIFIER, &info ) == - osl_Process_E_None) - { - aRet.append( (sal_Int64)info.Ident, 16 ); - } - else - { - aRet.appendAscii( - RTL_CONSTASCII_STRINGPARAM("unknown process id") ); - } - // good guid - sal_uInt8 ar[16]; - ::rtl_getGlobalProcessId( ar ); - aRet.append( (sal_Unicode)';' ); - for ( sal_Int32 i = 0; i < 16; ++i ) - aRet.append( (sal_Int32)ar[i], 16 ); - - m_sOidPart = aRet.makeStringAndClear(); - } - const OUString& getOIdPart() const { return m_sOidPart; } - }; - - class theStaticOIdPart : public rtl::Static {}; -} - -//------------------------------------------------------------------------------ -inline static const OUString & unoenv_getStaticOIdPart() -{ - return theStaticOIdPart::get().getOIdPart(); -} - -extern "C" -{ - -//------------------------------------------------------------------------------ -static void SAL_CALL unoenv_computeObjectIdentifier( - uno_ExtEnvironment * pEnv, rtl_uString ** ppOId, void * pInterface ) -{ - OSL_ENSURE( pEnv && ppOId && pInterface, "### null ptr!" ); - if (*ppOId) - { - ::rtl_uString_release( *ppOId ); - *ppOId = 0; - } - - uno_Interface * pUnoI = (uno_Interface *) - ::cppu::binuno_queryInterface( - pInterface, *typelib_static_type_getByTypeClass( - typelib_TypeClass_INTERFACE ) ); - if (0 != pUnoI) - { - (*pUnoI->release)( pUnoI ); - // interface - ::rtl::OUStringBuffer oid( 64 ); - oid.append( reinterpret_cast< sal_Int64 >(pUnoI), 16 ); - oid.append( static_cast< sal_Unicode >(';') ); - // environment[context] - oid.append( ((uno_Environment *) pEnv)->pTypeName ); - oid.append( static_cast< sal_Unicode >('[') ); - oid.append( reinterpret_cast< sal_Int64 >( - reinterpret_cast< - uno_Environment * >(pEnv)->pContext ), 16 ); - // process;good guid - oid.append( unoenv_getStaticOIdPart() ); - OUString aStr( oid.makeStringAndClear() ); - ::rtl_uString_acquire( *ppOId = aStr.pData ); - } -} - -//============================================================================== -static void SAL_CALL unoenv_acquireInterface( - uno_ExtEnvironment *, void * pUnoI_ ) -{ - uno_Interface * pUnoI = reinterpret_cast< uno_Interface * >(pUnoI_); - (*pUnoI->acquire)( pUnoI ); -} - -//============================================================================== -static void SAL_CALL unoenv_releaseInterface( - uno_ExtEnvironment *, void * pUnoI_ ) -{ - uno_Interface * pUnoI = reinterpret_cast< uno_Interface * >(pUnoI_); - (*pUnoI->release)( pUnoI ); -} -} - -//______________________________________________________________________________ -EnvironmentsData::~EnvironmentsData() -{ - ::osl::MutexGuard guard( mutex ); - isDisposing = true; - - for ( OUString2EnvironmentMap::const_iterator iPos( aName2EnvMap.begin() ); - iPos != aName2EnvMap.end(); ++iPos ) - { - uno_Environment * pWeak = iPos->second; - uno_Environment * pHard = 0; - (*pWeak->harden)( &pHard, pWeak ); - (*pWeak->releaseWeak)( pWeak ); - - if (pHard) - { -#if OSL_DEBUG_LEVEL > 1 - ::uno_dumpEnvironment( 0, pHard, 0 ); -#endif - (*pHard->dispose)( pHard ); // send explicit dispose - (*pHard->release)( pHard ); - } - } -} - -//______________________________________________________________________________ -inline void EnvironmentsData::getEnvironment( - uno_Environment ** ppEnv, const OUString & rEnvDcp, void * pContext ) -{ - if (*ppEnv) - { - (*(*ppEnv)->release)( *ppEnv ); - *ppEnv = 0; - } - - OUString aKey( - OUString::valueOf( reinterpret_cast< sal_IntPtr >(pContext) ) ); - aKey += rEnvDcp; - - // try to find registered mapping - OUString2EnvironmentMap::const_iterator const iFind( - aName2EnvMap.find( aKey ) ); - if (iFind != aName2EnvMap.end()) - { - uno_Environment * pWeak = iFind->second; - (*pWeak->harden)( ppEnv, pWeak ); - } -} - -//______________________________________________________________________________ -inline void EnvironmentsData::registerEnvironment( uno_Environment ** ppEnv ) -{ - OSL_ENSURE( ppEnv, "### null ptr!" ); - uno_Environment * pEnv = *ppEnv; - - OUString aKey( - OUString::valueOf( reinterpret_cast< sal_IntPtr >(pEnv->pContext) ) ); - aKey += pEnv->pTypeName; - - // try to find registered environment - OUString2EnvironmentMap::const_iterator const iFind( - aName2EnvMap.find( aKey ) ); - if (iFind == aName2EnvMap.end()) - { - (*pEnv->acquireWeak)( pEnv ); - ::std::pair< OUString2EnvironmentMap::iterator, bool > insertion( - aName2EnvMap.insert( - OUString2EnvironmentMap::value_type( aKey, pEnv ) ) ); - OSL_ENSURE( - insertion.second, "### insertion of env into map failed?!" ); - } - else - { - uno_Environment * pHard = 0; - uno_Environment * pWeak = iFind->second; - (*pWeak->harden)( &pHard, pWeak ); - if (pHard) - { - if (pEnv) - (*pEnv->release)( pEnv ); - *ppEnv = pHard; - } - else // registered one is dead - { - (*pWeak->releaseWeak)( pWeak ); - (*pEnv->acquireWeak)( pEnv ); - aName2EnvMap[ aKey ] = pEnv; - } - } -} - -//______________________________________________________________________________ -inline void EnvironmentsData::getRegisteredEnvironments( - uno_Environment *** pppEnvs, sal_Int32 * pnLen, uno_memAlloc memAlloc, - const OUString & rEnvDcp ) -{ - OSL_ENSURE( pppEnvs && pnLen && memAlloc, "### null ptr!" ); - - // max size - uno_Environment ** ppFound = (uno_Environment **)alloca( - sizeof(uno_Environment *) * aName2EnvMap.size() ); - sal_Int32 nSize = 0; - - // find matching environment - for ( OUString2EnvironmentMap::const_iterator iPos( aName2EnvMap.begin() ); - iPos != aName2EnvMap.end(); ++iPos ) - { - uno_Environment * pWeak = iPos->second; - if (!rEnvDcp.getLength() || - rEnvDcp.equals( pWeak->pTypeName )) - { - ppFound[nSize] = 0; - (*pWeak->harden)( &ppFound[nSize], pWeak ); - if (ppFound[nSize]) - ++nSize; - } - } - - *pnLen = nSize; - if (nSize) - { - *pppEnvs = (uno_Environment **) (*memAlloc)( - sizeof (uno_Environment *) * nSize ); - OSL_ASSERT( *pppEnvs ); - while (nSize--) - { - (*pppEnvs)[nSize] = ppFound[nSize]; - } - } - else - { - *pppEnvs = 0; - } -} - -static bool loadEnv(OUString const & cLibStem, - uno_Environment * pEnv, - void * /*pContext*/) -{ - // late init with some code from matching uno language binding - // will be unloaded by environment - oslModule hMod = cppu::detail::loadModule( cLibStem ); - - if (!hMod) - return false; - - OUString aSymbolName(RTL_CONSTASCII_USTRINGPARAM(UNO_INIT_ENVIRONMENT)); - uno_initEnvironmentFunc fpInit = (uno_initEnvironmentFunc) - ::osl_getFunctionSymbol( hMod, aSymbolName.pData ); - if (!fpInit) - { - ::osl_unloadModule( hMod ); - return false; - } - - (*fpInit)( pEnv ); // init of environment - ::rtl_registerModuleForUnloading( hMod ); - - return true; -} - - -extern "C" -{ - -//------------------------------------------------------------------------------ -static uno_Environment * initDefaultEnvironment( - const OUString & rEnvDcp, void * pContext ) -{ - uno_Environment * pEnv = &(new uno_DefaultEnvironment( rEnvDcp, pContext ))->aBase; - (*pEnv->acquire)( pEnv ); - - OUString envTypeName = cppu::EnvDcp::getTypeName(rEnvDcp); - - // create default environment - if (envTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(UNO_LB_UNO) )) - { - uno_DefaultEnvironment * that = (uno_DefaultEnvironment *)pEnv; - that->computeObjectIdentifier = unoenv_computeObjectIdentifier; - that->acquireInterface = unoenv_acquireInterface; - that->releaseInterface = unoenv_releaseInterface; - - OUString envPurpose = cppu::EnvDcp::getPurpose(rEnvDcp); - if (envPurpose.getLength()) - { - rtl::OUString libStem = envPurpose.copy(envPurpose.lastIndexOf(':') + 1); - libStem += rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("_uno_uno") ); - - if(!loadEnv(libStem, pEnv, pContext)) - { - pEnv->release(pEnv); - return NULL; - } - } - } - else - { - // late init with some code from matching uno language binding - ::rtl::OUStringBuffer aLibName( 16 ); - aLibName.append( envTypeName ); - aLibName.appendAscii( RTL_CONSTASCII_STRINGPARAM("_uno" ) ); - OUString aStr( aLibName.makeStringAndClear() ); - - if (!loadEnv(aStr, pEnv, pContext)) - { - pEnv->release(pEnv); - return NULL; - } - } - - return pEnv; -} - -//############################################################################## -void SAL_CALL uno_createEnvironment( - uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppEnv, "### null ptr!" ); - if (*ppEnv) - (*(*ppEnv)->release)( *ppEnv ); - - OUString const & rEnvDcp = OUString::unacquired( &pEnvDcp ); - *ppEnv = initDefaultEnvironment( rEnvDcp, pContext ); -} - -//############################################################################## -void SAL_CALL uno_direct_getEnvironment( - uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppEnv, "### null ptr!" ); - OUString const & rEnvDcp = OUString::unacquired( &pEnvDcp ); - - EnvironmentsData & rData = theEnvironmentsData::get(); - - ::osl::MutexGuard guard( rData.mutex ); - rData.getEnvironment( ppEnv, rEnvDcp, pContext ); - if (! *ppEnv) - { - *ppEnv = initDefaultEnvironment( rEnvDcp, pContext ); - if (*ppEnv) - { - // register new environment: - rData.registerEnvironment( ppEnv ); - } - } -} - -//############################################################################## -void SAL_CALL uno_getRegisteredEnvironments( - uno_Environment *** pppEnvs, sal_Int32 * pnLen, uno_memAlloc memAlloc, - rtl_uString * pEnvDcp ) - SAL_THROW_EXTERN_C() -{ - EnvironmentsData & rData = theEnvironmentsData::get(); - - ::osl::MutexGuard guard( rData.mutex ); - rData.getRegisteredEnvironments( - pppEnvs, pnLen, memAlloc, - (pEnvDcp ? OUString(pEnvDcp) : OUString()) ); -} - -} // extern "C" - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/lbmap.cxx b/cppu/source/uno/lbmap.cxx deleted file mode 100644 index 2a6266ff3..000000000 --- a/cppu/source/uno/lbmap.cxx +++ /dev/null @@ -1,696 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "IdentityMapping.hxx" - -#include -#include -#include - -#include "rtl/unload.h" -#include "rtl/ustring.hxx" -#include "rtl/ustrbuf.hxx" -#include "osl/module.h" -#include "osl/diagnose.h" -#include "osl/mutex.hxx" -#include "osl/interlck.h" - -#include "uno/dispatcher.h" -#include "uno/mapping.h" -#include "uno/lbnames.h" -#include "uno/environment.hxx" - -#include "typelib/typedescription.h" - -#include "cppu/EnvDcp.hxx" -#include "cascade_mapping.hxx" -#include "IdentityMapping.hxx" -#include "loadmodule.hxx" - -using namespace std; -using namespace osl; -using namespace com::sun::star::uno; -using ::rtl::OUString; -using ::rtl::OUStringBuffer; -using ::rtl::OUStringToOString; -using ::rtl::OString; - -namespace cppu -{ - -class Mapping -{ - uno_Mapping * _pMapping; - -public: - inline explicit Mapping( uno_Mapping * pMapping = 0 ) SAL_THROW( () ); - inline Mapping( const Mapping & rMapping ) SAL_THROW( () ); - inline ~Mapping() SAL_THROW( () ); - inline Mapping & SAL_CALL operator = ( uno_Mapping * pMapping ) SAL_THROW( () ); - inline Mapping & SAL_CALL operator = ( const Mapping & rMapping ) SAL_THROW( () ) - { return operator = ( rMapping._pMapping ); } - inline uno_Mapping * SAL_CALL get() const SAL_THROW( () ) - { return _pMapping; } - inline sal_Bool SAL_CALL is() const SAL_THROW( () ) - { return (_pMapping != 0); } -}; -//__________________________________________________________________________________________________ -inline Mapping::Mapping( uno_Mapping * pMapping ) SAL_THROW( () ) - : _pMapping( pMapping ) -{ - if (_pMapping) - (*_pMapping->acquire)( _pMapping ); -} -//__________________________________________________________________________________________________ -inline Mapping::Mapping( const Mapping & rMapping ) SAL_THROW( () ) - : _pMapping( rMapping._pMapping ) -{ - if (_pMapping) - (*_pMapping->acquire)( _pMapping ); -} -//__________________________________________________________________________________________________ -inline Mapping::~Mapping() SAL_THROW( () ) -{ - if (_pMapping) - (*_pMapping->release)( _pMapping ); -} -//__________________________________________________________________________________________________ -inline Mapping & Mapping::operator = ( uno_Mapping * pMapping ) SAL_THROW( () ) -{ - if (pMapping) - (*pMapping->acquire)( pMapping ); - if (_pMapping) - (*_pMapping->release)( _pMapping ); - _pMapping = pMapping; - return *this; -} - -//================================================================================================== -struct MappingEntry -{ - sal_Int32 nRef; - uno_Mapping * pMapping; - uno_freeMappingFunc freeMapping; - OUString aMappingName; - - MappingEntry( - uno_Mapping * pMapping_, uno_freeMappingFunc freeMapping_, - const OUString & rMappingName_ ) - SAL_THROW( () ) - : nRef( 1 ) - , pMapping( pMapping_ ) - , freeMapping( freeMapping_ ) - , aMappingName( rMappingName_ ) - {} -}; -//-------------------------------------------------------------------------------------------------- -struct FctOUStringHash : public std::unary_function< const OUString &, size_t > -{ - size_t operator()( const OUString & rKey ) const SAL_THROW( () ) - { return (size_t)rKey.hashCode(); } -}; -//-------------------------------------------------------------------------------------------------- -struct FctPtrHash : public std::unary_function< uno_Mapping *, size_t > -{ - size_t operator()( uno_Mapping * pKey ) const SAL_THROW( () ) - { return (size_t)pKey; } -}; - -typedef boost::unordered_map< - OUString, MappingEntry *, FctOUStringHash, equal_to< OUString > > t_OUString2Entry; -typedef boost::unordered_map< - uno_Mapping *, MappingEntry *, FctPtrHash, equal_to< uno_Mapping * > > t_Mapping2Entry; - -typedef set< uno_getMappingFunc > t_CallbackSet; -typedef set< OUString > t_OUStringSet; - -//================================================================================================== -struct MappingsData -{ - Mutex aMappingsMutex; - t_OUString2Entry aName2Entry; - t_Mapping2Entry aMapping2Entry; - - Mutex aCallbacksMutex; - t_CallbackSet aCallbacks; - - Mutex aNegativeLibsMutex; - t_OUStringSet aNegativeLibs; -}; -//-------------------------------------------------------------------------------------------------- -static MappingsData & getMappingsData() SAL_THROW( () ) -{ - static MappingsData * s_p = 0; - if (! s_p) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if (! s_p) - { - //TODO This memory is leaked; see #i63473# for when this should be - // changed again: - s_p = new MappingsData; - } - } - return *s_p; -} - -/** - * This class mediates two different mapping via uno, e.g. form any language to uno, - * then from uno to any other language. - */ -struct uno_Mediate_Mapping : public uno_Mapping -{ - sal_Int32 nRef; - - Environment aFrom; - Environment aTo; - - Mapping aFrom2Uno; - Mapping aUno2To; - - OUString aAddPurpose; - - uno_Mediate_Mapping( - const Environment & rFrom_, const Environment & rTo_, - const Mapping & rFrom2Uno_, const Mapping & rUno2To_, - const OUString & rAddPurpose ) - SAL_THROW( () ); -}; -extern "C" -{ -//-------------------------------------------------------------------------------------------------- -static void SAL_CALL mediate_free( uno_Mapping * pMapping ) - SAL_THROW( () ) -{ - delete static_cast< uno_Mediate_Mapping * >( pMapping ); -} -//-------------------------------------------------------------------------------------------------- -static void SAL_CALL mediate_acquire( uno_Mapping * pMapping ) - SAL_THROW( () ) -{ - if (1 == ::osl_incrementInterlockedCount( - & static_cast< uno_Mediate_Mapping * >( pMapping )->nRef )) - { - uno_registerMapping( - &pMapping, mediate_free, - static_cast< uno_Mediate_Mapping * >( pMapping )->aFrom.get(), - static_cast< uno_Mediate_Mapping * >( pMapping )->aTo.get(), - static_cast< uno_Mediate_Mapping * >( pMapping )->aAddPurpose.pData ); - } -} -//-------------------------------------------------------------------------------------------------- -static void SAL_CALL mediate_release( uno_Mapping * pMapping ) - SAL_THROW( () ) -{ - if (! ::osl_decrementInterlockedCount( - & static_cast< uno_Mediate_Mapping * >( pMapping )->nRef )) - { - uno_revokeMapping( pMapping ); - } -} -//-------------------------------------------------------------------------------------------------- -static void SAL_CALL mediate_mapInterface( - uno_Mapping * pMapping, - void ** ppOut, void * pInterface, - typelib_InterfaceTypeDescription * pInterfaceTypeDescr ) - SAL_THROW( () ) -{ - OSL_ENSURE( pMapping && ppOut, "### null ptr!" ); - if (pMapping && ppOut) - { - uno_Mediate_Mapping * that = static_cast< uno_Mediate_Mapping * >( pMapping ); - uno_Mapping * pFrom2Uno = that->aFrom2Uno.get(); - - uno_Interface * pUnoI = 0; - (*pFrom2Uno->mapInterface)( pFrom2Uno, (void **) &pUnoI, pInterface, pInterfaceTypeDescr ); - if (0 == pUnoI) - { - void * pOut = *ppOut; - if (0 != pOut) - { - uno_ExtEnvironment * pTo = that->aTo.get()->pExtEnv; - OSL_ENSURE( 0 != pTo, "### cannot release out interface: leaking!" ); - if (0 != pTo) - (*pTo->releaseInterface)( pTo, pOut ); - *ppOut = 0; // set to 0 anyway, because mapping was not successfull! - } - } - else - { - uno_Mapping * pUno2To = that->aUno2To.get(); - (*pUno2To->mapInterface)( pUno2To, ppOut, pUnoI, pInterfaceTypeDescr ); - (*pUnoI->release)( pUnoI ); - } - } -} -} -//__________________________________________________________________________________________________ -uno_Mediate_Mapping::uno_Mediate_Mapping( - const Environment & rFrom_, const Environment & rTo_, - const Mapping & rFrom2Uno_, const Mapping & rUno2To_, - const OUString & rAddPurpose_ ) - SAL_THROW( () ) - : nRef( 1 ) - , aFrom( rFrom_ ) - , aTo( rTo_ ) - , aFrom2Uno( rFrom2Uno_ ) - , aUno2To( rUno2To_ ) - , aAddPurpose( rAddPurpose_ ) -{ - uno_Mapping::acquire = mediate_acquire; - uno_Mapping::release = mediate_release; - uno_Mapping::mapInterface = mediate_mapInterface; -} - -//================================================================================================== -static inline OUString getMappingName( - const Environment & rFrom, const Environment & rTo, const OUString & rAddPurpose ) - SAL_THROW( () ) -{ - OUStringBuffer aKey( 64 ); - aKey.append( rAddPurpose ); - aKey.append( (sal_Unicode)';' ); - aKey.append( rFrom.getTypeName() ); - aKey.append( (sal_Unicode)'[' ); - aKey.append( reinterpret_cast< sal_IntPtr >(rFrom.get()), 16 ); - aKey.appendAscii( RTL_CONSTASCII_STRINGPARAM("];") ); - aKey.append( rTo.getTypeName() ); - aKey.append( (sal_Unicode)'[' ); - aKey.append( reinterpret_cast< sal_IntPtr >(rTo.get()), 16 ); - aKey.append( (sal_Unicode)']' ); - return aKey.makeStringAndClear(); -} -//================================================================================================== -static inline OUString getBridgeName( - const Environment & rFrom, const Environment & rTo, const OUString & rAddPurpose ) - SAL_THROW( () ) -{ - OUStringBuffer aBridgeName( 16 ); - if (rAddPurpose.getLength()) - { - aBridgeName.append( rAddPurpose ); - aBridgeName.append( (sal_Unicode)'_' ); - } - aBridgeName.append( EnvDcp::getTypeName(rFrom.getTypeName()) ); - aBridgeName.append( (sal_Unicode)'_' ); - aBridgeName.append( EnvDcp::getTypeName(rTo.getTypeName()) ); - return aBridgeName.makeStringAndClear(); -} -//================================================================================================== -static inline void setNegativeBridge( const OUString & rBridgeName ) - SAL_THROW( () ) -{ - MappingsData & rData = getMappingsData(); - MutexGuard aGuard( rData.aNegativeLibsMutex ); - rData.aNegativeLibs.insert( rBridgeName ); -} -//================================================================================================== -static inline oslModule loadModule( const OUString & rBridgeName ) - SAL_THROW( () ) -{ - sal_Bool bNeg; - { - MappingsData & rData = getMappingsData(); - MutexGuard aGuard( rData.aNegativeLibsMutex ); - const t_OUStringSet::const_iterator iFind( rData.aNegativeLibs.find( rBridgeName ) ); - bNeg = (iFind != rData.aNegativeLibs.end()); - } - - if (! bNeg) - { - oslModule hModule = cppu::detail::loadModule( rBridgeName ); - - if (hModule) - return hModule; - - setNegativeBridge( rBridgeName ); // no load again - } - return 0; -} -//================================================================================================== -static Mapping loadExternalMapping( - const Environment & rFrom, const Environment & rTo, const OUString & rAddPurpose ) - SAL_THROW( () ) -{ - OSL_ASSERT( rFrom.is() && rTo.is() ); - if (rFrom.is() && rTo.is()) - { - // find proper lib - oslModule hModule = 0; - OUString aName; - - if (EnvDcp::getTypeName(rFrom.getTypeName()).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(UNO_LB_UNO) )) - hModule = loadModule( aName = getBridgeName( rTo, rFrom, rAddPurpose ) ); - if (! hModule) - hModule = loadModule( aName = getBridgeName( rFrom, rTo, rAddPurpose ) ); - if (! hModule) - hModule = loadModule( aName = getBridgeName( rTo, rFrom, rAddPurpose ) ); - - if (hModule) - { - OUString aSymbolName( RTL_CONSTASCII_USTRINGPARAM(UNO_EXT_GETMAPPING) ); - uno_ext_getMappingFunc fpGetMapFunc = - (uno_ext_getMappingFunc)::osl_getFunctionSymbol( - hModule, aSymbolName.pData ); - - if (fpGetMapFunc) - { - Mapping aExt; - (*fpGetMapFunc)( (uno_Mapping **)&aExt, rFrom.get(), rTo.get() ); - OSL_ASSERT( aExt.is() ); - if (aExt.is()) - { - ::rtl_registerModuleForUnloading( hModule ); - return aExt; - } - } - ::osl_unloadModule( hModule ); - setNegativeBridge( aName ); - } - } - return Mapping(); -} - -//================================================================================================== -static Mapping getDirectMapping( - const Environment & rFrom, const Environment & rTo, const OUString & rAddPurpose = OUString() ) - SAL_THROW( () ) -{ - OSL_ASSERT( rFrom.is() && rTo.is() ); - if (rFrom.is() && rTo.is()) - { - MappingsData & rData = getMappingsData(); - ClearableMutexGuard aGuard( rData.aMappingsMutex ); - - // try to find registered mapping - const t_OUString2Entry::const_iterator iFind( rData.aName2Entry.find( - getMappingName( rFrom, rTo, rAddPurpose ) ) ); - - if (iFind == rData.aName2Entry.end()) - { - aGuard.clear(); - return loadExternalMapping( rFrom, rTo, rAddPurpose ); - } - else - { - return Mapping( (*iFind).second->pMapping ); - } - } - return Mapping(); -} - -//-------------------------------------------------------------------------------------------------- -static inline Mapping createMediateMapping( - const Environment & rFrom, const Environment & rTo, - const Mapping & rFrom2Uno, const Mapping & rUno2To, - const OUString & rAddPurpose ) - SAL_THROW( () ) -{ - uno_Mapping * pRet = new uno_Mediate_Mapping( - rFrom, rTo, rFrom2Uno, rUno2To, rAddPurpose ); // ref count initially 1 - uno_registerMapping( - &pRet, mediate_free, rFrom.get(), rTo.get(), rAddPurpose.pData ); - Mapping aRet( pRet ); - (*pRet->release)( pRet ); - return aRet; -} -//================================================================================================== -static Mapping getMediateMapping( - const Environment & rFrom, const Environment & rTo, const OUString & rAddPurpose ) - SAL_THROW( () ) -{ - Environment aUno; - Mapping aUno2To; - - // backwards: from dest to source of mapping chain - - // connect to uno - OUString aUnoEnvTypeName( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ); - if (rTo.getTypeName() == aUnoEnvTypeName) // to is uno - { - aUno = rTo; - // no Uno2To mapping necessary - } - else - { - // get registered uno env - ::uno_getEnvironment( (uno_Environment **)&aUno, aUnoEnvTypeName.pData, 0 ); - - aUno2To = getDirectMapping( aUno, rTo ); - // : uno <-> to - if (! aUno2To.is()) - return Mapping(); - } - - // connect to uno - if (rAddPurpose.getLength()) // insert purpose mapping between new ano_uno <-> uno - { - // create anonymous uno env - Environment aAnUno; - ::uno_createEnvironment( (uno_Environment **)&aAnUno, aUnoEnvTypeName.pData, 0 ); - - Mapping aAnUno2Uno( getDirectMapping( aAnUno, aUno, rAddPurpose ) ); - if (! aAnUno2Uno.is()) - return Mapping(); - - if (aUno2To.is()) // to is not uno - { - // create another purposed mediate mapping - aUno2To = createMediateMapping( aAnUno, rTo, aAnUno2Uno, aUno2To, rAddPurpose ); - // : ano_uno <-> uno <-> to - } - else - { - aUno2To = aAnUno2Uno; - // : ano_uno <-> to (i.e., uno) - } - aUno = aAnUno; - } - - Mapping aFrom2Uno( getDirectMapping( rFrom, aUno ) ); - if (aFrom2Uno.is() && aUno2To.is()) - { - return createMediateMapping( rFrom, rTo, aFrom2Uno, aUno2To, rAddPurpose ); - // : from <-> some uno ... - } - - return Mapping(); -} -} - -using namespace ::cppu; - -extern "C" -{ -//################################################################################################## -void SAL_CALL uno_getMapping( - uno_Mapping ** ppMapping, uno_Environment * pFrom, uno_Environment * pTo, - rtl_uString * pAddPurpose ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppMapping && pFrom && pTo, "### null ptr!" ); - if (*ppMapping) - { - (*(*ppMapping)->release)( *ppMapping ); - *ppMapping = 0; - } - - Mapping aRet; - Environment aFrom( pFrom ), aTo( pTo ); - - OUString aAddPurpose; - if (pAddPurpose) - aAddPurpose = pAddPurpose; - - MappingsData & rData = getMappingsData(); - - // try registered mapping - { - MutexGuard aGuard( rData.aMappingsMutex ); - const t_OUString2Entry::const_iterator iFind( rData.aName2Entry.find( - getMappingName( aFrom, aTo, aAddPurpose ) ) ); - if (iFind != rData.aName2Entry.end()) - aRet = (*iFind).second->pMapping; - } - - // See if an identity mapping does fit. - if (!aRet.is() && pFrom == pTo && !aAddPurpose.getLength()) - aRet = createIdentityMapping(pFrom); - - if (!aRet.is()) - { - getCascadeMapping(ppMapping, pFrom, pTo, pAddPurpose); - - if (*ppMapping) - return; - } - - if (! aRet.is()) // try callback chain - { - MutexGuard aGuard( rData.aCallbacksMutex ); - for ( t_CallbackSet::const_iterator iPos( rData.aCallbacks.begin() ); - iPos != rData.aCallbacks.end(); ++iPos ) - { - (**iPos)( ppMapping, pFrom, pTo, aAddPurpose.pData ); - if (*ppMapping) - return; - } - } - - if (! aRet.is()) - { - aRet = loadExternalMapping( aFrom, aTo, aAddPurpose ); // direct try - if (! aRet.is()) - aRet = getMediateMapping( aFrom, aTo, aAddPurpose ); // try via uno - } - - if (aRet.is()) - { - (*aRet.get()->acquire)( aRet.get() ); - *ppMapping = aRet.get(); - } -} -//################################################################################################## -void SAL_CALL uno_getMappingByName( - uno_Mapping ** ppMapping, rtl_uString * pFrom, rtl_uString * pTo, - rtl_uString * pAddPurpose ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppMapping && pFrom && pTo, "### null ptr!" ); - if (*ppMapping) - { - (*(*ppMapping)->release)( *ppMapping ); - *ppMapping = 0; - } - - uno_Environment * pEFrom = 0; - uno_getEnvironment( &pEFrom, pFrom, 0 ); - OSL_ENSURE( pEFrom, "### cannot get source environment!" ); - if (pEFrom) - { - uno_Environment * pETo = 0; - uno_getEnvironment( &pETo, pTo, 0 ); - OSL_ENSURE( pETo, "### cannot get target environment!" ); - if (pETo) - { - ::uno_getMapping( ppMapping, pEFrom, pETo, pAddPurpose ); - (*pETo->release)( pETo ); - } - (*pEFrom->release)( pEFrom ); - } -} - -//################################################################################################## -void SAL_CALL uno_registerMapping( - uno_Mapping ** ppMapping, uno_freeMappingFunc freeMapping, - uno_Environment * pFrom, uno_Environment * pTo, rtl_uString * pAddPurpose ) - SAL_THROW_EXTERN_C() -{ - MappingsData & rData = getMappingsData(); - ClearableMutexGuard aGuard( rData.aMappingsMutex ); - - const t_Mapping2Entry::const_iterator iFind( rData.aMapping2Entry.find( *ppMapping ) ); - if (iFind == rData.aMapping2Entry.end()) - { - OUString aMappingName( - getMappingName( pFrom, pTo, pAddPurpose ? OUString(pAddPurpose) : OUString() ) ); -#if OSL_DEBUG_LEVEL > 1 - OString cstr( OUStringToOString( aMappingName, RTL_TEXTENCODING_ASCII_US ) ); - OSL_TRACE( "> inserting new mapping: %s", cstr.getStr() ); -#endif - // count initially 1 - MappingEntry * pEntry = new MappingEntry( *ppMapping, freeMapping, aMappingName ); - rData.aName2Entry[ aMappingName ] = pEntry; - rData.aMapping2Entry[ *ppMapping ] = pEntry; - } - else - { - MappingEntry * pEntry = (*iFind).second; - ++pEntry->nRef; - - if (pEntry->pMapping != *ppMapping) // exchange mapping to be registered - { - (*pEntry->pMapping->acquire)( pEntry->pMapping ); - --pEntry->nRef; // correct count; kill mapping to be registered - aGuard.clear(); - (*freeMapping)( *ppMapping ); - *ppMapping = pEntry->pMapping; - } - } -} -//################################################################################################## -void SAL_CALL uno_revokeMapping( - uno_Mapping * pMapping ) - SAL_THROW_EXTERN_C() -{ - MappingsData & rData = getMappingsData(); - ClearableMutexGuard aGuard( rData.aMappingsMutex ); - - const t_Mapping2Entry::const_iterator iFind( rData.aMapping2Entry.find( pMapping ) ); - OSL_ASSERT( iFind != rData.aMapping2Entry.end() ); - MappingEntry * pEntry = (*iFind).second; - if (! --pEntry->nRef) - { - rData.aMapping2Entry.erase( pEntry->pMapping ); - rData.aName2Entry.erase( pEntry->aMappingName ); - aGuard.clear(); -#if OSL_DEBUG_LEVEL > 1 - OString cstr( OUStringToOString( pEntry->aMappingName, RTL_TEXTENCODING_ASCII_US ) ); - OSL_TRACE( "> revoking mapping %s", cstr.getStr() ); -#endif - (*pEntry->freeMapping)( pEntry->pMapping ); - delete pEntry; - } -} - -//################################################################################################## -void SAL_CALL uno_registerMappingCallback( - uno_getMappingFunc pCallback ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( pCallback, "### null ptr!" ); - MappingsData & rData = getMappingsData(); - MutexGuard aGuard( rData.aCallbacksMutex ); - rData.aCallbacks.insert( pCallback ); -} -//################################################################################################## -void SAL_CALL uno_revokeMappingCallback( - uno_getMappingFunc pCallback ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( pCallback, "### null ptr!" ); - MappingsData & rData = getMappingsData(); - MutexGuard aGuard( rData.aCallbacksMutex ); - rData.aCallbacks.erase( pCallback ); -} -} // extern "C" - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/loadmodule.cxx b/cppu/source/uno/loadmodule.cxx deleted file mode 100644 index 305716ada..000000000 --- a/cppu/source/uno/loadmodule.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "sal/config.h" - -#include "osl/module.h" -#include "rtl/string.h" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.hxx" - -#include "loadmodule.hxx" - -namespace cppu { namespace detail { - -::oslModule loadModule(rtl::OUString const & name) { -#ifdef IOS - return NULL; -#else - rtl::OUStringBuffer b; -#if defined SAL_DLLPREFIX - b.appendAscii(RTL_CONSTASCII_STRINGPARAM(SAL_DLLPREFIX)); -#endif - b.append(name); - b.appendAscii(RTL_CONSTASCII_STRINGPARAM(SAL_DLLEXTENSION)); - return ::osl_loadModuleRelative( - reinterpret_cast< oslGenericFunction >(&loadModule), - b.makeStringAndClear().pData, - SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY); -#endif -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/loadmodule.hxx b/cppu/source/uno/loadmodule.hxx deleted file mode 100644 index be36e829b..000000000 --- a/cppu/source/uno/loadmodule.hxx +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_CPPU_SOURCE_UNO_CREATEMODULENAME_HXX -#define INCLUDED_CPPU_SOURCE_UNO_CREATEMODULENAME_HXX - -#include "sal/config.h" -#include "osl/module.h" - -namespace rtl { class OUString; } - -namespace cppu { namespace detail { - -/** Load a module. - - @param name - the nucleus of a module name (without any "lib...so", ".dll", etc. - decoration, and without a path). - - @return - the handle returned by osl_loadModule. -*/ -::oslModule loadModule(::rtl::OUString const & name); - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/makefile.mk b/cppu/source/uno/makefile.mk deleted file mode 100644 index 63bf4f038..000000000 --- a/cppu/source/uno/makefile.mk +++ /dev/null @@ -1,55 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=..$/.. - -PRJNAME=cppu -TARGET=cppu_uno - -# --- Settings ----------------------------------------------------- - -.INCLUDE : ..$/..$/util$/makefile.pmk -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -SLOFILES= \ - $(SLO)$/data.obj \ - $(SLO)$/sequence.obj \ - $(SLO)$/any.obj \ - $(SLO)$/lbmap.obj \ - $(SLO)$/lbenv.obj \ - $(SLO)$/IdentityMapping.obj \ - $(SLO)$/EnvDcp.obj \ - $(SLO)$/cascade_mapping.obj \ - $(SLO)$/EnvStack.obj \ - $(SLO)$/env_subst.obj \ - $(SLO)$/loadmodule.obj - -# --- Targets ------------------------------------------------------ - -.INCLUDE : ..$/..$/util$/target.pmk -.INCLUDE : target.mk diff --git a/cppu/source/uno/prim.hxx b/cppu/source/uno/prim.hxx deleted file mode 100644 index da51514b5..000000000 --- a/cppu/source/uno/prim.hxx +++ /dev/null @@ -1,203 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef PRIM_HXX -#define PRIM_HXX - -#include "typelib/typedescription.h" -#include "typelib/typeclass.h" -#include "uno/sequence2.h" -#include "uno/any2.h" -#include "uno/data.h" -#include "uno/mapping.h" -#include "uno/dispatcher.h" - -#include "osl/interlck.h" -#include "osl/diagnose.h" -#include "rtl/ustring.hxx" -#include "rtl/alloc.h" - -#if OSL_DEBUG_LEVEL > 1 -#include "rtl/ustrbuf.hxx" -#include "rtl/string.hxx" -#endif - - -namespace cppu -{ - -extern uno_Sequence g_emptySeq; -extern typelib_TypeDescriptionReference * g_pVoidType; - -//-------------------------------------------------------------------------------------------------- -inline void * _map( - void * p, - typelib_TypeDescriptionReference * pType, typelib_TypeDescription * pTypeDescr, - uno_Mapping * mapping ) - SAL_THROW( () ) -{ - void * pRet = 0; - if (p) - { - if (pTypeDescr) - { - (*mapping->mapInterface)( - mapping, &pRet, p, (typelib_InterfaceTypeDescription *)pTypeDescr ); - } - else - { - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - (*mapping->mapInterface)( - mapping, &pRet, p, (typelib_InterfaceTypeDescription *)pTypeDescr ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - } - return pRet; -} -//-------------------------------------------------------------------------------------------------- -inline void _acquire( void * p, uno_AcquireFunc acquire ) SAL_THROW( () ) -{ - if (p) - { - if (acquire) - { - (*acquire)( p ); - } - else - { - (*((uno_Interface *)p)->acquire)( (uno_Interface *)p ); - } - } -} -//-------------------------------------------------------------------------------------------------- -inline void _release( void * p, uno_ReleaseFunc release ) SAL_THROW( () ) -{ - if (p) - { - if (release) - { - (*release)( p ); - } - else - { - (*((uno_Interface *)p)->release)( (uno_Interface *)p ); - } - } -} - -//------------------------------------------------------------------------------ -inline sal_uInt32 calcSeqMemSize( - sal_Int32 nElementSize, sal_Int32 nElements ) -{ - sal_uInt64 nSize = - (sal_uInt64) SAL_SEQUENCE_HEADER_SIZE + - ((sal_uInt64) nElementSize * (sal_uInt64) nElements); - if (nSize > 0xffffffffU) - return 0; - else - return (sal_uInt32) nSize; -} - -//-------------------------------------------------------------------------------------------------- -inline uno_Sequence * createEmptySequence() SAL_THROW( () ) -{ - ::osl_incrementInterlockedCount( &g_emptySeq.nRefCount ); - return &g_emptySeq; -} -//-------------------------------------------------------------------------------------------------- -inline typelib_TypeDescriptionReference * _getVoidType() - SAL_THROW( () ) -{ - if (! g_pVoidType) - { - g_pVoidType = * ::typelib_static_type_getByTypeClass( typelib_TypeClass_VOID ); - } - ::typelib_typedescriptionreference_acquire( g_pVoidType ); - return g_pVoidType; -} - -//-------------------------------------------------------------------------------------------------- -#if OSL_DEBUG_LEVEL > 0 -#define CONSTRUCT_EMPTY_ANY( pAny ) \ -(pAny)->pType = _getVoidType(); \ -(pAny)->pData = (void *)0xdeadbeef; -#else -#define CONSTRUCT_EMPTY_ANY( pAny ) \ -(pAny)->pType = _getVoidType(); \ -(pAny)->pData = (pAny); -#endif - -//-------------------------------------------------------------------------------------------------- -#define TYPE_ACQUIRE( pType ) \ - ::osl_incrementInterlockedCount( &(pType)->nRefCount ); - -//-------------------------------------------------------------------------------------------------- -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( () ) -{ - return (pType1 == pType2 || - (pType1->eTypeClass == pType2->eTypeClass && - pType1->pTypeName->length == pType2->pTypeName->length && - ::rtl_ustr_compare( pType1->pTypeName->buffer, pType2->pTypeName->buffer ) == 0)); -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/source/uno/sequence.cxx b/cppu/source/uno/sequence.cxx deleted file mode 100644 index 49ff8c915..000000000 --- a/cppu/source/uno/sequence.cxx +++ /dev/null @@ -1,1019 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" -#include -#include -#include -#include -#include -#include -#include -#include - -#include "constr.hxx" -#include "copy.hxx" -#include "destr.hxx" - - -using namespace cppu; - -namespace cppu -{ - -//------------------------------------------------------------------------------ -static inline uno_Sequence * reallocSeq( - uno_Sequence * pReallocate, sal_Size nElementSize, sal_Int32 nElements ) -{ - OSL_ASSERT( nElements >= 0 ); - uno_Sequence * pNew = 0; - sal_uInt32 nSize = calcSeqMemSize( nElementSize, nElements ); - if (nSize > 0) - { - if (pReallocate == 0) - { - pNew = (uno_Sequence *) rtl_allocateMemory( nSize ); - } - else - { - pNew = (uno_Sequence *) rtl_reallocateMemory( pReallocate, nSize ); - } - if (pNew != 0) - { - // header init - pNew->nRefCount = 1; - pNew->nElements = nElements; - } - } - return pNew; -} - -//------------------------------------------------------------------------------ -static inline bool idefaultConstructElements( - uno_Sequence ** ppSeq, - typelib_TypeDescriptionReference * pElementType, - sal_Int32 nStartIndex, sal_Int32 nStopIndex, - sal_Int32 nAlloc = -1 ) // >= 0 means (re)alloc memory for nAlloc elements -{ - uno_Sequence * pSeq = *ppSeq; - switch (pElementType->eTypeClass) - { - case typelib_TypeClass_CHAR: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Unicode), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(sal_Unicode) * nStartIndex), - sizeof(sal_Unicode) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_BOOLEAN: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Bool), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(sal_Bool) * nStartIndex), - sizeof(sal_Bool) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_BYTE: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int8), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(sal_Int8) * nStartIndex), - sizeof(sal_Int8) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int16), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(sal_Int16) * nStartIndex), - sizeof(sal_Int16) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int32), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(sal_Int32) * nStartIndex), - sizeof(sal_Int32) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int64), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(sal_Int64) * nStartIndex), - sizeof(sal_Int64) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_FLOAT: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(float), nAlloc ); - if (pSeq != 0) - { - float * pElements = (float *) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - pElements[nPos] = 0.0; - } - } - break; - } - case typelib_TypeClass_DOUBLE: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(double), nAlloc ); - if (pSeq != 0) - { - double * pElements = (double *) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - pElements[nPos] = 0.0; - } - } - break; - } - case typelib_TypeClass_STRING: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(rtl_uString *), nAlloc ); - if (pSeq != 0) - { - rtl_uString ** pElements = (rtl_uString **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - pElements[nPos] = 0; - rtl_uString_new( &pElements[nPos] ); - } - } - break; - } - case typelib_TypeClass_TYPE: - { - if (nAlloc >= 0) - { - pSeq = reallocSeq( - pSeq, sizeof(typelib_TypeDescriptionReference *), nAlloc ); - } - if (pSeq != 0) - { - typelib_TypeDescriptionReference ** pElements = - (typelib_TypeDescriptionReference **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - pElements[nPos] = _getVoidType(); - } - } - break; - } - case typelib_TypeClass_ANY: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(uno_Any), nAlloc ); - if (pSeq != 0) - { - uno_Any * pElements = (uno_Any *) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - CONSTRUCT_EMPTY_ANY( &pElements[nPos] ); - } - } - break; - } - case typelib_TypeClass_ENUM: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int32), nAlloc ); - if (pSeq != 0) - { - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - sal_Int32 eEnum = - ((typelib_EnumTypeDescription *) - pElementTypeDescr)->nDefaultEnumValue; - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - - sal_Int32 * pElements = (sal_Int32 *) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - pElements[nPos] = eEnum; - } - } - break; - } - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - 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 ) - { - _defaultConstructStruct( - pElements + (nElementSize * nPos), - (typelib_CompoundTypeDescription *)pElementTypeDescr ); - } - } - - 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) - pSeq = reallocSeq( pSeq, sizeof(uno_Sequence *), nAlloc ); - if (pSeq != 0) - { - uno_Sequence ** pElements = - (uno_Sequence **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - pElements[nPos] = createEmptySequence(); - } - } - break; - } - case typelib_TypeClass_INTERFACE: // either C++ or C-UNO interface - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(void *), nAlloc ); - if (pSeq != 0) - { - ::rtl_zeroMemory( - pSeq->elements + (sizeof(void *) * nStartIndex), - sizeof(void *) * (nStopIndex - nStartIndex) ); - } - break; - default: - OSL_FAIL( "### unexpected element type!" ); - pSeq = 0; - break; - } - - if (pSeq == 0) - { - OSL_ASSERT( nAlloc >= 0 ); // must have been an allocation failure - return false; - } - else - { - *ppSeq = pSeq; - return true; - } -} - -//------------------------------------------------------------------------------ -static inline bool icopyConstructFromElements( - uno_Sequence ** ppSeq, void * pSourceElements, - typelib_TypeDescriptionReference * pElementType, - sal_Int32 nStartIndex, sal_Int32 nStopIndex, - uno_AcquireFunc acquire, - sal_Int32 nAlloc = -1 ) // >= 0 means (re)alloc memory for nAlloc elements -{ - uno_Sequence * pSeq = *ppSeq; - switch (pElementType->eTypeClass) - { - case typelib_TypeClass_CHAR: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Unicode), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Unicode) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Unicode) * nStartIndex), - sizeof(sal_Unicode) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_BOOLEAN: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Bool), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Bool) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Bool) * nStartIndex), - sizeof(sal_Bool) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_BYTE: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int8), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Int8) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Int8) * nStartIndex), - sizeof(sal_Int8) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int16), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Int16) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Int16) * nStartIndex), - sizeof(sal_Int16) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int32), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Int32) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Int32) * nStartIndex), - sizeof(sal_Int32) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int64), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Int64) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Int64) * nStartIndex), - sizeof(sal_Int64) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_FLOAT: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(float), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(float) * nStartIndex), - (char *)pSourceElements + (sizeof(float) * nStartIndex), - sizeof(float) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_DOUBLE: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(double), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(double) * nStartIndex), - (char *)pSourceElements + (sizeof(double) * nStartIndex), - sizeof(double) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_ENUM: - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(sal_Int32), nAlloc ); - if (pSeq != 0) - { - ::rtl_copyMemory( - pSeq->elements + (sizeof(sal_Int32) * nStartIndex), - (char *)pSourceElements + (sizeof(sal_Int32) * nStartIndex), - sizeof(sal_Int32) * (nStopIndex - nStartIndex) ); - } - break; - case typelib_TypeClass_STRING: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(rtl_uString *), nAlloc ); - if (pSeq != 0) - { - rtl_uString ** pDestElements = (rtl_uString **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - ::rtl_uString_acquire( - ((rtl_uString **)pSourceElements)[nPos] ); - pDestElements[nPos] = ((rtl_uString **)pSourceElements)[nPos]; - } - } - break; - } - case typelib_TypeClass_TYPE: - { - if (nAlloc >= 0) - { - pSeq = reallocSeq( - pSeq, sizeof(typelib_TypeDescriptionReference *), nAlloc ); - } - if (pSeq != 0) - { - typelib_TypeDescriptionReference ** pDestElements = - (typelib_TypeDescriptionReference **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - TYPE_ACQUIRE( - ((typelib_TypeDescriptionReference **) - pSourceElements)[nPos] ); - pDestElements[nPos] = - ((typelib_TypeDescriptionReference **) - pSourceElements)[nPos]; - } - } - break; - } - case typelib_TypeClass_ANY: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(uno_Any), nAlloc ); - if (pSeq != 0) - { - uno_Any * pDestElements = (uno_Any *) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - uno_Any * pSource = (uno_Any *)pSourceElements + nPos; - _copyConstructAny( - &pDestElements[nPos], - pSource->pData, - pSource->pType, 0, - acquire, 0 ); - } - } - break; - } - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - 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; - - typelib_CompoundTypeDescription * pTypeDescr = - (typelib_CompoundTypeDescription *)pElementTypeDescr; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - char * pDest = - pDestElements + (nElementSize * nPos); - char * pSource = - (char *)pSourceElements + (nElementSize * nPos); - - if (pTypeDescr->pBaseTypeDescription) - { - // copy base value - _copyConstructStruct( - pDest, pSource, - pTypeDescr->pBaseTypeDescription, acquire, 0 ); - } - - // then copy members - typelib_TypeDescriptionReference ** ppTypeRefs = - pTypeDescr->ppTypeRefs; - sal_Int32 * pMemberOffsets = pTypeDescr->pMemberOffsets; - sal_Int32 nDescr = pTypeDescr->nMembers; - - while (nDescr--) - { - ::uno_type_copyData( - pDest + pMemberOffsets[nDescr], - pSource + pMemberOffsets[nDescr], - ppTypeRefs[nDescr], acquire ); - } - } - } - - 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) - pSeq = reallocSeq( pSeq, sizeof(uno_Sequence *), nAlloc ); - if (pSeq != 0) - { - typelib_TypeDescription * pElementTypeDescr = 0; - TYPELIB_DANGER_GET( &pElementTypeDescr, pElementType ); - typelib_TypeDescriptionReference * pSeqElementType = - ((typelib_IndirectTypeDescription *) pElementTypeDescr)->pType; - uno_Sequence ** pDestElements = (uno_Sequence **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - uno_Sequence * pNew = icopyConstructSequence( - ((uno_Sequence **) pSourceElements)[nPos], - pSeqElementType, acquire, 0 ); - OSL_ASSERT( pNew != 0 ); - // ought never be a memory allocation problem, - // because of reference counted sequence handles - pDestElements[ nPos ] = pNew; - } - TYPELIB_DANGER_RELEASE( pElementTypeDescr ); - } - break; - } - case typelib_TypeClass_INTERFACE: - { - if (nAlloc >= 0) - pSeq = reallocSeq( pSeq, sizeof(void *), nAlloc ); - if (pSeq != 0) - { - void ** pDestElements = (void **) pSeq->elements; - for ( sal_Int32 nPos = nStartIndex; nPos < nStopIndex; ++nPos ) - { - _acquire( pDestElements[nPos] = - ((void **)pSourceElements)[nPos], acquire ); - } - } - break; - } - default: - OSL_FAIL( "### unexpected element type!" ); - pSeq = 0; - break; - } - - if (pSeq == 0) - { - OSL_ASSERT( nAlloc >= 0 ); // must have been an allocation failure - return false; - } - else - { - *ppSeq = pSeq; - return true; - } -} - -//------------------------------------------------------------------------------ -static inline bool ireallocSequence( - uno_Sequence ** ppSequence, - typelib_TypeDescriptionReference * pElementType, - sal_Int32 nSize, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) -{ - bool ret = true; - uno_Sequence * pSeq = *ppSequence; - sal_Int32 nElements = pSeq->nElements; - - if (pSeq->nRefCount > 1 || - // not mem-copyable elements? - typelib_TypeClass_ANY == pElementType->eTypeClass || - typelib_TypeClass_STRUCT == pElementType->eTypeClass || - typelib_TypeClass_EXCEPTION == pElementType->eTypeClass) - { - // split sequence and construct new one from scratch - uno_Sequence * pNew = 0; - - sal_Int32 nRest = nSize - nElements; - sal_Int32 nCopy = (nRest > 0 ? nElements : nSize); - - if (nCopy >= 0) - { - ret = icopyConstructFromElements( - &pNew, pSeq->elements, pElementType, - 0, nCopy, acquire, - nSize ); // alloc to nSize - } - if (ret && nRest > 0) - { - ret = idefaultConstructElements( - &pNew, pElementType, - nCopy, nSize, - nCopy >= 0 ? -1 /* no mem allocation */ : nSize ); - } - - if (ret) - { - // destruct sequence - if (osl_decrementInterlockedCount( &pSeq->nRefCount ) == 0) - { - if (nElements > 0) - { - idestructElements( - pSeq->elements, pElementType, - 0, nElements, release ); - } - rtl_freeMemory( pSeq ); - } - *ppSequence = pNew; - } - } - else - { - OSL_ASSERT( pSeq->nRefCount == 1 ); - if (nSize > nElements) // default construct the rest - { - ret = idefaultConstructElements( - ppSequence, pElementType, - nElements, nSize, - nSize ); // realloc to nSize - } - else // or destruct the rest and realloc mem - { - sal_Int32 nElementSize = idestructElements( - pSeq->elements, pElementType, - nSize, nElements, release ); - // warning: it is assumed that the following will never fail, - // else this leads to a sequence null handle - *ppSequence = reallocSeq( pSeq, nElementSize, nSize ); - OSL_ASSERT( *ppSequence != 0 ); - ret = (*ppSequence != 0); - } - } - - return ret; -} - -} - -extern "C" -{ - -//############################################################################## -sal_Bool SAL_CALL uno_type_sequence_construct( - uno_Sequence ** ppSequence, typelib_TypeDescriptionReference * pType, - void * pElements, sal_Int32 len, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C() -{ - bool ret; - if (len) - { - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - - typelib_TypeDescriptionReference * pElementType = - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType; - - *ppSequence = 0; - if (pElements == 0) - { - ret = idefaultConstructElements( - ppSequence, pElementType, - 0, len, - len ); // alloc to len - } - else - { - ret = icopyConstructFromElements( - ppSequence, pElements, pElementType, - 0, len, acquire, - len ); // alloc to len - } - - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - else - { - *ppSequence = createEmptySequence(); - ret = true; - } - - OSL_ASSERT( (*ppSequence != 0) == ret ); - return ret; -} - -//############################################################################## -sal_Bool SAL_CALL uno_sequence_construct( - uno_Sequence ** ppSequence, typelib_TypeDescription * pTypeDescr, - void * pElements, sal_Int32 len, - uno_AcquireFunc acquire ) - SAL_THROW_EXTERN_C() -{ - bool ret; - if (len > 0) - { - typelib_TypeDescriptionReference * pElementType = - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType; - - *ppSequence = 0; - if (pElements == 0) - { - ret = idefaultConstructElements( - ppSequence, pElementType, - 0, len, - len ); // alloc to len - } - else - { - ret = icopyConstructFromElements( - ppSequence, pElements, pElementType, - 0, len, acquire, - len ); // alloc to len - } - } - else - { - *ppSequence = createEmptySequence(); - ret = true; - } - - OSL_ASSERT( (*ppSequence != 0) == ret ); - return ret; -} - -//############################################################################## -sal_Bool SAL_CALL uno_type_sequence_realloc( - uno_Sequence ** ppSequence, typelib_TypeDescriptionReference * pType, - sal_Int32 nSize, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppSequence, "### null ptr!" ); - OSL_ENSURE( nSize >= 0, "### new size must be at least 0!" ); - - bool ret = true; - if (nSize != (*ppSequence)->nElements) - { - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - ret = ireallocSequence( - ppSequence, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - nSize, acquire, release ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - return ret; -} - -//############################################################################## -sal_Bool SAL_CALL uno_sequence_realloc( - uno_Sequence ** ppSequence, typelib_TypeDescription * pTypeDescr, - sal_Int32 nSize, uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppSequence, "### null ptr!" ); - OSL_ENSURE( nSize >= 0, "### new size must be at least 0!" ); - - bool ret = true; - if (nSize != (*ppSequence)->nElements) - { - ret = ireallocSequence( - ppSequence, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - nSize, acquire, release ); - } - return ret; -} - -//############################################################################## -sal_Bool SAL_CALL uno_type_sequence_reference2One( - uno_Sequence ** ppSequence, - typelib_TypeDescriptionReference * pType, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppSequence, "### null ptr!" ); - bool ret = true; - uno_Sequence * pSequence = *ppSequence; - if (pSequence->nRefCount > 1) - { - uno_Sequence * pNew = 0; - if (pSequence->nElements > 0) - { - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pType ); - - ret = icopyConstructFromElements( - &pNew, pSequence->elements, - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - 0, pSequence->nElements, acquire, - pSequence->nElements ); // alloc nElements - if (ret) - { - idestructSequence( *ppSequence, pType, pTypeDescr, release ); - *ppSequence = pNew; - } - - TYPELIB_DANGER_RELEASE( pTypeDescr ); - } - else - { - pNew = allocSeq( 0, 0 ); - ret = (pNew != 0); - if (ret) - { - // easy destruction of empty sequence: - if (osl_decrementInterlockedCount( &pSequence->nRefCount ) == 0) - rtl_freeMemory( pSequence ); - *ppSequence = pNew; - } - } - } - return ret; -} - -//############################################################################## -sal_Bool SAL_CALL uno_sequence_reference2One( - uno_Sequence ** ppSequence, - typelib_TypeDescription * pTypeDescr, - uno_AcquireFunc acquire, uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - OSL_ENSURE( ppSequence, "### null ptr!" ); - bool ret = true; - uno_Sequence * pSequence = *ppSequence; - if (pSequence->nRefCount > 1) - { - uno_Sequence * pNew = 0; - if (pSequence->nElements > 0) - { - ret = icopyConstructFromElements( - &pNew, pSequence->elements, - ((typelib_IndirectTypeDescription *)pTypeDescr)->pType, - 0, pSequence->nElements, acquire, - pSequence->nElements ); // alloc nElements - if (ret) - { - idestructSequence( - pSequence, pTypeDescr->pWeakRef, pTypeDescr, release ); - *ppSequence = pNew; - } - } - else - { - pNew = allocSeq( 0, 0 ); - ret = (pNew != 0); - if (ret) - { - // easy destruction of empty sequence: - if (osl_decrementInterlockedCount( &pSequence->nRefCount ) == 0) - rtl_freeMemory( pSequence ); - *ppSequence = pNew; - } - } - - } - return ret; -} - -//############################################################################## -void SAL_CALL uno_sequence_assign( - uno_Sequence ** ppDest, - uno_Sequence * pSource, - typelib_TypeDescription * pTypeDescr, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - if (*ppDest != pSource) - { - ::osl_incrementInterlockedCount( &pSource->nRefCount ); - idestructSequence( *ppDest, pTypeDescr->pWeakRef, pTypeDescr, release ); - *ppDest = pSource; - } -} - -//############################################################################## -void SAL_CALL uno_type_sequence_assign( - uno_Sequence ** ppDest, - uno_Sequence * pSource, - typelib_TypeDescriptionReference * pType, - uno_ReleaseFunc release ) - SAL_THROW_EXTERN_C() -{ - if (*ppDest != pSource) - { - ::osl_incrementInterlockedCount( &pSource->nRefCount ); - idestructSequence( *ppDest, pType, 0, release ); - *ppDest = pSource; - } -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppu/util/cppu.map b/cppu/util/cppu.map deleted file mode 100755 index 451b4b689..000000000 --- a/cppu/util/cppu.map +++ /dev/null @@ -1,127 +0,0 @@ -UDK_3_0_0 { - global: - typelib_typedescription_new; - typelib_typedescription_newInterface; - typelib_typedescription_newInterfaceMethod; - typelib_typedescription_newInterfaceAttribute; - typelib_typedescription_newEnum; - typelib_typedescription_newUnion; - typelib_typedescription_newArray; - typelib_typedescription_acquire; - typelib_typedescription_release; - typelib_typedescription_register; - typelib_typedescription_equals; - typelib_typedescription_isAssignableFrom; - typelib_typedescription_getByName; - typelib_typedescription_registerCallback; - typelib_typedescription_revokeCallback; - typelib_typedescriptionreference_new; - typelib_typedescriptionreference_acquire; - typelib_typedescriptionreference_release; - typelib_typedescriptionreference_getDescription; - typelib_typedescriptionreference_equals; - typelib_typedescriptionreference_assign; - typelib_typedescriptionreference_isAssignableFrom; - - typelib_setCacheSize; - - typelib_typedescriptionreference_newByAsciiName; - typelib_static_type_getByTypeClass; - typelib_static_type_init; - typelib_static_sequence_type_init; - typelib_static_compound_type_init; - typelib_static_interface_type_init; - typelib_static_enum_type_init; - typelib_static_array_type_init; - typelib_typedescription_complete; - - uno_equalData; - uno_type_equalData; - uno_constructData; - uno_type_constructData; - uno_destructData; - uno_type_destructData; - uno_copyData; - uno_type_copyData; - uno_copyAndConvertData; - uno_type_copyAndConvertData; - uno_assignData; - uno_type_assignData; - uno_type_isAssignableFromData; - - uno_any_assign; - uno_type_any_assign; - uno_any_construct; - uno_type_any_construct; - uno_any_constructAndConvert; - uno_type_any_constructAndConvert; - uno_any_destruct; - uno_any_clear; - - uno_sequence_assign; - uno_type_sequence_assign; - uno_sequence_construct; - uno_type_sequence_construct; - uno_sequence_reference2One; - uno_type_sequence_reference2One; - uno_sequence_realloc; - uno_type_sequence_realloc; - - uno_createEnvironment; - uno_getEnvironment; - uno_getRegisteredEnvironments; - uno_dumpEnvironment; - uno_dumpEnvironmentByName; - uno_getMapping; - uno_getMappingByName; - uno_registerMapping; - uno_revokeMapping; - uno_registerMappingCallback; - uno_revokeMappingCallback; - - uno_getCurrentContext; - uno_setCurrentContext; - - uno_bindIdToCurrentThread; - uno_getIdOfCurrentThread; - uno_releaseIdFromCurrentThread; - uno_threadpool_enter; - uno_threadpool_create; - uno_threadpool_destroy; - uno_threadpool_putJob; - uno_threadpool_dispose; - uno_threadpool_attach; - uno_threadpool_detach; - - cppu_unsatisfied_iquery_msg; - local: - *; -}; - -UDK_3.1 { - global: - typelib_static_mi_interface_type_init; - typelib_static_struct_type_init; - typelib_typedescription_newExtendedInterfaceAttribute; - typelib_typedescription_newMIInterface; - typelib_typedescription_newStruct; - cppu_Any_extraction_failure_msg; -} UDK_3_0_0; - -UDK_3.2 { - global: - uno_EnvDcp_getTypeName; - uno_EnvDcp_getPurpose; - - uno_getCurrentEnvironment; - uno_Environment_invoke_v; - uno_Environment_invoke; - uno_Environment_enter; - - uno_Environment_isValid; -} UDK_3.1; - -UDK_3.3 { # OOo 2.4 - global: - cppu_unsatisfied_iset_msg; -} UDK_3.2; diff --git a/cppu/util/empty.def b/cppu/util/empty.def deleted file mode 100644 index 269c8f14c..000000000 --- a/cppu/util/empty.def +++ /dev/null @@ -1,6 +0,0 @@ -HEAPSIZE 0 -EXPORTS - - - - diff --git a/cppu/util/extra.mk b/cppu/util/extra.mk deleted file mode 100644 index 8c6d6944e..000000000 --- a/cppu/util/extra.mk +++ /dev/null @@ -1,71 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=.. - -PRJNAME :=cppu -TARGET :=cppu -ENABLE_EXCEPTIONS:=TRUE -NO_BSYMBOLIC :=TRUE -USE_DEFFILE :=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk -.INCLUDE : ../source/helper/purpenv/export.mk - -# --- Files -------------------------------------------------------- - -SHL3TARGET := unsafe_uno_uno -SHL3IMPLIB := i$(SHL3TARGET) -SHL3STDLIBS := $(purpenv_helper_LIB) $(SALLIB) -SHL3OBJS := $(SLO)$/UnsafeBridge.obj -SHL3DEF := empty.def -SHL3OBJS := $(SLO)$/UnsafeBridge.obj -SHL3RPATH := URELIB - -SHL4TARGET := affine_uno_uno -SHL4IMPLIB := i$(SHL4TARGET) -SHL4STDLIBS := $(purpenv_helper_LIB) $(SALLIB) -SHL4OBJS := $(SLO)$/AffineBridge.obj -SHL4DEF := empty.def -SHL4OBJS := $(SLO)$/AffineBridge.obj -SHL4RPATH := URELIB - - -SHL5TARGET := log_uno_uno -SHL5IMPLIB := i$(SHL5TARGET) -SHL5STDLIBS := $(purpenv_helper_LIB) $(SALLIB) $(CPPULIB) -SHL5OBJS := $(SLO)$/LogBridge.obj - -SHL5DEF := empty.def -SHL5RPATH := URELIB - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - diff --git a/cppu/util/makefile.mk b/cppu/util/makefile.mk deleted file mode 100644 index 0c09a1bda..000000000 --- a/cppu/util/makefile.mk +++ /dev/null @@ -1,100 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=.. - -PRJNAME=cppu -TARGET=cppu -USE_DEFFILE=TRUE -ENABLE_EXCEPTIONS=TRUE -NO_BSYMBOLIC=TRUE - -.IF "$(OS)" != "WNT" -UNIXVERSIONNAMES=UDK -.ENDIF - - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk -.INCLUDE : ../source/helper/purpenv/export.mk - -# --- Files -------------------------------------------------------- - -SHL1LIBS= \ - $(SLB)$/cppu_typelib.lib \ - $(SLB)$/cppu_uno.lib \ - $(SLB)$/cppu_threadpool.lib \ - $(SLB)$/cppu_cppu.lib - -.IF "$(GUI)" == "WNT" -SHL1TARGET=$(TARGET)$(UDK_MAJOR) -.ELSE -SHL1TARGET= uno_$(TARGET) -.ENDIF - -SHL1STDLIBS = $(SALLIB) - -SHL1DEPN= -.IF "$(COM)" == "MSC" -SHL1IMPLIB=i$(TARGET) -.ELSE -SHL1IMPLIB=uno_$(TARGET) -.ENDIF -.IF "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" && "$(OS)"!="OPENBSD" && "$(OS)"!="DRAGONFLY" -SHL1DEF=$(MISC)$/$(SHL1TARGET).def -.ENDIF - -SHL1VERSIONMAP=$(TARGET).map -SHL1RPATH=URELIB - -DEF1NAME=$(SHL1TARGET) - - -SHL2TARGET := $(NAMEpurpenv_helper) -DEF2NAME := $(SHL2TARGET) -.IF "$(GUI)$(COM)"=="WNTGCC" -SHL2VERSIONMAP:=uno_purpenvhelper$(COMID).map -.ELIF "$(COMNAME)"=="mscx" -SHL2VERSIONMAP:=$(SHL2TARGET)X.map -.ELSE -SHL2VERSIONMAP:=$(SHL2TARGET).map -.ENDIF # "$(GUI)$(COM)"=="WNTGCC" -SHL2DEF := $(MISC)$/$(SHL2TARGET).def -SHL2IMPLIB := i$(SHL2TARGET) -SHL2STDLIBS := $(CPPULIB) $(SALLIB) -SHL2RPATH := URELIB -SHL2OBJS := \ - $(SLO)$/helper_purpenv_Environment.obj \ - $(SLO)$/helper_purpenv_Mapping.obj \ - $(SLO)$/helper_purpenv_Proxy.obj -SHL2DEPN=$(SHL1TARGETN) - -# --- Targets ------------------------------------------------------ -.INCLUDE : target.mk - -ALLTAR: - $(MAKE) $(MAKECMDGOALS) -f extra.mk diff --git a/cppu/util/makefile.pmk b/cppu/util/makefile.pmk deleted file mode 100644 index 95e83db6d..000000000 --- a/cppu/util/makefile.pmk +++ /dev/null @@ -1,28 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -ENABLE_EXCEPTIONS=TRUE -NO_BSYMBOLIC=TRUE diff --git a/cppu/util/purpenvhelper3MSC.map b/cppu/util/purpenvhelper3MSC.map deleted file mode 100644 index 5bbb14e9a..000000000 --- a/cppu/util/purpenvhelper3MSC.map +++ /dev/null @@ -1,8 +0,0 @@ -UDK_3_0_0 { - global: - ?Environment_initWithEnterable@purpenv@helper@cppu@@YAXPAU_uno_Environment@@PAVEnterable@3@@Z; - ?createMapping@purpenv@helper@cppu@@YAXPAPAU_uno_Mapping@@PAU_uno_Environment@@1P6AX_NPAX3PAU_typelib_TypeDescriptionReference@@PAU_typelib_MethodParameter@@JPBU_typelib_TypeDescription@@3QAPAXPAPAU_uno_Any@@@Z3@Z; - - local: - *; -}; diff --git a/cppu/util/purpenvhelper3MSCX.map b/cppu/util/purpenvhelper3MSCX.map deleted file mode 100644 index 22485191c..000000000 --- a/cppu/util/purpenvhelper3MSCX.map +++ /dev/null @@ -1,8 +0,0 @@ -UDK_3_0_0 { - global: - ?Environment_initWithEnterable@purpenv@helper@cppu@@YAXPEAU_uno_Environment@@PEAVEnterable@3@@Z; - ?createMapping@purpenv@helper@cppu@@YAXPEAPEAU_uno_Mapping@@PEAU_uno_Environment@@1P6AX_NPEAX3PEAU_typelib_TypeDescriptionReference@@PEAU_typelib_MethodParameter@@JPEBU_typelib_TypeDescription@@3QEAPEAXPEAPEAU_uno_Any@@@Z3@Z; - - local: - *; -}; diff --git a/cppu/util/target.pmk b/cppu/util/target.pmk deleted file mode 100644 index a94ea7c8d..000000000 --- a/cppu/util/target.pmk +++ /dev/null @@ -1,57 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# -# for a copy of the LGPLv3 License. -# -#************************************************************************* -.IF "$(debug)" == "" - -# switch on aggressive opt - -# msvc++ -.IF "$(COM)" == "MSC" -CFLAGS += -Ox -.ENDIF - -# sunpro 5 -.IF "$(COM)" == "C50" -CFLAGS += -O5 -xO5 -.ENDIF - -# gcc -.IF "$(COM)" == "GCC" -CFLAGS += -O -.ENDIF - -.ELSE - -# msvc++: no inlining -.IF "$(COM)" == "MSC" -CFLAGS += -Ob0 -.ENDIF - -.ENDIF - -.IF "$(COM)$(CPU)" == "MSCX" -CFLAGS += -DCPPU_LEAK_STATIC_DATA -.ENDIF diff --git a/cppu/util/uno_purpenvhelperC52.map b/cppu/util/uno_purpenvhelperC52.map deleted file mode 100644 index 5213c8ade..000000000 --- a/cppu/util/uno_purpenvhelperC52.map +++ /dev/null @@ -1,9 +0,0 @@ -UDK_3_0_0 { - global: - __1cEcppuGhelperHpurpenvNcreateMapping6FppnM_uno_Mapping_pnQ_uno_Environment_7pFbpv8pnbH_typelib_TypeDescriptionReference_pnY_typelib_MethodParameter_lpknY_typelib_TypeDescription_8p8ppnI_uno_Any__v8_v_; # S-ILP32 - __1cEcppuGhelperHpurpenvNcreateMapping6FppnM_uno_Mapping_pnQ_uno_Environment_7pFbpv8pnbH_typelib_TypeDescriptionReference_pnY_typelib_MethodParameter_ipknY_typelib_TypeDescription_8p8ppnI_uno_Any__v8_v_; # S-LP64 - __1cEcppuGhelperHpurpenvbDEnvironment_initWithEnterable6FpnQ_uno_Environment_pn0AJEnterable__v_; - - local: - *; -}; diff --git a/cppu/util/uno_purpenvhelpergcc3.map b/cppu/util/uno_purpenvhelpergcc3.map deleted file mode 100644 index 1a8f13238..000000000 --- a/cppu/util/uno_purpenvhelpergcc3.map +++ /dev/null @@ -1,8 +0,0 @@ -UDK_3_0_0 { - global: - _ZN4cppu6helper7purpenv13createMappingEPP12_uno_MappingP16_uno_EnvironmentS6_PFvbPvS7_P33_typelib_TypeDescriptionReferenceP24_typelib_MethodParameter?PK24_typelib_TypeDescriptionS7_PS7_PP8_uno_AnyES7_; - _ZN4cppu6helper7purpenv29Environment_initWithEnterableEP16_uno_EnvironmentPNS_9EnterableE; - - local: - *; -}; diff --git a/cppu/util/uno_purpenvhelperwntgcc.map b/cppu/util/uno_purpenvhelperwntgcc.map deleted file mode 100644 index eb224df0b..000000000 --- a/cppu/util/uno_purpenvhelperwntgcc.map +++ /dev/null @@ -1,8 +0,0 @@ -UDK_3_0_0 { - global: - _ZN4cppu6helper7purpenv13createMappingEPP12_uno_MappingP16_uno_EnvironmentS6_PFvbPvS7_P33_typelib_TypeDescriptionReferenceP24_typelib_MethodParameterlPK24_typelib_TypeDescriptionS7_PS7_PP8_uno_AnyES7_; - _ZN4cppu6helper7purpenv29Environment_initWithEnterableEP16_uno_EnvironmentPNS_9EnterableE; - - local: - *; -}; diff --git a/cppu/util/unsafe_os2.map b/cppu/util/unsafe_os2.map deleted file mode 100644 index cc6a0ddca..000000000 --- a/cppu/util/unsafe_os2.map +++ /dev/null @@ -1,7 +0,0 @@ -UDK_3_0_0 { - global: - uno_initEnvironment; - uno_ext_getMapping; - local: - *; -}; -- cgit v1.2.3