File: OdfReaderInternals.h

package info (click to toggle)
calligra 1%3A25.04.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 309,164 kB
  • sloc: cpp: 667,890; xml: 126,105; perl: 2,724; python: 2,497; yacc: 1,817; ansic: 1,326; sh: 1,223; lex: 1,107; javascript: 495; makefile: 24
file content (57 lines) | stat: -rw-r--r-- 5,018 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* This file is part of the KDE project

   SPDX-FileCopyrightText: 2012-2014 Inge Wallin <inge@lysator.liu.se>

   SPDX-License-Identifier: LGPL-2.0-or-later
*/

#ifndef ODFREADERINTERNALS_H
#define ODFREADERINTERNALS_H

// ----------------------------------------------------------------
//                     Reader functions

#define DECLARE_READER_FUNCTION(name) void readElement##name(KoXmlStreamReader &reader)

#define IMPLEMENT_READER_FUNCTION_START(readername, name)                                                                                                      \
    void readername::readElement##name(KoXmlStreamReader &reader)                                                                                              \
    {                                                                                                                                                          \
        DEBUGSTART();                                                                                                                                          \
        m_backend->element##name(reader, m_context);

#define IMPLEMENT_READER_FUNCTION_END(name)                                                                                                                    \
    m_backend->element##name(reader, m_context);                                                                                                               \
    DEBUGEND();                                                                                                                                                \
    }

#define IMPLEMENT_READER_FUNCTION_NO_CHILDREN(readername, name)                                                                                                \
    IMPLEMENT_READER_FUNCTION_START(readername, name)                                                                                                          \
    reader.skipCurrentElement();                                                                                                                               \
    IMPLEMENT_READER_FUNCTION_END(name)

#define IMPLEMENT_READER_FUNCTION_ONE_CHILD(readername, name, element, childfunction)                                                                          \
    IMPLEMENT_READER_FUNCTION_START(readername, name)                                                                                                          \
    while (reader.readNextStartElement()) {                                                                                                                    \
        QString tagName = reader.qualifiedName().toString();                                                                                                   \
                                                                                                                                                               \
        if (tagName == element) {                                                                                                                              \
            readElement##childfunction(reader);                                                                                                                \
        } else {                                                                                                                                               \
            reader.skipCurrentElement();                                                                                                                       \
        }                                                                                                                                                      \
    }                                                                                                                                                          \
    IMPLEMENT_READER_FUNCTION_END(name)

// ----------------------------------------------------------------
//                     Backend functions

#define DECLARE_BACKEND_FUNCTION(name) virtual void element##name(KoXmlStreamReader &reader, OdfReaderContext *context)

#define IMPLEMENT_BACKEND_FUNCTION(readername, name)                                                                                                           \
    void readername##Backend::element##name(KoXmlStreamReader &reader, OdfReaderContext *context)                                                              \
    {                                                                                                                                                          \
        Q_UNUSED(reader);                                                                                                                                      \
        Q_UNUSED(context);                                                                                                                                     \
    }

#endif // ODFREADERINTERNALS_H