LibreOffice Module xmloff (master) 1
|
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, A > | aIDMap |
mapping of names -> IDs More... | |
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.
|
private |
backpatch list type
Definition at line 68 of file XMLPropertyBackpatcher.hxx.
|
explicit |
Definition at line 36 of file XMLPropertyBackpatcher.cxx.
XMLPropertyBackpatcher< A >::~XMLPropertyBackpatcher |
Definition at line 44 of file XMLPropertyBackpatcher.cxx.
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.
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.
|
private |
backpatch list for unresolved IDs
Definition at line 71 of file XMLPropertyBackpatcher.hxx.
|
private |
mapping of names -> IDs
Definition at line 74 of file XMLPropertyBackpatcher.hxx.
|
private |
name of property that gets set or backpatched
Definition at line 64 of file XMLPropertyBackpatcher.hxx.