Coverage Report

Created: 2025-07-07 10:01

/src/libreoffice/include/sax/tools/documenthandleradapter.hxx
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3
/*
4
 * This file is part of the LibreOffice project.
5
 *
6
 * This Source Code Form is subject to the terms of the Mozilla Public
7
 * License, v. 2.0. If a copy of the MPL was not distributed with this
8
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
 */
10
11
#ifndef INCLUDED_SAX_TOOLS_DOCUMENTHANDLERADAPTER_HXX
12
#define INCLUDED_SAX_TOOLS_DOCUMENTHANDLERADAPTER_HXX
13
14
#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
15
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
16
17
namespace sax
18
{
19
    /**
20
     * DocumentHandlerAdapter provides a base class for simple decorators to XDocumentHandlers.
21
     * It forwards all method calls to a delegate. An inheriting class only needs to override the
22
     * methods it actually wants to modify.
23
     *
24
     * See filters/source/odfflatxml/FlatXml.cxx for an example.
25
     */
26
    class DocumentHandlerAdapter : public css::xml::sax::XDocumentHandler
27
    {
28
    public:
29
        // XDocumentHandler
30
        virtual void SAL_CALL
31
        startDocument() override
32
0
        {
33
0
            m_handler->startDocument();
34
0
        }
35
36
        virtual void SAL_CALL
37
        endDocument() override
38
0
        {
39
0
            m_handler->endDocument();
40
0
        }
41
42
        virtual void SAL_CALL
43
        startElement(const OUString& aName,
44
                const css::uno::Reference< css::xml::sax::XAttributeList > & xAttribs) override
45
0
        {
46
0
            m_handler->startElement(aName, xAttribs);
47
0
        }
48
49
        virtual void SAL_CALL
50
        endElement(const OUString& aName) override
51
0
        {
52
0
            m_handler->endElement(aName);
53
0
        }
54
55
        virtual void SAL_CALL
56
        characters(const OUString& aChars) override
57
0
        {
58
0
            m_handler->characters(aChars);
59
0
        }
60
61
        virtual void SAL_CALL
62
        ignorableWhitespace(const OUString& aWhitespaces) override
63
0
        {
64
0
            m_handler->ignorableWhitespace(aWhitespaces);
65
0
        }
66
        virtual void SAL_CALL
67
        processingInstruction(const OUString& aTarget, const OUString& aData) override
68
0
        {
69
0
            m_handler->processingInstruction(aTarget, aData);
70
0
        }
71
        virtual void SAL_CALL
72
        setDocumentLocator(const css::uno::Reference< css::xml::sax::XLocator > & xLocator) override
73
0
        {
74
0
            m_handler->setDocumentLocator(xLocator);
75
0
        }
76
        DocumentHandlerAdapter() :
77
5
            m_handler(css::uno::Reference< css::xml::sax::XDocumentHandler > (nullptr, css::uno::UNO_QUERY))
78
5
        {
79
5
        }
80
        ;
81
82
    protected:
83
        void
84
        setDelegate(const css::uno::Reference< css::xml::sax::XDocumentHandler >& delegate)
85
0
        {
86
0
            m_handler = delegate;
87
0
        }
88
        const css::uno::Reference< css::xml::sax::XDocumentHandler >&
89
        getDelegate() const
90
0
        {
91
0
            return m_handler;
92
0
        }
93
        virtual
94
        ~DocumentHandlerAdapter()
95
0
        {
96
97
0
        }
98
99
    private:
100
        css::uno::Reference< css::xml::sax::XDocumentHandler > m_handler;
101
102
    };
103
104
    /**
105
     * ExtendedDocumentHandlerAdapter provides a base class for simple decorators to XExtendedDocumentHandlers.
106
     * It forwards all method calls to a delegate. An inheriting class only needs to override the
107
     * methods it actually wants to modify.
108
     */
109
    class ExtendedDocumentHandlerAdapter : public css::xml::sax::XExtendedDocumentHandler
110
111
    {
112
113
    public:
114
        // XDocumentHandler
115
        virtual void SAL_CALL
116
        startDocument() override
117
0
        {
118
0
            m_handler->startDocument();
119
0
        }
120
121
        virtual void SAL_CALL
122
        endDocument() override
123
0
        {
124
0
            m_handler->endDocument();
125
0
        }
126
127
        virtual void SAL_CALL
128
        startElement(const OUString& aName,
129
                const css::uno::Reference< css::xml::sax::XAttributeList > & xAttribs) override
130
0
        {
131
0
            m_handler->startElement(aName, xAttribs);
132
0
        }
133
134
        virtual void SAL_CALL
135
        endElement(const OUString& aName) override
136
0
        {
137
0
            m_handler->endElement(aName);
138
0
        }
139
140
        virtual void SAL_CALL
141
        characters(const OUString& aChars) override
142
0
        {
143
0
            m_handler->characters(aChars);
144
0
        }
145
146
        virtual void SAL_CALL
147
        ignorableWhitespace(const OUString& aWhitespaces) override
148
0
        {
149
0
            m_handler->ignorableWhitespace(aWhitespaces);
150
0
        }
151
        virtual void SAL_CALL
152
        processingInstruction(const OUString& aTarget, const OUString& aData) override
153
0
        {
154
0
            m_handler->processingInstruction(aTarget, aData);
155
0
        }
156
        virtual void SAL_CALL
157
        setDocumentLocator(const css::uno::Reference< css::xml::sax::XLocator > & xLocator) override
158
0
        {
159
0
            m_handler->setDocumentLocator(xLocator);
160
0
        }
161
        // XExtendedDocumentHandler
162
        virtual void SAL_CALL
163
        startCDATA() override
164
0
        {
165
0
            m_handler->startCDATA();
166
0
        }
167
        virtual void SAL_CALL
168
        endCDATA() override
169
0
        {
170
0
            m_handler->endCDATA();
171
0
        }
172
        virtual void SAL_CALL
173
        comment(const OUString& sComment) override
174
0
        {
175
0
            m_handler->comment(sComment);
176
0
        }
177
        virtual void SAL_CALL
178
        unknown(const OUString& sString) override
179
0
        {
180
0
            m_handler->unknown(sString);
181
0
        }
182
        virtual void SAL_CALL
183
        allowLineBreak() override
184
0
        {
185
0
            m_handler->allowLineBreak();
186
0
        }
187
    protected:
188
        ExtendedDocumentHandlerAdapter() :
189
            m_handler(css::uno::Reference< css::xml::sax::XExtendedDocumentHandler > (nullptr, css::uno::UNO_QUERY))
190
0
        {
191
0
        }
192
193
        void
194
        setDelegate(const css::uno::Reference< css::xml::sax::XExtendedDocumentHandler >& delegate)
195
0
        {
196
0
            m_handler = delegate;
197
0
        }
198
        const css::uno::Reference< css::xml::sax::XExtendedDocumentHandler >&
199
        getDelegate() const
200
0
        {
201
0
            return m_handler;
202
0
        }
203
        virtual
204
        ~ExtendedDocumentHandlerAdapter()
205
0
        {
206
0
207
0
        }
208
209
    private:
210
        css::uno::Reference< css::xml::sax::XExtendedDocumentHandler > m_handler;
211
    };
212
}
213
#endif // INCLUDED_SAX_TOOLS_DOCUMENTHANDLERADAPTER_HXX
214
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */