diff options
26 files changed, 613 insertions, 101 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_s390/except.cxx b/bridges/source/cpp_uno/gcc3_linux_s390/except.cxx index 662b3a9b7..e7eedaa3c 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390/except.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390/except.cxx @@ -137,8 +137,8 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) ); - if (iFind == m_rttis.end()) + t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); + if (iRttiFind == m_rttis.end()) { // RTTI symbol OStringBuffer buf( 64 ); @@ -202,7 +202,7 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR } else { - rtti = iFind->second; + rtti = iRttiFind->second; } return rtti; diff --git a/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx index 9718a0bd4..a362f3a4d 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx @@ -491,7 +491,7 @@ static typelib_TypeClass cpp_mediate( long privateSnippetExecutor(long r2, long r3, long r4, long r5, long r6, long firstonstack) { register long r0 asm("r0"); - sal_uInt32 nOffsetAndIndex = r0; + sal_uInt64 nOffsetAndIndex = r0; long sp = (long)&firstonstack; @@ -522,15 +522,21 @@ long privateSnippetExecutor(long r2, long r3, long r4, long r5, long r6, long fi switch( aType ) { - case typelib_TypeClass_VOID: case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BYTE: + nRegReturn[0] = (unsigned long)(*(unsigned char *)nRegReturn); + break; case typelib_TypeClass_CHAR: case typelib_TypeClass_UNSIGNED_SHORT: case typelib_TypeClass_SHORT: + nRegReturn[0] = (unsigned long)(*(unsigned short *)nRegReturn); + break; case typelib_TypeClass_ENUM: case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_LONG: + nRegReturn[0] = (unsigned long)(*(unsigned int *)nRegReturn); + break; + case typelib_TypeClass_VOID: default: break; case typelib_TypeClass_FLOAT: diff --git a/bridges/source/cpp_uno/gcc3_linux_s390x/except.cxx b/bridges/source/cpp_uno/gcc3_linux_s390x/except.cxx index ac959ef7d..33261b978 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390x/except.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390x/except.cxx @@ -138,8 +138,8 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) ); - if (iFind == m_rttis.end()) + t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); + if (iRttiFind == m_rttis.end()) { // RTTI symbol OStringBuffer buf( 64 ); @@ -203,7 +203,7 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR } else { - rtti = iFind->second; + rtti = iRttiFind->second; } return rtti; diff --git a/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx index 36d178c61..333691d25 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx @@ -60,19 +60,21 @@ void MapReturn(long r2, double f0, typelib_TypeClass eTypeClass, sal_uInt64* pRe { case typelib_TypeClass_HYPER: case typelib_TypeClass_UNSIGNED_HYPER: + *pRegisterReturn = r2; + break; case typelib_TypeClass_LONG: case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_ENUM: - *pRegisterReturn = r2; + *(unsigned int*)pRegisterReturn = (unsigned int)r2; break; case typelib_TypeClass_CHAR: case typelib_TypeClass_SHORT: case typelib_TypeClass_UNSIGNED_SHORT: - *pRegisterReturn = (unsigned short)r2; + *(unsigned short*)pRegisterReturn = (unsigned short)r2; break; case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BYTE: - *pRegisterReturn = (unsigned char)r2; + *(unsigned char*)pRegisterReturn = (unsigned char)r2; break; case typelib_TypeClass_FLOAT: *reinterpret_cast<float *>( pRegisterReturn ) = f0; @@ -90,7 +92,6 @@ void MapReturn(long r2, double f0, typelib_TypeClass eTypeClass, sal_uInt64* pRe #define INSERT_FLOAT( pSV, nr, pFPR, pDS ) \ { \ - float tmp = *reinterpret_cast<float *>( pSV ); \ if ( nr < s390x::MAX_SSE_REGS ) \ { \ pFPR[nr++] = *reinterpret_cast<float *>( pSV ); \ @@ -421,7 +422,6 @@ void unoInterfaceProxyDispatch( // is my surrogate bridges::cpp_uno::shared::UnoInterfaceProxy * pThis = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy *> (pUnoI); - typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr; switch (pMemberDescr->eTypeClass) { diff --git a/cppuhelper/inc/cppuhelper/weakref.hxx b/cppuhelper/inc/cppuhelper/weakref.hxx index ba4174db9..9eb1c9adc 100644 --- a/cppuhelper/inc/cppuhelper/weakref.hxx +++ b/cppuhelper/inc/cppuhelper/weakref.hxx @@ -78,15 +78,17 @@ public: @param rWeakRef another weak ref */ WeakReferenceHelper & SAL_CALL operator = ( const WeakReferenceHelper & rWeakRef ) SAL_THROW( () ); - - /** Releases this reference and takes over hard reference xInt. If the implementation behind - xInt does not support XWeak or XInt is null, than this reference is null. - + + /** Releases this reference and takes over hard reference xInt. + If the implementation behind xInt does not support XWeak + or XInt is null, then this reference is null. + @param xInt another hard reference */ - inline WeakReferenceHelper & SAL_CALL operator = ( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & xInt ) SAL_THROW( () ) - { return operator = ( WeakReferenceHelper( xInt ) ); } - + WeakReferenceHelper & SAL_CALL operator = ( + const ::com::sun::star::uno::Reference< + ::com::sun::star::uno::XInterface > & xInt ) SAL_THROW( () ); + /** Returns true if both weak refs reference to the same object. @param rObj another weak ref @@ -106,7 +108,13 @@ public: */ inline SAL_CALL operator Reference< XInterface > () const SAL_THROW( () ) { return get(); } - + + /** Releases this reference. + + @since UDK 3.2.12 + */ + void SAL_CALL clear() SAL_THROW( () ); + protected: /** @internal */ OWeakRefListener * m_pImpl; @@ -134,7 +142,20 @@ public: inline WeakReference( const Reference< interface_type > & rRef ) SAL_THROW( () ) : WeakReferenceHelper( rRef ) {} - + + /** Releases this reference and takes over hard reference xInt. + If the implementation behind xInt does not support XWeak + or XInt is null, then this reference is null. + + @param xInt another hard reference + + @since UDK 3.2.12 + */ + WeakReference & SAL_CALL operator = ( + const ::com::sun::star::uno::Reference< interface_type > & xInt ) + SAL_THROW( () ) + { WeakReferenceHelper::operator=(xInt); return *this; } + /** Gets a hard reference to the object. @return hard reference or null, if the weakly referenced interface has gone diff --git a/cppuhelper/source/cc5_solaris_sparc.map b/cppuhelper/source/cc5_solaris_sparc.map index ff21cae7a..190bdcef4 100755 --- a/cppuhelper/source/cc5_solaris_sparc.map +++ b/cppuhelper/source/cc5_solaris_sparc.map @@ -383,4 +383,6 @@ UDK_3.6 { # OOo 3.0 UDK_3.7 { # OOo 3.3 global: __1cEcppuLOWeakObjectbAdisposeWeakConnectionPoint6M_v_; + __1cDcomDsunEstarDunoTWeakReferenceHelper2G6Mrkn0DJReference4n0DKXInterface____r4_; + __1cDcomDsunEstarDunoTWeakReferenceHelperFclear6M_v_; } UDK_3.6; diff --git a/cppuhelper/source/gcc3.map b/cppuhelper/source/gcc3.map index 0cec45b6e..16a92f820 100644 --- a/cppuhelper/source/gcc3.map +++ b/cppuhelper/source/gcc3.map @@ -377,5 +377,7 @@ UDK_3.5 { # OOo 3.0 UDK_3.6 { # OOo 3.3 global: _ZN4cppu11OWeakObject26disposeWeakConnectionPointEv; + _ZN3com3sun4star3uno19WeakReferenceHelperaSERKNS2_9ReferenceINS2_10XInterfaceEEE; + _ZN3com3sun4star3uno19WeakReferenceHelper5clearEv; } UDK_3.5; diff --git a/cppuhelper/source/msvc_win32_intel.map b/cppuhelper/source/msvc_win32_intel.map index c999ae200..6bc10cb17 100644 --- a/cppuhelper/source/msvc_win32_intel.map +++ b/cppuhelper/source/msvc_win32_intel.map @@ -275,4 +275,5 @@ UDK_3.5 { # OOo 3.0 UDK_3.6 { # OOo 3.3 global: ?disposeWeakConnectionPoint@OWeakObject@cppu@@IAEXXZ; + ?clear@WeakReferenceHelper@uno@star@sun@com@@QAAXXZ; } UDK_3.5; diff --git a/cppuhelper/source/weak.cxx b/cppuhelper/source/weak.cxx index 2cd092cb8..dd05a4c6e 100644 --- a/cppuhelper/source/weak.cxx +++ b/cppuhelper/source/weak.cxx @@ -479,50 +479,55 @@ WeakReferenceHelper::WeakReferenceHelper(const WeakReferenceHelper& rWeakRef) SA } } -WeakReferenceHelper& WeakReferenceHelper::operator=(const WeakReferenceHelper& rWeakRef) SAL_THROW( () ) +void WeakReferenceHelper::clear() SAL_THROW( () ) { try { - if (this != &rWeakRef) - { - Reference< XInterface > xInt( rWeakRef.get() ); if (m_pImpl) { if (m_pImpl->m_XWeakConnectionPoint.is()) { - m_pImpl->m_XWeakConnectionPoint->removeReference((XReference*)m_pImpl); + m_pImpl->m_XWeakConnectionPoint->removeReference( + (XReference*)m_pImpl); m_pImpl->m_XWeakConnectionPoint.clear(); } m_pImpl->release(); m_pImpl = 0; } - if (xInt.is()) - { - m_pImpl = new OWeakRefListener(xInt); - m_pImpl->acquire(); - } - } } catch (RuntimeException &) { OSL_ASSERT( 0 ); } // assert here, but no unexpected() - return *this; } -WeakReferenceHelper::~WeakReferenceHelper() SAL_THROW( () ) +WeakReferenceHelper& WeakReferenceHelper::operator=(const WeakReferenceHelper& rWeakRef) SAL_THROW( () ) { - try + if (this == &rWeakRef) { - if (m_pImpl) + return *this; + } + Reference< XInterface > xInt( rWeakRef.get() ); + return operator = ( xInt ); +} + +WeakReferenceHelper & SAL_CALL +WeakReferenceHelper::operator= (const Reference< XInterface > & xInt) +SAL_THROW( () ) +{ + try { - if (m_pImpl->m_XWeakConnectionPoint.is()) + clear(); + if (xInt.is()) { - m_pImpl->m_XWeakConnectionPoint->removeReference((XReference*)m_pImpl); - m_pImpl->m_XWeakConnectionPoint.clear(); + m_pImpl = new OWeakRefListener(xInt); + m_pImpl->acquire(); } - m_pImpl->release(); - m_pImpl = 0; // for safety - } } catch (RuntimeException &) { OSL_ASSERT( 0 ); } // assert here, but no unexpected() + return *this; +} + +WeakReferenceHelper::~WeakReferenceHelper() SAL_THROW( () ) +{ + clear(); } Reference< XInterface > WeakReferenceHelper::get() const SAL_THROW( () ) diff --git a/offapi/com/sun/star/presentation/XSlideShow.idl b/offapi/com/sun/star/presentation/XSlideShow.idl index e0715d2ff..e01a64564 100644 --- a/offapi/com/sun/star/presentation/XSlideShow.idl +++ b/offapi/com/sun/star/presentation/XSlideShow.idl @@ -46,9 +46,15 @@ #ifndef __com_sun_star_animations_XAnimationNode_idl__ #include <com/sun/star/animations/XAnimationNode.idl> #endif +#endif +#ifndef __com_sun_star_lang_XMultiServiceFactory_idl__ +#include <com/sun/star/lang/XMultiServiceFactory.idl> #ifndef __com_sun_star_drawing_XDrawPage_idl__ #include <com/sun/star/drawing/XDrawPage.idl> #endif +#ifndef __com_sun_star_drawing_XDrawPagesSupplier_idl__ +#include <com/sun/star/drawing/XDrawPagesSupplier.idl> +#endif #ifndef __com_sun_star_drawing_XShape_idl__ #include <com/sun/star/drawing/XShape.idl> #endif @@ -149,6 +155,10 @@ interface XSlideShow : ::com::sun::star::uno::XInterface @param xPage The slide to display. + @param xDrawPages + For future use. + This parameter can be NULL when the ENABLE_PRESENTER_EXTRA_UI feature is disabled. + @param xAnimationNode The animation node determine the animations to display. @@ -185,6 +195,7 @@ interface XSlideShow : ::com::sun::star::uno::XInterface */ void displaySlide( [in] ::com::sun::star::drawing::XDrawPage xSlide, + [in] ::com::sun::star::drawing::XDrawPagesSupplier xDrawPages, [in] ::com::sun::star::animations::XAnimationNode aAnimationNode, [in] sequence< ::com::sun::star::beans::PropertyValue > aProperties ); @@ -211,6 +222,14 @@ interface XSlideShow : ::com::sun::star::uno::XInterface */ ::com::sun::star::drawing::XDrawPage getCurrentSlide(); + /** Register drawn polygons in presentation mode + + @param xDocFactory + + */ + + void registerUserPaintPolygons([in] ::com::sun::star::lang::XMultiServiceFactory xDocFactory); + /** Change a property of the slideshow.<p> @param aShowProperty diff --git a/offapi/com/sun/star/sheet/MemberResultFlags.idl b/offapi/com/sun/star/sheet/MemberResultFlags.idl index 6660b3803..23ba7b0ee 100644 --- a/offapi/com/sun/star/sheet/MemberResultFlags.idl +++ b/offapi/com/sun/star/sheet/MemberResultFlags.idl @@ -59,6 +59,17 @@ published constants MemberResultFlags */ const long CONTINUE = 4; + //------------------------------------------------------------------------- + + /** The element contains a grand total. + */ + const long GRANDTOTAL = 8; + + //------------------------------------------------------------------------- + + /** The element is a numeric value. + */ + const long NUMERIC = 16; }; //============================================================================= diff --git a/offapi/com/sun/star/task/PasswordContainerInteractionHandler.idl b/offapi/com/sun/star/task/PasswordContainerInteractionHandler.idl new file mode 100644 index 000000000..ded6c6c23 --- /dev/null +++ b/offapi/com/sun/star/task/PasswordContainerInteractionHandler.idl @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * 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. + * + ************************************************************************/ + +#ifndef __com_sun_star_task_PasswordContainerInteractionHandler_idl__ +#define __com_sun_star_task_PasswordContainerInteractionHandler_idl__ + +module com { module sun { module star { + module task { published interface XInteractionHandler; }; +}; }; }; + +module com { module sun { module star { module task { + +//============================================================================ +/** An interaction request handler that uses the + <type scope="com::sun::star::task">PasswordContainer</type> service to + handle <type scope="com::sun::star::ucb">AuthenticationRequest</type>s. + + If the password container contains credentials matching the authentication + request, the service implementation selects the + <type scope="com::sun::star::ucb">XInteractionSupplyAuthentication</type> + continuation, that should be supplied with the interaction request. + + If the password container does not contain credentials matching the + authentication request, the service implementation selects no continuation. + + @since OOo 3.3 + */ +published service PasswordContainerInteractionHandler + : com::sun::star::task::XInteractionHandler; + +}; }; }; }; + +#endif diff --git a/offapi/com/sun/star/task/XUrlContainer.idl b/offapi/com/sun/star/task/XUrlContainer.idl index 54709613d..9ac704c56 100644 --- a/offapi/com/sun/star/task/XUrlContainer.idl +++ b/offapi/com/sun/star/task/XUrlContainer.idl @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite @@ -44,8 +44,10 @@ module com { module sun { module star { module task { //============================================================================= -/** Allows to store and retrieve URLs. URLs can be stored persistently or +/** Allows to store and retrieve URLs. URLs can be stored persistently or until end of OOo session. + + @since OOo 3.2 */ /*published*/ interface XUrlContainer : com::sun::star::uno::XInterface { @@ -53,7 +55,7 @@ module com { module sun { module star { module task { /** Add a URL to the container. @param Url URL to add to the container - @param MakePersistent indicates whether the URL shall be stored + @param MakePersistent indicates whether the URL shall be stored persistently or just in memory (until end of OOo session) */ @@ -63,10 +65,10 @@ module com { module sun { module star { module task { /** Lookup a URL in the container. @param Url URL to lookup. - @returns Best matched URL or empty string. + @returns Best matched URL or empty string. */ string findUrl( [in] string Url ); - + //------------------------------------------------------------------------- /** Remove a URL from the container. @@ -78,7 +80,7 @@ module com { module sun { module star { module task { /** Get all URLs. @param OnlyPersistent Only URLs taht are stored persistently shall - be returned. + be returned. @returns List of URLs. */ sequence<string> getUrls( [in] boolean OnlyPersistent ); diff --git a/offapi/com/sun/star/task/makefile.mk b/offapi/com/sun/star/task/makefile.mk index dc54f6fd3..d77b1d602 100644 --- a/offapi/com/sun/star/task/makefile.mk +++ b/offapi/com/sun/star/task/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # Copyright IBM Corporation 2009. # @@ -59,6 +59,7 @@ IDLFILES=\ MasterPasswordRequest.idl\ NoMasterException.idl\ PasswordContainer.idl\ + PasswordContainerInteractionHandler.idl\ PasswordRequest.idl\ PasswordRequestMode.idl\ UnsupportedOverwriteRequest.idl\ diff --git a/offapi/com/sun/star/ucb/CommandEnvironment.idl b/offapi/com/sun/star/ucb/CommandEnvironment.idl new file mode 100644 index 000000000..a1ca2aa72 --- /dev/null +++ b/offapi/com/sun/star/ucb/CommandEnvironment.idl @@ -0,0 +1,67 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: SmoketestCommandEnvironment.idl,v $ + * $Revision: 1.3 $ + * + * 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. + * + ************************************************************************/ + +#ifndef _com_sun_star_ucb_CommandEnvironment_idl_ +#define _com_sun_star_ucb_CommandEnvironment_idl_ + +#include <com/sun/star/ucb/XCommandEnvironment.idl> +#include <com/sun/star/task/XInteractionHandler.idl> +#include <com/sun/star/ucb/XProgressHandler.idl> + +module com { module sun { module star { module ucb { + + /* This service implements an <type>XCommandEnvironment</type> that can be + initialized with any implementation of + <type scope="com::sun::star::task">XInteractionHandler</type> and + <type scope="com::sun::star::ucb">XProgressHandler</type>. The respective + get methods will simply return these handlers. + + @since OOo 3.3 + */ + published service CommandEnvironment : ::com::sun::star::ucb::XCommandEnvironment + { + //------------------------------------------------------------------------- + /** Constructor. + + @param InteractionHandler the interaction handler instance that will be + returned by this service' implementation of + <method>XCommandEnvironemt::getInteractionHandler</method> + + @param ProgressHandler the progress handler instance that will be + returned by this service' implementation of + <method>XCommandEnvironemt::getProgressHandler</method> + */ + create( [in] com::sun::star::task::XInteractionHandler InteractionHandler, + [in] com::sun::star::ucb::XProgressHandler ProgressHandler ); + }; + +};};};}; + +#endif diff --git a/offapi/com/sun/star/ucb/Content.idl b/offapi/com/sun/star/ucb/Content.idl index 7834c32ec..eef4f474e 100644 --- a/offapi/com/sun/star/ucb/Content.idl +++ b/offapi/com/sun/star/ucb/Content.idl @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite @@ -114,7 +114,7 @@ published service Content interface com::sun::star::lang::XComponent; //------------------------------------------------------------------------- - /** enables the caller to let the content execute commands. + /** enables the caller to let the content execute commands. <p>It is strongly recommended that any implementation supports the improved <type>XCommandProcessor2</type> interface.</p> @@ -137,7 +137,7 @@ published service Content [parameter type and name] ----------------------------------------------------------------------- - Requiered commands: + Mandatory commands: ----------------------------------------------------------------------- // This command obtains an interface which allows to query @@ -212,13 +212,13 @@ published service Content // Mode : ALL or FOLDERS or DOCUMENTS. The implementation // of the open command MUST support all these modes! // Priority : can be set, but implementation may ignore the value - // Sink : empty( ignored ) + // Sink : empty( ignored ) // Properties : The properties for that the result set shall // contain the property values. The order of the // sequence is the same as the order of result set // columns. First element of sequence will be row // number one, second will be row number two, ... - // SortingInfo : contains sort criteria, if result set shall + // SortingInfo : contains sort criteria, if result set shall // be sorted, otherwise it can be left empty. // // The exceution must be aborted by the implementation of this command @@ -236,12 +236,12 @@ published service Content // // Mode : DOCUMENT or DOCUMENT_SHARE_DENY_NONE or // DOCUMENT_SHARE_DENY_WRITE. Support for DOCUMENT - // is mandatory, all others are optional. + // is mandatory, all others are optional. // Priority : can be set, but implementation may ignore the value - // Sink : a sink, where the implementation can put the + // Sink : a sink, where the implementation can put the // document data into. // Properties : empty ( ignored ) - // SortingInfo : empty ( ignored ) + // SortingInfo : empty ( ignored ) // // The exceution must be aborted by the implementation of this command // (by throwing a <type>CommandAbortedException</type>), if an @@ -296,8 +296,8 @@ published service Content void // (1) This command inserts a new content. It commits the process of - // creating a new content via calling another content's method - // <member>XContentCreator::createNewContent</member> + // creating a new content via executing the command "createNewContent" + // and initializing it via setting properties, afterwards. // The command is not called on the content which created the new // content, because the new object already knows where it is to be // inserted (i.e. Calling createNewContent with the content type for a @@ -350,7 +350,7 @@ published service Content // Transfers without the transfer command can be done as follows: // // 1) Create a new content at the target folder - // --> targetContent = target.XContentCreator::createNewContent(...) + // --> targetContent = target.execute( "createNewContent", type ) // 2) Transfer data from source to target content // --> props = sourceContent.execute( "getPropertyValues", ... ) // --> dataStream = sourceContent.execute( "open", ... ) @@ -366,12 +366,57 @@ published service Content <B>transfer</B> <type>TransferInfo</type> aTransferInfo + // This command obtains an exlusive write lock for the resource. The + // lock is active until command "unlock" is executed or the OOo + // session that obtained the lock ends or until the lock is released by + // a third party (e.g. a system administrator). + void + <B>lock</B> + void + Exceptions: <type>InteractiveLockingLockedException</type> + <type>InteractiveLockingLockExpiredException</type> + + // This command removes a lock obtained by executing the command "lock" + // from the resource. + void + <B>unlock</B> + void + Exceptions: <type>InteractiveLockingNotLockedException</type> + <type>InteractiveLockingLockExpiredException</type> + + // Note that <type>InteractiveLockingLockExpiredException</type> might + // be raised by any command that requires a previously obtained lock. + + // This command creates a new non-persistent content of a given type. + // + // <p>Creation of a new (persistent) content: + // <ol> + // <li>creatabletypes = obtain "CreatableContentsInfo" property<br> + // from creator + // <li>choose a suitable type from creatabletypes + // <li>newObject = execute command "createNewContent(type)" at<br> + // creator + // <li>initialize the new object (i.e. newObject.Property1 = ...) + // <li>execute command "insert" at new content. This command + // commits the data and makes the new content persistent. + // </ol> + // + // This command must be supported by every Content that supports the + // property "CreatableContentsInfo" if the returned property value + // contains a non-empty sequence of creatable types. + // + // Note: This command is part of the replacement for the deprecated + // interface <type>XContentCreator</type>. + <type>XContent</type> > + <B>createNewContent</B> + <type>ContentInfo<type> contentinfo + ======================================================================= Properties: ======================================================================= ----------------------------------------------------------------------- - Requiered properties: + Mandatory properties: ----------------------------------------------------------------------- // contains a unique(!) type string for the content ( i.e. @@ -380,16 +425,16 @@ published service Content // content. Media types may be provided through the optional property // "MediaType". // The value of this property should match the information on creatable - // contents given by UCB contents that implement the interface - // <type>XContentCreator</type>. + // contents given by UCB contents that implement the property + // "CreatableContentsInfo". string ContentType // indicates, whether a content can contain other contents. - boolean IsFolder + boolean IsFolder // indicates, whether a content is a document. This means, the // content can dump itself into a data sink. - boolean IsDocument + boolean IsDocument // contains the title of an object (e.g. the subject of a message). string Title; @@ -570,7 +615,6 @@ published service Content </dt><dd>Show in new task </dd></dl> </p> - string TargetFrames // for contents that are links to other contents, contains the URL of @@ -586,6 +630,17 @@ published service Content // describes a verification policy. <type>VerificationMode</type> VerificationMode + + // contains the types of Contents a Content object can create via + // command "createNewContent". + // + // If the property value can be a non-empty sequence, the Content must + // also support command "createNewContent". + // + // Note: This property is part of the replacement for the deprecated + // interface <type>XContentCreator</type>. + sequence <type>ContentInfo</type> CreatableContentsInfo + </pre> */ interface com::sun::star::ucb::XCommandProcessor; @@ -603,7 +658,7 @@ published service Content [optional] interface com::sun::star::ucb::XCommandProcessor2; //------------------------------------------------------------------------- - /** notifies changes of property values to listeners registered for + /** notifies changes of property values to listeners registered for those properties. <p>This interface is required. @@ -611,11 +666,11 @@ published service Content interface com::sun::star::beans::XPropertiesChangeNotifier; //------------------------------------------------------------------------- - /** can be used to add new properties to the content and to remove + /** can be used to add new properties to the content and to remove properties from the content dynamically. <p>Note that the dynamic properties must be kept persistent. The - service <type>Store</type> (UCB persistence service) may be used to + service <type>Store</type> (UCB persistence service) may be used to implement this. <p><b>Important:</b> The implementation of @@ -667,7 +722,7 @@ published service Content [optional] interface com::sun::star::ucb::XCommandInfoChangeNotifier; //------------------------------------------------------------------------- - /** creates new contents (i.e. creates a new folder in another folder + /** creates new contents (i.e. creates a new folder in another folder somewhere in the local file system). <p>A content is "new", if it does not physically exist before creating @@ -675,11 +730,16 @@ published service Content <p>This interface is optional. It should be implemented by contents which shall be able to create new objects. + + @deprecated + + <p>This interface is <b>deprecated</b>. Use property + "CreatableContentsInfo" and command "createNewContent" instead. */ [optional] interface com::sun::star::ucb::XContentCreator; //------------------------------------------------------------------------- - /** provides access to the parent content of this content. + /** provides access to the parent content of this content. <p>The object returned by the implementation of the method <member scope="com::sun::star::container">XChild::getParent()</member> diff --git a/offapi/com/sun/star/ucb/InteractiveLockingException.idl b/offapi/com/sun/star/ucb/InteractiveLockingException.idl new file mode 100644 index 000000000..8d9635856 --- /dev/null +++ b/offapi/com/sun/star/ucb/InteractiveLockingException.idl @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * 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. + * + ************************************************************************/ +#ifndef __com_sun_star_ucb_InteractiveLockingException_idl__ +#define __com_sun_star_ucb_InteractiveLockingException_idl__ + +#ifndef __com_sun_star_task_ClassifiedInteractionRequest_idl__ +#include <com/sun/star/task/ClassifiedInteractionRequest.idl> +#endif + + +//============================================================================= + +module com { module sun { module star { module ucb { + +//============================================================================= +/** An error related to locking operations. + + <p> Various meaningful errors are derived from this exception. </p> + + @since OOo 3.3 +*/ +/*published*/ exception InteractiveLockingException : com::sun::star::task::ClassifiedInteractionRequest +{ + //------------------------------------------------------------------------- + /** The Url of the resource this exception is related to. + */ + string Url; +}; + +//============================================================================= + +}; }; }; }; + +#endif diff --git a/offapi/com/sun/star/ucb/InteractiveLockingLockExpiredException.idl b/offapi/com/sun/star/ucb/InteractiveLockingLockExpiredException.idl new file mode 100644 index 000000000..63ddfa58b --- /dev/null +++ b/offapi/com/sun/star/ucb/InteractiveLockingLockExpiredException.idl @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * 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. + * + ************************************************************************/ +#ifndef __com_sun_star_ucb_InteractiveLockingLockExpiredException_idl__ +#define __com_sun_star_ucb_InteractiveLockingLockExpiredException_idl__ + +#ifndef __com_sun_star_ucb_InteractiveLockingException_idl__ +#include <com/sun/star/ucb/InteractiveLockingException.idl> +#endif + + +//============================================================================= + +module com { module sun { module star { module ucb { + +//============================================================================= +/** An error indicating that a lock that has been previously obtained by this + OOo session has expired. + + @since OOo 3.3 +*/ +/*published*/ exception InteractiveLockingLockExpiredException : com::sun::star::ucb::InteractiveLockingException +{ +}; + +//============================================================================= + +}; }; }; }; + +#endif diff --git a/offapi/com/sun/star/ucb/InteractiveLockingLockedException.idl b/offapi/com/sun/star/ucb/InteractiveLockingLockedException.idl new file mode 100644 index 000000000..33f309ec0 --- /dev/null +++ b/offapi/com/sun/star/ucb/InteractiveLockingLockedException.idl @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * 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. + * + ************************************************************************/ +#ifndef __com_sun_star_ucb_InteractiveLockingLockedException_idl__ +#define __com_sun_star_ucb_InteractiveLockingLockedException_idl__ + +#ifndef __com_sun_star_ucb_InteractiveLockingException_idl__ +#include <com/sun/star/ucb/InteractiveLockingException.idl> +#endif + + +//============================================================================= + +module com { module sun { module star { module ucb { + +//============================================================================= +/** An error indicating that the resource is locked. + + @since OOo 3.3 +*/ +/*published*/ exception InteractiveLockingLockedException : com::sun::star::ucb::InteractiveLockingException +{ + //------------------------------------------------------------------------- + /** The owner of the lock. + + <true/>, the lock has been obtained by this OOo session. + <false/> the lock has been obtained by another principal. + */ + boolean SelfOwned; +}; + +//============================================================================= + +}; }; }; }; + +#endif diff --git a/offapi/com/sun/star/ucb/InteractiveLockingNotLockedException.idl b/offapi/com/sun/star/ucb/InteractiveLockingNotLockedException.idl new file mode 100644 index 000000000..88d587b4c --- /dev/null +++ b/offapi/com/sun/star/ucb/InteractiveLockingNotLockedException.idl @@ -0,0 +1,59 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * 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. + * + ************************************************************************/ +#ifndef __com_sun_star_ucb_InteractiveLockingNotLockedException_idl__ +#define __com_sun_star_ucb_InteractiveLockingNotLockedException_idl__ + +#ifndef __com_sun_star_ucb_InteractiveLockingException_idl__ +#include <com/sun/star/ucb/InteractiveLockingException.idl> +#endif + + +//============================================================================= + +module com { module sun { module star { module ucb { + +//============================================================================= +/** An error indicating that the resource is not locked. + + <p>This error for instance can occure when trying to unlock a resource + that is not locked. + </p> + + @since OOo 3.3 +*/ +/*published*/ exception InteractiveLockingNotLockedException : com::sun::star::ucb::InteractiveLockingException +{ +}; + +//============================================================================= + +}; }; }; }; + +#endif diff --git a/offapi/com/sun/star/ucb/URLAuthenticationRequest.idl b/offapi/com/sun/star/ucb/URLAuthenticationRequest.idl index 1d8284a74..84d5f7d6c 100644 --- a/offapi/com/sun/star/ucb/URLAuthenticationRequest.idl +++ b/offapi/com/sun/star/ucb/URLAuthenticationRequest.idl @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite @@ -37,11 +37,13 @@ //============================================================================= -module com { module sun { module star { module ucb { +module com { module sun { module star { module ucb { //============================================================================= /** An error specifing lack of correct authentication data (e.g., to log into an account). + + @since OOo 3.2 */ /*published*/ exception URLAuthenticationRequest : AuthenticationRequest { @@ -53,6 +55,6 @@ module com { module sun { module star { module ucb { //============================================================================= -}; }; }; }; +}; }; }; }; #endif diff --git a/offapi/com/sun/star/ucb/XContentCreator.idl b/offapi/com/sun/star/ucb/XContentCreator.idl index 1d144a70f..df0c89a1b 100644 --- a/offapi/com/sun/star/ucb/XContentCreator.idl +++ b/offapi/com/sun/star/ucb/XContentCreator.idl @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite @@ -52,12 +52,19 @@ module com { module sun { module star { module ucb { <p>Creation of a new (persistent) content: <ol> - <li>newObject = creator.createNewContent( ... ) + <li>creatabletypes = creator.queryCreatableContentsInfo() + <li>choose a suitable type from creatabletypes + <li>newObject = creator.createNewContent( type ) <li>initialize the new object (i.e. newObject.Property1 = ...) <li>let the new content execute the command "insert". That command commits the data and makes the new content persistent. </ol> + @deprecated + + <p>This interface is deprecated. Use <type>Content</type> property + "CreatableContentsInfo" and command "createNewContent" instead. + @version 1.0 @author Kai Sommerfeld @see XContent @@ -66,7 +73,7 @@ module com { module sun { module star { module ucb { published interface XContentCreator: com::sun::star::uno::XInterface { //------------------------------------------------------------------------- - /** returns a list with information about the creatable contents. + /** returns a list with information about the creatable contents. @returns the list with information about the creatable contents. @@ -74,13 +81,13 @@ published interface XContentCreator: com::sun::star::uno::XInterface sequence<com::sun::star::ucb::ContentInfo> queryCreatableContentsInfo(); //------------------------------------------------------------------------- - /** creates a new content of given type.. + /** creates a new content of given type. @param Info the content information. @returns - the new content, if operation was succesful. + the new content, if operation was successful. */ com::sun::star::ucb::XContent createNewContent( [in] com::sun::star::ucb::ContentInfo Info ); diff --git a/offapi/com/sun/star/ucb/XInteractionSupplyAuthentication2.idl b/offapi/com/sun/star/ucb/XInteractionSupplyAuthentication2.idl index ea83af4fb..01241f108 100644 --- a/offapi/com/sun/star/ucb/XInteractionSupplyAuthentication2.idl +++ b/offapi/com/sun/star/ucb/XInteractionSupplyAuthentication2.idl @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite @@ -38,13 +38,15 @@ //============================================================================= -module com { module sun { module star { module ucb { +module com { module sun { module star { module ucb { //============================================================================= /** An interaction continuation handing back some authentication data. - + <p> This continuation is typically used in conjunction with <type>AuthenticationRequest</type>. </p> + + @since OOo 3.2 */ /*published*/ interface XInteractionSupplyAuthentication2 : XInteractionSupplyAuthentication { @@ -53,7 +55,7 @@ module com { module sun { module star { module ucb { of the authentiction request. @param Default - Returns the default behavior for system credentials handling (to be + Returns the default behavior for system credentials handling (to be initially displayed to the user). @returns @@ -64,7 +66,7 @@ module com { module sun { module star { module ucb { //------------------------------------------------------------------------- /** Set a new 'use system credentials' value to hand back. - + @param UseSystemCredentials <true/> means the request issuer shall obtain and use system credentials. */ @@ -74,6 +76,6 @@ module com { module sun { module star { module ucb { //============================================================================= -}; }; }; }; +}; }; }; }; #endif diff --git a/offapi/com/sun/star/ucb/makefile.mk b/offapi/com/sun/star/ucb/makefile.mk index 19320b716..573453e55 100644 --- a/offapi/com/sun/star/ucb/makefile.mk +++ b/offapi/com/sun/star/ucb/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -55,8 +55,10 @@ IDLFILES=\ CachedDynamicResultSetStub.idl\ CachedDynamicResultSetStubFactory.idl\ CHAOSProgressStart.idl\ + CertificateValidationRequest.idl\ Command.idl\ CommandAbortedException.idl\ + CommandEnvironment.idl\ CommandFailedException.idl\ CommandInfo.idl\ CommandInfoChange.idl\ @@ -122,6 +124,10 @@ IDLFILES=\ InteractiveCHAOSException.idl\ InteractiveFileIOException.idl\ InteractiveIOException.idl\ + InteractiveLockingException.idl\ + InteractiveLockingLockedException.idl\ + InteractiveLockingLockExpiredException.idl\ + InteractiveLockingNotLockedException.idl\ InteractiveNetworkConnectException.idl\ InteractiveNetworkException.idl\ InteractiveNetworkGeneralException.idl\ @@ -264,8 +270,7 @@ IDLFILES=\ XSimpleFileAccess3.idl\ XSortedDynamicResultSetFactory.idl\ XSourceInitialization.idl\ - XWebDAVCommandEnvironment.idl \ - CertificateValidationRequest.idl + XWebDAVCommandEnvironment.idl # ------------------------------------------------------------------ diff --git a/remotebridges/source/bridge/bridge_connection.cxx b/remotebridges/source/bridge/bridge_connection.cxx index adbd57a69..08ba31165 100644 --- a/remotebridges/source/bridge/bridge_connection.cxx +++ b/remotebridges/source/bridge/bridge_connection.cxx @@ -77,8 +77,8 @@ namespace remotebridges_bridge try { // TODO possible optimization : give - ::rtl::ByteSequence seq( nSize , ::rtl::BYTESEQ_NODEFAULT ); - sal_Int32 nRead = m->m_r->read( *(Sequence<sal_Int8>*)&seq , nSize ); + Sequence<sal_Int8> seq = toUnoSequence( ::rtl::ByteSequence(nSize, ::rtl::BYTESEQ_NODEFAULT) ); + sal_Int32 nRead = m->m_r->read( seq , nSize ); memcpy( pDest , seq.getConstArray() , nRead ); return nRead; } diff --git a/sal/osl/unx/file_misc.cxx b/sal/osl/unx/file_misc.cxx index 034cf0b9a..61016f796 100644 --- a/sal/osl/unx/file_misc.cxx +++ b/sal/osl/unx/file_misc.cxx @@ -1013,6 +1013,15 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD return nRet; } + DestFileFD=open(pszDestFileName, O_WRONLY | O_CREAT, mode); + + if ( DestFileFD < 0 ) + { + nRet=errno; + close(SourceFileFD); + return nRet; + } + /* HACK: because memory mapping fails on various platforms if the size of the source file is 0 byte */ if (0 == nSourceSize) @@ -1030,16 +1039,8 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD || -1 == lseek( SourceFileFD, 0, SEEK_SET ) ) { nRet = errno; - (void) close( SourceFileFD ); - return nRet; - } - - DestFileFD=open(pszDestFileName, O_WRONLY | O_CREAT, mode); - - if ( DestFileFD < 0 ) - { - nRet=errno; - close(SourceFileFD); + close( SourceFileFD ); + close( DestFileFD ); return nRet; } |