diff options
Diffstat (limited to 'src/tools/qdoc/atom.h')
-rw-r--r-- | src/tools/qdoc/atom.h | 119 |
1 files changed, 66 insertions, 53 deletions
diff --git a/src/tools/qdoc/atom.h b/src/tools/qdoc/atom.h index 84a52c9257..3a7e992f7b 100644 --- a/src/tools/qdoc/atom.h +++ b/src/tools/qdoc/atom.h @@ -1,55 +1,48 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL$ +** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** ** $QT_END_LICENSE$ ** ****************************************************************************/ -/* - atom.h -*/ - #ifndef ATOM_H #define ATOM_H #include <qstringlist.h> +#include "node.h" +#include <qdebug.h> QT_BEGIN_NAMESPACE +class Tree; +class LinkAtom; + class Atom { public: @@ -64,7 +57,7 @@ public: BriefRight, C, CaptionLeft, - CaptionRight, + CaptionRight, // 10 Code, CodeBad, CodeNew, @@ -74,7 +67,7 @@ public: DivLeft, DivRight, EndQmlText, - FootnoteLeft, + FootnoteLeft, // 20 FootnoteRight, FormatElse, FormatEndif, @@ -84,7 +77,7 @@ public: GeneratedList, GuidLink, HR, - Image, + Image, // 30 ImageText, ImportantLeft, ImportantRight, @@ -94,7 +87,7 @@ public: LegaleseLeft, LegaleseRight, LineBreak, - Link, + Link, // 40 LinkNode, ListLeft, ListItemNumber, @@ -104,7 +97,7 @@ public: ListItemRight, ListRight, Nop, - NoteLeft, + NoteLeft, // 50 NoteRight, ParaLeft, ParaRight, @@ -114,7 +107,7 @@ public: QuotationRight, RawString, SectionLeft, - SectionRight, + SectionRight, // 60 SectionHeadingLeft, SectionHeadingRight, SidebarLeft, @@ -124,7 +117,7 @@ public: SnippetIdentifier, SnippetLocation, String, - TableLeft, + TableLeft, // 70 TableRight, TableHeaderLeft, TableHeaderRight, @@ -134,11 +127,19 @@ public: TableItemRight, TableOfContents, Target, - UnhandledFormat, + UnhandledFormat, // 80 UnknownCommand, Last = UnknownCommand }; + friend class LinkAtom; + + Atom(const QString& string) + : next_(0), type_(Link) + { + strs << string; + } + Atom(Type type, const QString& string = "") : next_(0), type_(type) { @@ -169,6 +170,8 @@ public: previous->next_ = this; } + virtual ~Atom() { } + void appendChar(QChar ch) { strs[0] += ch; } void appendString(const QString& string) { strs[0] += string; } void chopString() { strs[0].chop(1); } @@ -185,34 +188,44 @@ public: const QString& string(int i) const { return strs[i]; } int count() const { return strs.size(); } void dump() const; + const QStringList& strings() const { return strs; } + + virtual bool isLinkAtom() const { return false; } + virtual Node::Genus genus() const { return Node::DontCare; } + virtual bool specifiesDomain() const { return false; } + virtual Tree* domain() const { return 0; } + virtual Node::Type goal() const { return Node::NoType; } + virtual const QString& error() { return noError_; } - static QLatin1String BOLD_; - static QLatin1String INDEX_; - static QLatin1String ITALIC_; - static QLatin1String LINK_; - static QLatin1String PARAMETER_; - static QLatin1String SPAN_; - static QLatin1String SUBSCRIPT_; - static QLatin1String SUPERSCRIPT_; - static QLatin1String TELETYPE_; - static QLatin1String UICONTROL_; - static QLatin1String UNDERLINE_; - - static QLatin1String BULLET_; - static QLatin1String TAG_; - static QLatin1String VALUE_; - static QLatin1String LOWERALPHA_; - static QLatin1String LOWERROMAN_; - static QLatin1String NUMERIC_; - static QLatin1String UPPERALPHA_; - static QLatin1String UPPERROMAN_; - -private: + protected: + static QString noError_; Atom* next_; Type type_; QStringList strs; }; +class LinkAtom : public Atom +{ + public: + LinkAtom(const QString& p1, const QString& p2); + LinkAtom(const LinkAtom& t); + LinkAtom(Atom* previous, const LinkAtom& t); + virtual ~LinkAtom() { } + + virtual bool isLinkAtom() const { return true; } + virtual Node::Genus genus() const { return genus_; } + virtual bool specifiesDomain() const { return (domain_ != 0); } + virtual Tree* domain() const { return domain_; } + virtual Node::Type goal() const { return goal_; } + virtual const QString& error() { return error_; } + + protected: + Node::Genus genus_; + Node::Type goal_; + Tree* domain_; + QString error_; +}; + #define ATOM_FORMATTING_BOLD "bold" #define ATOM_FORMATTING_INDEX "index" #define ATOM_FORMATTING_ITALIC "italic" |