[Libreoffice-commits] core.git: 3 commits - xmloff/source

Noel Grandin noel at peralex.com
Thu May 12 12:35:11 UTC 2016


 xmloff/source/forms/elementexport.cxx  |  200 ++++++++++++++++-----------------
 xmloff/source/forms/elementexport.hxx  |    6 
 xmloff/source/forms/elementimport.cxx  |   18 +-
 xmloff/source/forms/formattributes.cxx |   51 ++++----
 xmloff/source/forms/formattributes.hxx |   97 +++++++++-------
 xmloff/source/forms/layerimport.cxx    |   24 +--
 6 files changed, 208 insertions(+), 188 deletions(-)

New commits:
commit 0c2d51e0daf2ce5e18af915ec40ec3196db8ab88
Author: Noel Grandin <noel at peralex.com>
Date:   Thu May 12 14:32:30 2016 +0200

    Convert SCA flags to scoped enum
    
    Change-Id: I761022dd78f6c1d19cf4f2650a5ac7b2212c11c3

diff --git a/xmloff/source/forms/elementexport.cxx b/xmloff/source/forms/elementexport.cxx
index abd6e50..b80d7b0 100644
--- a/xmloff/source/forms/elementexport.cxx
+++ b/xmloff/source/forms/elementexport.cxx
@@ -236,7 +236,7 @@ namespace xmloff
         ,m_eType( UNKNOWN )
         ,m_nIncludeCommon(CCAFlags::NONE)
         ,m_nIncludeDatabase(DAFlags::NONE)
-        ,m_nIncludeSpecial(0)
+        ,m_nIncludeSpecial(SCAFlags::NONE)
         ,m_nIncludeEvents(EAFlags::NONE)
         ,m_nIncludeBindings(BAFlags::NONE)
         ,m_pOuterElement(nullptr)
