qhpxmlwriter.h 1.96 KB
Newer Older
Dimitri van Heesch's avatar
Dimitri van Heesch committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/*
 * Copyright (C) 2008 by Sebastian Pipping.
 * Copyright (C) 2008 Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby 
 * granted. No representations are made about the suitability of this software 
 * for any purpose. It is provided "as is" without express or implied warranty.
 * See the GNU General Public License for more details.
 *
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
 *
 * Sebastian Pipping <sebastian@pipping.org>
 */

#ifndef QHPXMLWRITER_H
#define QHPXMLWRITER_H

#include <qstring.h>
21
#include "ftextstream.h"
Dimitri van Heesch's avatar
Dimitri van Heesch committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

class QFile;

class QhpXmlWriter
{
  public:
    QhpXmlWriter();
   ~QhpXmlWriter();

    void setIndentLevel(int level);
    void setCompressionEnabled(bool enabled);
    void insert(QhpXmlWriter const & source);
    void dumpTo(QFile & file);
    void open(char const * elementName,
              char const * const * attributes = 0);
    void openClose(char const * elementName,
                   char const * const * attributes = 0);
    void openCloseContent(char const * elementName, char const * content);
    void close(char const * elementName);
41
    void declaration(char const * version, char const * encoding);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55

    static char * dupEscaped(const char * source);

  private:
    void indent();
    void newLine();
    void openPureHelper(char const * elementName,
                        char const * const * attributes, bool close);
    void openPure(char const * elementName,
                  char const * const * attributes = 0);
    void openClosePure(char const * elementName,
                       char const * const * attributes = 0);
    void closePure(char const * elementName);

56 57
    QGString m_backend;
    FTextStream m_out;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
58 59 60 61 62 63 64
    int  m_indentLevel;
    bool m_curLineIndented;
    bool m_compress;

};

#endif // QHPXMLWRITER_H