[Libreoffice-commits] core.git: comphelper/source forms/source

Aron Budea baron at caesar.elte.hu
Tue Apr 26 09:41:19 UTC 2016


 comphelper/source/eventattachermgr/eventattachermgr.cxx |   12 
 comphelper/source/property/propagg.cxx                  |  112 ++---
 forms/source/inc/property.hxx                           |   35 -
 forms/source/misc/property.cxx                          |  352 +++++++---------
 4 files changed, 215 insertions(+), 296 deletions(-)

New commits:
commit f91674bd4b5022a63dc5e6a89fe9a1b832d96798
Author: Aron Budea <baron at caesar.elte.hu>
Date:   Mon Apr 25 04:04:24 2016 +0200

    tdf#60418: improve perf of opening/closing odts with form tags
    
    Opening/closing times using "Without Frame tags" attached file from
    bug report changed as follows on my system (debug build):
    
    open: 2:06 -> 1:32
    close (doc unchanged): 1:52 -> 0:18
    
    The performance fixes in the different CXX files are independent,
    eventattachermgr.cxx is related to doc close, the others to doc open.
    
    Change-Id: I24fc4558f79b9123494a3939c0a313fcd47a067f
    Reviewed-on: https://gerrit.libreoffice.org/24359
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/comphelper/source/eventattachermgr/eventattachermgr.cxx b/comphelper/source/eventattachermgr/eventattachermgr.cxx
index 70fbe1c..e4f0698 100644
--- a/comphelper/source/eventattachermgr/eventattachermgr.cxx
+++ b/comphelper/source/eventattachermgr/eventattachermgr.cxx
@@ -394,18 +394,12 @@ Reference< XIdlReflection > ImplEventAttacherManager::getReflection() throw( Exc
 }
 
 
-::std::deque<AttacherIndex_Impl>::iterator ImplEventAttacherManager::implCheckIndex( sal_Int32 _nIndex )
+::std::deque< AttacherIndex_Impl >::iterator ImplEventAttacherManager::implCheckIndex( sal_Int32 _nIndex )
 {
-    if (_nIndex < 0)
-        throw IllegalArgumentException();
-
-    ::std::deque<AttacherIndex_Impl>::iterator aIt = aIndex.begin();
-    for ( sal_Int32 i = 0; (i < _nIndex) && (aIt != aIndex.end()); ++i, ++aIt )
-        ;
-
-    if( aIt == aIndex.end() )
+    if ( (_nIndex < 0) || (static_cast<sal_uInt32>(_nIndex) >= aIndex.size()) )
         throw IllegalArgumentException();
 
+    ::std::deque<AttacherIndex_Impl>::iterator aIt = aIndex.begin() + _nIndex;
     return aIt;
 }
 
diff --git a/comphelper/source/property/propagg.cxx b/comphelper/source/property/propagg.cxx
index 778021e..8f774b0 100644
--- a/comphelper/source/property/propagg.cxx
+++ b/comphelper/source/property/propagg.cxx
@@ -31,6 +31,7 @@
 
 #include <algorithm>
 #include <set>
+#include <unordered_set>
 #include <memory>
 
 
@@ -61,86 +62,63 @@ namespace comphelper
 OPropertyArrayAggregationHelper::OPropertyArrayAggregationHelper(
         const  Sequence< Property >& _rProperties, const  Sequence< Property >& _rAggProperties,
         IPropertyInfoService* _pInfoService, sal_Int32 _nFirstAggregateId )
-    :m_aProperties( comphelper::sequenceToContainer<std::vector<css::beans::Property>>(_rProperties) )
 {
-    sal_Int32 nDelegatorProps = _rProperties.getLength();
-    sal_Int32 nAggregateProps = _rAggProperties.getLength();
-
-    // make room for all properties
-    sal_Int32 nMergedProps = nDelegatorProps + nAggregateProps;
-    m_aProperties.resize( nMergedProps );
-
-    const   Property* pAggregateProps   = _rAggProperties.getConstArray();
-    const   Property* pDelegateProps    = _rProperties.getConstArray();
-    std::vector<css::beans::Property>::iterator pMergedProps = m_aProperties.begin();
-
-    // if properties are present both at the delegatee and the aggregate, then the former are supposed to win.
-    // So, we'll need an existence check.
-    ::std::set< OUString > aDelegatorProps;
-
-    // create the map for the delegator properties
-    sal_Int32 nMPLoop = 0;
-    for ( ; nMPLoop < nDelegatorProps; ++nMPLoop, ++pDelegateProps )
+    // if properties are present both at the delegatee and the aggregate, then the former are supposed to win
+    // merge and sort properties by name, delete duplicates (stable sort ensures delegator properties win)
+    m_aProperties.insert( m_aProperties.end(), _rProperties.begin(), _rProperties.end() );
+    m_aProperties.insert( m_aProperties.end(), _rAggProperties.begin(), _rAggProperties.end() );
+    ::std::stable_sort( m_aProperties.begin(), m_aProperties.end(), PropertyCompareByName() );
+    m_aProperties.erase( ::std::unique(m_aProperties.begin(), m_aProperties.end(),
+        []( const css::beans::Property& x, const css::beans::Property& y ) -> bool { return x.Name == y.Name; } ),
+        m_aProperties.end() );
+    m_aProperties.shrink_to_fit();
+
+    // fill aDelegatorProps with names from _rProperties for a fast existence check
+    // different kinds of properties are processed differently
+    ::std::unordered_set< OUString, OUStringHash > aDelegatorProps;
+    aDelegatorProps.reserve( _rProperties.getLength() );
+    for( auto &delegateProp: _rProperties )
     {
-        m_aPropertyAccessors[ pDelegateProps->Handle ] = OPropertyAccessor( -1, nMPLoop, false );
-        OSL_ENSURE( aDelegatorProps.find( pDelegateProps->Name ) == aDelegatorProps.end(),
+        const auto inserted = aDelegatorProps.insert( delegateProp.Name );
+        OSL_ENSURE( inserted.second == true,
             "OPropertyArrayAggregationHelper::OPropertyArrayAggregationHelper: duplicate delegatee property!" );
-        aDelegatorProps.insert( pDelegateProps->Name );
     }
 
-    // create the map for the aggregate properties
+    ::std::unordered_set< sal_Int32 > existingHandles;
+    existingHandles.reserve( m_aProperties.size() );
     sal_Int32 nAggregateHandle = _nFirstAggregateId;
-    pMergedProps += nDelegatorProps;
-    for ( ; nMPLoop < nMergedProps; ++pAggregateProps )
+    for ( sal_Int32 nMPLoop = 0; nMPLoop < static_cast< sal_Int32 >( m_aProperties.size() ); ++nMPLoop )
     {
-        // if the aggregate property is present at the delegatee already, ignore it
-        if ( aDelegatorProps.find( pAggregateProps->Name ) != aDelegatorProps.end() )
+        auto &prop = m_aProperties[ nMPLoop ];
+        if ( aDelegatorProps.find( prop.Name ) != aDelegatorProps.end() )
         {
-            --nMergedProps;
-            continue;
+            m_aPropertyAccessors[ prop.Handle ] = OPropertyAccessor( -1, nMPLoop, false );
+            existingHandles.insert( prop.Handle );
         }
-
-        // next aggregate property - remember it
-        *pMergedProps = *pAggregateProps;
-
-        // determine the handle for the property which we will expose to the outside world
-        sal_Int32 nHandle = -1;
-        // ask the info service first
-        if ( _pInfoService )
-            nHandle = _pInfoService->getPreferredPropertyId( pMergedProps->Name );
-
-        if ( -1 == nHandle )
-            // no handle from the info service -> default
-            nHandle = nAggregateHandle++;
         else
-        {   // check if we alread have a property with the given handle
-            auto pPropsTilNow = m_aProperties.begin();
-            for ( sal_Int32 nCheck = 0; nCheck < nMPLoop; ++nCheck, ++pPropsTilNow )
-                if ( pPropsTilNow->Handle == nHandle )
-                {   // conflicts -> use another one (which we don't check anymore, assuming _nFirstAggregateId was large enough)
-                    nHandle = nAggregateHandle++;
-                    break;
-                }
-        }
+        {
+            // determine the handle for the property which we will expose to the outside world
+            sal_Int32 nHandle = -1;
+            // ask the info service first
+            if ( _pInfoService )
+                nHandle = _pInfoService->getPreferredPropertyId( prop.Name );
 
-        // remember the accessor for this property
-        m_aPropertyAccessors[ nHandle ] = OPropertyAccessor( pMergedProps->Handle, nMPLoop, true );
-        pMergedProps->Handle = nHandle;
+            if ( ( -1 == nHandle ) || ( existingHandles.find( nHandle ) != existingHandles.end() ) )
+            {
+                // 1. no handle from the info service -> default
+                // 2. conflicts -> use another one (which we don't check anymore, assuming _nFirstAggregateId was large enough)
+                nHandle = nAggregateHandle++;
+            }
+            else
+            {
+                existingHandles.insert( nHandle );
+            }
 
-        ++nMPLoop;
-        ++pMergedProps;
+            // remember the accessor for this property
+            m_aPropertyAccessors[ nHandle ] = OPropertyAccessor( prop.Handle, nMPLoop, true );
+            prop.Handle = nHandle;
+        }
     }
-    m_aProperties.resize( nMergedProps );
-    pMergedProps = m_aProperties.begin();    // reset, needed again below
-
-    // sort the properties by name
-    ::std::sort( pMergedProps, pMergedProps+nMergedProps, PropertyCompareByName());
-
-    pMergedProps = m_aProperties.begin();
-
-    // sync the map positions
-    for ( nMPLoop = 0; nMPLoop < nMergedProps; ++nMPLoop, ++pMergedProps )
-        m_aPropertyAccessors[ pMergedProps->Handle ].nPos = nMPLoop;
 }
 
 
diff --git a/forms/source/inc/property.hxx b/forms/source/inc/property.hxx
index 0fe9750..daf86db 100644
--- a/forms/source/inc/property.hxx
+++ b/forms/source/inc/property.hxx
@@ -22,7 +22,7 @@
 
 #include <sal/config.h>
 
-#include <vector>
+#include <unordered_map>
 
 #include <com/sun/star/uno/XAggregation.hpp>
 #include <com/sun/star/beans/XPropertyState.hpp>
@@ -46,40 +46,9 @@ namespace frm
 
 class PropertyInfoService
 {
-
-    struct PropertyAssignment
-    {
-        OUString     sName;
-        sal_Int32           nHandle;
-
-        PropertyAssignment() { nHandle = -1; }
-        PropertyAssignment(const PropertyAssignment& _rSource)
-            :sName(_rSource.sName), nHandle(_rSource.nHandle) { }
-        PropertyAssignment(const OUString& _rName, sal_Int32 _nHandle)
-            :sName(_rName), nHandle(_nHandle) { }
-
-    };
-
-    typedef std::vector<PropertyAssignment> PropertyMap;
+    typedef std::unordered_map<OUString, sal_Int32, OUStringHash> PropertyMap;
     static PropertyMap      s_AllKnownProperties;
 
-
-    // comparing two PropertyAssignment's
-public:
-    typedef PropertyAssignment PUBLIC_SOLARIS_COMPILER_HACK;
-        // did not get the following compiled under with SUNPRO 5 without this
-        // public typedef
-private:
-    friend struct PropertyAssignmentNameCompareLess;
-    typedef ::std::binary_function< PUBLIC_SOLARIS_COMPILER_HACK, PUBLIC_SOLARIS_COMPILER_HACK, sal_Bool > PropertyAssignmentNameCompareLess_Base;
-    struct PropertyAssignmentNameCompareLess : public PropertyAssignmentNameCompareLess_Base
-    {
-        inline bool operator() (const PUBLIC_SOLARIS_COMPILER_HACK& _rL, const PUBLIC_SOLARIS_COMPILER_HACK& _rR) const
-        {
-            return (_rL.sName.compareTo(_rR.sName) < 0);
-        }
-    };
-
 public:
     PropertyInfoService() { }
 
diff --git a/forms/source/misc/property.cxx b/forms/source/misc/property.cxx
index 7e47c8c..10f0caf 100644
--- a/forms/source/misc/property.cxx
+++ b/forms/source/misc/property.cxx
@@ -21,10 +21,6 @@
 #include "property.hxx"
 
 #include "property.hrc"
-#include <cppuhelper/queryinterface.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-
-#include <algorithm>
 
 namespace frm
 {
@@ -37,20 +33,10 @@ sal_Int32 PropertyInfoService::getPropertyId(const OUString& _rName)
 {
     initialize();
 
-    PropertyAssignment aCompareName(_rName, -1);
-
-    ::std::pair<PropertyMap::iterator,PropertyMap::iterator> aPair = ::std::equal_range(
-        s_AllKnownProperties.begin(),
-        s_AllKnownProperties.end(),
-        aCompareName,
-        PropertyAssignmentNameCompareLess());
-
     sal_Int32 nHandle = -1;
-    if (aPair.first != aPair.second)
-    {   // we found something _and_ we have an identity
-        nHandle = aPair.first->nHandle;
-    }
-
+    const auto foundProperty = s_AllKnownProperties.find(_rName);
+    if (foundProperty != s_AllKnownProperties.end())
+        nHandle = foundProperty->second;
     return nHandle;
 }
 
@@ -61,182 +47,174 @@ sal_Int32 ConcreteInfoService::getPreferredPropertyId(const OUString& _rName)
 }
 
 
-#define ADD_PROP_ASSIGNMENT(varname) \
-    s_AllKnownProperties.push_back(PropertyAssignment(PROPERTY_##varname, PROPERTY_ID_##varname))
+#define EXPAND_PROP_INIT(varname) \
+    { PROPERTY_##varname, PROPERTY_ID_##varname }
 
 void PropertyInfoService::initialize()
 {
     if (!s_AllKnownProperties.empty())
         return;
 
-    s_AllKnownProperties.reserve(220);
-
-    ADD_PROP_ASSIGNMENT(NAME);
-    ADD_PROP_ASSIGNMENT(TAG);
-    ADD_PROP_ASSIGNMENT(TABINDEX);
-    ADD_PROP_ASSIGNMENT(CLASSID);
-    ADD_PROP_ASSIGNMENT(ALIGN);
-    ADD_PROP_ASSIGNMENT(FETCHSIZE);
-    ADD_PROP_ASSIGNMENT(VALUE);
-    ADD_PROP_ASSIGNMENT(VALUEMIN);
-    ADD_PROP_ASSIGNMENT(VALUEMAX);
-    ADD_PROP_ASSIGNMENT(VALUESTEP);
-    ADD_PROP_ASSIGNMENT(TEXT);
-    ADD_PROP_ASSIGNMENT(LABEL);
-    ADD_PROP_ASSIGNMENT(NAVIGATION);
-    ADD_PROP_ASSIGNMENT(CYCLE);
-    ADD_PROP_ASSIGNMENT(CONTROLSOURCE);
-    ADD_PROP_ASSIGNMENT(ENABLED);
-    ADD_PROP_ASSIGNMENT(ENABLEVISIBLE);
-    ADD_PROP_ASSIGNMENT(SPIN);
-    ADD_PROP_ASSIGNMENT(READONLY);
-    ADD_PROP_ASSIGNMENT(FILTER);
-    ADD_PROP_ASSIGNMENT(WIDTH);
-    ADD_PROP_ASSIGNMENT(SEARCHABLE);
-    ADD_PROP_ASSIGNMENT(MULTILINE);
-    ADD_PROP_ASSIGNMENT(TARGET_URL);
-    ADD_PROP_ASSIGNMENT(DEFAULTCONTROL);
-    ADD_PROP_ASSIGNMENT(MAXTEXTLEN);
-    ADD_PROP_ASSIGNMENT(SIZE);
-    ADD_PROP_ASSIGNMENT(DATE);
-    ADD_PROP_ASSIGNMENT(TIME);
-    ADD_PROP_ASSIGNMENT(STATE);
-    ADD_PROP_ASSIGNMENT(TRISTATE);
-    ADD_PROP_ASSIGNMENT(HIDDEN_VALUE);
-    ADD_PROP_ASSIGNMENT(TARGET_FRAME);
-    ADD_PROP_ASSIGNMENT(BUTTONTYPE);
-    ADD_PROP_ASSIGNMENT(STRINGITEMLIST);
-    ADD_PROP_ASSIGNMENT(DEFAULT_TEXT);
-    ADD_PROP_ASSIGNMENT(DEFAULT_STATE);
-    ADD_PROP_ASSIGNMENT(DEFAULT_DATE);
-    ADD_PROP_ASSIGNMENT(DEFAULT_TIME);
-    ADD_PROP_ASSIGNMENT(DEFAULT_VALUE);
-    ADD_PROP_ASSIGNMENT(FORMATKEY);
-    ADD_PROP_ASSIGNMENT(FORMATSSUPPLIER);
-    ADD_PROP_ASSIGNMENT(SUBMIT_ACTION);
-    ADD_PROP_ASSIGNMENT(SUBMIT_TARGET);
-    ADD_PROP_ASSIGNMENT(SUBMIT_METHOD);
-    ADD_PROP_ASSIGNMENT(SUBMIT_ENCODING);
-    ADD_PROP_ASSIGNMENT(IMAGE_URL);
-    ADD_PROP_ASSIGNMENT(GRAPHIC);
-    ADD_PROP_ASSIGNMENT(EMPTY_IS_NULL);
-    ADD_PROP_ASSIGNMENT(LISTSOURCETYPE);
-    ADD_PROP_ASSIGNMENT(LISTSOURCE);
-    ADD_PROP_ASSIGNMENT(SELECT_SEQ);
-    ADD_PROP_ASSIGNMENT(VALUE_SEQ);
-    ADD_PROP_ASSIGNMENT(SELECT_VALUE);
-    ADD_PROP_ASSIGNMENT(SELECT_VALUE_SEQ);
-    ADD_PROP_ASSIGNMENT(DEFAULT_SELECT_SEQ);
-    ADD_PROP_ASSIGNMENT(MULTISELECTION);
-    ADD_PROP_ASSIGNMENT(DECIMAL_ACCURACY);
-    ADD_PROP_ASSIGNMENT(EDITMASK);
-    ADD_PROP_ASSIGNMENT(ISREADONLY);
-    ADD_PROP_ASSIGNMENT(FIELDTYPE);
-    ADD_PROP_ASSIGNMENT(DECIMALS);
-    ADD_PROP_ASSIGNMENT(REFVALUE);
-    ADD_PROP_ASSIGNMENT(STRICTFORMAT);
-    ADD_PROP_ASSIGNMENT(DATASOURCE);
-    ADD_PROP_ASSIGNMENT(ALLOWADDITIONS);
-    ADD_PROP_ASSIGNMENT(ALLOWEDITS);
-    ADD_PROP_ASSIGNMENT(ALLOWDELETIONS);
-    ADD_PROP_ASSIGNMENT(MASTERFIELDS);
-    ADD_PROP_ASSIGNMENT(ISPASSTHROUGH);
-    ADD_PROP_ASSIGNMENT(QUERY);
-    ADD_PROP_ASSIGNMENT(LITERALMASK);
-    ADD_PROP_ASSIGNMENT(SHOWTHOUSANDSEP);
-    ADD_PROP_ASSIGNMENT(CURRENCYSYMBOL);
-    ADD_PROP_ASSIGNMENT(DATEFORMAT);
-    ADD_PROP_ASSIGNMENT(DATEMIN);
-    ADD_PROP_ASSIGNMENT(DATEMAX);
-    ADD_PROP_ASSIGNMENT(DATE_SHOW_CENTURY);
-    ADD_PROP_ASSIGNMENT(TIMEFORMAT);
-    ADD_PROP_ASSIGNMENT(TIMEMIN);
-    ADD_PROP_ASSIGNMENT(TIMEMAX);
-    ADD_PROP_ASSIGNMENT(LINECOUNT);
-    ADD_PROP_ASSIGNMENT(BOUNDCOLUMN);
-    ADD_PROP_ASSIGNMENT(HASNAVIGATION);
-    ADD_PROP_ASSIGNMENT(FONT);
-    ADD_PROP_ASSIGNMENT(BACKGROUNDCOLOR);
-    ADD_PROP_ASSIGNMENT(FILLCOLOR);
-    ADD_PROP_ASSIGNMENT(TEXTCOLOR);
-    ADD_PROP_ASSIGNMENT(LINECOLOR);
-    ADD_PROP_ASSIGNMENT(BORDER);
-    ADD_PROP_ASSIGNMENT(DROPDOWN);
-    ADD_PROP_ASSIGNMENT(HSCROLL);
-    ADD_PROP_ASSIGNMENT(VSCROLL);
-    ADD_PROP_ASSIGNMENT(TABSTOP);
-    ADD_PROP_ASSIGNMENT(AUTOCOMPLETE);
-    ADD_PROP_ASSIGNMENT(HARDLINEBREAKS);
-    ADD_PROP_ASSIGNMENT(PRINTABLE);
-    ADD_PROP_ASSIGNMENT(ECHO_CHAR);
-    ADD_PROP_ASSIGNMENT(ROWHEIGHT);
-    ADD_PROP_ASSIGNMENT(HELPTEXT);
-    ADD_PROP_ASSIGNMENT(FONT_NAME);
-    ADD_PROP_ASSIGNMENT(FONT_STYLENAME);
-    ADD_PROP_ASSIGNMENT(FONT_FAMILY);
-    ADD_PROP_ASSIGNMENT(FONT_CHARSET);
-    ADD_PROP_ASSIGNMENT(FONT_HEIGHT);
-    ADD_PROP_ASSIGNMENT(FONT_WEIGHT);
-    ADD_PROP_ASSIGNMENT(FONT_SLANT);
-    ADD_PROP_ASSIGNMENT(FONT_UNDERLINE);
-    ADD_PROP_ASSIGNMENT(FONT_WORDLINEMODE);
-    ADD_PROP_ASSIGNMENT(FONT_STRIKEOUT);
-    ADD_PROP_ASSIGNMENT(TEXTLINECOLOR);
-    ADD_PROP_ASSIGNMENT(FONTEMPHASISMARK);
-    ADD_PROP_ASSIGNMENT(FONTRELIEF);
-    ADD_PROP_ASSIGNMENT(HELPURL);
-    ADD_PROP_ASSIGNMENT(RECORDMARKER);
-    ADD_PROP_ASSIGNMENT(BOUNDFIELD);
-    ADD_PROP_ASSIGNMENT(INPUT_REQUIRED);
-    ADD_PROP_ASSIGNMENT(TREATASNUMERIC);
-    ADD_PROP_ASSIGNMENT(EFFECTIVE_VALUE);
-    ADD_PROP_ASSIGNMENT(EFFECTIVE_DEFAULT);
-    ADD_PROP_ASSIGNMENT(EFFECTIVE_MIN);
-    ADD_PROP_ASSIGNMENT(EFFECTIVE_MAX);
-    ADD_PROP_ASSIGNMENT(HIDDEN);
-    ADD_PROP_ASSIGNMENT(FILTERPROPOSAL);
-    ADD_PROP_ASSIGNMENT(FIELDSOURCE);
-    ADD_PROP_ASSIGNMENT(TABLENAME);
-    ADD_PROP_ASSIGNMENT(CONTROLLABEL);
-    ADD_PROP_ASSIGNMENT(CURRSYM_POSITION);
-    ADD_PROP_ASSIGNMENT(CURSORCOLOR);
-    ADD_PROP_ASSIGNMENT(ALWAYSSHOWCURSOR);
-    ADD_PROP_ASSIGNMENT(DISPLAYSYNCHRON);
-    ADD_PROP_ASSIGNMENT(ISMODIFIED);
-    ADD_PROP_ASSIGNMENT(ISNEW);
-    ADD_PROP_ASSIGNMENT(PRIVILEGES);
-    ADD_PROP_ASSIGNMENT(DETAILFIELDS);
-    ADD_PROP_ASSIGNMENT(COMMAND);
-    ADD_PROP_ASSIGNMENT(COMMANDTYPE);
-    ADD_PROP_ASSIGNMENT(RESULTSET_CONCURRENCY);
-    ADD_PROP_ASSIGNMENT(INSERTONLY);
-    ADD_PROP_ASSIGNMENT(RESULTSET_TYPE);
-    ADD_PROP_ASSIGNMENT(ESCAPE_PROCESSING);
-    ADD_PROP_ASSIGNMENT(APPLYFILTER);
-    ADD_PROP_ASSIGNMENT(ISNULLABLE);
-    ADD_PROP_ASSIGNMENT(ACTIVECOMMAND);
-    ADD_PROP_ASSIGNMENT(ISCURRENCY);
-    ADD_PROP_ASSIGNMENT(URL);
-    ADD_PROP_ASSIGNMENT(TITLE);
-    ADD_PROP_ASSIGNMENT(ACTIVE_CONNECTION);
-    ADD_PROP_ASSIGNMENT(SCALE);
-    ADD_PROP_ASSIGNMENT(SORT);
-    ADD_PROP_ASSIGNMENT(PERSISTENCE_MAXTEXTLENGTH);
-    ADD_PROP_ASSIGNMENT(SCROLL_VALUE);
-    ADD_PROP_ASSIGNMENT(SPIN_VALUE);
-    ADD_PROP_ASSIGNMENT(DEFAULT_SCROLL_VALUE);
-    ADD_PROP_ASSIGNMENT(DEFAULT_SPIN_VALUE);
-    ADD_PROP_ASSIGNMENT( WRITING_MODE );
-    ADD_PROP_ASSIGNMENT( CONTEXT_WRITING_MODE );
-    ADD_PROP_ASSIGNMENT( GENERATEVBAEVENTS );
-
-    // now sort the array by name
-
-    std::sort(
-        s_AllKnownProperties.begin(),
-        s_AllKnownProperties.end(),
-        PropertyAssignmentNameCompareLess()
-    );
+    s_AllKnownProperties.insert({
+        EXPAND_PROP_INIT(NAME),
+        EXPAND_PROP_INIT(TAG),
+        EXPAND_PROP_INIT(TABINDEX),
+        EXPAND_PROP_INIT(CLASSID),
+        EXPAND_PROP_INIT(ALIGN),
+        EXPAND_PROP_INIT(FETCHSIZE),
+        EXPAND_PROP_INIT(VALUE),
+        EXPAND_PROP_INIT(VALUEMIN),
+        EXPAND_PROP_INIT(VALUEMAX),
+        EXPAND_PROP_INIT(VALUESTEP),
+        EXPAND_PROP_INIT(TEXT),
+        EXPAND_PROP_INIT(LABEL),
+        EXPAND_PROP_INIT(NAVIGATION),
+        EXPAND_PROP_INIT(CYCLE),
+        EXPAND_PROP_INIT(CONTROLSOURCE),
+        EXPAND_PROP_INIT(ENABLED),
+        EXPAND_PROP_INIT(ENABLEVISIBLE),
+        EXPAND_PROP_INIT(SPIN),
+        EXPAND_PROP_INIT(READONLY),
+        EXPAND_PROP_INIT(FILTER),
+        EXPAND_PROP_INIT(WIDTH),
+        EXPAND_PROP_INIT(SEARCHABLE),
+        EXPAND_PROP_INIT(MULTILINE),
+        EXPAND_PROP_INIT(TARGET_URL),
+        EXPAND_PROP_INIT(DEFAULTCONTROL),
+        EXPAND_PROP_INIT(MAXTEXTLEN),
+        EXPAND_PROP_INIT(SIZE),
+        EXPAND_PROP_INIT(DATE),
+        EXPAND_PROP_INIT(TIME),
+        EXPAND_PROP_INIT(STATE),
+        EXPAND_PROP_INIT(TRISTATE),
+        EXPAND_PROP_INIT(HIDDEN_VALUE),
+        EXPAND_PROP_INIT(TARGET_FRAME),
+        EXPAND_PROP_INIT(BUTTONTYPE),
+        EXPAND_PROP_INIT(STRINGITEMLIST),
+        EXPAND_PROP_INIT(DEFAULT_TEXT),
+        EXPAND_PROP_INIT(DEFAULT_STATE),
+        EXPAND_PROP_INIT(DEFAULT_DATE),
+        EXPAND_PROP_INIT(DEFAULT_TIME),
+        EXPAND_PROP_INIT(DEFAULT_VALUE),
+        EXPAND_PROP_INIT(FORMATKEY),
+        EXPAND_PROP_INIT(FORMATSSUPPLIER),
+        EXPAND_PROP_INIT(SUBMIT_ACTION),
+        EXPAND_PROP_INIT(SUBMIT_TARGET),
+        EXPAND_PROP_INIT(SUBMIT_METHOD),
+        EXPAND_PROP_INIT(SUBMIT_ENCODING),
+        EXPAND_PROP_INIT(IMAGE_URL),
+        EXPAND_PROP_INIT(GRAPHIC),
+        EXPAND_PROP_INIT(EMPTY_IS_NULL),
+        EXPAND_PROP_INIT(LISTSOURCETYPE),
+        EXPAND_PROP_INIT(LISTSOURCE),
+        EXPAND_PROP_INIT(SELECT_SEQ),
+        EXPAND_PROP_INIT(VALUE_SEQ),
+        EXPAND_PROP_INIT(SELECT_VALUE),
+        EXPAND_PROP_INIT(SELECT_VALUE_SEQ),
+        EXPAND_PROP_INIT(DEFAULT_SELECT_SEQ),
+        EXPAND_PROP_INIT(MULTISELECTION),
+        EXPAND_PROP_INIT(DECIMAL_ACCURACY),
+        EXPAND_PROP_INIT(EDITMASK),
+        EXPAND_PROP_INIT(ISREADONLY),
+        EXPAND_PROP_INIT(FIELDTYPE),
+        EXPAND_PROP_INIT(DECIMALS),
+        EXPAND_PROP_INIT(REFVALUE),
+        EXPAND_PROP_INIT(STRICTFORMAT),
+        EXPAND_PROP_INIT(DATASOURCE),
+        EXPAND_PROP_INIT(ALLOWADDITIONS),
+        EXPAND_PROP_INIT(ALLOWEDITS),
+        EXPAND_PROP_INIT(ALLOWDELETIONS),
+        EXPAND_PROP_INIT(MASTERFIELDS),
+        EXPAND_PROP_INIT(ISPASSTHROUGH),
+        EXPAND_PROP_INIT(QUERY),
+        EXPAND_PROP_INIT(LITERALMASK),
+        EXPAND_PROP_INIT(SHOWTHOUSANDSEP),
+        EXPAND_PROP_INIT(CURRENCYSYMBOL),
+        EXPAND_PROP_INIT(DATEFORMAT),
+        EXPAND_PROP_INIT(DATEMIN),
+        EXPAND_PROP_INIT(DATEMAX),
+        EXPAND_PROP_INIT(DATE_SHOW_CENTURY),
+        EXPAND_PROP_INIT(TIMEFORMAT),
+        EXPAND_PROP_INIT(TIMEMIN),
+        EXPAND_PROP_INIT(TIMEMAX),
+        EXPAND_PROP_INIT(LINECOUNT),
+        EXPAND_PROP_INIT(BOUNDCOLUMN),
+        EXPAND_PROP_INIT(HASNAVIGATION),
+        EXPAND_PROP_INIT(FONT),
+        EXPAND_PROP_INIT(BACKGROUNDCOLOR),
+        EXPAND_PROP_INIT(FILLCOLOR),
+        EXPAND_PROP_INIT(TEXTCOLOR),
+        EXPAND_PROP_INIT(LINECOLOR),
+        EXPAND_PROP_INIT(BORDER),
+        EXPAND_PROP_INIT(DROPDOWN),
+        EXPAND_PROP_INIT(HSCROLL),
+        EXPAND_PROP_INIT(VSCROLL),
+        EXPAND_PROP_INIT(TABSTOP),
+        EXPAND_PROP_INIT(AUTOCOMPLETE),
+        EXPAND_PROP_INIT(HARDLINEBREAKS),
+        EXPAND_PROP_INIT(PRINTABLE),
+        EXPAND_PROP_INIT(ECHO_CHAR),
+        EXPAND_PROP_INIT(ROWHEIGHT),
+        EXPAND_PROP_INIT(HELPTEXT),
+        EXPAND_PROP_INIT(FONT_NAME),
+        EXPAND_PROP_INIT(FONT_STYLENAME),
+        EXPAND_PROP_INIT(FONT_FAMILY),
+        EXPAND_PROP_INIT(FONT_CHARSET),
+        EXPAND_PROP_INIT(FONT_HEIGHT),
+        EXPAND_PROP_INIT(FONT_WEIGHT),
+        EXPAND_PROP_INIT(FONT_SLANT),
+        EXPAND_PROP_INIT(FONT_UNDERLINE),
+        EXPAND_PROP_INIT(FONT_WORDLINEMODE),
+        EXPAND_PROP_INIT(FONT_STRIKEOUT),
+        EXPAND_PROP_INIT(TEXTLINECOLOR),
+        EXPAND_PROP_INIT(FONTEMPHASISMARK),
+        EXPAND_PROP_INIT(FONTRELIEF),
+        EXPAND_PROP_INIT(HELPURL),
+        EXPAND_PROP_INIT(RECORDMARKER),
+        EXPAND_PROP_INIT(BOUNDFIELD),
+        EXPAND_PROP_INIT(INPUT_REQUIRED),
+        EXPAND_PROP_INIT(TREATASNUMERIC),
+        EXPAND_PROP_INIT(EFFECTIVE_VALUE),
+        EXPAND_PROP_INIT(EFFECTIVE_DEFAULT),
+        EXPAND_PROP_INIT(EFFECTIVE_MIN),
+        EXPAND_PROP_INIT(EFFECTIVE_MAX),
+        EXPAND_PROP_INIT(HIDDEN),
+        EXPAND_PROP_INIT(FILTERPROPOSAL),
+        EXPAND_PROP_INIT(FIELDSOURCE),
+        EXPAND_PROP_INIT(TABLENAME),
+        EXPAND_PROP_INIT(CONTROLLABEL),
+        EXPAND_PROP_INIT(CURRSYM_POSITION),
+        EXPAND_PROP_INIT(CURSORCOLOR),
+        EXPAND_PROP_INIT(ALWAYSSHOWCURSOR),
+        EXPAND_PROP_INIT(DISPLAYSYNCHRON),
+        EXPAND_PROP_INIT(ISMODIFIED),
+        EXPAND_PROP_INIT(ISNEW),
+        EXPAND_PROP_INIT(PRIVILEGES),
+        EXPAND_PROP_INIT(DETAILFIELDS),
+        EXPAND_PROP_INIT(COMMAND),
+        EXPAND_PROP_INIT(COMMANDTYPE),
+        EXPAND_PROP_INIT(RESULTSET_CONCURRENCY),
+        EXPAND_PROP_INIT(INSERTONLY),
+        EXPAND_PROP_INIT(RESULTSET_TYPE),
+        EXPAND_PROP_INIT(ESCAPE_PROCESSING),
+        EXPAND_PROP_INIT(APPLYFILTER),
+        EXPAND_PROP_INIT(ISNULLABLE),
+        EXPAND_PROP_INIT(ACTIVECOMMAND),
+        EXPAND_PROP_INIT(ISCURRENCY),
+        EXPAND_PROP_INIT(URL),
+        EXPAND_PROP_INIT(TITLE),
+        EXPAND_PROP_INIT(ACTIVE_CONNECTION),
+        EXPAND_PROP_INIT(SCALE),
+        EXPAND_PROP_INIT(SORT),
+        EXPAND_PROP_INIT(PERSISTENCE_MAXTEXTLENGTH),
+        EXPAND_PROP_INIT(SCROLL_VALUE),
+        EXPAND_PROP_INIT(SPIN_VALUE),
+        EXPAND_PROP_INIT(DEFAULT_SCROLL_VALUE),
+        EXPAND_PROP_INIT(DEFAULT_SPIN_VALUE),
+        EXPAND_PROP_INIT( WRITING_MODE ),
+        EXPAND_PROP_INIT( CONTEXT_WRITING_MODE ),
+        EXPAND_PROP_INIT( GENERATEVBAEVENTS )
+    });
 }
 
 


More information about the Libreoffice-commits mailing list