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 (const 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 61 of file XMLPropertyBackpatcher.hxx.

Member Typedef Documentation

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

backpatch list type

Definition at line 69 of file XMLPropertyBackpatcher.hxx.

Constructor & Destructor Documentation

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

Definition at line 35 of file XMLPropertyBackpatcher.cxx.

template<class A >
XMLPropertyBackpatcher< A >::~XMLPropertyBackpatcher ( )

Definition at line 43 of file XMLPropertyBackpatcher.cxx.

Member Function Documentation

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 49 of file XMLPropertyBackpatcher.cxx.

References Any.

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 79 of file XMLPropertyBackpatcher.cxx.

Member Data Documentation

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

backpatch list for unresolved IDs

Definition at line 72 of file XMLPropertyBackpatcher.hxx.

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

mapping of names -> IDs

Definition at line 75 of file XMLPropertyBackpatcher.hxx.

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

name of property that gets set or backpatched

Definition at line 65 of file XMLPropertyBackpatcher.hxx.


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