diff options
Diffstat (limited to 'testtools/source/bridgetest/cppobj.cxx')
-rw-r--r-- | testtools/source/bridgetest/cppobj.cxx | 1229 |
1 files changed, 1229 insertions, 0 deletions
diff --git a/testtools/source/bridgetest/cppobj.cxx b/testtools/source/bridgetest/cppobj.cxx new file mode 100644 index 000000000000..68c725240971 --- /dev/null +++ b/testtools/source/bridgetest/cppobj.cxx @@ -0,0 +1,1229 @@ +/************************************************************************* + * + * 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 + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_testtools.hxx" +#include <stdio.h> + +#include "cppu/unotype.hxx" +#include <osl/diagnose.h> +#include "osl/diagnose.hxx" +#include <osl/thread.h> +#include <osl/mutex.hxx> +#include <osl/time.h> + +#include <cppuhelper/implbase3.hxx> +#include <cppuhelper/factory.hxx> +#include "cppuhelper/exc_hlp.hxx" +#include "cppuhelper/compbase_ex.hxx" +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/registry/XRegistryKey.hpp> +#include "com/sun/star/uno/Any.hxx" +#include "com/sun/star/uno/RuntimeException.hpp" +#include "com/sun/star/uno/Sequence.hxx" + +#include "test/testtools/bridgetest/Constructors.hpp" +#include "test/testtools/bridgetest/Constructors2.hpp" +#include "test/testtools/bridgetest/TestPolyStruct.hpp" +#include "test/testtools/bridgetest/TestPolyStruct2.hpp" +#include "test/testtools/bridgetest/XBridgeTest2.hpp" +#include "test/testtools/bridgetest/XMulti.hpp" + +#include "currentcontextchecker.hxx" +#include "multi.hxx" + +using namespace rtl; +using namespace osl; +using namespace cppu; +using namespace com::sun::star::uno; +using namespace com::sun::star::lang; +using namespace com::sun::star::registry; +using namespace test::testtools::bridgetest; + +#define SERVICENAME "com.sun.star.test.bridge.CppTestObject" +#define IMPLNAME "com.sun.star.comp.bridge.CppTestObject" + +namespace bridge_object +{ + +//-------------------------------------------------------------------------------------------------- +inline static Sequence< OUString > getSupportedServiceNames() +{ + OUString aName( RTL_CONSTASCII_USTRINGPARAM(SERVICENAME) ); + return Sequence< OUString >( &aName, 1 ); +} + +//================================================================================================== +static void assign( TestElement & rData, + sal_Bool bBool, sal_Unicode cChar, sal_Int8 nByte, + sal_Int16 nShort, sal_uInt16 nUShort, + sal_Int32 nLong, sal_uInt32 nULong, + sal_Int64 nHyper, sal_uInt64 nUHyper, + float fFloat, double fDouble, + TestEnum eEnum, const ::rtl::OUString& rStr, + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + const ::com::sun::star::uno::Any& rAny ) +{ + rData.Bool = bBool; + rData.Char = cChar; + rData.Byte = nByte; + rData.Short = nShort; + rData.UShort = nUShort; + rData.Long = nLong; + rData.ULong = nULong; + rData.Hyper = nHyper; + rData.UHyper = nUHyper; + rData.Float = fFloat; + rData.Double = fDouble; + rData.Enum = eEnum; + rData.String = rStr; + rData.Interface = xTest; + rData.Any = rAny; +} +//================================================================================================== +static void assign( TestData & rData, + sal_Bool bBool, sal_Unicode cChar, sal_Int8 nByte, + sal_Int16 nShort, sal_uInt16 nUShort, + sal_Int32 nLong, sal_uInt32 nULong, + sal_Int64 nHyper, sal_uInt64 nUHyper, + float fFloat, double fDouble, + TestEnum eEnum, const ::rtl::OUString& rStr, + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + const ::com::sun::star::uno::Any& rAny, + const com::sun::star::uno::Sequence< TestElement >& rSequence ) +{ + assign( (TestElement &)rData, + bBool, cChar, nByte, nShort, nUShort, nLong, nULong, nHyper, nUHyper, fFloat, fDouble, + eEnum, rStr, xTest, rAny ); + rData.Sequence = rSequence; +} + +//================================================================================================== +class Test_Impl : + protected osl::DebugBase<Test_Impl>, + public WeakImplHelper3< XBridgeTest2, XServiceInfo , XRecursiveCall > +{ + TestData _aData, _aStructData; + sal_Int32 m_nLastCallId; + sal_Bool m_bFirstCall; + sal_Bool m_bSequenceOfCallTestPassed; + Mutex m_mutex; + + Sequence<sal_Bool> _arBool; + Sequence<sal_Unicode> _arChar; + Sequence<sal_Int8> _arByte; + Sequence<sal_Int16> _arShort; + Sequence<sal_uInt16> _arUShort; + Sequence<sal_Int32> _arLong; + Sequence<sal_uInt32> _arULong; + Sequence<sal_Int64> _arHyper; + Sequence<sal_uInt64> _arUHyper; + Sequence<OUString> _arString; + Sequence<float> _arFloat; + Sequence<double> _arDouble; + Sequence<TestEnum> _arEnum; + Sequence<Reference<XInterface> > _arObject; + Sequence<Sequence<sal_Int32> > _arLong2; + Sequence<Sequence<Sequence<sal_Int32> > > _arLong3; + Sequence<Any> _arAny; + Sequence<TestElement> _arStruct; + +public: + Test_Impl() : m_nLastCallId( 0 ), + m_bFirstCall( sal_True ), + m_bSequenceOfCallTestPassed( sal_True ) + {} + virtual ~Test_Impl() + { + OSL_TRACE( "> scalar Test_Impl dtor <\n" ); + } + + void SAL_CALL acquire() throw () + { + OWeakObject::acquire(); + } + void SAL_CALL release() throw () + { + OWeakObject::release(); + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() throw (RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const OUString & rServiceName ) throw (RuntimeException); + virtual Sequence< OUString > SAL_CALL getSupportedServiceNames() throw (RuntimeException); + + // XLBTestBase + virtual void SAL_CALL setValues( sal_Bool bBool, sal_Unicode cChar, sal_Int8 nByte, + sal_Int16 nShort, sal_uInt16 nUShort, + sal_Int32 nLong, sal_uInt32 nULong, + sal_Int64 nHyper, sal_uInt64 nUHyper, + float fFloat, double fDouble, + TestEnum eEnum, const ::rtl::OUString& rStr, + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + const ::com::sun::star::uno::Any& rAny, + const ::com::sun::star::uno::Sequence<TestElement >& rSequence, + const TestData& rStruct ) + throw(com::sun::star::uno::RuntimeException); + + virtual TestData SAL_CALL setValues2( sal_Bool& bBool, sal_Unicode& cChar, sal_Int8& nByte, + sal_Int16& nShort, sal_uInt16& nUShort, + sal_Int32& nLong, sal_uInt32& nULong, + sal_Int64& nHyper, sal_uInt64& nUHyper, + float& fFloat, double& fDouble, + TestEnum& eEnum, rtl::OUString& rStr, + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + ::com::sun::star::uno::Any& rAny, + ::com::sun::star::uno::Sequence<TestElement >& rSequence, + TestData& rStruct ) + throw(com::sun::star::uno::RuntimeException); + + virtual TestData SAL_CALL getValues( sal_Bool& bBool, sal_Unicode& cChar, sal_Int8& nByte, + sal_Int16& nShort, sal_uInt16& nUShort, + sal_Int32& nLong, sal_uInt32& nULong, + sal_Int64& nHyper, sal_uInt64& nUHyper, + float& fFloat, double& fDouble, + TestEnum& eEnum, rtl::OUString& rStr, + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + ::com::sun::star::uno::Any& rAny, + ::com::sun::star::uno::Sequence< TestElement >& rSequence, + TestData& rStruct ) + throw(com::sun::star::uno::RuntimeException); + + virtual SmallStruct SAL_CALL echoSmallStruct(const SmallStruct& rStruct) throw(com::sun::star::uno::RuntimeException) + { return rStruct; } + virtual MediumStruct SAL_CALL echoMediumStruct(const MediumStruct& rStruct) throw(com::sun::star::uno::RuntimeException) + { return rStruct; } + virtual BigStruct SAL_CALL echoBigStruct(const BigStruct& rStruct) throw(com::sun::star::uno::RuntimeException) + { return rStruct; } + virtual AllFloats SAL_CALL echoAllFloats(const AllFloats& rStruct) throw(com::sun::star::uno::RuntimeException) + { return rStruct; } + virtual sal_Int32 SAL_CALL testPPCAlignment( sal_Int64, sal_Int64, sal_Int32, sal_Int64, sal_Int32 i2 ) throw(com::sun::star::uno::RuntimeException) + { return i2; } + + virtual sal_Bool SAL_CALL getBool() throw(com::sun::star::uno::RuntimeException) + { return _aData.Bool; } + virtual sal_Int8 SAL_CALL getByte() throw(com::sun::star::uno::RuntimeException) + { return _aData.Byte; } + virtual sal_Unicode SAL_CALL getChar() throw(com::sun::star::uno::RuntimeException) + { return _aData.Char; } + virtual sal_Int16 SAL_CALL getShort() throw(com::sun::star::uno::RuntimeException) + { return _aData.Short; } + virtual sal_uInt16 SAL_CALL getUShort() throw(com::sun::star::uno::RuntimeException) + { return _aData.UShort; } + virtual sal_Int32 SAL_CALL getLong() throw(com::sun::star::uno::RuntimeException) + { return _aData.Long; } + virtual sal_uInt32 SAL_CALL getULong() throw(com::sun::star::uno::RuntimeException) + { return _aData.ULong; } + virtual sal_Int64 SAL_CALL getHyper() throw(com::sun::star::uno::RuntimeException) + { return _aData.Hyper; } + virtual sal_uInt64 SAL_CALL getUHyper() throw(com::sun::star::uno::RuntimeException) + { return _aData.UHyper; } + virtual float SAL_CALL getFloat() throw(com::sun::star::uno::RuntimeException) + { return _aData.Float; } + virtual double SAL_CALL getDouble() throw(com::sun::star::uno::RuntimeException) + { return _aData.Double; } + virtual TestEnum SAL_CALL getEnum() throw(com::sun::star::uno::RuntimeException) + { return _aData.Enum; } + virtual rtl::OUString SAL_CALL getString() throw(com::sun::star::uno::RuntimeException) + { return _aData.String; } + virtual com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getInterface( ) throw(com::sun::star::uno::RuntimeException) + { return _aData.Interface; } + virtual com::sun::star::uno::Any SAL_CALL getAny() throw(com::sun::star::uno::RuntimeException) + { return _aData.Any; } + virtual com::sun::star::uno::Sequence< TestElement > SAL_CALL getSequence() throw(com::sun::star::uno::RuntimeException) + { return _aData.Sequence; } + virtual TestData SAL_CALL getStruct() throw(com::sun::star::uno::RuntimeException) + { return _aStructData; } + + virtual void SAL_CALL setBool( sal_Bool _bool ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Bool = _bool; } + virtual void SAL_CALL setByte( sal_Int8 _byte ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Byte = _byte; } + virtual void SAL_CALL setChar( sal_Unicode _char ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Char = _char; } + virtual void SAL_CALL setShort( sal_Int16 _short ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Short = _short; } + virtual void SAL_CALL setUShort( sal_uInt16 _ushort ) throw(::com::sun::star::uno::RuntimeException) + { _aData.UShort = _ushort; } + virtual void SAL_CALL setLong( sal_Int32 _long ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Long = _long; } + virtual void SAL_CALL setULong( sal_uInt32 _ulong ) throw(::com::sun::star::uno::RuntimeException) + { _aData.ULong = _ulong; } + virtual void SAL_CALL setHyper( sal_Int64 _hyper ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Hyper = _hyper; } + virtual void SAL_CALL setUHyper( sal_uInt64 _uhyper ) throw(::com::sun::star::uno::RuntimeException) + { _aData.UHyper = _uhyper; } + virtual void SAL_CALL setFloat( float _float ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Float = _float; } + virtual void SAL_CALL setDouble( double _double ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Double = _double; } + virtual void SAL_CALL setEnum( TestEnum _enum ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Enum = _enum; } + virtual void SAL_CALL setString( const ::rtl::OUString& _string ) throw(::com::sun::star::uno::RuntimeException) + { _aData.String = _string; } + virtual void SAL_CALL setInterface( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _interface ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Interface = _interface; } + virtual void SAL_CALL setAny( const ::com::sun::star::uno::Any& _any ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Any = _any; } + virtual void SAL_CALL setSequence( const ::com::sun::star::uno::Sequence<TestElement >& _sequence ) throw(::com::sun::star::uno::RuntimeException) + { _aData.Sequence = _sequence; } + virtual void SAL_CALL setStruct( const TestData& _struct ) throw(::com::sun::star::uno::RuntimeException) + { _aStructData = _struct; } + + virtual sal_Int32 SAL_CALL getRaiseAttr1() throw (RuntimeException) + { throw RuntimeException(); } + + virtual void SAL_CALL setRaiseAttr1(sal_Int32) + throw (IllegalArgumentException, RuntimeException) + { throw IllegalArgumentException(); } + + virtual sal_Int32 SAL_CALL getRaiseAttr2() + throw (IllegalArgumentException, RuntimeException) + { throw IllegalArgumentException(); } + + virtual TestPolyStruct< sal_Bool > SAL_CALL transportPolyBoolean( + TestPolyStruct< sal_Bool > const & arg) throw (RuntimeException) + { return arg; } + + virtual void SAL_CALL transportPolyHyper(TestPolyStruct< sal_Int64 > &) + throw (RuntimeException) {} + + virtual void SAL_CALL transportPolySequence( + TestPolyStruct< Sequence< Any > > const & arg1, + TestPolyStruct< Sequence< Any > > & arg2) throw (RuntimeException) + { arg2 = arg1; } + + virtual TestPolyStruct< sal_Int32 > SAL_CALL getNullPolyLong() + throw (RuntimeException) + { return TestPolyStruct< sal_Int32 >(0); /* work around MS compiler bug */ } + + virtual TestPolyStruct< rtl::OUString > SAL_CALL getNullPolyString() + throw (RuntimeException) + { return TestPolyStruct< rtl::OUString >(); } + + virtual TestPolyStruct< Type > SAL_CALL getNullPolyType() + throw (RuntimeException) + { return TestPolyStruct< Type >(); } + + virtual TestPolyStruct< Any > SAL_CALL getNullPolyAny() + throw (RuntimeException) + { return TestPolyStruct< Any >(); } + + virtual TestPolyStruct< Sequence< sal_Bool > > SAL_CALL + getNullPolySequence() throw (RuntimeException) + { return TestPolyStruct< Sequence< sal_Bool > >(); } + + virtual TestPolyStruct< TestEnum > SAL_CALL getNullPolyEnum() + throw (RuntimeException) + { return TestPolyStruct< TestEnum >( + test::testtools::bridgetest::TestEnum_TEST); + /* work around MS compiler bug */ } + + virtual TestPolyStruct< TestBadEnum > SAL_CALL getNullPolyBadEnum() + throw (RuntimeException) + { return TestPolyStruct< TestBadEnum >( + test::testtools::bridgetest::TestBadEnum_M); + /* explicitly instantiate with default enumerator */ } + + virtual TestPolyStruct< TestStruct > SAL_CALL getNullPolyStruct() + throw (RuntimeException) + { return TestPolyStruct< TestStruct >(); } + + virtual TestPolyStruct< Reference< XBridgeTestBase > > SAL_CALL + getNullPolyInterface() throw (RuntimeException) + { return TestPolyStruct< Reference< XBridgeTestBase > >(); } + + virtual ::com::sun::star::uno::Any SAL_CALL transportAny( + const ::com::sun::star::uno::Any& value ) + throw(::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL call( sal_Int32 nCallId, sal_Int32 nWaitMUSEC ) + throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL callOneway( sal_Int32 nCallId, sal_Int32 nWaitMUSEC ) + throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL sequenceOfCallTestPassed( ) + throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL startRecursiveCall( + const ::com::sun::star::uno::Reference< XRecursiveCall >& xCall, sal_Int32 nToCall ) + throw(::com::sun::star::uno::RuntimeException); + + virtual Reference< XMulti > SAL_CALL getMulti() throw (RuntimeException); + + virtual rtl::OUString SAL_CALL testMulti(Reference< XMulti > const & multi) + throw (RuntimeException); + +public: // XBridgeTest + virtual TestData SAL_CALL raiseException( sal_Int16 nArgumentPos, const OUString & rMsg, const Reference< XInterface > & xCOntext ) + throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL raiseRuntimeExceptionOneway( + const ::rtl::OUString& Message, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Context ) + throw(::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getRuntimeException() throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setRuntimeException( sal_Int32 _runtimeexception ) throw(::com::sun::star::uno::RuntimeException); + + // XBridgeTest2 + virtual Sequence< sal_Bool > SAL_CALL setSequenceBool( + const Sequence< sal_Bool >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_Unicode > SAL_CALL setSequenceChar( + const Sequence< sal_Unicode >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_Int8 > SAL_CALL setSequenceByte( + const Sequence< sal_Int8 >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_Int16 > SAL_CALL setSequenceShort( + const Sequence< sal_Int16 >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_uInt16 > SAL_CALL setSequenceUShort( + const Sequence< sal_uInt16 >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_Int32 > SAL_CALL setSequenceLong( + const Sequence< sal_Int32 >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_uInt32 > SAL_CALL setSequenceULong( + const Sequence< sal_uInt32 >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_Int64 > SAL_CALL setSequenceHyper( + const Sequence< sal_Int64 >& aSeq ) throw (RuntimeException); + virtual Sequence< sal_uInt64 > SAL_CALL setSequenceUHyper( + const Sequence< sal_uInt64 >& aSeq ) throw (RuntimeException); + virtual Sequence< float > SAL_CALL setSequenceFloat( + const Sequence< float >& aSeq ) throw (RuntimeException); + virtual Sequence< double > SAL_CALL setSequenceDouble( + const Sequence< double >& aSeq ) throw (RuntimeException); + virtual Sequence< TestEnum > SAL_CALL setSequenceEnum( + const Sequence< TestEnum >& aSeq ) throw (RuntimeException) ; + virtual Sequence< OUString > SAL_CALL setSequenceString( + const Sequence< OUString >& aString ) throw (RuntimeException); + virtual Sequence< Reference< XInterface > > SAL_CALL setSequenceXInterface( + const Sequence< Reference< XInterface > >& aSeq ) + throw (RuntimeException); + virtual Sequence<Any > SAL_CALL setSequenceAny( + const Sequence<Any >& aSeq ) throw (RuntimeException); + virtual Sequence<TestElement > SAL_CALL setSequenceStruct( + const Sequence< TestElement >& aSeq ) throw (RuntimeException); + virtual Sequence< Sequence< sal_Int32 > > SAL_CALL setDim2( + const Sequence<Sequence< sal_Int32 > >& aSeq ) throw (RuntimeException); + virtual Sequence< Sequence< Sequence< sal_Int32 > > > SAL_CALL setDim3( + const Sequence< Sequence< Sequence< sal_Int32 > > >& aSeq ) + throw (RuntimeException); + virtual void SAL_CALL setSequencesInOut(Sequence< sal_Bool >& aSeqBoolean, + Sequence< sal_Unicode >& aSeqChar, + Sequence< sal_Int8 >& aSeqByte, + Sequence< sal_Int16 >& aSeqShort, + Sequence< sal_uInt16 >& aSeqUShort, + Sequence< sal_Int32 >& aSeqLong, + Sequence< sal_uInt32 >& aSeqULong, + Sequence< sal_Int64 >& aSeqHyper, + Sequence< sal_uInt64 >& aSeqUHyper, + Sequence< float >& aSeqFloat, + Sequence< double >& aSeqDouble, + Sequence< TestEnum >& aSeqTestEnum, + Sequence< OUString >& aSeqString, + Sequence<Reference<XInterface > >& aSeqXInterface, + Sequence< Any >& aSeqAny, + Sequence< Sequence< sal_Int32 > >& aSeqDim2, + Sequence< Sequence< Sequence< sal_Int32 > > >& aSeqDim3 ) + throw (RuntimeException); + virtual void SAL_CALL setSequencesOut( Sequence< sal_Bool >& aSeqBoolean, + Sequence< sal_Unicode >& aSeqChar, + Sequence< sal_Int8 >& aSeqByte, + Sequence< sal_Int16 >& aSeqShort, + Sequence< sal_uInt16 >& aSeqUShort, + Sequence< sal_Int32 >& aSeqLong, + Sequence< sal_uInt32 >& aSeqULong, + Sequence< sal_Int64 >& aSeqHyper, + Sequence< sal_uInt64 >& aSeqUHyper, + Sequence< float >& aSeqFloat, + Sequence< double >& aSeqDouble, + Sequence< TestEnum >& aSeqEnum, + Sequence< OUString >& aSeqString, + Sequence< Reference< XInterface > >& aSeqXInterface, + Sequence< Any >& aSeqAny, + Sequence< Sequence< sal_Int32 > >& aSeqDim2, + Sequence< Sequence< Sequence< sal_Int32 > > >& aSeqDim3 ) + throw (RuntimeException); + virtual void SAL_CALL testConstructorsService( + Reference< XComponentContext > const & context) + throw (RuntimeException); + virtual Reference< XCurrentContextChecker > SAL_CALL + getCurrentContextChecker() + throw (RuntimeException); + +public: + virtual void SAL_CALL callRecursivly( const ::com::sun::star::uno::Reference< XRecursiveCall >& xCall, sal_Int32 nToCall ) throw(::com::sun::star::uno::RuntimeException); +}; + +//Dummy class for XComponent implementation +class Dummy : protected osl::DebugBase<Dummy>, + public WeakComponentImplHelperBase +{ +public: + Dummy(): WeakComponentImplHelperBase(*Mutex::getGlobalMutex()){} + +}; +//__________________________________________________________________________________________________ +Any Test_Impl::transportAny( const Any & value ) throw ( ::com::sun::star::uno::RuntimeException) +{ + return value; +} + +//__________________________________________________________________________________________________ +void Test_Impl::call( sal_Int32 nCallId , sal_Int32 nWaitMUSEC ) throw(::com::sun::star::uno::RuntimeException) +{ + TimeValue value = { nWaitMUSEC / 1000000 , nWaitMUSEC * 1000 }; + osl_waitThread( &value ); + if( m_bFirstCall ) + { + m_bFirstCall = sal_False; + } + else + { + m_bSequenceOfCallTestPassed = m_bSequenceOfCallTestPassed && (nCallId > m_nLastCallId); + } + m_nLastCallId = nCallId; +} + +//__________________________________________________________________________________________________ +void Test_Impl::callOneway( sal_Int32 nCallId , sal_Int32 nWaitMUSEC ) throw (::com::sun::star::uno::RuntimeException) +{ + TimeValue value = { nWaitMUSEC / 1000000 , nWaitMUSEC * 1000 }; + osl_waitThread( &value ); + m_bSequenceOfCallTestPassed = m_bSequenceOfCallTestPassed && (nCallId > m_nLastCallId); + m_nLastCallId = nCallId; +} + +//__________________________________________________________________________________________________ +sal_Bool Test_Impl::sequenceOfCallTestPassed() throw (::com::sun::star::uno::RuntimeException) +{ + return m_bSequenceOfCallTestPassed; +} + +//__________________________________________________________________________________________________ +void SAL_CALL Test_Impl::startRecursiveCall( + const ::com::sun::star::uno::Reference< XRecursiveCall >& xCall, sal_Int32 nToCall ) + throw(::com::sun::star::uno::RuntimeException) +{ + MutexGuard guard( m_mutex ); + if( nToCall ) + { + nToCall --; + xCall->callRecursivly( this , nToCall ); + } +} + + +void SAL_CALL Test_Impl::callRecursivly( + const ::com::sun::star::uno::Reference< XRecursiveCall >& xCall, + sal_Int32 nToCall ) + throw(::com::sun::star::uno::RuntimeException) +{ + MutexGuard guard( m_mutex ); + if( nToCall ) + { + nToCall --; + xCall->callRecursivly( this , nToCall ); + } +} + +Reference< XMulti > Test_Impl::getMulti() throw (RuntimeException) { + return new testtools::bridgetest::Multi; +} + +rtl::OUString Test_Impl::testMulti(Reference< XMulti > const & multi) + throw (RuntimeException) +{ + return testtools::bridgetest::testMulti(multi); +} + +//__________________________________________________________________________________________________ +void Test_Impl::setValues( sal_Bool bBool, sal_Unicode cChar, sal_Int8 nByte, + sal_Int16 nShort, sal_uInt16 nUShort, + sal_Int32 nLong, sal_uInt32 nULong, + sal_Int64 nHyper, sal_uInt64 nUHyper, + float fFloat, double fDouble, + TestEnum eEnum, const ::rtl::OUString& rStr, + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + const ::com::sun::star::uno::Any& rAny, + const ::com::sun::star::uno::Sequence<TestElement >& rSequence, + const TestData& rStruct ) + throw(com::sun::star::uno::RuntimeException) +{ + assign( _aData, + bBool, cChar, nByte, nShort, nUShort, nLong, nULong, nHyper, nUHyper, fFloat, fDouble, + eEnum, rStr, xTest, rAny, rSequence ); + _aStructData = rStruct; +} +//__________________________________________________________________________________________________ +TestData Test_Impl::setValues2( sal_Bool& bBool, sal_Unicode& cChar, sal_Int8& nByte, + sal_Int16& nShort, sal_uInt16& nUShort, + sal_Int32& nLong, sal_uInt32& nULong, + sal_Int64& nHyper, sal_uInt64& nUHyper, + float& fFloat, double& fDouble, + TestEnum& eEnum, rtl::OUString& rStr, + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + ::com::sun::star::uno::Any& rAny, + ::com::sun::star::uno::Sequence<TestElement >& rSequence, + TestData& rStruct ) + throw(com::sun::star::uno::RuntimeException) +{ + assign( _aData, + bBool, cChar, nByte, nShort, nUShort, nLong, nULong, nHyper, nUHyper, fFloat, fDouble, + eEnum, rStr, xTest, rAny, rSequence ); + _aStructData = rStruct; + + TestElement elem = rSequence[ 0 ]; + rSequence[ 0 ] = rSequence[ 1 ]; + rSequence[ 1 ] = elem; + + return _aStructData; +} +//__________________________________________________________________________________________________ +TestData Test_Impl::getValues( sal_Bool& bBool, sal_Unicode& cChar, sal_Int8& nByte, + sal_Int16& nShort, sal_uInt16& nUShort, + sal_Int32& nLong, sal_uInt32& nULong, + sal_Int64& nHyper, sal_uInt64& nUHyper, + float& fFloat, double& fDouble, + TestEnum& eEnum, rtl::OUString& rStr, + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xTest, + ::com::sun::star::uno::Any& rAny, + ::com::sun::star::uno::Sequence<TestElement >& rSequence, + TestData& rStruct ) + throw(com::sun::star::uno::RuntimeException) +{ + bBool = _aData.Bool; + cChar = _aData.Char; + nByte = _aData.Byte; + nShort = _aData.Short; + nUShort = _aData.UShort; + nLong = _aData.Long; + nULong = _aData.ULong; + nHyper = _aData.Hyper; + nUHyper = _aData.UHyper; + fFloat = _aData.Float; + fDouble = _aData.Double; + eEnum = _aData.Enum; + rStr = _aData.String; + xTest = _aData.Interface; + rAny = _aData.Any; + rSequence = _aData.Sequence; + rStruct = _aStructData; + return _aStructData; +} +//__________________________________________________________________________________________________ +TestData Test_Impl::raiseException( sal_Int16 nArgumentPos, const OUString & rMsg, const Reference< XInterface > & xContext ) + throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) +{ + IllegalArgumentException aExc; + aExc.ArgumentPosition = nArgumentPos; + aExc.Message = _aData.String = rMsg; + aExc.Context = _aData.Interface = xContext; + throw aExc; +} + +void Test_Impl::raiseRuntimeExceptionOneway( const OUString & rMsg, const Reference< XInterface > & xContext ) + throw(::com::sun::star::uno::RuntimeException) +{ + RuntimeException aExc; + aExc.Message = _aData.String = rMsg; + aExc.Context = _aData.Interface = xContext; + throw aExc; +} + +void dothrow2( RuntimeException e ) +{ + throw e; +} +void dothrow( RuntimeException const & e ) +{ +#if defined _MSC_VER + // currently only for MSVC: + // just to test whether all bridges fall back to a RuntimeException + // in case of a thrown non-UNO exception: + try + { + throw ::std::bad_alloc(); + } + catch (...) + { + try + { + Any a( getCaughtException() ); + RuntimeException exc; + OSL_VERIFY( a >>= exc ); + OSL_TRACE( + OUStringToOString( + exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() ); + } + catch (...) // never throws anything + { + fprintf( stderr, "\ngetCaughtException() failed!\n" ); + exit( 1 ); + } + } +#endif + dothrow2( e ); +} +//______________________________________________________________________________ +sal_Int32 Test_Impl::getRuntimeException() + throw (RuntimeException) +{ + try + { + dothrow( RuntimeException( _aData.String, _aData.Interface ) ); + } + catch (Exception &) + { + Any a( getCaughtException() ); + throwException( a ); + } + return 0; // for dummy +} +//__________________________________________________________________________________________________ +void Test_Impl::setRuntimeException( sal_Int32 ) throw(::com::sun::star::uno::RuntimeException) +{ + RuntimeException aExc; + aExc.Message = _aData.String; + aExc.Context = _aData.Interface; + throwException( makeAny( aExc ) ); +} + +// XBridgeTest2 ------------------------------------------------------------- +Sequence< sal_Bool > SAL_CALL Test_Impl::setSequenceBool( + const Sequence< sal_Bool >& aSeq ) throw (RuntimeException) +{ + _arBool = aSeq; + return aSeq; +} + +Sequence< sal_Unicode > SAL_CALL Test_Impl::setSequenceChar( + const Sequence< sal_Unicode >& aSeq ) throw (RuntimeException) +{ + _arChar = aSeq; + return aSeq; +} + +Sequence< sal_Int8 > SAL_CALL Test_Impl::setSequenceByte( + const Sequence< sal_Int8 >& aSeq ) throw (RuntimeException) +{ + _arByte = aSeq; + return aSeq; +} + +Sequence< sal_Int16 > SAL_CALL Test_Impl::setSequenceShort( + const Sequence< sal_Int16 >& aSeq ) throw (RuntimeException) +{ + _arShort = aSeq; + return aSeq; +} + +Sequence< sal_uInt16 > SAL_CALL Test_Impl::setSequenceUShort( + const Sequence< sal_uInt16 >& aSeq ) throw (RuntimeException) +{ + _arUShort = aSeq; + return aSeq; +} + +Sequence< sal_Int32 > SAL_CALL Test_Impl::setSequenceLong( + const Sequence< sal_Int32 >& aSeq ) throw (RuntimeException) +{ + _arLong = aSeq; + return aSeq; +} + +Sequence< sal_uInt32 > SAL_CALL Test_Impl::setSequenceULong( + const Sequence< sal_uInt32 >& aSeq ) throw (RuntimeException) +{ + _arULong = aSeq; + return aSeq; +} + +Sequence< sal_Int64 > SAL_CALL Test_Impl::setSequenceHyper( + const Sequence< sal_Int64 >& aSeq ) throw (RuntimeException) +{ + _arHyper = aSeq; + return aSeq; +} + +Sequence< sal_uInt64 > SAL_CALL Test_Impl::setSequenceUHyper( + const Sequence< sal_uInt64 >& aSeq ) throw (RuntimeException) +{ + _arUHyper = aSeq; + return aSeq; +} + +Sequence< float > SAL_CALL Test_Impl::setSequenceFloat( + const Sequence< float >& aSeq ) throw (RuntimeException) +{ + _arFloat = aSeq; + return aSeq; +} + +Sequence< double > SAL_CALL Test_Impl::setSequenceDouble( + const Sequence< double >& aSeq ) throw (RuntimeException) +{ + _arDouble = aSeq; + return aSeq; +} + +Sequence< TestEnum > SAL_CALL Test_Impl::setSequenceEnum( + const Sequence< TestEnum >& aSeq ) throw (RuntimeException) +{ + _arEnum = aSeq; + return aSeq; +} + +Sequence< OUString > SAL_CALL Test_Impl::setSequenceString( + const Sequence< OUString >& aSeq ) throw (RuntimeException) +{ + _arString = aSeq; + return aSeq; +} + +Sequence< Reference< XInterface > > SAL_CALL Test_Impl::setSequenceXInterface( + const Sequence< Reference< XInterface > >& aSeq ) + throw (RuntimeException) +{ + _arObject = aSeq; + return aSeq; +} + +Sequence<Any > SAL_CALL Test_Impl::setSequenceAny( + const Sequence<Any >& aSeq ) throw (RuntimeException) +{ + _arAny = aSeq; + return aSeq; +} + +Sequence<TestElement > SAL_CALL Test_Impl::setSequenceStruct( + const Sequence< TestElement >& aSeq ) throw (RuntimeException) +{ + _arStruct = aSeq; + return aSeq; +} + +Sequence< Sequence< sal_Int32 > > SAL_CALL Test_Impl::setDim2( + const Sequence<Sequence< sal_Int32 > >& aSeq ) throw (RuntimeException) +{ + _arLong2 = aSeq; + return aSeq; +} + +Sequence< Sequence< Sequence< sal_Int32 > > > SAL_CALL Test_Impl::setDim3( + const Sequence< Sequence< Sequence< sal_Int32 > > >& aSeq ) + throw (RuntimeException) +{ + _arLong3 = aSeq; + return aSeq; +} + +void SAL_CALL Test_Impl::setSequencesInOut(Sequence< sal_Bool >& aSeqBoolean, + Sequence< sal_Unicode >& aSeqChar, + Sequence< sal_Int8 >& aSeqByte, + Sequence< sal_Int16 >& aSeqShort, + Sequence< sal_uInt16 >& aSeqUShort, + Sequence< sal_Int32 >& aSeqLong, + Sequence< sal_uInt32 >& aSeqULong, + Sequence< sal_Int64 >& aSeqHyper, + Sequence< sal_uInt64 >& aSeqUHyper, + Sequence< float >& aSeqFloat, + Sequence< double >& aSeqDouble, + Sequence< TestEnum >& aSeqTestEnum, + Sequence< OUString >& aSeqString, + Sequence<Reference<XInterface > >& aSeqXInterface, + Sequence< Any >& aSeqAny, + Sequence< Sequence< sal_Int32 > >& aSeqDim2, + Sequence< Sequence< Sequence< sal_Int32 > > >& aSeqDim3 ) + throw (RuntimeException) +{ + _arBool = aSeqBoolean; + _arChar = aSeqChar; + _arByte = aSeqByte; + _arShort = aSeqShort; + _arUShort = aSeqUShort; + _arLong = aSeqLong; + _arULong = aSeqULong; + _arHyper = aSeqHyper; + _arUHyper = aSeqUHyper; + _arFloat = aSeqFloat; + _arDouble = aSeqDouble; + _arEnum = aSeqTestEnum; + _arString = aSeqString; + _arObject = aSeqXInterface; + _arAny = aSeqAny; + _arLong2 = aSeqDim2; + _arLong3 = aSeqDim3; +} + +void SAL_CALL Test_Impl::setSequencesOut( Sequence< sal_Bool >& aSeqBoolean, + Sequence< sal_Unicode >& aSeqChar, + Sequence< sal_Int8 >& aSeqByte, + Sequence< sal_Int16 >& aSeqShort, + Sequence< sal_uInt16 >& aSeqUShort, + Sequence< sal_Int32 >& aSeqLong, + Sequence< sal_uInt32 >& aSeqULong, + Sequence< sal_Int64 >& aSeqHyper, + Sequence< sal_uInt64 >& aSeqUHyper, + Sequence< float >& aSeqFloat, + Sequence< double >& aSeqDouble, + Sequence< TestEnum >& aSeqEnum, + Sequence< OUString >& aSeqString, + Sequence< Reference< XInterface > >& aSeqXInterface, + Sequence< Any >& aSeqAny, + Sequence< Sequence< sal_Int32 > >& aSeqDim2, + Sequence< Sequence< Sequence< sal_Int32 > > >& aSeqDim3 ) + throw (RuntimeException) +{ + aSeqBoolean = _arBool; + aSeqChar = _arChar; + aSeqByte = _arByte; + aSeqShort = _arShort; + aSeqUShort = _arUShort; + aSeqLong = _arLong; + aSeqULong = _arULong; + aSeqHyper = _arHyper; + aSeqUHyper = _arUHyper; + aSeqFloat = _arFloat; + aSeqDouble = _arDouble; + aSeqEnum = _arEnum; + aSeqString = _arString; + aSeqXInterface = _arObject; + aSeqAny = _arAny; + aSeqDim2 = _arLong2; + aSeqDim3 = _arLong3; +} + +void Test_Impl::testConstructorsService( + Reference< XComponentContext > const & context) throw (RuntimeException) +{ + Sequence< sal_Bool > arg14(1); arg14[0] = true; + Sequence< sal_Int8 > arg15(1); arg15[0] = SAL_MIN_INT8; + Sequence< sal_Int16 > arg16(1); arg16[0] = SAL_MIN_INT16; + Sequence< sal_uInt16 > arg17(1); arg17[0] = SAL_MAX_UINT16; + Sequence< sal_Int32 > arg18(1); arg18[0] = SAL_MIN_INT32; + Sequence< sal_uInt32 > arg19(1); arg19[0] = SAL_MAX_UINT32; + Sequence< sal_Int64 > arg20(1); arg20[0] = SAL_MIN_INT64; + Sequence< sal_uInt64 > arg21(1); arg21[0] = SAL_MAX_UINT64; + Sequence< float > arg22(1); arg22[0] = 0.123f; + Sequence< double > arg23(1); arg23[0] = 0.456; + Sequence< sal_Unicode > arg24(1); arg24[0] = 'X'; + Sequence< OUString > arg25(1); + arg25[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("test")); + Sequence< Type > arg26(1); arg26[0] = UnoType< Any >::get(); + Sequence< Any > arg27(1); arg27[0] <<= true; + Sequence< Sequence< sal_Bool > > arg28(1); + arg28[0] = Sequence< sal_Bool >(1); arg28[0][0] = true; + Sequence< Sequence< Any > > arg29(1); arg29[0] = Sequence< Any >(1); + arg29[0][0] <<= true; + Sequence< TestEnum > arg30(1); arg30[0] = TestEnum_TWO; + Sequence< TestStruct > arg31(1); arg31[0].member = 10; + Sequence< TestPolyStruct< sal_Bool > > arg32(1); arg32[0].member = true; + Sequence< TestPolyStruct< Any > > arg33(1); arg33[0].member <<= true; + Sequence< Reference< XInterface > > arg34(1); + Constructors::create1(context, + true, + SAL_MIN_INT8, + SAL_MIN_INT16, + SAL_MAX_UINT16, + SAL_MIN_INT32, + SAL_MAX_UINT32, + SAL_MIN_INT64, + SAL_MAX_UINT64, + 0.123f, + 0.456, + 'X', + OUString(RTL_CONSTASCII_USTRINGPARAM("test")), + UnoType< Any >::get(), + makeAny(true), + arg14, + arg15, + arg16, + arg17, + arg18, + arg19, + arg20, + arg21, + arg22, + arg23, + arg24, + arg25, + arg26, + arg27, + arg28, + arg29, + arg30, + arg31, + arg32, + arg33, + arg34, + TestEnum_TWO, + TestStruct(10), + TestPolyStruct< sal_Bool >(true), + TestPolyStruct< Any >(makeAny(true)), + Reference< XInterface >(0)); + Sequence< Any > args(40); + args[0] <<= true; + args[1] <<= SAL_MIN_INT8; + args[2] <<= SAL_MIN_INT16; + args[3] <<= SAL_MAX_UINT16; + args[4] <<= SAL_MIN_INT32; + args[5] <<= SAL_MAX_UINT32; + args[6] <<= SAL_MIN_INT64; + args[7] <<= SAL_MAX_UINT64; + args[8] <<= 0.123f; + args[9] <<= 0.456; + sal_Unicode arg10c = 'X'; + args[10].setValue(&arg10c, UnoType< UnoCharType >::get()); + args[11] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("test")); + args[12] <<= UnoType< Any >::get(); + args[13] <<= true; + args[14] <<= arg14; + args[15] <<= arg15; + args[16] <<= arg16; + args[17] <<= arg17; + args[18] <<= arg18; + args[19] <<= arg19; + args[20] <<= arg20; + args[21] <<= arg21; + args[22] <<= arg22; + args[23] <<= arg23; + args[24].setValue(&arg24, UnoType< UnoSequenceType< UnoCharType > >::get()); + args[25] <<= arg25; + args[26] <<= arg26; + args[27] <<= arg27; + args[28] <<= arg28; + args[29] <<= arg29; + args[30] <<= arg30; + args[31] <<= arg31; + args[32] <<= arg32; + args[33] <<= arg33; + args[34] <<= arg34; + args[35] <<= TestEnum_TWO; + args[36] <<= TestStruct(10); + args[37] <<= TestPolyStruct< sal_Bool >(true); + args[38] <<= TestPolyStruct< Any >(makeAny(true)); + args[39] <<= Reference< XInterface >(0); + Constructors::create2(context, args); + + Sequence<Type> argSeq1(1); argSeq1[0] = cppu::UnoType<sal_Int32>::get(); + Sequence<Reference<XInterface> > argSeq2(1); argSeq2[0] = static_cast<XComponent*>(new Dummy()); + Sequence<Reference<XComponent> > argSeq2a(1); argSeq2a[0] = static_cast<XComponent*>(new Dummy()); + + Sequence<TestPolyStruct2<sal_Unicode, Sequence<Any> > > argSeq3(1); + argSeq3[0] = TestPolyStruct2<sal_Unicode, Sequence<Any> >('X', arg27); + Sequence<TestPolyStruct2<TestPolyStruct<sal_Unicode>, Sequence<Any> > > argSeq4(1); + argSeq4[0] = TestPolyStruct2<TestPolyStruct<sal_Unicode>, Sequence<Any> >( + TestPolyStruct<sal_Unicode>('X'), arg27); + Sequence<Sequence<sal_Int32> > argSeq5(1); + argSeq5[0] = Sequence<sal_Int32>(1); argSeq5[0][0] = SAL_MIN_INT32; + Sequence<TestPolyStruct<sal_Int32> > argSeq6(1); + argSeq6[0] = TestPolyStruct<sal_Int32>(SAL_MIN_INT32); + Sequence<TestPolyStruct<TestPolyStruct2<sal_Unicode, Any> > > argSeq7(1); + argSeq7[0] = TestPolyStruct<TestPolyStruct2<sal_Unicode, Any> >( + TestPolyStruct2<sal_Unicode, Any>('X', Any(true))); + Sequence<TestPolyStruct<TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>,OUString> > > argSeq8(1); + argSeq8[0] = TestPolyStruct<TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>,OUString> > ( + TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>,OUString>( + TestPolyStruct2<sal_Unicode, Any>('X', Any(true)), OUString(RTL_CONSTASCII_USTRINGPARAM("test")))); + Sequence<TestPolyStruct2<OUString, TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> > > > argSeq9(1); + argSeq9[0] = TestPolyStruct2<OUString, TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> > >( + OUString(RTL_CONSTASCII_USTRINGPARAM("test")), TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> >( + 'X', TestPolyStruct<Any>(Any(true)))); + Sequence<TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>, TestPolyStruct<sal_Unicode> > > argSeq10(1); + argSeq10[0] = TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>, TestPolyStruct<sal_Unicode> >( + TestPolyStruct2<sal_Unicode, Any>('X', Any(true)), TestPolyStruct<sal_Unicode>('X')); + Sequence<Sequence<TestPolyStruct<sal_Unicode > > > argSeq11(1); + argSeq11[0] = Sequence<TestPolyStruct<sal_Unicode > >(1); + argSeq11[0][0] = TestPolyStruct<sal_Unicode>('X'); + Sequence<Sequence<TestPolyStruct<TestPolyStruct2<sal_Unicode,Any> > > > argSeq12(1); + argSeq12[0] = Sequence<TestPolyStruct<TestPolyStruct2<sal_Unicode,Any> > >(1); + argSeq12[0][0] = TestPolyStruct<TestPolyStruct2<sal_Unicode,Any> >( + TestPolyStruct2<sal_Unicode,Any>('X', Any(true))); + Sequence<Sequence<TestPolyStruct<TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>,OUString> > > > argSeq13(1); + argSeq13[0] = Sequence<TestPolyStruct<TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>,OUString> > >(1); + argSeq13[0][0] = TestPolyStruct<TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>,OUString> >( + TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>,OUString>( + TestPolyStruct2<sal_Unicode,Any>('X', Any(true)), OUString(RTL_CONSTASCII_USTRINGPARAM("test")))); + Sequence<Sequence<TestPolyStruct2<OUString, TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> > > > > argSeq14(1); + argSeq14[0] = Sequence<TestPolyStruct2<OUString, TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> > > >(1); + argSeq14[0][0] = TestPolyStruct2<OUString, TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> > >( + OUString(RTL_CONSTASCII_USTRINGPARAM("test")), TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> >( + 'X', TestPolyStruct<Any>(Any(true)))); + Sequence<Sequence<TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>, TestPolyStruct<sal_Unicode> > > > argSeq15(1); + argSeq15[0] = Sequence<TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>, TestPolyStruct<sal_Unicode> > >(1); + argSeq15[0][0] = TestPolyStruct2<TestPolyStruct2<sal_Unicode,Any>, TestPolyStruct<sal_Unicode> >( + TestPolyStruct2<sal_Unicode,Any>('X',Any(true)), TestPolyStruct<sal_Unicode>('X')); + + Constructors2::create1( + context, + TestPolyStruct<Type>(cppu::UnoType<sal_Int32>::get()), + TestPolyStruct<Any>(Any(true)), + TestPolyStruct<sal_Bool>(true), + TestPolyStruct<sal_Int8>(SAL_MIN_INT8), + TestPolyStruct<sal_Int16>(SAL_MIN_INT16), + TestPolyStruct<sal_Int32>(SAL_MIN_INT32), + TestPolyStruct<sal_Int64>(SAL_MIN_INT64), + TestPolyStruct<sal_Unicode>('X'), + TestPolyStruct<OUString>(OUString(RTL_CONSTASCII_USTRINGPARAM("test"))), + TestPolyStruct<float>(0.123f), + TestPolyStruct<double>(0.456), + TestPolyStruct<Reference<XInterface> >(static_cast<XBridgeTest2*>(this)), + TestPolyStruct<Reference<XComponent> >(static_cast<XComponent*>(new Dummy())), + TestPolyStruct<TestEnum>(TestEnum_TWO), + TestPolyStruct<TestPolyStruct2<sal_Unicode, Any> >( + TestPolyStruct2<sal_Unicode, Any>('X', Any(true))), + TestPolyStruct<TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>,OUString> > ( + TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>,OUString>( + TestPolyStruct2<sal_Unicode, Any>('X', Any(true)), OUString(RTL_CONSTASCII_USTRINGPARAM("test")))), + TestPolyStruct2<OUString, TestPolyStruct2<sal_Unicode,TestPolyStruct<Any> > >( + OUString(RTL_CONSTASCII_USTRINGPARAM("test")), + TestPolyStruct2<sal_Unicode, TestPolyStruct<Any> >('X', TestPolyStruct<Any>(Any(true)))), + TestPolyStruct2<TestPolyStruct2<sal_Unicode, Any>, TestPolyStruct<sal_Unicode> >( + TestPolyStruct2<sal_Unicode, Any>('X', Any(true)), + TestPolyStruct<sal_Unicode>('X')), + TestPolyStruct<Sequence<Type> >(argSeq1), + TestPolyStruct<Sequence<Any> >(arg27), + TestPolyStruct<Sequence<sal_Bool> >(arg14), + TestPolyStruct<Sequence<sal_Int8> >(arg15), + TestPolyStruct<Sequence<sal_Int16> >(arg16), + TestPolyStruct<Sequence<sal_Int32> >(arg18), + TestPolyStruct<Sequence<sal_Int64> >(arg20), + TestPolyStruct<Sequence<sal_Unicode> >(arg24), + TestPolyStruct<Sequence<OUString> >(arg25), + TestPolyStruct<Sequence<float> >(arg22), + TestPolyStruct<Sequence<double> >(arg23), + TestPolyStruct<Sequence<Reference<XInterface> > >(argSeq2), + TestPolyStruct<Sequence<Reference<XComponent> > >(argSeq2a), + TestPolyStruct<Sequence<TestEnum> >(arg30), + TestPolyStruct<Sequence<TestPolyStruct2<sal_Unicode, Sequence<Any> > > >(argSeq3), + TestPolyStruct<Sequence<TestPolyStruct2<TestPolyStruct<sal_Unicode>, Sequence<Any> > > > (argSeq4), + TestPolyStruct<Sequence<Sequence<sal_Int32> > >(argSeq5), + argSeq6, + argSeq7, + argSeq8, + argSeq9, + argSeq10, + argSeq11, + argSeq12, + argSeq13, + argSeq14, + argSeq15); +} + +Reference< XCurrentContextChecker > Test_Impl::getCurrentContextChecker() + throw (RuntimeException) +{ + return new testtools::bridgetest::CurrentContextChecker; +} + +// XServiceInfo +//__________________________________________________________________________________________________ +OUString Test_Impl::getImplementationName() + throw (RuntimeException) +{ + return OUString( RTL_CONSTASCII_USTRINGPARAM(IMPLNAME) ); +} +//__________________________________________________________________________________________________ +sal_Bool Test_Impl::supportsService( const OUString & rServiceName ) + throw (RuntimeException) +{ + const Sequence< OUString > & rSNL = getSupportedServiceNames(); + const OUString * pArray = rSNL.getConstArray(); + for ( sal_Int32 nPos = rSNL.getLength(); nPos--; ) + { + if (pArray[nPos] == rServiceName) + return sal_True; + } + return sal_False; +} +//__________________________________________________________________________________________________ +Sequence< OUString > Test_Impl::getSupportedServiceNames() + throw (RuntimeException) +{ + return bridge_object::getSupportedServiceNames(); +} + +// ... + +//================================================================================================== +static Reference< XInterface > SAL_CALL Test_Impl_create( const Reference< XMultiServiceFactory > & ) +{ + return Reference< XInterface >( (XBridgeTest *)new Test_Impl() ); +} + +} + +extern "C" +{ +//================================================================================================== +void SAL_CALL component_getImplementationEnvironment( + const sal_Char ** ppEnvTypeName, uno_Environment ** ) +{ + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; +} +//================================================================================================== +sal_Bool SAL_CALL component_writeInfo( void *, void * pRegistryKey ) +{ + if (pRegistryKey) + { + try + { + Reference< XRegistryKey > xNewKey( + reinterpret_cast< XRegistryKey * >( pRegistryKey )->createKey( + OUString( RTL_CONSTASCII_USTRINGPARAM("/" IMPLNAME "/UNO/SERVICES") ) ) ); + xNewKey->createKey( OUString( RTL_CONSTASCII_USTRINGPARAM(SERVICENAME) ) ); + + return sal_True; + } + catch (InvalidRegistryException &) + { + OSL_ENSURE( sal_False, "### InvalidRegistryException!" ); + } + } + return sal_False; +} +//================================================================================================== +void * SAL_CALL component_getFactory( + const sal_Char * pImplName, void * pServiceManager, void * ) +{ + void * pRet = 0; + + if (pServiceManager && rtl_str_compare( pImplName, IMPLNAME ) == 0) + { + Reference< XSingleServiceFactory > xFactory( createSingleFactory( + reinterpret_cast< XMultiServiceFactory * >( pServiceManager ), + OUString( RTL_CONSTASCII_USTRINGPARAM(IMPLNAME) ), + bridge_object::Test_Impl_create, + bridge_object::getSupportedServiceNames() ) ); + + if (xFactory.is()) + { + xFactory->acquire(); + pRet = xFactory.get(); + } + } + + return pRet; +} +} + |