tools/qdoc3/atom.h
changeset 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the tools applications of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 /*
       
    43   atom.h
       
    44 */
       
    45 
       
    46 #ifndef ATOM_H
       
    47 #define ATOM_H
       
    48 
       
    49 #include <qstring.h>
       
    50 
       
    51 #define QDOC_QML
       
    52 
       
    53 QT_BEGIN_NAMESPACE
       
    54 
       
    55 class Atom
       
    56 {
       
    57  public:
       
    58     enum Type { 
       
    59         AbstractLeft, 
       
    60         AbstractRight, 
       
    61         AnnotatedList,
       
    62         AutoLink,
       
    63         BaseName, 
       
    64         BriefLeft,
       
    65         BriefRight, 
       
    66         C,
       
    67         CaptionLeft, 
       
    68         CaptionRight,
       
    69         Code, 
       
    70         CodeBad, 
       
    71         CodeNew, 
       
    72         CodeOld, 
       
    73         CodeQuoteArgument,
       
    74         CodeQuoteCommand,
       
    75 #ifdef QDOC_QML
       
    76         EndQmlText,
       
    77 #endif
       
    78         FootnoteLeft,
       
    79         FootnoteRight,
       
    80         FormatElse, 
       
    81         FormatEndif,
       
    82         FormatIf,
       
    83         FormattingLeft,
       
    84         FormattingRight,
       
    85         GeneratedList,
       
    86         Image, 
       
    87         ImageText,
       
    88         InlineImage,
       
    89         LegaleseLeft,
       
    90         LegaleseRight,
       
    91         LineBreak, 
       
    92         Link, 
       
    93         LinkNode,
       
    94         ListLeft, 
       
    95         ListItemNumber,
       
    96         ListTagLeft,
       
    97         ListTagRight,
       
    98         ListItemLeft,
       
    99         ListItemRight, 
       
   100         ListRight, 
       
   101         Nop, 
       
   102         ParaLeft,
       
   103         ParaRight, 
       
   104 #ifdef QDOC_QML
       
   105         Qml,
       
   106         QmlText,
       
   107 #endif
       
   108         QuotationLeft, 
       
   109         QuotationRight,
       
   110         RawString,
       
   111         SectionLeft,
       
   112         SectionRight,
       
   113         SectionHeadingLeft,
       
   114         SectionHeadingRight,
       
   115         SidebarLeft, 
       
   116         SidebarRight,
       
   117         SinceList,
       
   118         SnippetCommand,
       
   119         SnippetIdentifier,
       
   120         SnippetLocation,
       
   121         String,
       
   122         TableLeft,
       
   123         TableRight, 
       
   124         TableHeaderLeft,
       
   125         TableHeaderRight,
       
   126         TableRowLeft,
       
   127         TableRowRight, 
       
   128         TableItemLeft, 
       
   129         TableItemRight,
       
   130         TableOfContents,
       
   131         Target,
       
   132         UnhandledFormat, 
       
   133         UnknownCommand,
       
   134         Last = UnknownCommand 
       
   135     };
       
   136 
       
   137     Atom(Type type, const QString &string = "")
       
   138 	: nxt(0), typ(type), str(string) { }
       
   139     Atom(Atom *prev, Type type, const QString &string = "")
       
   140 	: nxt(prev->nxt), typ(type), str(string) { prev->nxt = this; }
       
   141 
       
   142     void appendChar(QChar ch) { str += ch; }
       
   143     void appendString(const QString& string) { str += string; }
       
   144     void chopString() { str.chop(1); }
       
   145     void setString(const QString &string) { str = string; }
       
   146     Atom *next() { return nxt; }
       
   147     void setNext(Atom *newNext) { nxt = newNext; }
       
   148 
       
   149     const Atom *next() const { return nxt; }
       
   150     const Atom *next(Type t) const;
       
   151     const Atom *next(Type t, const QString& s) const;
       
   152     Type type() const { return typ; }
       
   153     QString typeString() const;
       
   154     const QString& string() const { return str; }
       
   155     void dump() const;
       
   156 
       
   157     static QString BOLD_;
       
   158     static QString INDEX_;
       
   159     static QString ITALIC_;
       
   160     static QString LINK_;
       
   161     static QString PARAMETER_;
       
   162     static QString SUBSCRIPT_;
       
   163     static QString SUPERSCRIPT_;
       
   164     static QString TELETYPE_;
       
   165     static QString UNDERLINE_;
       
   166 
       
   167     static QString BULLET_;
       
   168     static QString TAG_;
       
   169     static QString VALUE_;
       
   170     static QString LOWERALPHA_;
       
   171     static QString LOWERROMAN_;
       
   172     static QString NUMERIC_;
       
   173     static QString UPPERALPHA_;
       
   174     static QString UPPERROMAN_;
       
   175 
       
   176  private:
       
   177     Atom *nxt;
       
   178     Type typ;
       
   179     QString str;
       
   180 };
       
   181 
       
   182 #define ATOM_FORMATTING_BOLD            "bold"
       
   183 #define ATOM_FORMATTING_INDEX           "index"
       
   184 #define ATOM_FORMATTING_ITALIC          "italic"
       
   185 #define ATOM_FORMATTING_LINK            "link"
       
   186 #define ATOM_FORMATTING_PARAMETER       "parameter"
       
   187 #define ATOM_FORMATTING_SUBSCRIPT       "subscript"
       
   188 #define ATOM_FORMATTING_SUPERSCRIPT     "superscript"
       
   189 #define ATOM_FORMATTING_TELETYPE        "teletype"
       
   190 #define ATOM_FORMATTING_UNDERLINE       "underline"
       
   191 
       
   192 #define ATOM_LIST_BULLET                "bullet"
       
   193 #define ATOM_LIST_TAG                   "tag"
       
   194 #define ATOM_LIST_VALUE                 "value"
       
   195 #define ATOM_LIST_LOWERALPHA            "loweralpha"
       
   196 #define ATOM_LIST_LOWERROMAN            "lowerroman"
       
   197 #define ATOM_LIST_NUMERIC               "numeric"
       
   198 #define ATOM_LIST_UPPERALPHA            "upperalpha"
       
   199 #define ATOM_LIST_UPPERROMAN            "upperroman"
       
   200 
       
   201 QT_END_NAMESPACE
       
   202 
       
   203 #endif