30#include <osl/diagnose.h>
33#include <unordered_map>
40#define FORM_SINGLE_PROPERTY( id, att ) \
41 PropertyDescription( PROPERTY_##id, XML_NAMESPACE_FORM, att, &FormHandlerFactory::getFormPropertyHandler, PID_##id )
46 const PropertyDescription* lcl_getPropertyMetaData()
48 static const PropertyDescription s_propertyMetaData[] =
61 return s_propertyMetaData;
74 typedef std::unordered_map< OUString, const PropertyDescription* > DescriptionsByName;
76 const DescriptionsByName& lcl_getPropertyDescriptions()
79 static DescriptionsByName s_propertyDescriptionsByName;
80 if ( s_propertyDescriptionsByName.empty() )
82 const PropertyDescription* desc = lcl_getPropertyMetaData();
83 while ( !desc->propertyName.isEmpty() )
85 s_propertyDescriptionsByName[ desc->propertyName ] = desc;
89 return s_propertyDescriptionsByName;
92 typedef std::unordered_map< OUString, XMLTokenEnum > ReverseTokenLookup;
96 size_t operator()(
const AttributeDescription& i_attribute )
const
105 typedef std::unordered_map< AttributeDescription, PropertyGroups, AttributeHash > AttributesWithoutGroup;
107 const AttributesWithoutGroup& lcl_getAttributesWithoutGroups()
110 static AttributesWithoutGroup s_attributesWithoutGroup;
111 if ( s_attributesWithoutGroup.empty() )
113 const PropertyDescription* desc = lcl_getPropertyMetaData();
114 while ( !desc->propertyName.isEmpty() )
117 singleElementList.push_back( desc );
119 s_attributesWithoutGroup[ desc->attribute ].push_back( singleElementList );
123 return s_attributesWithoutGroup;
129 const DescriptionsByName& rAllDescriptions( lcl_getPropertyDescriptions() );
130 DescriptionsByName::const_iterator
pos = rAllDescriptions.find( i_propertyName );
131 if (
pos != rAllDescriptions.end() )
140 const AttributesWithoutGroup& attributesWithoutGroups( lcl_getAttributesWithoutGroups() );
141 const AttributesWithoutGroup::const_iterator
pos = attributesWithoutGroups.find( i_attribute );
142 if (
pos != attributesWithoutGroups.end() )
143 o_propertyGroups =
pos->second;
#define DBG_TESTSOLARMUTEX()
std::enable_if_t<(sizeof(N)==4)> hash_combine(N &nSeed, T const *pValue, size_t nCount)
Handling of tokens in XML:
XMLTokenEnum
The enumeration of all XML tokens.
::std::vector< PropertyDescriptionList > PropertyGroups
::std::vector< const PropertyDescription * > PropertyDescriptionList
constexpr sal_Int32 TOKEN_MASK
constexpr size_t NMSP_SHIFT