1 /****************************************************************************
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the tools applications of the Qt Toolkit.
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
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.
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.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
40 ****************************************************************************/
50 #include <QDomElement>
51 #include <QXmlStreamWriter>
61 enum FindFlag
{ SearchBaseClasses
= 0x1,
62 SearchEnumValues
= 0x2,
68 Node
*findNode(const QStringList
&path
, Node
*relative
=0, int findFlags
=0);
69 Node
*findNode(const QStringList
&path
,
73 FunctionNode
*findFunctionNode(const QStringList
&path
,
76 FunctionNode
*findFunctionNode(const QStringList
&parentPath
,
77 const FunctionNode
*clone
,
80 void addBaseClass(ClassNode
*subclass
,
82 const QStringList
&basePath
,
83 const QString
&dataTypeWithTemplateArgs
,
84 InnerNode
*parent
= 0);
85 void addPropertyFunction(PropertyNode
*property
,
86 const QString
&funcName
,
87 PropertyNode::FunctionRole funcRole
);
88 void addToGroup(Node
*node
, const QString
&group
);
89 void addToPublicGroup(Node
*node
, const QString
&group
);
90 QMultiMap
<QString
, Node
*> groups() const;
91 QMultiMap
<QString
, QString
> publicGroups() const;
92 void resolveInheritance(NamespaceNode
*rootNode
= 0);
93 void resolveProperties();
95 void resolveTargets();
96 void fixInheritance(NamespaceNode
*rootNode
= 0);
97 void setVersion(const QString
&version
) { vers
= version
; }
98 NamespaceNode
*root() { return &roo
; }
100 QString
version() const { return vers
; }
101 const Node
*findNode(const QStringList
&path
,
102 const Node
*relative
= 0,
103 int findFlags
= 0) const;
104 const Node
*findNode(const QStringList
&path
,
105 Node::Type type
, const
107 int findFlags
= 0) const;
108 const FunctionNode
*findFunctionNode(const QStringList
&path
,
109 const Node
*relative
= 0,
110 int findFlags
= 0) const;
111 const FunctionNode
*findFunctionNode(const QStringList
&parentPath
,
112 const FunctionNode
*clone
,
113 const Node
*relative
= 0,
114 int findFlags
= 0) const;
115 const FakeNode
*findFakeNodeByTitle(const QString
&title
) const;
116 const Node
*findUnambiguousTarget(const QString
&target
, Atom
*&atom
) const;
117 Atom
*findTarget(const QString
&target
, const Node
*node
) const;
118 const NamespaceNode
*root() const { return &roo
; }
119 void readIndexes(const QStringList
&indexFiles
);
120 bool generateIndexSection(QXmlStreamWriter
&writer
, const Node
*node
,
121 bool generateInternalNodes
= false) const;
122 void generateIndexSections(QXmlStreamWriter
&writer
, const Node
*node
,
123 bool generateInternalNodes
= false) const;
124 void generateIndex(const QString
&fileName
,
126 const QString
&title
,
127 bool generateInternalNodes
= false) const;
128 void generateTagFileCompounds(QXmlStreamWriter
&writer
,
129 const InnerNode
*inner
) const;
130 void generateTagFileMembers(QXmlStreamWriter
&writer
,
131 const InnerNode
*inner
) const;
132 void generateTagFile(const QString
&fileName
) const;
133 void addExternalLink(const QString
&url
, const Node
*relative
);
134 QString
fullDocumentName(const Node
*node
) const;
135 QString
fullDocumentLocation(const Node
*node
) const;
138 void resolveInheritance(int pass
, ClassNode
*classe
);
139 FunctionNode
*findVirtualFunctionInBaseClasses(ClassNode
*classe
,
140 FunctionNode
*clone
);
141 void fixPropertyUsingBaseClasses(ClassNode
*classe
, PropertyNode
*property
);
142 NodeList
allBaseClasses(const ClassNode
*classe
) const;
143 void readIndexFile(const QString
&path
);
144 void readIndexSection(const QDomElement
&element
, InnerNode
*parent
,
145 const QString
&indexUrl
);
146 QString
readIndexText(const QDomElement
&element
);