LibreOffice Module xmloff (master) 1
Public Member Functions | Private Types | Private Attributes | List of all members
XMLPropertyBackpatcher< A > Class Template Reference

This class maintains an OUString->sal_Int16 mapping for cases in which an XPropertySet needs to be filled with values that are not yet known. More...

#include <XMLPropertyBackpatcher.hxx>

Public Member Functions

 XMLPropertyBackpatcher (OUString sPropertyName)
 
 ~XMLPropertyBackpatcher ()
 
void ResolveId (const OUString &sName, A aValue)
 resolve a known ID. More...
 
void SetProperty (const css::uno::Reference< css::beans::XPropertySet > &xPropSet, const OUString &sName)
 Set property with the proper value for this name. More...
 

Private Types

typedef ::std::vector< css::uno::Reference< css::beans::XPropertySet > > BackpatchListType
 backpatch list type More...
 

Private Attributes

OUString sPropertyName
 name of property that gets set or backpatched More...
 
::std::map< const OUString, std::unique_ptr< BackpatchListType > > aBackpatchListMap
 backpatch list for unresolved IDs More...
 
::std::map< const OUString, AaIDMap
 mapping of names -> IDs More...
 

Detailed Description

template<class A>
class XMLPropertyBackpatcher< A >

This class maintains an OUString->sal_Int16 mapping for cases in which an XPropertySet needs to be filled with values that are not yet known.

A good example for appropriate use are footnotes and references to footnotes. Internally, the LibreOffice API numbers footnotes, and references to footnotes refer to that internal numbering. In the XML file format, these numbers are replaced with name strings. Now if during import of a document a reference to a footnote is encountered, two things can happen: 1) The footnote already appeared in the document. In this case the name is already known and the proper ID can be requested from the footnote. 2) The footnote will appear later in the document. In this case the ID is not yet known, and the reference-ID property of the reference cannot be determined. Hence, the reference has to be stored and the ID needs to bet set later, when the footnote is eventually found in the document.

This class simplifies this process: If the footnote is found, ResolveId with the XML name and the ID is called. When a reference is encountered, SetProperty gets called with the reference's XPropertySet and the XML name. All remaining tasks are handled by the class.

Definition at line 60 of file XMLPropertyBackpatcher.hxx.

Member Typedef Documentation

◆ BackpatchListType

template<class A >
typedef ::std::vector< css::uno::Reference<css::beans::XPropertySet> > XMLPropertyBackpatcher< A >::BackpatchListType
private

backpatch list type

Definition at line 68 of file XMLPropertyBackpatcher.hxx.

Constructor & Destructor Documentation

◆ XMLPropertyBackpatcher()

template<class A >
XMLPropertyBackpatcher< A >::XMLPropertyBackpatcher ( OUString  sPropertyName)
explicit

Definition at line 36 of file XMLPropertyBackpatcher.cxx.

◆ ~XMLPropertyBackpatcher()

Definition at line 44 of file XMLPropertyBackpatcher.cxx.

Member Function Documentation

◆ ResolveId()

template<class A >
void XMLPropertyBackpatcher< A >::ResolveId ( const OUString &  sName,
A  aValue 
)

resolve a known ID.

Call this as soon as the value for a particular name is known.

Definition at line 50 of file XMLPropertyBackpatcher.cxx.

References Any, and sName.

◆ SetProperty()

template<class A >
void XMLPropertyBackpatcher< A >::SetProperty ( const css::uno::Reference< css::beans::XPropertySet > &  xPropSet,
const OUString &  sName 
)

Set property with the proper value for this name.

If the value is not yet known, store the XPropertySet in the backpatch list. Use this whenever the value should be set, even if it is not yet known.

Definition at line 80 of file XMLPropertyBackpatcher.cxx.

References sName.

Member Data Documentation

◆ aBackpatchListMap

template<class A >
::std::map<const OUString, std::unique_ptr<BackpatchListType> > XMLPropertyBackpatcher< A >::aBackpatchListMap
private

backpatch list for unresolved IDs

Definition at line 71 of file XMLPropertyBackpatcher.hxx.

◆ aIDMap

template<class A >
::std::map<const OUString, A> XMLPropertyBackpatcher< A >::aIDMap
private

mapping of names -> IDs

Definition at line 74 of file XMLPropertyBackpatcher.hxx.

◆ sPropertyName

template<class A >
OUString XMLPropertyBackpatcher< A >::sPropertyName
private

name of property that gets set or backpatched

Definition at line 64 of file XMLPropertyBackpatcher.hxx.


The documentation for this class was generated from the following files: