File indexing completed on 2024-05-12 16:29:19

0001 /* This file is part of the KDE project
0002 
0003    Copyright (C) 2012-2014 Inge Wallin            <inge@lysator.liu.se>
0004 
0005    This library is free software; you can redistribute it and/or
0006    modify it under the terms of the GNU Library General Public
0007    License as published by the Free Software Foundation; either
0008    version 2 of the License, or (at your option) any later version.
0009 
0010    This library is distributed in the hope that it will be useful,
0011    but WITHOUT ANY WARRANTY; without even the implied warranty of
0012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013    Library General Public License for more details.
0014 
0015    You should have received a copy of the GNU Library General Public License
0016    along with this library; see the file COPYING.LIB.  If not, write to
0017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018    Boston, MA 02110-1301, USA.
0019 */
0020 
0021 #ifndef ODFREADERINTERNALS_H
0022 #define ODFREADERINTERNALS_H
0023 
0024 
0025 // ----------------------------------------------------------------
0026 //                     Reader functions
0027 
0028 
0029 #define DECLARE_READER_FUNCTION(name) \
0030     void readElement##name(KoXmlStreamReader &reader)
0031 
0032 #define IMPLEMENT_READER_FUNCTION_START(readername, name)            \
0033 void readername::readElement##name(KoXmlStreamReader &reader)        \
0034 {                                                                    \
0035     DEBUGSTART();                                                    \
0036     m_backend->element##name(reader, m_context);
0037 
0038 #define IMPLEMENT_READER_FUNCTION_END(name)                          \
0039     m_backend->element##name(reader, m_context);                     \
0040     DEBUGEND();                                                      \
0041 }
0042 
0043 #define IMPLEMENT_READER_FUNCTION_NO_CHILDREN(readername, name)      \
0044 IMPLEMENT_READER_FUNCTION_START(readername, name)                    \
0045     reader.skipCurrentElement();                                     \
0046 IMPLEMENT_READER_FUNCTION_END(name)
0047 
0048 #define IMPLEMENT_READER_FUNCTION_ONE_CHILD(readername, name, element, childfunction)   \
0049 IMPLEMENT_READER_FUNCTION_START(readername, name)                    \
0050     while (reader.readNextStartElement()) {                          \
0051         QString tagName = reader.qualifiedName().toString();         \
0052                                                                      \
0053         if (tagName == element) {                                    \
0054         readElement##childfunction(reader);                      \
0055         }                                                            \
0056         else {                                                       \
0057             reader.skipCurrentElement();                             \
0058         }                                                            \
0059     }                                                                \
0060 IMPLEMENT_READER_FUNCTION_END(name)
0061 
0062 
0063 // ----------------------------------------------------------------
0064 //                     Backend functions
0065 
0066 
0067 #define DECLARE_BACKEND_FUNCTION(name)                               \
0068     virtual void element##name(KoXmlStreamReader &reader, OdfReaderContext *context)
0069 
0070 #define IMPLEMENT_BACKEND_FUNCTION(readername, name)                 \
0071 void readername##Backend::element##name(KoXmlStreamReader &reader,   \
0072                 OdfReaderContext *context)       \
0073 {                                                                    \
0074     Q_UNUSED(reader);                                                \
0075     Q_UNUSED(context);                           \
0076 }
0077 
0078 
0079 #endif // ODFREADERINTERNALS_H