@@ -964,10 +964,10 @@ namespace xmloff
 
         // the boolean properties
         {
-            static const sal_Int32 nBooleanPropertyAttributeIds[] =
+            static const SCAFlags nBooleanPropertyAttributeIds[] =
             {   // attribute flags
-                SCA_VALIDATION, SCA_MULTI_LINE, SCA_AUTOMATIC_COMPLETION, SCA_MULTIPLE, SCA_DEFAULT_BUTTON, SCA_IS_TRISTATE,
-                SCA_TOGGLE, SCA_FOCUS_ON_CLICK
+                SCAFlags::Validation, SCAFlags::MultiLine, SCAFlags::AutoCompletion, SCAFlags::Multiple, SCAFlags::DefaultButton, SCAFlags::IsTristate,
+                SCAFlags::Toggle, SCAFlags::FocusOnClick
             };
             static const char * pBooleanPropertyNames[] =
             {   // property names
@@ -983,7 +983,7 @@ namespace xmloff
             OSL_ENSURE((nIdCount == nNameCount),
                 "OControlExport::exportSpecialAttributes: somebody tampered with the maps (1)!");
         #endif
-            const sal_Int32* pAttributeId = nBooleanPropertyAttributeIds;
+            const SCAFlags* pAttributeId = nBooleanPropertyAttributeIds;
             for ( i = 0; i < nIdCount; ++i, ++pAttributeId )
             {
                 if ( *pAttributeId & m_nIncludeSpecial)
@@ -992,7 +992,7 @@ namespace xmloff
                         OAttributeMetaData::getSpecialAttributeNamespace( *pAttributeId ),
                         OAttributeMetaData::getSpecialAttributeName( *pAttributeId ),
                         OUString::createFromAscii(pBooleanPropertyNames[i]),
-                        ( *pAttributeId == SCA_FOCUS_ON_CLICK ) ? BoolAttrFlags::DefaultTrue : BoolAttrFlags::DefaultFalse
+                        ( *pAttributeId == SCAFlags::FocusOnClick ) ? BoolAttrFlags::DefaultTrue : BoolAttrFlags::DefaultFalse
                     );
             #if OSL_DEBUG_LEVEL > 0
                 //  reset the bit for later checking
@@ -1004,9 +1004,9 @@ namespace xmloff
 
         // the integer properties
         {
-            static sal_Int32 nIntegerPropertyAttributeIds[] =
+            static SCAFlags nIntegerPropertyAttributeIds[] =
             {   // attribute flags
-                SCA_PAGE_STEP_SIZE
+                SCAFlags::PageStepSize
             };
             static const char * pIntegerPropertyNames[] =
             {   // property names
@@ -1041,7 +1041,7 @@ namespace xmloff
             #endif
                 }
 
-            if ( SCA_STEP_SIZE & m_nIncludeSpecial )
+            if ( SCAFlags::StepSize & m_nIncludeSpecial )
             {
                 OUString sPropertyName;
                 if ( m_xPropertyInfo->hasPropertyByName( PROPERTY_LINE_INCREMENT ) )
@@ -1053,15 +1053,15 @@ namespace xmloff
 
                 if ( !sPropertyName.isEmpty() )
                     exportInt32PropertyAttribute(
-                        OAttributeMetaData::getSpecialAttributeNamespace( SCA_STEP_SIZE ),
-                        OAttributeMetaData::getSpecialAttributeName( SCA_STEP_SIZE ),
+                        OAttributeMetaData::getSpecialAttributeNamespace( SCAFlags::StepSize ),
+                        OAttributeMetaData::getSpecialAttributeName( SCAFlags::StepSize ),
                         sPropertyName,
                         1
                     );
 
             #if OSL_DEBUG_LEVEL > 0
                 //  reset the bit for later checking
-                m_nIncludeSpecial = m_nIncludeSpecial & ~SCA_STEP_SIZE;
+                m_nIncludeSpecial = m_nIncludeSpecial & ~SCAFlags::StepSize;
             #endif
             }
 
@@ -1069,31 +1069,31 @@ namespace xmloff
 
         // the enum properties
         {
-            if (SCA_STATE & m_nIncludeSpecial)
+            if (SCAFlags::State & m_nIncludeSpecial)
             {
                 exportEnumPropertyAttribute(
-                    OAttributeMetaData::getSpecialAttributeNamespace(SCA_STATE),
-                    OAttributeMetaData::getSpecialAttributeName(SCA_STATE),
+                    OAttributeMetaData::getSpecialAttributeNamespace(SCAFlags::State),
+                    OAttributeMetaData::getSpecialAttributeName(SCAFlags::State),
                     PROPERTY_DEFAULT_STATE,
                     OEnumMapper::getEnumMap(OEnumMapper::epCheckState),
                     TRISTATE_FALSE);
             #if OSL_DEBUG_LEVEL > 0
                 //  reset the bit for later checking
-                m_nIncludeSpecial = m_nIncludeSpecial & ~SCA_STATE;
+                m_nIncludeSpecial = m_nIncludeSpecial & ~SCAFlags::State;
             #endif
             }
 
-            if (SCA_CURRENT_STATE & m_nIncludeSpecial)
+            if (SCAFlags::CurrentState & m_nIncludeSpecial)
             {
                 exportEnumPropertyAttribute(
-                    OAttributeMetaData::getSpecialAttributeNamespace(SCA_CURRENT_STATE),
-                    OAttributeMetaData::getSpecialAttributeName(SCA_CURRENT_STATE),
+                    OAttributeMetaData::getSpecialAttributeNamespace(SCAFlags::CurrentState),
+                    OAttributeMetaData::getSpecialAttributeName(SCAFlags::CurrentState),
                     PROPERTY_STATE,
                     OEnumMapper::getEnumMap(OEnumMapper::epCheckState),
                     TRISTATE_FALSE);
             #if OSL_DEBUG_LEVEL > 0
                 //  reset the bit for later checking
-                m_nIncludeSpecial = m_nIncludeSpecial & ~SCA_CURRENT_STATE;
+                m_nIncludeSpecial = m_nIncludeSpecial & ~SCAFlags::CurrentState;
             #endif
             }
         }
@@ -1101,7 +1101,7 @@ namespace xmloff
         // some properties which require a special handling
         // the repeat delay
         {
-            if ( m_nIncludeSpecial & SCA_REPEAT_DELAY )
+            if ( m_nIncludeSpecial & SCAFlags::RepeatDelay )
             {
                 DBG_CHECK_PROPERTY( PROPERTY_REPEAT_DELAY, sal_Int32 );
 
@@ -1117,22 +1117,22 @@ namespace xmloff
 
                 OUStringBuffer buf;
                 ::sax::Converter::convertDuration(buf, aDuration);
-                AddAttribute(OAttributeMetaData::getSpecialAttributeNamespace( SCA_REPEAT_DELAY )
-                            ,OAttributeMetaData::getSpecialAttributeName( SCA_REPEAT_DELAY )
+                AddAttribute(OAttributeMetaData::getSpecialAttributeNamespace( SCAFlags::RepeatDelay )
+                            ,OAttributeMetaData::getSpecialAttributeName( SCAFlags::RepeatDelay )
                             ,buf.makeStringAndClear());
 
                 exportedProperty( PROPERTY_REPEAT_DELAY );
 
             #if OSL_DEBUG_LEVEL > 0
                 //  reset the bit for later checking
-                m_nIncludeSpecial = m_nIncludeSpecial & ~SCA_REPEAT_DELAY;
+                m_nIncludeSpecial = m_nIncludeSpecial & ~SCAFlags::RepeatDelay;
             #endif
             }
         }
 
         // the EchoChar property needs special handling, cause it's a Int16, but must be stored as one-character-string
         {
-            if (SCA_ECHO_CHAR & m_nIncludeSpecial)
+            if (SCAFlags::EchoChar & m_nIncludeSpecial)
             {
                 DBG_CHECK_PROPERTY( PROPERTY_ECHO_CHAR, sal_Int16 );
                 sal_Int16 nValue(0);
@@ -1141,23 +1141,23 @@ namespace xmloff
                 {
                     OUString sCharacter(reinterpret_cast<const sal_Unicode*>(&nValue), 1);
                     AddAttribute(
-                        OAttributeMetaData::getSpecialAttributeNamespace(SCA_ECHO_CHAR),
-                        OAttributeMetaData::getSpecialAttributeName(SCA_ECHO_CHAR),
+                        OAttributeMetaData::getSpecialAttributeNamespace(SCAFlags::EchoChar),
+                        OAttributeMetaData::getSpecialAttributeName(SCAFlags::EchoChar),
                         sCharacter);
                 }
                 exportedProperty(PROPERTY_ECHO_CHAR);
             #if OSL_DEBUG_LEVEL > 0
                 //  reset the bit for later checking
-                m_nIncludeSpecial = m_nIncludeSpecial & ~SCA_ECHO_CHAR;
+                m_nIncludeSpecial = m_nIncludeSpecial & ~SCAFlags::EchoChar;
             #endif
             }
         }
 
         // the string properties
         {
-            static const sal_Int32 nStringPropertyAttributeIds[] =
+            static const SCAFlags nStringPropertyAttributeIds[] =
             {   // attribute flags
-                SCA_GROUP_NAME
+                SCAFlags::GroupName
             };
             static const OUString pStringPropertyNames[] =
             {   // property names
@@ -1185,7 +1185,7 @@ namespace xmloff
                 }
         }
 
-        if ((SCA_MIN_VALUE | SCA_MAX_VALUE) & m_nIncludeSpecial)
+        if ((SCAFlags::MinValue | SCAFlags::MaxValue) & m_nIncludeSpecial)
         {
             // need to export the min value and the max value as attributes
             // It depends on the real type (FormComponentType) of the control, which properties hold these
@@ -1194,41 +1194,41 @@ namespace xmloff
             const sal_Char* pMaxValuePropertyName = nullptr;
             getValueLimitPropertyNames(m_nClassId, pMinValuePropertyName, pMaxValuePropertyName);
 
-            OSL_ENSURE((nullptr == pMinValuePropertyName) == (0 == (SCA_MIN_VALUE & m_nIncludeSpecial)),
+            OSL_ENSURE((nullptr == pMinValuePropertyName) == (SCAFlags::NONE == (SCAFlags::MinValue & m_nIncludeSpecial)),
                 "OControlExport::exportCommonControlAttributes: no property found for the min value attribute!");
-            OSL_ENSURE((nullptr == pMaxValuePropertyName) == (0 == (SCA_MAX_VALUE & m_nIncludeSpecial)),
+            OSL_ENSURE((nullptr == pMaxValuePropertyName) == (SCAFlags::NONE == (SCAFlags::MaxValue & m_nIncludeSpecial)),
                 "OControlExport::exportCommonControlAttributes: no property found for the max value attribute!");
 
             // add the two attributes
-            static const sal_Char* pMinValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MIN_VALUE);
-            static const sal_Char* pMaxValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MAX_VALUE);
-            static const sal_uInt16 nMinValueNamespaceKey = OAttributeMetaData::getSpecialAttributeNamespace(SCA_MIN_VALUE);
-            static const sal_uInt16 nMaxValueNamespaceKey = OAttributeMetaData::getSpecialAttributeNamespace(SCA_MAX_VALUE);
+            static const sal_Char* pMinValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCAFlags::MinValue);
+            static const sal_Char* pMaxValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCAFlags::MaxValue);
+            static const sal_uInt16 nMinValueNamespaceKey = OAttributeMetaData::getSpecialAttributeNamespace(SCAFlags::MinValue);
+            static const sal_uInt16 nMaxValueNamespaceKey = OAttributeMetaData::getSpecialAttributeNamespace(SCAFlags::MaxValue);
 
-            if (pMinValuePropertyName && (SCA_MIN_VALUE & m_nIncludeSpecial))
+            if (pMinValuePropertyName && (SCAFlags::MinValue & m_nIncludeSpecial))
                 exportGenericPropertyAttribute(
                     nMinValueNamespaceKey,
                     pMinValueAttributeName,
                     pMinValuePropertyName);
 
-            if (pMaxValuePropertyName && (SCA_MAX_VALUE & m_nIncludeSpecial))
+            if (pMaxValuePropertyName && (SCAFlags::MaxValue & m_nIncludeSpecial))
                 exportGenericPropertyAttribute(
                     nMaxValueNamespaceKey,
                     pMaxValueAttributeName,
                     pMaxValuePropertyName);
         #if OSL_DEBUG_LEVEL > 0
             //  reset the bit for later checking
-            m_nIncludeSpecial = m_nIncludeSpecial & ~(SCA_MIN_VALUE | SCA_MAX_VALUE);
+            m_nIncludeSpecial = m_nIncludeSpecial & ~SCAFlags(SCAFlags::MinValue | SCAFlags::MaxValue);
         #endif
         }
 
-        if ( SCA_IMAGE_POSITION & m_nIncludeSpecial )
+        if ( SCAFlags::ImagePosition & m_nIncludeSpecial )
         {
             exportImagePositionAttributes();
-            RESET_BIT( m_nIncludeSpecial, SCA_IMAGE_POSITION );
+            RESET_BIT( m_nIncludeSpecial, SCAFlags::ImagePosition );
         }
 
-        OSL_ENSURE(0 == m_nIncludeSpecial,
+        OSL_ENSURE(SCAFlags::NONE == m_nIncludeSpecial,
             "OControlExport::exportSpecialAttributes: forgot some flags!");
             // in the dbg_util version, we should have removed every bit we handled from the mask, so it should
             // be 0 now ...
@@ -1440,7 +1440,7 @@ namespace xmloff
 
     void OControlExport::examine()
     {
-        OSL_ENSURE( ( m_nIncludeCommon == CCAFlags::NONE ) && ( m_nIncludeSpecial == 0 ) && ( m_nIncludeDatabase == DAFlags::NONE )
+        OSL_ENSURE( ( m_nIncludeCommon == CCAFlags::NONE ) && ( m_nIncludeSpecial == SCAFlags::NONE ) && ( m_nIncludeDatabase == DAFlags::NONE )
                  && ( m_nIncludeEvents == EAFlags::NONE ) && ( m_nIncludeBindings == BAFlags::NONE),
                  "OControlExport::examine: called me twice? Not initialized?" );
 
@@ -1461,7 +1461,7 @@ namespace xmloff
                     m_eType = TIME;
                     knownType = true;
                 }
-                m_nIncludeSpecial |= SCA_VALIDATION;
+                m_nIncludeSpecial |= SCAFlags::Validation;
                 SAL_FALLTHROUGH;
             case FormComponentType::NUMERICFIELD:
             case FormComponentType::CURRENCYFIELD:
@@ -1495,7 +1495,7 @@ namespace xmloff
                         if (nEchoChar)
                         {
                             m_eType = PASSWORD;
-                            m_nIncludeSpecial |= SCA_ECHO_CHAR;
+                            m_nIncludeSpecial |= SCAFlags::EchoChar;
                         }
                         else
                         {
@@ -1550,11 +1550,11 @@ namespace xmloff
                 if (FORMATTED_TEXT == m_eType)
                 {   // in general all controls represented as formatted-text have these props
                     if  ( FormComponentType::PATTERNFIELD != m_nClassId )   // except the PatternField
-                        m_nIncludeSpecial |= SCA_MAX_VALUE | SCA_MIN_VALUE;
+                        m_nIncludeSpecial |= SCAFlags::MaxValue | SCAFlags::MinValue;
 
                     if (FormComponentType::TEXTFIELD != m_nClassId)
                         // and the FormattedField does not have a validation flag
-                        m_nIncludeSpecial |= SCA_VALIDATION;
+                        m_nIncludeSpecial |= SCAFlags::Validation;
                 }
 
                 // if it's not a password field or rich text control, the CurrentValue needs to be stored, too
@@ -1582,7 +1582,7 @@ namespace xmloff
                 m_nIncludeCommon =
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::Label |
                     CCAFlags::Printable | CCAFlags::Title | CCAFlags::For;
-                m_nIncludeSpecial = SCA_MULTI_LINE;
+                m_nIncludeSpecial = SCAFlags::MultiLine;
                 m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
 
@@ -1592,7 +1592,7 @@ namespace xmloff
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::CurrentValue |
                     CCAFlags::Disabled | CCAFlags::Dropdown | CCAFlags::MaxLength | CCAFlags::Printable | CCAFlags::ReadOnly | CCAFlags::Size |
                     CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Title | CCAFlags::Value;
-                m_nIncludeSpecial = SCA_AUTOMATIC_COMPLETION;
+                m_nIncludeSpecial = SCAFlags::AutoCompletion;
                 m_nIncludeDatabase = DAFlags::ConvertEmpty | DAFlags::DataField | DAFlags::InputRequired | DAFlags::ListSource | DAFlags::ListSource_TYPE;
                 m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange | EAFlags::OnSelect;
                 break;
@@ -1602,7 +1602,7 @@ namespace xmloff
                 m_nIncludeCommon =
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::Dropdown |
                     CCAFlags::Printable | CCAFlags::Size | CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Title;
-                m_nIncludeSpecial = SCA_MULTIPLE;
+                m_nIncludeSpecial = SCAFlags::Multiple;
                 m_nIncludeDatabase = DAFlags::BoundColumn | DAFlags::DataField | DAFlags::InputRequired | DAFlags::ListSource_TYPE;
                 m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange | EAFlags::OnClick | EAFlags::OnDoubleClick;
                 // check if we need to export the ListSource as attribute
@@ -1624,7 +1624,7 @@ namespace xmloff
             case FormComponentType::COMMANDBUTTON:
                 m_eType = BUTTON;
                 m_nIncludeCommon |= CCAFlags::TabStop | CCAFlags::Label;
-                m_nIncludeSpecial = SCA_DEFAULT_BUTTON | SCA_TOGGLE | SCA_FOCUS_ON_CLICK | SCA_IMAGE_POSITION | SCA_REPEAT_DELAY;
+                m_nIncludeSpecial = SCAFlags::DefaultButton | SCAFlags::Toggle | SCAFlags::FocusOnClick | SCAFlags::ImagePosition | SCAFlags::RepeatDelay;
                 SAL_FALLTHROUGH;
             case FormComponentType::IMAGEBUTTON:
                 if (BUTTON != m_eType)
@@ -1641,7 +1641,7 @@ namespace xmloff
 
             case FormComponentType::CHECKBOX:
                 m_eType = CHECKBOX;
-                m_nIncludeSpecial = SCA_CURRENT_STATE | SCA_IS_TRISTATE | SCA_STATE;
+                m_nIncludeSpecial = SCAFlags::CurrentState | SCAFlags::IsTristate | SCAFlags::State;
                 SAL_FALLTHROUGH;
             case FormComponentType::RADIOBUTTON:
                 m_nIncludeCommon =
@@ -1653,9 +1653,9 @@ namespace xmloff
                     m_nIncludeCommon |= CCAFlags::CurrentSelected | CCAFlags::Selected;
                 }
                 if ( m_xPropertyInfo->hasPropertyByName( PROPERTY_IMAGE_POSITION ) )
-                    m_nIncludeSpecial |= SCA_IMAGE_POSITION;
+                    m_nIncludeSpecial |= SCAFlags::ImagePosition;
                 if ( m_xPropertyInfo->hasPropertyByName( PROPERTY_GROUP_NAME ) )
-                    m_nIncludeSpecial |= SCA_GROUP_NAME;
+                    m_nIncludeSpecial |= SCAFlags::GroupName;
                 m_nIncludeDatabase = DAFlags::DataField | DAFlags::InputRequired;
                 m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange;
                 break;
@@ -1697,10 +1697,10 @@ namespace xmloff
                 m_nIncludeCommon =
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::Printable |
                     CCAFlags::Title | CCAFlags::CurrentValue | CCAFlags::Value | CCAFlags::Orientation;
-                m_nIncludeSpecial = SCA_MAX_VALUE | SCA_STEP_SIZE | SCA_MIN_VALUE | SCA_REPEAT_DELAY;
+                m_nIncludeSpecial = SCAFlags::MaxValue | SCAFlags::StepSize | SCAFlags::MinValue | SCAFlags::RepeatDelay;
 
                 if ( m_nClassId == FormComponentType::SCROLLBAR )
-                    m_nIncludeSpecial |= SCA_PAGE_STEP_SIZE ;
+                    m_nIncludeSpecial |= SCAFlags::PageStepSize ;
 
                 m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
@@ -2015,8 +2015,8 @@ namespace xmloff
         if ( !sStyleName.isEmpty() )
         {
             AddAttribute(
-                OAttributeMetaData::getSpecialAttributeNamespace( SCA_COLUMN_STYLE_NAME ),
-                OAttributeMetaData::getSpecialAttributeName( SCA_COLUMN_STYLE_NAME ),
+                OAttributeMetaData::getSpecialAttributeNamespace( SCAFlags::ColumnStyleName ),
+                OAttributeMetaData::getSpecialAttributeName( SCAFlags::ColumnStyleName ),
                 sStyleName
             );
         }
@@ -2028,7 +2028,7 @@ namespace xmloff
 
         // grid columns miss some properties of the controls they're representing
         m_nIncludeCommon &= ~CCAFlags(CCAFlags::For | CCAFlags::Printable | CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Label);
-        m_nIncludeSpecial &= ~(SCA_ECHO_CHAR | SCA_AUTOMATIC_COMPLETION | SCA_MULTIPLE | SCA_MULTI_LINE);
+        m_nIncludeSpecial &= ~SCAFlags(SCAFlags::EchoChar | SCAFlags::AutoCompletion | SCAFlags::Multiple | SCAFlags::MultiLine);
 
         if (FormComponentType::DATEFIELD != m_nClassId)
             // except date fields, no column has the DropDown property
diff --git a/xmloff/source/forms/elementexport.hxx b/xmloff/source/forms/elementexport.hxx
index da7123d..f3b2f0a 100644
--- a/xmloff/source/forms/elementexport.hxx
+++ b/xmloff/source/forms/elementexport.hxx
@@ -96,7 +96,7 @@ namespace xmloff
         ElementType             m_eType;                // (XML) type of the control we're representing
         CCAFlags                m_nIncludeCommon;       // common control attributes to include
         DAFlags                 m_nIncludeDatabase;     // common database attributes to include
-        sal_Int32               m_nIncludeSpecial;      // special attributes to include
+        SCAFlags                m_nIncludeSpecial;      // special attributes to include
         EAFlags                 m_nIncludeEvents;       // events to include
         BAFlags                 m_nIncludeBindings;     // binding attributes to include
 
diff --git a/xmloff/source/forms/elementimport.cxx b/xmloff/source/forms/elementimport.cxx
index 32cd55a..b39b731 100644
--- a/xmloff/source/forms/elementimport.cxx
+++ b/xmloff/source/forms/elementimport.cxx
@@ -754,9 +754,9 @@ namespace xmloff
 
         static const sal_Char* pValueAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCAFlags::Value);
         static const sal_Char* pCurrentValueAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCAFlags::CurrentValue);
-        static const sal_Char* pMinValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MIN_VALUE);
-        static const sal_Char* pMaxValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MAX_VALUE);
-        static const sal_Char* pRepeatDelayAttributeName = OAttributeMetaData::getSpecialAttributeName( SCA_REPEAT_DELAY );
+        static const sal_Char* pMinValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCAFlags::MinValue);
+        static const sal_Char* pMaxValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCAFlags::MaxValue);
+        static const sal_Char* pRepeatDelayAttributeName = OAttributeMetaData::getSpecialAttributeName( SCAFlags::RepeatDelay );
 
         sal_Int32 nHandle = -1;
         if ( _rLocalName.equalsAscii( pValueAttributeName ) )
@@ -1211,7 +1211,7 @@ namespace xmloff
 
     bool OPasswordImport::handleAttribute(sal_uInt16 _nNamespaceKey, const OUString& _rLocalName, const OUString& _rValue)
     {
-        static const char * s_sEchoCharAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_ECHO_CHAR);
+        static const char * s_sEchoCharAttributeName = OAttributeMetaData::getSpecialAttributeName(SCAFlags::EchoChar);
         if (_rLocalName.equalsAscii(s_sEchoCharAttributeName))
         {
             // need a special handling for the EchoChar property
@@ -1333,7 +1333,7 @@ namespace xmloff
 
     bool OValueRangeImport::handleAttribute( sal_uInt16 _nNamespaceKey, const OUString& _rLocalName, const OUString& _rValue )
     {
-        if ( _rLocalName.equalsAscii( OAttributeMetaData::getSpecialAttributeName( SCA_STEP_SIZE ) ) )
+        if ( _rLocalName.equalsAscii( OAttributeMetaData::getSpecialAttributeName( SCAFlags::StepSize ) ) )
         {
             ::sax::Converter::convertNumber( m_nStepSizeValue, _rValue );
             return true;
@@ -1577,7 +1577,7 @@ namespace xmloff
             // for the auto-completion
             // the attribute default does not equal the property default, so in case we did not read this attribute,
             // we have to simulate it
-            simulateDefaultedAttribute( OAttributeMetaData::getSpecialAttributeName( SCA_AUTOMATIC_COMPLETION ), PROPERTY_AUTOCOMPLETE, "false");
+            simulateDefaultedAttribute( OAttributeMetaData::getSpecialAttributeName( SCAFlags::AutoCompletion ), PROPERTY_AUTOCOMPLETE, "false");
 
             // same for the convert-empty-to-null attribute, which's default is different from the property default
             simulateDefaultedAttribute( OAttributeMetaData::getDatabaseAttributeName( DAFlags::ConvertEmpty ), PROPERTY_EMPTY_IS_NULL, "false");
diff --git a/xmloff/source/forms/formattributes.cxx b/xmloff/source/forms/formattributes.cxx
index 4788a3b..aeed736 100644
--- a/xmloff/source/forms/formattributes.cxx
+++ b/xmloff/source/forms/formattributes.cxx
@@ -153,39 +153,40 @@ namespace xmloff
         return "";
     }
 
-    const sal_Char* OAttributeMetaData::getSpecialAttributeName(sal_Int32 _nId)
+    const sal_Char* OAttributeMetaData::getSpecialAttributeName(SCAFlags _nId)
     {
         switch (_nId)
         {
-            case SCA_ECHO_CHAR:             return "echo-char";
-            case SCA_MAX_VALUE:             return "max-value";
-            case SCA_MIN_VALUE:             return "min-value";
-            case SCA_VALIDATION:            return "validation";
-            case SCA_GROUP_NAME:            return "group-name";
-            case SCA_MULTI_LINE:            return "multi-line";
-            case SCA_AUTOMATIC_COMPLETION:  return "auto-complete";
-            case SCA_MULTIPLE:              return "multiple";
-            case SCA_DEFAULT_BUTTON:        return "default-button";
-            case SCA_CURRENT_STATE:         return "current-state";
-            case SCA_IS_TRISTATE:           return "is-tristate";
-            case SCA_STATE:                 return "state";
-            case SCA_COLUMN_STYLE_NAME:     return "text-style-name";
-            case SCA_STEP_SIZE:             return "step-size";
-            case SCA_PAGE_STEP_SIZE:        return "page-step-size";
-            case SCA_REPEAT_DELAY:          return "delay-for-repeat";
-            case SCA_TOGGLE:                return "toggle";
-            case SCA_FOCUS_ON_CLICK:        return "focus-on-click";
+            case SCAFlags::EchoChar:             return "echo-char";
+            case SCAFlags::MaxValue:             return "max-value";
+            case SCAFlags::MinValue:             return "min-value";
+            case SCAFlags::Validation:            return "validation";
+            case SCAFlags::GroupName:            return "group-name";
+            case SCAFlags::MultiLine:            return "multi-line";
+            case SCAFlags::AutoCompletion:  return "auto-complete";
+            case SCAFlags::Multiple:              return "multiple";
+            case SCAFlags::DefaultButton:        return "default-button";
+            case SCAFlags::CurrentState:         return "current-state";
+            case SCAFlags::IsTristate:           return "is-tristate";
+            case SCAFlags::State:                 return "state";
+            case SCAFlags::ColumnStyleName:     return "text-style-name";
+            case SCAFlags::StepSize:             return "step-size";
+            case SCAFlags::PageStepSize:        return "page-step-size";
+            case SCAFlags::RepeatDelay:          return "delay-for-repeat";
+            case SCAFlags::Toggle:                return "toggle";
+            case SCAFlags::FocusOnClick:        return "focus-on-click";
             default:
                 OSL_FAIL("OAttributeMetaData::getSpecialAttributeName: invalid id (maybe you or-ed two flags?)!");
         }
         return "";
     }
 
-    sal_uInt16 OAttributeMetaData::getSpecialAttributeNamespace(sal_Int32 _nId)
+    sal_uInt16 OAttributeMetaData::getSpecialAttributeNamespace(SCAFlags _nId)
     {
         switch( _nId )
         {
-            case SCA_GROUP_NAME:            return XML_NAMESPACE_FORMX;
+            case SCAFlags::GroupName:            return XML_NAMESPACE_FORMX;
+            default: break;
         }
         return XML_NAMESPACE_FORM;
     }
diff --git a/xmloff/source/forms/formattributes.hxx b/xmloff/source/forms/formattributes.hxx
index 68048ba..d0a2405 100644
--- a/xmloff/source/forms/formattributes.hxx
+++ b/xmloff/source/forms/formattributes.hxx
@@ -106,6 +106,34 @@ namespace o3tl {
     template<> struct typed_flags<EAFlags> : is_typed_flags<EAFlags, 0x001f> {};
 }
 
+    // any other attributes, which are special to some control types
+enum class SCAFlags {
+    NONE                  = 0x000000,
+    EchoChar              = 0x000001,
+    MaxValue              = 0x000002,
+    MinValue              = 0x000004,
+    Validation            = 0x000008,
+    GroupName             = 0x000010,
+    MultiLine             = 0x000020,
+    AutoCompletion        = 0x000080,
+    Multiple              = 0x000100,
+    DefaultButton         = 0x000200,
+    CurrentState          = 0x000400,
+    IsTristate            = 0x000800,
+    State                 = 0x001000,
+    ColumnStyleName       = 0x002000,
+    StepSize              = 0x004000,
+    PageStepSize          = 0x008000,
+    RepeatDelay           = 0x010000,
+    Toggle                = 0x020000,
+    FocusOnClick          = 0x040000,
+    ImagePosition         = 0x080000
+};
+namespace o3tl {
+    template<> struct typed_flags<SCAFlags> : is_typed_flags<SCAFlags, 0x0fffff> {};
+}
+
+
 namespace xmloff
 {
 
@@ -136,27 +164,6 @@ namespace xmloff
         faTabbingCycle
     };
 
-    // any other attributes, which are special to some control types
-    #define SCA_ECHO_CHAR               0x00000001
-    #define SCA_MAX_VALUE               0x00000002
-    #define SCA_MIN_VALUE               0x00000004
-    #define SCA_VALIDATION              0x00000008
-    #define SCA_GROUP_NAME              0x00000010
-    #define SCA_MULTI_LINE              0x00000020
-    #define SCA_AUTOMATIC_COMPLETION    0x00000080
-    #define SCA_MULTIPLE                0x00000100
-    #define SCA_DEFAULT_BUTTON          0x00000200
-    #define SCA_CURRENT_STATE           0x00000400
-    #define SCA_IS_TRISTATE             0x00000800
-    #define SCA_STATE                   0x00001000
-    #define SCA_COLUMN_STYLE_NAME       0x00002000
-    #define SCA_STEP_SIZE               0x00004000
-    #define SCA_PAGE_STEP_SIZE          0x00008000
-    #define SCA_REPEAT_DELAY            0x00010000
-    #define SCA_TOGGLE                  0x00020000
-    #define SCA_FOCUS_ON_CLICK          0x00040000
-    #define SCA_IMAGE_POSITION          0x00080000
-
     // attributes of the office:forms element
     enum OfficeFormsAttributes
     {
@@ -217,7 +224,7 @@ namespace xmloff
             @param _nId
                 the id of the attribute. Has to be one of the SCA_* constants.
         */
-        static const sal_Char* getSpecialAttributeName(sal_Int32 _nId);
+        static const sal_Char* getSpecialAttributeName(SCAFlags _nId);
 
         /** calculates the xml attribute representation of a binding attribute.
             @param _nId
@@ -239,7 +246,7 @@ namespace xmloff
             @param _nId
                 the id of the attribute. Has to be one of the SCA_* constants.
         */
-        static sal_uInt16 getSpecialAttributeNamespace(sal_Int32 _nId);
+        static sal_uInt16 getSpecialAttributeNamespace(SCAFlags _nId);
 
         /** calculates the xml attribute representation of a attribute of the office:forms element
             @param _nId
diff --git a/xmloff/source/forms/layerimport.cxx b/xmloff/source/forms/layerimport.cxx
index afbd759..c25565e 100644
--- a/xmloff/source/forms/layerimport.cxx
+++ b/xmloff/source/forms/layerimport.cxx
@@ -78,7 +78,7 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter)
     m_aAttributeMetaData.addStringProperty(
         OAttributeMetaData::getCommonControlAttributeName(CCAFlags::Name), PROPERTY_NAME);
     m_aAttributeMetaData.addStringProperty(
-            OAttributeMetaData::getSpecialAttributeName(SCA_GROUP_NAME), PROPERTY_GROUP_NAME);
+            OAttributeMetaData::getSpecialAttributeName(SCAFlags::GroupName), PROPERTY_GROUP_NAME);
         m_aAttributeMetaData.addStringProperty(
         OAttributeMetaData::getCommonControlAttributeName(CCAFlags::ImageData), PROPERTY_IMAGEURL);
     m_aAttributeMetaData.addStringProperty(
@@ -133,17 +133,17 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter)
     m_aAttributeMetaData.addBooleanProperty(
         OAttributeMetaData::getDatabaseAttributeName(DAFlags::ConvertEmpty), PROPERTY_EMPTY_IS_NULL, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_VALIDATION), PROPERTY_STRICTFORMAT, false);
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::Validation), PROPERTY_STRICTFORMAT, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_MULTI_LINE), PROPERTY_MULTILINE, false);
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::MultiLine), PROPERTY_MULTILINE, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_AUTOMATIC_COMPLETION), PROPERTY_AUTOCOMPLETE, false);
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::AutoCompletion), PROPERTY_AUTOCOMPLETE, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_MULTIPLE), PROPERTY_MULTISELECTION, false);
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::Multiple), PROPERTY_MULTISELECTION, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_DEFAULT_BUTTON), PROPERTY_DEFAULTBUTTON, false);
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::DefaultButton), PROPERTY_DEFAULTBUTTON, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_IS_TRISTATE), PROPERTY_TRISTATE, false);
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::IsTristate), PROPERTY_TRISTATE, false);
     m_aAttributeMetaData.addBooleanProperty(
         OAttributeMetaData::getFormAttributeName(faAllowDeletes), PROPERTY_ALLOWDELETES, true);
     m_aAttributeMetaData.addBooleanProperty(
@@ -157,9 +157,9 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter)
     m_aAttributeMetaData.addBooleanProperty(
         OAttributeMetaData::getFormAttributeName(faIgnoreResult), PROPERTY_IGNORERESULT, false);
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName( SCA_TOGGLE ), PROPERTY_TOGGLE, false );
+        OAttributeMetaData::getSpecialAttributeName( SCAFlags::Toggle ), PROPERTY_TOGGLE, false );
     m_aAttributeMetaData.addBooleanProperty(
-        OAttributeMetaData::getSpecialAttributeName( SCA_FOCUS_ON_CLICK ), PROPERTY_FOCUS_ON_CLICK, true );
+        OAttributeMetaData::getSpecialAttributeName( SCAFlags::FocusOnClick ), PROPERTY_FOCUS_ON_CLICK, true );
     m_aAttributeMetaData.addBooleanProperty(
         OAttributeMetaData::getDatabaseAttributeName( DAFlags::InputRequired ), PROPERTY_INPUT_REQUIRED, false );
 
@@ -175,7 +175,7 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter)
 
     // the int32 attributes
     m_aAttributeMetaData.addInt32Property(
-        OAttributeMetaData::getSpecialAttributeName( SCA_PAGE_STEP_SIZE ), PROPERTY_BLOCK_INCREMENT, 10 );
+        OAttributeMetaData::getSpecialAttributeName( SCAFlags::PageStepSize ), PROPERTY_BLOCK_INCREMENT, 10 );
 
     // the enum attributes
     m_aAttributeMetaData.addEnumProperty(
@@ -195,11 +195,11 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter)
         ListSourceType_VALUELIST, OEnumMapper::getEnumMap(OEnumMapper::epListSourceType),
         &::cppu::UnoType<ListSourceType>::get());
     m_aAttributeMetaData.addEnumProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_STATE), PROPERTY_DEFAULT_STATE, TRISTATE_FALSE,
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::State), PROPERTY_DEFAULT_STATE, TRISTATE_FALSE,
         OEnumMapper::getEnumMap(OEnumMapper::epCheckState),
         &::cppu::UnoType<sal_Int16>::get());
     m_aAttributeMetaData.addEnumProperty(
-        OAttributeMetaData::getSpecialAttributeName(SCA_CURRENT_STATE), PROPERTY_STATE, TRISTATE_FALSE,
+        OAttributeMetaData::getSpecialAttributeName(SCAFlags::CurrentState), PROPERTY_STATE, TRISTATE_FALSE,
         OEnumMapper::getEnumMap(OEnumMapper::epCheckState),
         &::cppu::UnoType<sal_Int16>::get());
     m_aAttributeMetaData.addEnumProperty(
commit aba06d6f8d69632559ca9a74320fcd048855a3a3
Author: Noel Grandin <noel at peralex.com>
Date:   Thu May 12 14:23:44 2016 +0200

    Convert EA flags to scoped enum
    
    Change-Id: I7fbd4cea13fc311624804f7acd9dd66955b860d3

diff --git a/xmloff/source/forms/elementexport.cxx b/xmloff/source/forms/elementexport.cxx
index 844ed2e..abd6e50 100644
--- a/xmloff/source/forms/elementexport.cxx
+++ b/xmloff/source/forms/elementexport.cxx
@@ -237,7 +237,7 @@ namespace xmloff
         ,m_nIncludeCommon(CCAFlags::NONE)
         ,m_nIncludeDatabase(DAFlags::NONE)
         ,m_nIncludeSpecial(0)
-        ,m_nIncludeEvents(0)
+        ,m_nIncludeEvents(EAFlags::NONE)
         ,m_nIncludeBindings(BAFlags::NONE)
         ,m_pOuterElement(nullptr)
     {
@@ -1441,7 +1441,7 @@ namespace xmloff
     void OControlExport::examine()
     {
         OSL_ENSURE( ( m_nIncludeCommon == CCAFlags::NONE ) && ( m_nIncludeSpecial == 0 ) && ( m_nIncludeDatabase == DAFlags::NONE )
-                 && ( m_nIncludeEvents == 0 ) && ( m_nIncludeBindings == BAFlags::NONE),
+                 && ( m_nIncludeEvents == EAFlags::NONE ) && ( m_nIncludeBindings == BAFlags::NONE),
                  "OControlExport::examine: called me twice? Not initialized?" );
 
         // get the class id to decide which kind of element we need in the XML stream
@@ -1530,7 +1530,7 @@ namespace xmloff
                 m_nIncludeDatabase = DAFlags::DataField | DAFlags::InputRequired;
 
                 // event attributes
-                m_nIncludeEvents = EA_CONTROL_EVENTS | EA_ON_CHANGE | EA_ON_SELECT;
+                m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange | EAFlags::OnSelect;
 
                 // only text and pattern fields have a ConvertEmptyToNull property
                 if  (   ( m_nClassId == FormComponentType::TEXTFIELD )
@@ -1574,7 +1574,7 @@ namespace xmloff
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::CurrentValue | CCAFlags::Disabled |
                     CCAFlags::Printable | CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Title |
                     CCAFlags::Value;
-                m_nIncludeEvents = EA_CONTROL_EVENTS | EA_ON_CHANGE | EA_ON_SELECT;
+                m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange | EAFlags::OnSelect;
                 break;
 
             case FormComponentType::FIXEDTEXT:
@@ -1583,7 +1583,7 @@ namespace xmloff
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::Label |
                     CCAFlags::Printable | CCAFlags::Title | CCAFlags::For;
                 m_nIncludeSpecial = SCA_MULTI_LINE;
-                m_nIncludeEvents = EA_CONTROL_EVENTS;
+                m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
 
             case FormComponentType::COMBOBOX:
@@ -1594,7 +1594,7 @@ namespace xmloff
                     CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Title | CCAFlags::Value;
                 m_nIncludeSpecial = SCA_AUTOMATIC_COMPLETION;
                 m_nIncludeDatabase = DAFlags::ConvertEmpty | DAFlags::DataField | DAFlags::InputRequired | DAFlags::ListSource | DAFlags::ListSource_TYPE;
-                m_nIncludeEvents = EA_CONTROL_EVENTS | EA_ON_CHANGE | EA_ON_SELECT;
+                m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange | EAFlags::OnSelect;
                 break;
 
             case FormComponentType::LISTBOX:
@@ -1604,7 +1604,7 @@ namespace xmloff
                     CCAFlags::Printable | CCAFlags::Size | CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Title;
                 m_nIncludeSpecial = SCA_MULTIPLE;
                 m_nIncludeDatabase = DAFlags::BoundColumn | DAFlags::DataField | DAFlags::InputRequired | DAFlags::ListSource_TYPE;
-                m_nIncludeEvents = EA_CONTROL_EVENTS | EA_ON_CHANGE | EA_ON_CLICK | EA_ON_DBLCLICK;
+                m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange | EAFlags::OnClick | EAFlags::OnDoubleClick;
                 // check if we need to export the ListSource as attribute
                 {
                     // for a list box, if the ListSourceType is VALUE_LIST, no ListSource is stored, but instead
@@ -1636,7 +1636,7 @@ namespace xmloff
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::ButtonType | CCAFlags::Disabled |
                     CCAFlags::ImageData | CCAFlags::Printable | CCAFlags::TabIndex | CCAFlags::TargetFrame |
                     CCAFlags::TargetLocation | CCAFlags::Title;
-                m_nIncludeEvents = EA_CONTROL_EVENTS | EA_ON_CLICK  | EA_ON_DBLCLICK;
+                m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnClick  | EAFlags::OnDoubleClick;
                 break;
 
             case FormComponentType::CHECKBOX:
@@ -1657,7 +1657,7 @@ namespace xmloff
                 if ( m_xPropertyInfo->hasPropertyByName( PROPERTY_GROUP_NAME ) )
                     m_nIncludeSpecial |= SCA_GROUP_NAME;
                 m_nIncludeDatabase = DAFlags::DataField | DAFlags::InputRequired;
-                m_nIncludeEvents = EA_CONTROL_EVENTS | EA_ON_CHANGE;
+                m_nIncludeEvents = EAFlags::ControlEvents | EAFlags::OnChange;
                 break;
 
             case FormComponentType::GROUPBOX:
@@ -1665,7 +1665,7 @@ namespace xmloff
                 m_nIncludeCommon =
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::Label |
                     CCAFlags::Printable | CCAFlags::Title | CCAFlags::For;
-                m_nIncludeEvents = EA_CONTROL_EVENTS;
+                m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
 
             case FormComponentType::IMAGECONTROL:
@@ -1674,7 +1674,7 @@ namespace xmloff
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::ImageData |
                     CCAFlags::Printable | CCAFlags::ReadOnly | CCAFlags::Title;
                 m_nIncludeDatabase = DAFlags::DataField | DAFlags::InputRequired;
-                m_nIncludeEvents = EA_CONTROL_EVENTS;
+                m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
 
             case FormComponentType::HIDDENCONTROL:
@@ -1688,7 +1688,7 @@ namespace xmloff
                 m_nIncludeCommon =
                     CCAFlags::Name | CCAFlags::ServiceName | CCAFlags::Disabled | CCAFlags::Printable |
                     CCAFlags::TabIndex | CCAFlags::TabStop | CCAFlags::Title;
-                m_nIncludeEvents = EA_CONTROL_EVENTS;
+                m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
 
             case FormComponentType::SCROLLBAR:
@@ -1702,7 +1702,7 @@ namespace xmloff
                 if ( m_nClassId == FormComponentType::SCROLLBAR )
                     m_nIncludeSpecial |= SCA_PAGE_STEP_SIZE ;
 
-                m_nIncludeEvents = EA_CONTROL_EVENTS;
+                m_nIncludeEvents = EAFlags::ControlEvents;
                 break;
 
             default:
@@ -1720,7 +1720,7 @@ namespace xmloff
                     // at least a name should be there, 'cause without a name the control could never have been
                     // inserted into its parent container
                     // In addition, the service name is absolutely necessary to create the control upon reading.
-                m_nIncludeEvents = EA_CONTROL_EVENTS;
+                m_nIncludeEvents = EAFlags::ControlEvents;
                     // we always should be able to export events - this is not control type dependent
                 break;
         }
diff --git a/xmloff/source/forms/elementexport.hxx b/xmloff/source/forms/elementexport.hxx
index 0ef7b94..da7123d 100644
--- a/xmloff/source/forms/elementexport.hxx
+++ b/xmloff/source/forms/elementexport.hxx
@@ -97,7 +97,7 @@ namespace xmloff
         CCAFlags                m_nIncludeCommon;       // common control attributes to include
         DAFlags                 m_nIncludeDatabase;     // common database attributes to include
         sal_Int32               m_nIncludeSpecial;      // special attributes to include
-        sal_Int32               m_nIncludeEvents;       // events to include
+        EAFlags                 m_nIncludeEvents;       // events to include
         BAFlags                 m_nIncludeBindings;     // binding attributes to include
 
         SvXMLElementExport*     m_pOuterElement;        // XML element doing the concrete startElement etc. for the outer element
diff --git a/xmloff/source/forms/formattributes.hxx b/xmloff/source/forms/formattributes.hxx
index 5412e28..68048ba 100644
--- a/xmloff/source/forms/formattributes.hxx
+++ b/xmloff/source/forms/formattributes.hxx
@@ -93,17 +93,22 @@ namespace o3tl {
     template<> struct typed_flags<BAFlags> : is_typed_flags<BAFlags, 0x003f> {};
 }
 
+    // flags for event attributes
+enum class EAFlags {
+    NONE                  = 0x0000,
+    ControlEvents         = 0x0001,
+    OnChange              = 0x0002,
+    OnClick               = 0x0004,
+    OnDoubleClick         = 0x0008,
+    OnSelect              = 0x0010
+};
+namespace o3tl {
+    template<> struct typed_flags<EAFlags> : is_typed_flags<EAFlags, 0x001f> {};
+}
 
 namespace xmloff
 {
 
-    // flags for event attributes
-    #define EA_CONTROL_EVENTS           0x00000001
-    #define EA_ON_CHANGE                0x00000002
-    #define EA_ON_CLICK                 0x00000004
-    #define EA_ON_DBLCLICK              0x00000008
-    #define EA_ON_SELECT                0x00000010
-
     /// attributes in the xml tag representing a form
     enum FormAttributes
     {
commit 5b6b61b00bc850c58046cfdb59e4a919e55edab7
Author: Noel Grandin <noel at peralex.com>
Date:   Thu May 12 14:18:30 2016 +0200

    Convert BA flags to scoped enum
    
    Change-Id: I22a6f41091d69ad4ed91a745e9b7cbcebd9fad55

diff --git a/xmloff/source/forms/elementexport.cxx b/xmloff/source/forms/elementexport.cxx
index cd9b82e..844ed2e 100644
--- a/xmloff/source/forms/elementexport.cxx
+++ b/xmloff/source/forms/elementexport.cxx
@@ -238,7 +238,7 @@ namespace xmloff
         ,m_nIncludeDatabase(DAFlags::NONE)
         ,m_nIncludeSpecial(0)
         ,m_nIncludeEvents(0)
-        ,m_nIncludeBindings(0)
+        ,m_nIncludeBindings(BAFlags::NONE)
         ,m_pOuterElement(nullptr)
     {
         OSL_ENSURE(m_xProps.is(), "OControlExport::OControlExport: invalid arguments!");
@@ -902,56 +902,56 @@ namespace xmloff
     void OControlExport::exportBindingAtributes()
     {
 #if OSL_DEBUG_LEVEL > 0
-        sal_Int32 nIncludeBinding = m_nIncludeBindings;
+        BAFlags nIncludeBinding = m_nIncludeBindings;
 #endif
 
-        if ( m_nIncludeBindings & BA_LINKED_CELL )
+        if ( m_nIncludeBindings & BAFlags::LinkedCell )
         {
-            exportCellBindingAttributes( ( m_nIncludeBindings & BA_LIST_LINKING_TYPE ) != 0 );
+            exportCellBindingAttributes( bool(m_nIncludeBindings & BAFlags::ListLinkingType) );
         #if OSL_DEBUG_LEVEL > 0
             //  reset the bit for later checking
-            nIncludeBinding = nIncludeBinding & ~( BA_LINKED_CELL | BA_LIST_LINKING_TYPE );
+            nIncludeBinding = nIncludeBinding & ~BAFlags( BAFlags::LinkedCell | BAFlags::ListLinkingType );
         #endif
         }
 
-        if ( m_nIncludeBindings & BA_LIST_CELL_RANGE )
+        if ( m_nIncludeBindings & BAFlags::ListCellRange )
         {
             exportCellListSourceRange();
         #if OSL_DEBUG_LEVEL > 0
             //  reset the bit for later checking
-            nIncludeBinding = nIncludeBinding & ~BA_LIST_CELL_RANGE;
+            nIncludeBinding = nIncludeBinding & ~BAFlags::ListCellRange;
         #endif
         }
 
-        if ( m_nIncludeBindings & BA_XFORMS_BIND )
+        if ( m_nIncludeBindings & BAFlags::XFormsBind )
         {
             exportXFormsBindAttributes();
         #if OSL_DEBUG_LEVEL > 0
             //  reset the bit for later checking
-            nIncludeBinding = nIncludeBinding & ~BA_XFORMS_BIND;
+            nIncludeBinding = nIncludeBinding & ~BAFlags::XFormsBind;
         #endif
         }
 
-        if ( m_nIncludeBindings & BA_XFORMS_LISTBIND )
+        if ( m_nIncludeBindings & BAFlags::XFormsListBind )
         {
             exportXFormsListAttributes();
         #if OSL_DEBUG_LEVEL > 0
             //  reset the bit for later checking
-            nIncludeBinding = nIncludeBinding & ~BA_XFORMS_LISTBIND;
+            nIncludeBinding = nIncludeBinding & ~BAFlags::XFormsListBind;
         #endif
         }
 
-        if ( m_nIncludeBindings & BA_XFORMS_SUBMISSION )
+        if ( m_nIncludeBindings & BAFlags::XFormsSubmission )
         {
             exportXFormsSubmissionAttributes();
         #if OSL_DEBUG_LEVEL > 0
             //  reset the bit for later checking
-            nIncludeBinding = nIncludeBinding & ~BA_XFORMS_SUBMISSION;
+            nIncludeBinding = nIncludeBinding & ~BAFlags::XFormsSubmission;
         #endif
         }
 
         #if OSL_DEBUG_LEVEL > 0
-        OSL_ENSURE( 0 == nIncludeBinding,
+        OSL_ENSURE( BAFlags::NONE == nIncludeBinding,
             "OControlExport::exportBindingAtributes: forgot some flags!");
             // in the debug version, we should have removed every bit we handled from the mask, so it should
             // be 0 now ...
@@ -1441,7 +1441,7 @@ namespace xmloff
     void OControlExport::examine()
     {
         OSL_ENSURE( ( m_nIncludeCommon == CCAFlags::NONE ) && ( m_nIncludeSpecial == 0 ) && ( m_nIncludeDatabase == DAFlags::NONE )
-                 && ( m_nIncludeEvents == 0 ) && ( m_nIncludeBindings == 0),
+                 && ( m_nIncludeEvents == 0 ) && ( m_nIncludeBindings == BAFlags::NONE),
                  "OControlExport::examine: called me twice? Not initialized?" );
 
         // get the class id to decide which kind of element we need in the XML stream
@@ -1735,35 +1735,35 @@ namespace xmloff
             {
                 if ( FormCellBindingHelper::isCellBinding( aHelper.getCurrentBinding( ) ) )
                 {
-                    m_nIncludeBindings |= BA_LINKED_CELL;
+                    m_nIncludeBindings |= BAFlags::LinkedCell;
                     if ( m_nClassId == FormComponentType::LISTBOX )
-                        m_nIncludeBindings |= BA_LIST_LINKING_TYPE;
+                        m_nIncludeBindings |= BAFlags::ListLinkingType;
                 }
             }
 
             // is it a list-like control which uses a calc cell range as list source?
             {
                 if ( FormCellBindingHelper::isCellRangeListSource( aHelper.getCurrentListSource( ) ) )
-                    m_nIncludeBindings |= BA_LIST_CELL_RANGE;
+                    m_nIncludeBindings |= BAFlags::ListCellRange;
             }
         }
 
         // is control bound to XForms?
         if( !getXFormsBindName( m_xProps ).isEmpty() )
         {
-            m_nIncludeBindings |= BA_XFORMS_BIND;
+            m_nIncludeBindings |= BAFlags::XFormsBind;
         }
 
         // is (list-)control bound to XForms list?
         if( !getXFormsListBindName( m_xProps ).isEmpty() )
         {
-            m_nIncludeBindings |= BA_XFORMS_LISTBIND;
+            m_nIncludeBindings |= BAFlags::XFormsListBind;
         }
 
         // does the control have an XForms submission?
         if( !getXFormsSubmissionName( m_xProps ).isEmpty() )
         {
-            m_nIncludeBindings |= BA_XFORMS_SUBMISSION;
+            m_nIncludeBindings |= BAFlags::XFormsSubmission;
         }
     }
 
@@ -1777,8 +1777,8 @@ namespace xmloff
             if ( xBinding.is() )
             {
                 AddAttribute(
-                    OAttributeMetaData::getBindingAttributeNamespace( BA_LINKED_CELL ),
-                    OAttributeMetaData::getBindingAttributeName( BA_LINKED_CELL ),
+                    OAttributeMetaData::getBindingAttributeNamespace( BAFlags::LinkedCell ),
+                    OAttributeMetaData::getBindingAttributeName( BAFlags::LinkedCell ),
                     aHelper.getStringAddressFromCellBinding( xBinding )
                 );
 
@@ -1794,8 +1794,8 @@ namespace xmloff
                     );
 
                     AddAttribute(
-                        OAttributeMetaData::getBindingAttributeNamespace( BA_LIST_LINKING_TYPE ),
-                        OAttributeMetaData::getBindingAttributeName( BA_LIST_LINKING_TYPE ),
+                        OAttributeMetaData::getBindingAttributeNamespace( BAFlags::ListLinkingType ),
+                        OAttributeMetaData::getBindingAttributeName( BAFlags::ListLinkingType ),
                         sBuffer.makeStringAndClear()
                     );
                 }
@@ -1838,8 +1838,8 @@ namespace xmloff
                 FormCellBindingHelper aHelper( m_xProps, nullptr );
 
                 AddAttribute(
-                    OAttributeMetaData::getBindingAttributeNamespace( BA_LIST_CELL_RANGE ),
-                    OAttributeMetaData::getBindingAttributeName( BA_LIST_CELL_RANGE ),
+                    OAttributeMetaData::getBindingAttributeNamespace( BAFlags::ListCellRange ),
+                    OAttributeMetaData::getBindingAttributeName( BAFlags::ListCellRange ),
                     aHelper.getStringAddressFromCellListSource( xSource )
                 );
             }
diff --git a/xmloff/source/forms/elementexport.hxx b/xmloff/source/forms/elementexport.hxx
index 3423de0..0ef7b94 100644
--- a/xmloff/source/forms/elementexport.hxx
+++ b/xmloff/source/forms/elementexport.hxx
@@ -98,7 +98,7 @@ namespace xmloff
         DAFlags                 m_nIncludeDatabase;     // common database attributes to include
         sal_Int32               m_nIncludeSpecial;      // special attributes to include
         sal_Int32               m_nIncludeEvents;       // events to include
-        sal_Int32               m_nIncludeBindings;     // binding attributes to include
+        BAFlags                 m_nIncludeBindings;     // binding attributes to include
 
         SvXMLElementExport*     m_pOuterElement;        // XML element doing the concrete startElement etc. for the outer element
 
diff --git a/xmloff/source/forms/elementimport.cxx b/xmloff/source/forms/elementimport.cxx
index 22fe2f1..32cd55a 100644
--- a/xmloff/source/forms/elementimport.cxx
+++ b/xmloff/source/forms/elementimport.cxx
@@ -701,7 +701,7 @@ namespace xmloff
 
     bool OControlImport::handleAttribute(sal_uInt16 _nNamespaceKey, const OUString& _rLocalName, const OUString& _rValue)
     {
-        static const sal_Char* pLinkedCellAttributeName = OAttributeMetaData::getBindingAttributeName(BA_LINKED_CELL);
+        static const sal_Char* pLinkedCellAttributeName = OAttributeMetaData::getBindingAttributeName(BAFlags::LinkedCell);
 
         if (IsXMLToken(_rLocalName, XML_ID))
         {   // it's the control id
@@ -1669,13 +1669,13 @@ namespace xmloff
             return true;
         }
 
-        if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BA_LIST_CELL_RANGE ) ) )
+        if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BAFlags::ListCellRange ) ) )
         {
             m_sCellListSource = _rValue;
             return true;
         }
 
-        if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BA_LIST_LINKING_TYPE ) ) )
+        if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BAFlags::ListLinkingType ) ) )
         {
             sal_Int16 nLinkageType = 0;
             PropertyConversion::convertString(
diff --git a/xmloff/source/forms/formattributes.cxx b/xmloff/source/forms/formattributes.cxx
index b13cd7c..4788a3b 100644
--- a/xmloff/source/forms/formattributes.cxx
+++ b/xmloff/source/forms/formattributes.cxx
@@ -140,13 +140,13 @@ namespace xmloff
         return "";
     }
 
-    const sal_Char* OAttributeMetaData::getBindingAttributeName(sal_Int32 _nId)
+    const sal_Char* OAttributeMetaData::getBindingAttributeName(BAFlags _nId)
     {
         switch (_nId)
         {
-            case BA_LINKED_CELL:       return "linked-cell";
-            case BA_LIST_LINKING_TYPE: return "list-linkage-type";
-            case BA_LIST_CELL_RANGE:   return "source-cell-range";
+            case BAFlags::LinkedCell:       return "linked-cell";
+            case BAFlags::ListLinkingType: return "list-linkage-type";
+            case BAFlags::ListCellRange:   return "source-cell-range";
             default:
                 OSL_FAIL("OAttributeMetaData::getBindingAttributeName: invalid id (maybe you or-ed two flags?)!");
         }
diff --git a/xmloff/source/forms/formattributes.hxx b/xmloff/source/forms/formattributes.hxx
index 48be949..5412e28 100644
--- a/xmloff/source/forms/formattributes.hxx
+++ b/xmloff/source/forms/formattributes.hxx
@@ -79,17 +79,24 @@ namespace o3tl {
     template<> struct typed_flags<DAFlags> : is_typed_flags<DAFlags, 0x003f> {};
 }
 
+    // flags for binding related control attributes
+enum class BAFlags {
+    NONE                  = 0x0000,
+    LinkedCell            = 0x0001,
+    ListLinkingType       = 0x0002,
+    ListCellRange         = 0x0004,
+    XFormsBind            = 0x0008,
+    XFormsListBind        = 0x0010,
+    XFormsSubmission      = 0x0020
+};
+namespace o3tl {
+    template<> struct typed_flags<BAFlags> : is_typed_flags<BAFlags, 0x003f> {};
+}
+
+
 namespace xmloff
 {
 
-    // flags for binding related control attributes
-    #define BA_LINKED_CELL              0x00000001
-    #define BA_LIST_LINKING_TYPE        0x00000002
-    #define BA_LIST_CELL_RANGE          0x00000004
-    #define BA_XFORMS_BIND              0x00000008
-    #define BA_XFORMS_LISTBIND          0x00000010
-    #define BA_XFORMS_SUBMISSION        0x00000020
-
     // flags for event attributes
     #define EA_CONTROL_EVENTS           0x00000001
     #define EA_ON_CHANGE                0x00000002
@@ -211,13 +218,13 @@ namespace xmloff
             @param _nId
                 the id of the attribute. Has to be one of the BA_* constants.
         */
-        static const sal_Char* getBindingAttributeName(sal_Int32 _nId);
+        static const sal_Char* getBindingAttributeName(BAFlags _nId);
 
         /** calculates the xml namespace key to use for a binding attribute.
             @param _nId
                 the id of the attribute. Has to be one of the BA_* constants.
         */
-        static inline sal_uInt16 getBindingAttributeNamespace(sal_Int32 )
+        static inline sal_uInt16 getBindingAttributeNamespace(BAFlags )
         {
             // nothing special here
             return XML_NAMESPACE_FORM;


More information about the Libreoffice-commits mailing list