/************************************************************** * * 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. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svx.hxx" #include "propertyset.hxx" using ::rtl::OUString; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::lang; namespace comphelper { // ----------------------------------------------------------------------------- // FastPropertySetInfo // ----------------------------------------------------------------------------- FastPropertySetInfo::FastPropertySetInfo() { } // ----------------------------------------------------------------------------- FastPropertySetInfo::FastPropertySetInfo( const PropertyVector& rProps ) { addProperties( rProps ); } // ----------------------------------------------------------------------------- FastPropertySetInfo::~FastPropertySetInfo() { } // ----------------------------------------------------------------------------- void FastPropertySetInfo::addProperty( const Property& rProperty ) { maProperties.push_back( rProperty ); maMap[ rProperty.Name ] = maProperties.size() - 1; } // ----------------------------------------------------------------------------- void FastPropertySetInfo::addProperties( const PropertyVector& rProps ) { sal_uInt32 nIndex = maProperties.size(); sal_uInt32 nCount = rProps.size(); maProperties.resize( nIndex + nCount ); PropertyVector::const_iterator aIter( rProps.begin() ); while( nCount-- ) { const Property& rProperty = (*aIter++); maProperties[nIndex] = rProperty; maMap[ rProperty.Name ] = nIndex++; } } // ----------------------------------------------------------------------------- const Property& FastPropertySetInfo::getProperty( const OUString& aName ) throw (UnknownPropertyException ) { PropertyMap::iterator aIter( maMap.find( aName ) ); if( aIter == maMap.end() ) throw UnknownPropertyException(); return maProperties[(*aIter).second]; } // ----------------------------------------------------------------------------- const Property* FastPropertySetInfo::hasProperty( const OUString& aName ) { PropertyMap::iterator aIter( maMap.find( aName ) ); if( aIter == maMap.end() ) return 0; else return &maProperties[(*aIter).second]; } // ----------------------------------------------------------------------------- // XPropertySetInfo // ----------------------------------------------------------------------------- Sequence< Property > SAL_CALL FastPropertySetInfo::getProperties() throw (RuntimeException) { return Sequence< Property >( &maProperties[0], maProperties.size() ); } // ----------------------------------------------------------------------------- Property SAL_CALL FastPropertySetInfo::getPropertyByName( const OUString& aName ) throw (UnknownPropertyException, RuntimeException) { return getProperty( aName ); } // ----------------------------------------------------------------------------- sal_Bool SAL_CALL FastPropertySetInfo::hasPropertyByName( const OUString& aName ) throw (RuntimeException) { return hasProperty( aName ) != 0 ? sal_True : sal_False;; } // ----------------------------------------------------------------------------- // FastPropertySet // ----------------------------------------------------------------------------- FastPropertySet::FastPropertySet( const rtl::Reference< FastPropertySetInfo >& xInfo ) : mxInfo( xInfo ) { } // ----------------------------------------------------------------------------- FastPropertySet::~FastPropertySet() { } // ----------------------------------------------------------------------------- // XPropertySet // ----------------------------------------------------------------------------- Reference< XPropertySetInfo > SAL_CALL FastPropertySet::getPropertySetInfo( ) throw (RuntimeException) { return Reference< XPropertySetInfo >( mxInfo.get() ); } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::setPropertyValue( const OUString& aPropertyName, const Any& aValue ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) { setFastPropertyValue( mxInfo->getProperty( aPropertyName ).Handle, aValue ); } // ----------------------------------------------------------------------------- Any SAL_CALL FastPropertySet::getPropertyValue( const OUString& aPropertyName ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) { return getFastPropertyValue( mxInfo->getProperty( aPropertyName ).Handle ); } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::addPropertyChangeListener( const OUString&, const Reference< XPropertyChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) { } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::removePropertyChangeListener( const OUString&, const Reference< XPropertyChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) { } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::addVetoableChangeListener( const OUString&, const Reference< XVetoableChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) { } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::removeVetoableChangeListener( const OUString&, const Reference< XVetoableChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) { } // ----------------------------------------------------------------------------- // XMultiPropertySet // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::setPropertyValues( const Sequence< OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw (PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) { const OUString* pPropertyNames = aPropertyNames.getConstArray(); const Any* pValues = aValues.getConstArray(); sal_Int32 nCount = aPropertyNames.getLength(); if( nCount != aValues.getLength() ) throw IllegalArgumentException(); while( nCount-- ) { const Property* pProperty = mxInfo->hasProperty( *pPropertyNames++ ); if( pProperty ) try { setFastPropertyValue( pProperty->Handle, *pValues ); } catch( UnknownPropertyException& ) { } pValues++; } } // ----------------------------------------------------------------------------- Sequence< Any > SAL_CALL FastPropertySet::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw (RuntimeException) { sal_Int32 nCount = aPropertyNames.getLength(); Sequence< Any > aValues( nCount ); const OUString* pPropertyNames = aPropertyNames.getConstArray(); Any* pValues = aValues.getArray(); while( nCount-- ) { const Property* pProperty = mxInfo->hasProperty( *pPropertyNames++ ); if( pProperty ) try { *pValues = getFastPropertyValue( pProperty->Handle ); } catch( UnknownPropertyException& ) { } pValues++; } return aValues; } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::addPropertiesChangeListener( const Sequence< OUString >&, const Reference< XPropertiesChangeListener >& ) throw (RuntimeException) { } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::removePropertiesChangeListener( const Reference< XPropertiesChangeListener >& ) throw (RuntimeException) { } // ----------------------------------------------------------------------------- void SAL_CALL FastPropertySet::firePropertiesChangeEvent( const Sequence< OUString >&, const Reference< XPropertiesChangeListener >& ) throw (RuntimeException) { } }