File indexing completed on 2025-01-19 10:49:27

0001 /* This file is part of the KDE project
0002 
0003    SPDX-FileCopyrightText: 2012-2014 Inge Wallin <inge@lysator.liu.se>
0004 
0005    SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef ODFREADERINTERNALS_H
0009 #define ODFREADERINTERNALS_H
0010 
0011 
0012 // ----------------------------------------------------------------
0013 //                     Reader functions
0014 
0015 
0016 #define DECLARE_READER_FUNCTION(name) \
0017     void readElement##name(KoXmlStreamReader &reader)
0018 
0019 #define IMPLEMENT_READER_FUNCTION_START(readername, name)            \
0020 void readername::readElement##name(KoXmlStreamReader &reader)        \
0021 {                                                                    \
0022     DEBUGSTART();                                                    \
0023     m_backend->element##name(reader, m_context);
0024 
0025 #define IMPLEMENT_READER_FUNCTION_END(name)                          \
0026     m_backend->element##name(reader, m_context);                     \
0027     DEBUGEND();                                                      \
0028 }
0029 
0030 #define IMPLEMENT_READER_FUNCTION_NO_CHILDREN(readername, name)      \
0031 IMPLEMENT_READER_FUNCTION_START(readername, name)                    \
0032     reader.skipCurrentElement();                                     \
0033 IMPLEMENT_READER_FUNCTION_END(name)
0034 
0035 #define IMPLEMENT_READER_FUNCTION_ONE_CHILD(readername, name, element, childfunction)   \
0036 IMPLEMENT_READER_FUNCTION_START(readername, name)                    \
0037     while (reader.readNextStartElement()) {                          \
0038         QString tagName = reader.qualifiedName().toString();         \
0039                                                                      \
0040         if (tagName == element) {                                    \
0041         readElement##childfunction(reader);                      \
0042         }                                                            \
0043         else {                                                       \
0044             reader.skipCurrentElement();                             \
0045         }                                                            \
0046     }                                                                \
0047 IMPLEMENT_READER_FUNCTION_END(name)
0048 
0049 
0050 // ----------------------------------------------------------------
0051 //                     Backend functions
0052 
0053 
0054 #define DECLARE_BACKEND_FUNCTION(name)                               \
0055     virtual void element##name(KoXmlStreamReader &reader, OdfReaderContext *context)
0056 
0057 #define IMPLEMENT_BACKEND_FUNCTION(readername, name)                 \
0058 void readername##Backend::element##name(KoXmlStreamReader &reader,   \
0059                 OdfReaderContext *context)       \
0060 {                                                                    \
0061     Q_UNUSED(reader);                                                \
0062     Q_UNUSED(context);                           \
0063 }
0064 
0065 
0066 #endif // ODFREADERINTERNALS_H