24#include <osl/diagnose.h>
26#include <com/sun/star/beans/PropertyAttribute.hpp>
31#include <unordered_set>
48 const Property* lcl_findPropertyByName(
const std::vector< Property >& _rProps,
const OUString& _rName )
51 auto pResult = std::lower_bound(_rProps.begin(), _rProps.end(), aNameProp, PropertyCompareByName());
52 if ( pResult == _rProps.end() || pResult->Name != _rName )
60 const Sequence< Property >& _rProperties,
const Sequence< Property >& _rAggProperties,
69 [](
const css::beans::Property&
x,
const css::beans::Property&
y ) ->
bool { return x.Name == y.Name; } ),
75 std::unordered_set< OUString > aDelegatorProps;
76 aDelegatorProps.reserve( _rProperties.getLength() );
77 for(
auto &delegateProp: _rProperties )
79 const auto inserted = aDelegatorProps.insert( delegateProp.Name );
81 "OPropertyArrayAggregationHelper::OPropertyArrayAggregationHelper: duplicate delegatee property!" );
84 std::unordered_set< sal_Int32 > existingHandles;
86 sal_Int32 nAggregateHandle = _nFirstAggregateId;
87 for ( std::size_t nMPLoop = 0; nMPLoop <
m_aProperties.size(); ++nMPLoop )
90 if ( aDelegatorProps.find( prop.Name ) != aDelegatorProps.end() )
94 existingHandles.insert( prop.Handle );
104 if ( ( -1 ==
nHandle ) || ( existingHandles.find(
nHandle ) != existingHandles.end() ) )
112 existingHandles.insert(
nHandle );
129 if ( pPropertyDescriptor )
133 OSL_ENSURE(
m_aPropertyAccessors.end() != aPos,
"OPropertyArrayAggregationHelper::classifyProperty: should have this handle in my map!" );
148 throw UnknownPropertyException(_rPropertyName);
169 return pProperty ? pProperty->Handle : -1;
174 OUString* _pPropName, sal_Int16* _pAttributes, sal_Int32 _nHandle)
180 const css::beans::Property& rProperty =
m_aProperties[(*i).second.nPos];
182 *_pPropName = rProperty.Name;
184 *_pAttributes = rProperty.Attributes;
203 OUString* _pPropName, sal_Int32* _pOriginalHandle, sal_Int32 _nHandle)
const
209 if (_pOriginalHandle)
210 *_pOriginalHandle = (*i).second.nOriginalHandle;
213 OSL_ENSURE((*i).second.nPos <
m_aProperties.size(),
"Invalid index for sequence!");
214 const css::beans::Property& rProperty =
m_aProperties[(*i).second.nPos];
215 *_pPropName = rProperty.Name;
229 sal_Int32* _pHandles,
const css::uno::Sequence< OUString >& _rPropNames )
231 sal_Int32 nHitCount = 0;
232 const OUString* pReqProps = _rPropNames.getConstArray();
233 sal_Int32 nReqLen = _rPropNames.getLength();
236 for( sal_Int32
i = 0;
i < nReqLen; ++
i )
238 aNameProp.Name = pReqProps[
i];
240 if ( findIter !=
m_aProperties.end() && findIter->Name == pReqProps[
i] )
242 _pHandles[
i] = findIter->Handle;
259 explicit PropertyForwarder( OPropertySetAggregationHelper& _rAggregationHelper );
275 void doForward( sal_Int32 _nHandle,
const Any& _rValue );
282 :m_rAggregationHelper( _rAggregationHelper )
283 ,m_nCurrentlyForwarding( -1 )
302 OSL_ENSURE(
m_rAggregationHelper.m_xAggregateSet.is(),
"PropertyForwarder::doForward: no property set!" );
329 :OPropertyStateHelper( rBHlp )
330 ,m_bListening( false )
336OPropertySetAggregationHelper::~OPropertySetAggregationHelper()
341css::uno::Any SAL_CALL OPropertySetAggregationHelper::queryInterface(
const css::uno::Type& _rType)
343 css::uno::Any aReturn = OPropertyStateHelper::queryInterface(_rType);
345 if ( !aReturn.hasValue() )
347 ,
static_cast< css::beans::XPropertiesChangeListener*
>(
this)
348 ,
static_cast< css::beans::XVetoableChangeListener*
>(
this)
349 ,
static_cast< css::lang::XEventListener*
>(
static_cast< css::beans::XPropertiesChangeListener*
>(
this))
356void OPropertySetAggregationHelper::disposing()
358 osl::MutexGuard aGuard(rBHelper.rMutex);
360 if ( m_xAggregateSet.is() && m_bListening )
363 m_xAggregateMultiSet->removePropertiesChangeListener(
this);
364 m_xAggregateSet->removeVetoableChangeListener(OUString(),
this);
365 m_bListening =
false;
368 OPropertyStateHelper::disposing();
372void SAL_CALL OPropertySetAggregationHelper::disposing(
const css::lang::EventObject& _rSource)
374 OSL_ENSURE(m_xAggregateSet.is(),
"OPropertySetAggregationHelper::disposing : don't have an aggregate anymore !");
375 if (_rSource.Source == m_xAggregateSet)
376 m_bListening =
false;
380void SAL_CALL OPropertySetAggregationHelper::propertiesChange(
const css::uno::Sequence< css::beans::PropertyChangeEvent>& _rEvents)
382 OSL_ENSURE(m_xAggregateSet.is(),
"OPropertySetAggregationHelper::propertiesChange : have no aggregate !");
384 sal_Int32 nLen = _rEvents.getLength();
389 const css::beans::PropertyChangeEvent& evt = _rEvents.getConstArray()[0];
390 OSL_ENSURE(!evt.PropertyName.isEmpty(),
"OPropertySetAggregationHelper::propertiesChange : invalid event !");
399 if ( ( nHandle != -1 ) && !isCurrentlyForwardingProperty( nHandle ) )
400 fire(&nHandle, &evt.NewValue, &evt.OldValue, 1,
false);
404 std::unique_ptr<sal_Int32[]> pHandles(
new sal_Int32[nLen]);
405 std::unique_ptr< css::uno::Any[]> pNewValues(
new css::uno::Any[nLen]);
406 std::unique_ptr< css::uno::Any[]> pOldValues(
new css::uno::Any[nLen]);
409 for (
const css::beans::PropertyChangeEvent& rEvent : _rEvents)
412 if ( ( nHandle != -1 ) && !isCurrentlyForwardingProperty( nHandle ) )
415 pNewValues[nDest] = rEvent.NewValue;
416 pOldValues[nDest] = rEvent.OldValue;
422 fire(pHandles.get(), pNewValues.get(), pOldValues.get(), nDest,
false);
427void SAL_CALL OPropertySetAggregationHelper::vetoableChange(
const css::beans::PropertyChangeEvent& _rEvent)
429 OSL_ENSURE(m_xAggregateSet.is(),
"OPropertySetAggregationHelper::vetoableChange : have no aggregate !");
434 fire(&nHandle, &_rEvent.NewValue, &_rEvent.OldValue, 1,
true);
438void OPropertySetAggregationHelper::setAggregation(
const css::uno::Reference< css::uno::XInterface >& _rxDelegate)
440 osl::MutexGuard aGuard(rBHelper.rMutex);
442 if (m_bListening && m_xAggregateSet.is())
444 m_xAggregateMultiSet->removePropertiesChangeListener(
this);
445 m_xAggregateSet->removeVetoableChangeListener(OUString(),
this);
446 m_bListening =
false;
449 m_xAggregateState.set(_rxDelegate, css::uno::UNO_QUERY);
450 m_xAggregateSet.set(_rxDelegate, css::uno::UNO_QUERY);
451 m_xAggregateMultiSet.set(_rxDelegate, css::uno::UNO_QUERY);
452 m_xAggregateFastSet.set(_rxDelegate, css::uno::UNO_QUERY);
455 if ( m_xAggregateSet.is() && !m_xAggregateMultiSet.is() )
456 throw css::lang::IllegalArgumentException();
460void OPropertySetAggregationHelper::startListening()
462 osl::MutexGuard aGuard(rBHelper.rMutex);
464 if (!m_bListening && m_xAggregateSet.is())
467 css::uno::Sequence< OUString > aPropertyNames;
468 m_xAggregateMultiSet->addPropertiesChangeListener(aPropertyNames,
this);
469 m_xAggregateSet->addVetoableChangeListener(OUString(),
this);
476void SAL_CALL OPropertySetAggregationHelper::addVetoableChangeListener(
const OUString& _rPropertyName,
477 const css::uno::Reference< css::beans::XVetoableChangeListener>& _rxListener)
485void SAL_CALL OPropertySetAggregationHelper::addPropertyChangeListener(
const OUString& _rPropertyName,
486 const css::uno::Reference< css::beans::XPropertyChangeListener>& _rxListener)
494void SAL_CALL OPropertySetAggregationHelper::addPropertiesChangeListener(
const css::uno::Sequence< OUString >& _rPropertyNames,
495 const css::uno::Reference< css::beans::XPropertiesChangeListener>& _rxListener)
503sal_Int32 OPropertySetAggregationHelper::getOriginalHandle(sal_Int32 nHandle)
const
505 OPropertyArrayAggregationHelper& rPH =
static_cast<OPropertyArrayAggregationHelper&
>(
const_cast<OPropertySetAggregationHelper*
>(
this)->getInfoHelper() );
506 sal_Int32 nOriginalHandle = -1;
507 (void)rPH.fillAggregatePropertyInfoByHandle(
nullptr, &nOriginalHandle, nHandle);
508 return nOriginalHandle;
512OUString OPropertySetAggregationHelper::getPropertyName( sal_Int32 _nHandle )
const
514 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>(
const_cast<OPropertySetAggregationHelper*
>(
this)->getInfoHelper() );
516 OSL_VERIFY( rPH.getPropertyByHandle( _nHandle, aProperty ) );
517 return aProperty.Name;
521void SAL_CALL OPropertySetAggregationHelper::setFastPropertyValue(sal_Int32 _nHandle,
const css::uno::Any& _rValue)
523 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
525 sal_Int32 nOriginalHandle = -1;
528 if (rPH.fillAggregatePropertyInfoByHandle(&aPropName, &nOriginalHandle, _nHandle))
529 if (m_xAggregateFastSet.is())
530 m_xAggregateFastSet->setFastPropertyValue(nOriginalHandle, _rValue);
532 m_xAggregateSet->setPropertyValue(aPropName, _rValue);
538void OPropertySetAggregationHelper::getFastPropertyValue( css::uno::Any& rValue, sal_Int32 nHandle)
const
540 OPropertyArrayAggregationHelper& rPH =
static_cast<OPropertyArrayAggregationHelper&
>(
const_cast<OPropertySetAggregationHelper*
>(
this)->getInfoHelper() );
542 sal_Int32 nOriginalHandle = -1;
544 if (rPH.fillAggregatePropertyInfoByHandle(&aPropName, &nOriginalHandle, nHandle))
546 if (m_xAggregateFastSet.is())
547 rValue = m_xAggregateFastSet->getFastPropertyValue(nOriginalHandle);
549 rValue = m_xAggregateSet->getPropertyValue(aPropName);
551 else if ( m_pForwarder->isResponsibleFor( nHandle ) )
555 rValue = m_xAggregateSet->getPropertyValue(
getPropertyName( nHandle ) );
560css::uno::Any SAL_CALL OPropertySetAggregationHelper::getFastPropertyValue(sal_Int32 nHandle)
562 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
564 sal_Int32 nOriginalHandle = -1;
565 css::uno::Any aValue;
567 if (rPH.fillAggregatePropertyInfoByHandle(&aPropName, &nOriginalHandle, nHandle))
569 if (m_xAggregateFastSet.is())
570 aValue = m_xAggregateFastSet->getFastPropertyValue(nOriginalHandle);
572 aValue = m_xAggregateSet->getPropertyValue(aPropName);
581void SAL_CALL OPropertySetAggregationHelper::setPropertyValues(
582 const Sequence< OUString >& _rPropertyNames,
const Sequence< Any >& _rValues )
584 OSL_ENSURE( !rBHelper.bInDispose,
"OPropertySetAggregationHelper::setPropertyValues : do not use within the dispose call !");
585 OSL_ENSURE( !rBHelper.bDisposed,
"OPropertySetAggregationHelper::setPropertyValues : object is disposed" );
588 if (!m_xAggregateSet.is())
590 else if (_rPropertyNames.getLength() == 1)
592 if (_rValues.getLength() != 1)
593 throw IllegalArgumentException(
"lengths do not match",
static_cast<XPropertySet*
>(
this),
599 catch(
const UnknownPropertyException& )
602 SAL_WARN(
"comphelper",
"OPropertySetAggregationHelper::setPropertyValues: unknown property: '"
603 << _rPropertyNames[0] <<
"', implementation: " <<
typeid( *this ).name() );
608 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
611 sal_Int32 nAggCount(0);
612 sal_Int32 nLen(_rPropertyNames.getLength());
614 for (
const OUString& rName : _rPropertyNames )
618 throw WrappedTargetException( OUString(),
static_cast< XMultiPropertySet*
>(
this ),
Any( UnknownPropertyException( ) ) );
627 if (nAggCount == nLen)
628 m_xAggregateMultiSet->setPropertyValues(_rPropertyNames, _rValues);
631 else if (nAggCount == 0)
637 if (_rValues.getLength() != nLen)
638 throw IllegalArgumentException(
"lengths do not match",
640 const css::uno::Any*
pValues = _rValues.getConstArray();
645 Sequence< OUString > AggPropertyNames( nAggCount );
646 OUString* pAggNames = AggPropertyNames.getArray();
648 Sequence< Any > AggValues( nAggCount );
649 Any* pAggValues = AggValues.getArray();
652 Sequence< OUString > DelPropertyNames( nLen - nAggCount );
653 OUString* pDelNames = DelPropertyNames.getArray();
656 Sequence< Any > DelValues( nLen - nAggCount );
657 Any* pDelValues = DelValues.getArray();
659 for (
const OUString& rName : _rPropertyNames )
663 *pAggNames++ = rName;
668 *pDelNames++ = rName;
674 pDelValues = DelValues.getArray();
676 std::unique_ptr<sal_Int32[]> pHandles(
new sal_Int32[ nLen - nAggCount ]);
682 sal_Int32 nHitCount = rPH2.
fillHandles( pHandles.get(), DelPropertyNames );
685 std::unique_ptr< css::uno::Any[]> pConvertedValues(
new css::uno::Any[ nHitCount ]);
686 std::unique_ptr< css::uno::Any[]> pOldValues(
new css::uno::Any[ nHitCount ]);
692 osl::MutexGuard aGuard( rBHelper.rMutex );
693 for( i = 0;
i < (nLen - nAggCount); ++
i )
695 if( pHandles[i] != -1 )
699 if( nAttributes & css::beans::PropertyAttribute::READONLY )
700 throw css::beans::PropertyVetoException();
702 if( convertFastPropertyValue( pConvertedValues[ nHitCount ], pOldValues[nHitCount],
703 pHandles[i], pDelValues[i] ) )
706 pHandles[nHitCount] = pHandles[
i];
715 fire( pHandles.get(), pConvertedValues.get(), pOldValues.get(), nHitCount,
true );
718 m_xAggregateMultiSet->setPropertyValues(AggPropertyNames, AggValues);
722 osl::MutexGuard aGuard( rBHelper.rMutex );
724 for( i = 0;
i < nHitCount;
i++ )
727 setFastPropertyValue_NoBroadcast( pHandles[i], pConvertedValues[i] );
733 fire( pHandles.get(), pConvertedValues.get(), pOldValues.get(), nHitCount,
false );
736 m_xAggregateMultiSet->setPropertyValues(AggPropertyNames, AggValues);
743css::beans::PropertyState SAL_CALL OPropertySetAggregationHelper::getPropertyState(
const OUString& _rPropertyName)
745 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
746 sal_Int32
nHandle = rPH.getHandleByName( _rPropertyName );
750 throw css::beans::UnknownPropertyException(_rPropertyName);
754 sal_Int32 nOriginalHandle = -1;
755 if (rPH.fillAggregatePropertyInfoByHandle(&aPropName, &nOriginalHandle, nHandle))
757 if (m_xAggregateState.is())
758 return m_xAggregateState->getPropertyState(_rPropertyName);
760 return css::beans::PropertyState_DIRECT_VALUE;
763 return getPropertyStateByHandle(nHandle);
767void SAL_CALL OPropertySetAggregationHelper::setPropertyToDefault(
const OUString& _rPropertyName)
769 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
770 sal_Int32
nHandle = rPH.getHandleByName(_rPropertyName);
773 throw css::beans::UnknownPropertyException(_rPropertyName);
777 sal_Int32 nOriginalHandle = -1;
778 if (rPH.fillAggregatePropertyInfoByHandle(&aPropName, &nOriginalHandle, nHandle))
780 if (m_xAggregateState.is())
781 m_xAggregateState->setPropertyToDefault(_rPropertyName);
787 setPropertyToDefaultByHandle( nHandle );
789 catch(
const UnknownPropertyException& ) {
throw; }
791 catch(
const Exception& )
793 OSL_FAIL(
"OPropertySetAggregationHelper::setPropertyToDefault: caught an exception which is not allowed to leave here!" );
799css::uno::Any SAL_CALL OPropertySetAggregationHelper::getPropertyDefault(
const OUString& aPropertyName)
801 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
802 sal_Int32
nHandle = rPH.getHandleByName( aPropertyName );
805 throw css::beans::UnknownPropertyException(aPropertyName);
808 sal_Int32 nOriginalHandle = -1;
809 if (rPH.fillAggregatePropertyInfoByHandle(&aPropName, &nOriginalHandle, nHandle))
811 if (m_xAggregateState.is())
812 return m_xAggregateState->getPropertyDefault(aPropertyName);
814 return css::uno::Any();
817 return getPropertyDefaultByHandle(nHandle);
820sal_Bool SAL_CALL OPropertySetAggregationHelper::convertFastPropertyValue( Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle,
const Any& _rValue )
822 bool bModified =
false;
824 OSL_ENSURE( m_pForwarder->isResponsibleFor( _nHandle ),
"OPropertySetAggregationHelper::convertFastPropertyValue: this is no forwarded property - did you use declareForwardedProperty for it?" );
825 if ( m_pForwarder->isResponsibleFor( _nHandle ) )
828 OPropertyArrayAggregationHelper& rPH =
static_cast< OPropertyArrayAggregationHelper&
>( getInfoHelper() );
830 OSL_VERIFY( rPH.getPropertyByHandle( _nHandle, aProperty ) );
833 getFastPropertyValue( aCurrentValue, _nHandle );
834 bModified =
tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, aCurrentValue, aProperty.Type );
840void SAL_CALL OPropertySetAggregationHelper::setFastPropertyValue_NoBroadcast( sal_Int32 _nHandle,
const Any& _rValue )
842 OSL_ENSURE( m_pForwarder->isResponsibleFor( _nHandle ),
"OPropertySetAggregationHelper::setFastPropertyValue_NoBroadcast: this is no forwarded property - did you use declareForwardedProperty for it?" );
843 if ( m_pForwarder->isResponsibleFor( _nHandle ) )
844 m_pForwarder->doForward( _nHandle, _rValue );
848void OPropertySetAggregationHelper::declareForwardedProperty( sal_Int32 _nHandle )
850 OSL_ENSURE( !m_pForwarder->isResponsibleFor( _nHandle ),
"OPropertySetAggregationHelper::declareForwardedProperty: already declared!" );
851 m_pForwarder->takeResponsibilityFor( _nHandle );
855void OPropertySetAggregationHelper::forwardingPropertyValue( sal_Int32 )
861void OPropertySetAggregationHelper::forwardedPropertyValue( sal_Int32 )
867bool OPropertySetAggregationHelper::isCurrentlyForwardingProperty( sal_Int32 _nHandle )
const
869 return m_pForwarder->getCurrentlyForwardedProperty() == _nHandle;
const PropertyValue * pValues
used as callback for an OPropertyArrayAggregationHelper
virtual sal_Int32 getPreferredPropertyId(const OUString &_rName)=0
get the preferred handle for the given property
bool getPropertyByHandle(sal_Int32 _nHandle, css::beans::Property &_rProperty) const
returns information about a property given by handle
const css::beans::Property * findPropertyByName(const OUString &_rName) const
OPropertyArrayAggregationHelper(const css::uno::Sequence< css::beans::Property > &_rProperties, const css::uno::Sequence< css::beans::Property > &_rAggProperties, IPropertyInfoService *_pInfoService=nullptr, sal_Int32 _nFirstAggregateId=DEFAULT_AGGREGATE_PROPERTY_ID)
construct the object.
virtual sal_Bool SAL_CALL fillPropertyMembersByHandle(OUString *_pPropName, sal_Int16 *_pAttributes, sal_Int32 _nHandle) override
inherited from IPropertyArrayHelper
bool fillAggregatePropertyInfoByHandle(OUString *_pPropName, sal_Int32 *_pOriginalHandle, sal_Int32 _nHandle) const
returns information about a property of the aggregate.
virtual css::uno::Sequence< css::beans::Property > SAL_CALL getProperties() override
inherited from IPropertyArrayHelper
virtual sal_Int32 SAL_CALL fillHandles(sal_Int32 *_pHandles, const css::uno::Sequence< OUString > &_rPropNames) override
inherited from IPropertyArrayHelper
PropertyOrigin classifyProperty(const OUString &_rName)
prefer this one over the XPropertySetInfo of the aggregate!
virtual css::beans::Property SAL_CALL getPropertyByName(const OUString &_rPropertyName) override
inherited from IPropertyArrayHelper
virtual sal_Bool SAL_CALL hasPropertyByName(const OUString &_rPropertyName) override
inherited from IPropertyArrayHelper
std::map< sal_Int32, internal::OPropertyAccessor > m_aPropertyAccessors
virtual sal_Int32 SAL_CALL getHandleByName(const OUString &_rPropertyName) override
inherited from IPropertyArrayHelper
std::vector< css::beans::Property > m_aProperties
virtual void SAL_CALL addPropertyChangeListener(const ::rtl::OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &aListener) override final
Ignored if the property is not bound.
virtual css::uno::Any SAL_CALL getFastPropertyValue(sal_Int32 nHandle) override final
virtual void SAL_CALL addPropertiesChangeListener(const css::uno::Sequence<::rtl::OUString > &PropertyNames, const css::uno::Reference< css::beans::XPropertiesChangeListener > &Listener) override final
virtual void SAL_CALL setPropertyValues(const css::uno::Sequence<::rtl::OUString > &PropertyNames, const css::uno::Sequence< css::uno::Any > &Values) override
virtual void SAL_CALL setFastPropertyValue(sal_Int32 nHandle, const css::uno::Any &rValue) override final
Throw UnknownPropertyException or PropertyVetoException if the property with the name rPropertyName d...
virtual void SAL_CALL addVetoableChangeListener(const ::rtl::OUString &aPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override final
Ignored if the property is not constrained.
OPropertySetAggregationHelper & m_rAggregationHelper
void takeResponsibilityFor(sal_Int32 _nHandle)
declares that the forwarder should be responsible for the given property
sal_Int32 getCurrentlyForwardedProperty() const
void doForward(sal_Int32 _nHandle, const Any &_rValue)
actually forwards a property value to the aggregate
sal_Int32 m_nCurrentlyForwarding
bool isResponsibleFor(sal_Int32 _nHandle) const
checks whether the forwarder is responsible for the given property
PropertyForwarder(OPropertySetAggregationHelper &_rAggregationHelper)
o3tl::sorted_vector< sal_Int32 > m_aProperties
virtual sal_Bool SAL_CALL fillPropertyMembersByHandle(::rtl::OUString *pPropName, sal_Int16 *pAttributes, sal_Int32 nHandle)=0
virtual sal_Int32 SAL_CALL fillHandles(sal_Int32 *pHandles, const css::uno::Sequence< ::rtl::OUString > &rPropNames)=0
virtual sal_Int32 SAL_CALL getHandleByName(const ::rtl::OUString &rPropertyName)=0
const_iterator find(const Value &x) const
const_iterator end() const
std::pair< const_iterator, bool > insert(Value &&x)
DECL_LISTENERMULTIPLEXER_END void SAL_CALL inserted(::sal_Int32 ID) override
#define SAL_WARN(area, stream)
class SAL_NO_VTABLE XPropertySet
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
Copy from a container into a Sequence.
bool tryPropertyValue(Any &_rConvertedValue, Any &_rOldValue, const Any &_rValueToSet, const Any &_rCurrentValue, const Type &_rExpectedType)
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
VBAHELPER_DLLPUBLIC bool setPropertyValue(css::uno::Sequence< css::beans::PropertyValue > &aProp, const OUString &aName, const css::uno::Any &aValue)
OUString getPropertyName(sal_Int32 nPropertyType)