| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _DBASHARED_APITOOLS_HXX_ |
| #define _DBASHARED_APITOOLS_HXX_ |
| |
| #ifndef _CPPUHELPER_COMPONENT_HXX_ |
| #include <cppuhelper/component.hxx> |
| #endif |
| #ifndef _OSL_MUTEX_HXX_ |
| #include <osl/mutex.hxx> |
| #endif |
| #ifndef _CPPUHELPER_INTERFACECONTAINER_HXX_ |
| #include <cppuhelper/interfacecontainer.hxx> |
| #endif |
| #ifndef _OSL_DIAGNOSE_H_ |
| #include <osl/diagnose.h> |
| #endif |
| #ifndef _COMPHELPER_STLTYPES_HXX_ |
| #include <comphelper/stl_types.hxx> |
| #endif |
| #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_ |
| #include <cppuhelper/typeprovider.hxx> |
| #endif |
| #ifndef _COMPHELPER_SEQUENCE_HXX_ |
| #include <comphelper/sequence.hxx> |
| #endif |
| |
| //================================================================================== |
| //= various typedefs |
| //================================================================================== |
| DECLARE_STL_VECTOR(::com::sun::star::uno::WeakReferenceHelper, OWeakRefArray); |
| |
| //================================================================================== |
| //= OSubComponent - a component which holds a hard ref to it's parent |
| //= and is been hold itself (by the parent) with a weak ref |
| //================================================================================== |
| class OSubComponent : public ::cppu::OComponentHelper |
| { |
| protected: |
| // the parent must support the tunnel implementation |
| ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent; |
| virtual ~OSubComponent(); |
| |
| public: |
| OSubComponent(::osl::Mutex& _rMutex, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParent); |
| |
| // ::com::sun::star::lang::XTypeProvider |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException); |
| |
| // ::com::sun::star::uno::XInterface |
| virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) |
| throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL acquire() throw(); |
| virtual void SAL_CALL release() throw(); |
| |
| inline operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > () const |
| { return (::com::sun::star::uno::XWeak *)this; } |
| |
| }; |
| |
| //================================================================================== |
| //= helper for implementing the XServiceInfo interface |
| |
| //---------------------------------------------------------------------------------- |
| // (internal - not to be used outside - usually) |
| #define IMPLEMENT_SERVICE_INFO_IMPLNAME(classname, implasciiname) \ |
| ::rtl::OUString SAL_CALL classname::getImplementationName( ) throw (::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return ::rtl::OUString::createFromAscii(implasciiname); \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_IMPLNAME_STATIC(classname, implasciiname) \ |
| ::rtl::OUString SAL_CALL classname::getImplementationName( ) throw (::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return getImplementationName_Static(); \ |
| } \ |
| ::rtl::OUString SAL_CALL classname::getImplementationName_Static( ) throw (::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return ::rtl::OUString::createFromAscii(implasciiname); \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| sal_Bool SAL_CALL classname::supportsService( const ::rtl::OUString& _rServiceName ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); \ |
| const ::rtl::OUString* pSupported = aSupported.getConstArray(); \ |
| for (sal_Int32 i=0; i<aSupported.getLength(); ++i, ++pSupported) \ |
| if (pSupported->equals(_rServiceName)) \ |
| return sal_True; \ |
| \ |
| return sal_False; \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_GETSUPPORTED1(classname, serviceasciiname) \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1); \ |
| aSupported[0] = ::rtl::OUString::createFromAscii(serviceasciiname); \ |
| return aSupported; \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_GETSUPPORTED1_STATIC(classname, serviceasciiname) \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return getSupportedServiceNames_Static(); \ |
| } \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames_Static( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1); \ |
| aSupported[0] = ::rtl::OUString::createFromAscii(serviceasciiname); \ |
| return aSupported; \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_GETSUPPORTED2_STATIC(classname, serviceasciiname1, serviceasciiname2) \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return getSupportedServiceNames_Static(); \ |
| } \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames_Static( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(2); \ |
| aSupported[0] = ::rtl::OUString::createFromAscii(serviceasciiname1); \ |
| aSupported[1] = ::rtl::OUString::createFromAscii(serviceasciiname2); \ |
| return aSupported; \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_GETSUPPORTED2(classname, serviceasciiname1, serviceasciiname2) \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(2); \ |
| aSupported[0] = ::rtl::OUString::createFromAscii(serviceasciiname1); \ |
| aSupported[1] = ::rtl::OUString::createFromAscii(serviceasciiname2); \ |
| return aSupported; \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_GETSUPPORTED3(classname, serviceasciiname1, serviceasciiname2, serviceasciiname3) \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(3); \ |
| aSupported[0] = ::rtl::OUString::createFromAscii(serviceasciiname1); \ |
| aSupported[1] = ::rtl::OUString::createFromAscii(serviceasciiname2); \ |
| aSupported[2] = ::rtl::OUString::createFromAscii(serviceasciiname3); \ |
| return aSupported; \ |
| } \ |
| |
| #define IMPLEMENT_SERVICE_INFO_CREATE_STATIC(classname) \ |
| ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > \ |
| SAL_CALL classname::Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB) \ |
| { \ |
| return static_cast< XServiceInfo* >(new classname(_rxORB)); \ |
| } \ |
| |
| //---------------------------------------------------------------------------------- |
| // declare service info methods - no getImplementationName, so the class is abstract |
| #define DECLARE_SERVICE_INFO_ABSTRACT() \ |
| virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); \ |
| virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| |
| //---------------------------------------------------------------------------------- |
| // declare service info methods |
| #define DECLARE_SERVICE_INFO() \ |
| virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); \ |
| virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); \ |
| virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) \ |
| |
| #define DECLARE_SERVICE_INFO_STATIC() \ |
| DECLARE_SERVICE_INFO(); \ |
| static ::rtl::OUString SAL_CALL getImplementationName_Static( ) throw (::com::sun::star::uno::RuntimeException); \ |
| static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_Static( ) throw(::com::sun::star::uno::RuntimeException); \ |
| static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > \ |
| SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&) \ |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO1(classname, implasciiname, serviceasciiname) \ |
| IMPLEMENT_SERVICE_INFO_IMPLNAME(classname, implasciiname) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED1(classname, serviceasciiname) \ |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO1_STATIC(classname, implasciiname, serviceasciiname) \ |
| IMPLEMENT_SERVICE_INFO_IMPLNAME_STATIC(classname, implasciiname) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED1_STATIC(classname, serviceasciiname) \ |
| IMPLEMENT_SERVICE_INFO_CREATE_STATIC(classname) \ |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO2(classname, implasciiname, serviceasciiname1, serviceasciiname2) \ |
| IMPLEMENT_SERVICE_INFO_IMPLNAME(classname, implasciiname) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED2(classname, serviceasciiname1, serviceasciiname2) |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO2_STATIC(classname, implasciiname, serviceasciiname1, serviceasciiname2) \ |
| IMPLEMENT_SERVICE_INFO_IMPLNAME_STATIC(classname, implasciiname) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED2_STATIC(classname, serviceasciiname1,serviceasciiname2) \ |
| IMPLEMENT_SERVICE_INFO_CREATE_STATIC(classname) \ |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO3(classname, implasciiname, serviceasciiname1, serviceasciiname2, serviceasciiname3) \ |
| IMPLEMENT_SERVICE_INFO_IMPLNAME(classname, implasciiname) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED3(classname, serviceasciiname1, serviceasciiname2, serviceasciiname3) \ |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO1_ABSTRACT(classname, serviceasciiname) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED1(classname, serviceasciiname) \ |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_SERVICE_INFO2_ABSTRACT(classname, serviceasciiname1, serviceasciiname2) \ |
| IMPLEMENT_SERVICE_INFO_SUPPORTS(classname) \ |
| IMPLEMENT_SERVICE_INFO_GETSUPPORTED2(classname, serviceasciiname1, serviceasciiname2) \ |
| |
| //================================================================================== |
| //= XTypeProvider helpers |
| |
| //-------------------------------------------------------------------------- |
| #define DECLARE_IMPLEMENTATION_ID( ) \ |
| virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); \ |
| static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId() \ |
| |
| //-------------------------------------------------------------------------- |
| #define DECLARE_GETTYPES( ) \ |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw (::com::sun::star::uno::RuntimeException); |
| |
| //-------------------------------------------------------------------------- |
| #define DECLARE_TYPEPROVIDER( ) \ |
| DECLARE_GETTYPES( ) \ |
| DECLARE_IMPLEMENTATION_ID( ) |
| |
| //-------------------------------------------------------------------------- |
| #define IMPLEMENT_IMPLEMENTATION_ID( classname ) \ |
| ::com::sun::star::uno::Sequence< sal_Int8 > classname::getUnoTunnelImplementationId() \ |
| { \ |
| static ::cppu::OImplementationId* pId = 0; \ |
| if ( !pId ) \ |
| { \ |
| ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); \ |
| if ( !pId ) \ |
| { \ |
| static ::cppu::OImplementationId aId; \ |
| pId = &aId; \ |
| } \ |
| } \ |
| return pId->getImplementationId(); \ |
| } \ |
| ::com::sun::star::uno::Sequence< sal_Int8 > classname::getImplementationId() throw (::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return classname::getUnoTunnelImplementationId(); \ |
| } |
| |
| //-------------------------------------------------------------------------- |
| #define IMPLEMENT_GETTYPES2( classname, baseclass1, baseclass2 ) \ |
| ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > classname::getTypes() throw (::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return ::comphelper::concatSequences( \ |
| baseclass1::getTypes( ), \ |
| baseclass2::getTypes( ) \ |
| ); \ |
| } |
| |
| //-------------------------------------------------------------------------- |
| #define IMPLEMENT_GETTYPES3( classname, baseclass1, baseclass2, baseclass3 ) \ |
| ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > classname::getTypes() throw (::com::sun::star::uno::RuntimeException) \ |
| { \ |
| return ::comphelper::concatSequences( \ |
| baseclass1::getTypes( ), \ |
| baseclass2::getTypes( ), \ |
| baseclass3::getTypes( ) \ |
| ); \ |
| } |
| |
| //-------------------------------------------------------------------------- |
| #define IMPLEMENT_TYPEPROVIDER2( classname, baseclass1, baseclass2 ) \ |
| IMPLEMENT_IMPLEMENTATION_ID( classname) \ |
| IMPLEMENT_GETTYPES2( classname, baseclass1, baseclass2 ) |
| |
| //-------------------------------------------------------------------------- |
| #define IMPLEMENT_TYPEPROVIDER3( classname, baseclass1, baseclass2, baseclass3 ) \ |
| IMPLEMENT_IMPLEMENTATION_ID( classname) \ |
| IMPLEMENT_GETTYPES3(classname, baseclass1, baseclass2, baseclass3 ) |
| |
| //================================================================================== |
| //= helper for declaring/implementing classes based on the OPropertyContainer and an OPropertyArrayUsageHelper |
| //---------------------------------------------------------------------------------- |
| #define DECLARE_PROPERTYCONTAINER_DEFAULTS( ) \ |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo> SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException); \ |
| virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper(); \ |
| virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const |
| |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_PROPERTYCONTAINER_DEFAULTS2( classname , baseclass1) \ |
| ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL classname::getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException) \ |
| { \ |
| Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) ); \ |
| return xInfo; \ |
| } \ |
| ::cppu::IPropertyArrayHelper& classname::getInfoHelper() \ |
| { \ |
| return *baseclass1::getArrayHelper(); \ |
| } \ |
| ::cppu::IPropertyArrayHelper* classname::createArrayHelper( ) const \ |
| { \ |
| ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > aProps; \ |
| describeProperties(aProps); \ |
| return new ::cppu::OPropertyArrayHelper(aProps); \ |
| } |
| //---------------------------------------------------------------------------------- |
| #define IMPLEMENT_PROPERTYCONTAINER_DEFAULTS( classname ) \ |
| IMPLEMENT_PROPERTYCONTAINER_DEFAULTS2( classname, classname ) |
| |
| //================================================================================== |
| //= helper for implementing the createArrayHelper |
| //---------------------------------------------------------------------------------- |
| #define BEGIN_PROPERTY_SEQUENCE(count) \ |
| ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property> aDescriptor(count); \ |
| ::com::sun::star::beans::Property* pDesc = aDescriptor.getArray(); \ |
| sal_Int32 nPos = 0; \ |
| |
| //---------------------------------------------------------------------------------- |
| #define BEGIN_PROPERTY_HELPER(count) \ |
| BEGIN_PROPERTY_SEQUENCE(count) |
| |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP_IMPL(varname, cpputype) \ |
| pDesc[nPos++] = ::com::sun::star::beans::Property(PROPERTY_##varname, PROPERTY_ID_##varname, cpputype, |
| |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP0(varname, type) \ |
| DECL_PROP_IMPL(varname, ::getCppuType((const type *)0)) 0) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP0_BOOL(varname) \ |
| DECL_PROP_IMPL(varname, ::getBooleanCppuType()) 0) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP0_IFACE(varname, iface) \ |
| DECL_PROP_IMPL(varname, ::getCppuType(static_cast< ::com::sun::star::uno::Reference< iface >* >(NULL))) 0) |
| |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP1(varname, type, attrib1) \ |
| DECL_PROP_IMPL(varname, ::getCppuType((const type *)0)) ::com::sun::star::beans::PropertyAttribute::attrib1) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP1_BOOL(varname, attrib1) \ |
| DECL_PROP_IMPL(varname, ::getBooleanCppuType()) ::com::sun::star::beans::PropertyAttribute::attrib1) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP1_IFACE(varname, iface, attrib1) \ |
| DECL_PROP_IMPL(varname, ::getCppuType(static_cast< ::com::sun::star::uno::Reference< iface >* >(NULL))) ::com::sun::star::beans::PropertyAttribute::attrib1) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP2_IFACE(varname, iface, attrib1, attrib2) \ |
| DECL_PROP_IMPL(varname, ::getCppuType(static_cast< ::com::sun::star::uno::Reference< iface >* >(NULL))) ::com::sun::star::beans::PropertyAttribute::attrib1 | ::com::sun::star::beans::PropertyAttribute::attrib2) |
| |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP2(varname, type, attrib1, attrib2) \ |
| DECL_PROP_IMPL(varname, ::getCppuType((const type *)0)) ::com::sun::star::beans::PropertyAttribute::attrib1 | ::com::sun::star::beans::PropertyAttribute::attrib2) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP2_BOOL(varname, attrib1, attrib2) \ |
| DECL_PROP_IMPL(varname, ::getBooleanCppuType()) ::com::sun::star::beans::PropertyAttribute::attrib1 | ::com::sun::star::beans::PropertyAttribute::attrib2) |
| |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP3(varname, type, attrib1, attrib2, attrib3) \ |
| DECL_PROP_IMPL(varname, ::getCppuType((const type *)0)) ::com::sun::star::beans::PropertyAttribute::attrib1 | ::com::sun::star::beans::PropertyAttribute::attrib2 | ::com::sun::star::beans::PropertyAttribute::attrib3) |
| //---------------------------------------------------------------------------------- |
| #define DECL_PROP3_BOOL(varname, attrib1, attrib2, attrib3) \ |
| DECL_PROP_IMPL(varname, ::getBooleanCppuType()) ::com::sun::star::beans::PropertyAttribute::attrib1 | ::com::sun::star::beans::PropertyAttribute::attrib2 | ::com::sun::star::beans::PropertyAttribute::attrib3) |
| |
| |
| //---------------------------------------------------------------------------------- |
| #define END_PROPERTY_SEQUENCE() \ |
| OSL_ENSURE(nPos == aDescriptor.getLength(), "forgot to adjust the count ?"); \ |
| |
| //---------------------------------------------------------------------------------- |
| #define END_PROPERTY_HELPER() \ |
| END_PROPERTY_SEQUENCE() \ |
| return new ::cppu::OPropertyArrayHelper(aDescriptor); |
| |
| |
| #define NOTIFY_LISTERNERS(_rListeners,T,method) \ |
| Sequence< Reference< XInterface > > aListenerSeq = _rListeners.getElements(); \ |
| \ |
| const Reference< XInterface >* pxIntBegin = aListenerSeq.getConstArray(); \ |
| const Reference< XInterface >* pxInt = pxIntBegin + aListenerSeq.getLength(); \ |
| \ |
| _rGuard.clear(); \ |
| while( pxInt > pxIntBegin ) \ |
| { \ |
| try \ |
| { \ |
| while( pxInt > pxIntBegin ) \ |
| { \ |
| --pxInt; \ |
| static_cast< T* >( pxInt->get() )->method(aEvt); \ |
| } \ |
| } \ |
| catch( RuntimeException& ) \ |
| { \ |
| } \ |
| } \ |
| _rGuard.reset(); |
| |
| #define NOTIFY_LISTERNERS1(_rListeners,T,method,arg1) \ |
| Sequence< Reference< XInterface > > aListenerSeq = _rListeners.getElements(); \ |
| \ |
| const Reference< XInterface >* pxIntBegin = aListenerSeq.getConstArray(); \ |
| const Reference< XInterface >* pxInt = pxIntBegin + aListenerSeq.getLength(); \ |
| \ |
| _rGuard.clear(); \ |
| while( pxInt > pxIntBegin ) \ |
| { \ |
| try \ |
| { \ |
| while( pxInt > pxIntBegin ) \ |
| { \ |
| --pxInt; \ |
| static_cast< T* >( pxInt->get() )->method(aEvt,arg1); \ |
| } \ |
| } \ |
| catch( RuntimeException& ) \ |
| { \ |
| } \ |
| } \ |
| _rGuard.reset(); |
| |
| |
| //================================================================================== |
| // miscellaneous |
| #define UNUSED(x) x; |
| |
| #endif // _DBASHARED_APITOOLS_HXX_ |
| |