1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the tools applications of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 /* 43 doc.h 44 */ 45 46 #ifndef DOC_H 47 #define DOC_H 48 49 #include <QSet> 50 #include <QString> 51 #include <QMap> 52 53 #include "location.h" 54 55 QT_BEGIN_NAMESPACE 56 57 class Atom; 58 class CodeMarker; 59 class Config; 60 class DocPrivate; 61 class Quoter; 62 class Text; 63 class FakeNode; 64 65 typedef QMap<QString, QStringList> QCommandMap; 66 typedef QMap<QString, QString> QStringMap; 67 typedef QMultiMap<QString, QString> QStringMultiMap; 68 69 class Doc 70 { 71 public: 72 // the order is important 73 enum Sections { 74 NoSection = -2, 75 Part = -1, 76 Chapter = 1, 77 Section1 = 1, 78 Section2 = 2, 79 Section3 = 3, 80 Section4 = 4 81 }; 82 Doc()83 Doc() : priv(0) {} 84 Doc(const Location &start_loc, 85 const Location &end_loc, 86 const QString &source, 87 const QSet<QString> &metaCommandSet); 88 Doc(const Doc &doc); 89 ~Doc(); 90 91 Doc& operator=( const Doc& doc ); 92 93 void renameParameters(const QStringList &oldNames, 94 const QStringList &newNames); 95 void simplifyEnumDoc(); 96 void setBody(const Text &body); 97 98 const Location &location() const; 99 bool isEmpty() const; 100 const QString& source() const; 101 const Text& body() const; 102 Text briefText(bool inclusive = false) const; 103 Text trimmedBriefText(const QString &className) const; 104 Text legaleseText() const; 105 const QString& baseName() const; 106 Sections granularity() const; 107 const QSet<QString> ¶meterNames() const; 108 const QStringList &enumItemNames() const; 109 const QStringList &omitEnumItemNames() const; 110 const QSet<QString> &metaCommandsUsed() const; 111 QStringList metaCommandArgs( const QString& metaCommand ) const; 112 const QList<Text> &alsoList() const; 113 bool hasTableOfContents() const; 114 bool hasKeywords() const; 115 bool hasTargets() const; 116 const QList<Atom *> &tableOfContents() const; 117 const QList<int> &tableOfContentsLevels() const; 118 const QList<Atom *> &keywords() const; 119 const QList<Atom *> &targets() const; 120 const QStringMultiMap &metaTagMap() const; 121 122 static void initialize( const Config &config ); 123 static void terminate(); 124 static QString alias( const QString &english ); 125 static void trimCStyleComment( Location& location, QString& str ); 126 static CodeMarker *quoteFromFile(const Location &location, 127 Quoter "er, 128 const QString &fileName); 129 static QString canonicalTitle(const QString &title); 130 131 private: 132 void detach(); 133 DocPrivate *priv; 134 }; 135 136 QT_END_NAMESPACE 137 138 #endif 139