QDirIterator: no point in delaying the inevitable
[qt-netbsd.git] / src / script / qscriptprettypretty_p.h
blobebc186add0cf93202c23ee289d2a41a49cb9021a
1 /****************************************************************************
2 **
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
5 **
6 ** This file is part of the QtScript module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** No Commercial Usage
10 ** This file contains pre-release code and may not be distributed.
11 ** You may use this file in accordance with the terms and conditions
12 ** contained in the either Technology Preview License Agreement or the
13 ** Beta Release License Agreement.
15 ** GNU Lesser General Public License Usage
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
17 ** General Public License version 2.1 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
19 ** packaging of this file. Please review the following information to
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 ** In addition, as a special exception, Nokia gives you certain
24 ** additional rights. These rights are described in the Nokia Qt LGPL
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26 ** package.
28 ** GNU General Public License Usage
29 ** Alternatively, this file may be used under the terms of the GNU
30 ** General Public License version 3.0 as published by the Free Software
31 ** Foundation and appearing in the file LICENSE.GPL included in the
32 ** packaging of this file. Please review the following information to
33 ** ensure the GNU General Public License version 3.0 requirements will be
34 ** met: http://www.gnu.org/copyleft/gpl.html.
36 ** If you are unsure which license is appropriate for your use, please
37 ** contact the sales department at http://www.qtsoftware.com/contact.
38 ** $QT_END_LICENSE$
40 ****************************************************************************/
42 #ifndef QSCRIPTPRETTYPRETTY_P_H
43 #define QSCRIPTPRETTYPRETTY_P_H
46 // W A R N I N G
47 // -------------
49 // This file is not part of the Qt API. It exists purely as an
50 // implementation detail. This header file may change from version to
51 // version without notice, or even be removed.
53 // We mean it.
56 #include <QtCore/qglobal.h>
58 #include "qscriptastvisitor_p.h"
60 QT_BEGIN_NAMESPACE
62 class QTextStream;
64 namespace QScript {
66 class PrettyPretty: protected AST::Visitor
68 public:
69 PrettyPretty(QTextStream &out);
70 virtual ~PrettyPretty();
72 QTextStream &operator () (AST::Node *node, int level = 0);
74 protected:
75 void accept(AST::Node *node);
77 virtual bool preVisit(AST::Node *node);
79 virtual bool visit(AST::ThisExpression *node);
80 virtual void endVisit(AST::ThisExpression *node);
82 virtual bool visit(AST::IdentifierExpression *node);
83 virtual void endVisit(AST::IdentifierExpression *node);
85 virtual bool visit(AST::NullExpression *node);
86 virtual void endVisit(AST::NullExpression *node);
88 virtual bool visit(AST::TrueLiteral *node);
89 virtual void endVisit(AST::TrueLiteral *node);
91 virtual bool visit(AST::FalseLiteral *node);
92 virtual void endVisit(AST::FalseLiteral *node);
94 virtual bool visit(AST::StringLiteral *node);
95 virtual void endVisit(AST::StringLiteral *node);
97 virtual bool visit(AST::NumericLiteral *node);
98 virtual void endVisit(AST::NumericLiteral *node);
100 virtual bool visit(AST::RegExpLiteral *node);
101 virtual void endVisit(AST::RegExpLiteral *node);
103 virtual bool visit(AST::ArrayLiteral *node);
104 virtual void endVisit(AST::ArrayLiteral *node);
106 virtual bool visit(AST::ObjectLiteral *node);
107 virtual void endVisit(AST::ObjectLiteral *node);
109 virtual bool visit(AST::ElementList *node);
110 virtual void endVisit(AST::ElementList *node);
112 virtual bool visit(AST::Elision *node);
113 virtual void endVisit(AST::Elision *node);
115 virtual bool visit(AST::PropertyNameAndValueList *node);
116 virtual void endVisit(AST::PropertyNameAndValueList *node);
118 virtual bool visit(AST::IdentifierPropertyName *node);
119 virtual void endVisit(AST::IdentifierPropertyName *node);
121 virtual bool visit(AST::StringLiteralPropertyName *node);
122 virtual void endVisit(AST::StringLiteralPropertyName *node);
124 virtual bool visit(AST::NumericLiteralPropertyName *node);
125 virtual void endVisit(AST::NumericLiteralPropertyName *node);
127 virtual bool visit(AST::ArrayMemberExpression *node);
128 virtual void endVisit(AST::ArrayMemberExpression *node);
130 virtual bool visit(AST::FieldMemberExpression *node);
131 virtual void endVisit(AST::FieldMemberExpression *node);
133 virtual bool visit(AST::NewMemberExpression *node);
134 virtual void endVisit(AST::NewMemberExpression *node);
136 virtual bool visit(AST::NewExpression *node);
137 virtual void endVisit(AST::NewExpression *node);
139 virtual bool visit(AST::CallExpression *node);
140 virtual void endVisit(AST::CallExpression *node);
142 virtual bool visit(AST::ArgumentList *node);
143 virtual void endVisit(AST::ArgumentList *node);
145 virtual bool visit(AST::PostIncrementExpression *node);
146 virtual void endVisit(AST::PostIncrementExpression *node);
148 virtual bool visit(AST::PostDecrementExpression *node);
149 virtual void endVisit(AST::PostDecrementExpression *node);
151 virtual bool visit(AST::DeleteExpression *node);
152 virtual void endVisit(AST::DeleteExpression *node);
154 virtual bool visit(AST::VoidExpression *node);
155 virtual void endVisit(AST::VoidExpression *node);
157 virtual bool visit(AST::TypeOfExpression *node);
158 virtual void endVisit(AST::TypeOfExpression *node);
160 virtual bool visit(AST::PreIncrementExpression *node);
161 virtual void endVisit(AST::PreIncrementExpression *node);
163 virtual bool visit(AST::PreDecrementExpression *node);
164 virtual void endVisit(AST::PreDecrementExpression *node);
166 virtual bool visit(AST::UnaryPlusExpression *node);
167 virtual void endVisit(AST::UnaryPlusExpression *node);
169 virtual bool visit(AST::UnaryMinusExpression *node);
170 virtual void endVisit(AST::UnaryMinusExpression *node);
172 virtual bool visit(AST::TildeExpression *node);
173 virtual void endVisit(AST::TildeExpression *node);
175 virtual bool visit(AST::NotExpression *node);
176 virtual void endVisit(AST::NotExpression *node);
178 virtual bool visit(AST::BinaryExpression *node);
179 virtual void endVisit(AST::BinaryExpression *node);
181 virtual bool visit(AST::ConditionalExpression *node);
182 virtual void endVisit(AST::ConditionalExpression *node);
184 virtual bool visit(AST::Expression *node);
185 virtual void endVisit(AST::Expression *node);
187 virtual bool visit(AST::Block *node);
188 virtual void endVisit(AST::Block *node);
190 virtual bool visit(AST::StatementList *node);
191 virtual void endVisit(AST::StatementList *node);
193 virtual bool visit(AST::VariableStatement *node);
194 virtual void endVisit(AST::VariableStatement *node);
196 virtual bool visit(AST::VariableDeclarationList *node);
197 virtual void endVisit(AST::VariableDeclarationList *node);
199 virtual bool visit(AST::VariableDeclaration *node);
200 virtual void endVisit(AST::VariableDeclaration *node);
202 virtual bool visit(AST::EmptyStatement *node);
203 virtual void endVisit(AST::EmptyStatement *node);
205 virtual bool visit(AST::ExpressionStatement *node);
206 virtual void endVisit(AST::ExpressionStatement *node);
208 virtual bool visit(AST::IfStatement *node);
209 virtual void endVisit(AST::IfStatement *node);
211 virtual bool visit(AST::DoWhileStatement *node);
212 virtual void endVisit(AST::DoWhileStatement *node);
214 virtual bool visit(AST::WhileStatement *node);
215 virtual void endVisit(AST::WhileStatement *node);
217 virtual bool visit(AST::ForStatement *node);
218 virtual void endVisit(AST::ForStatement *node);
220 virtual bool visit(AST::LocalForStatement *node);
221 virtual void endVisit(AST::LocalForStatement *node);
223 virtual bool visit(AST::ForEachStatement *node);
224 virtual void endVisit(AST::ForEachStatement *node);
226 virtual bool visit(AST::LocalForEachStatement *node);
227 virtual void endVisit(AST::LocalForEachStatement *node);
229 virtual bool visit(AST::ContinueStatement *node);
230 virtual void endVisit(AST::ContinueStatement *node);
232 virtual bool visit(AST::BreakStatement *node);
233 virtual void endVisit(AST::BreakStatement *node);
235 virtual bool visit(AST::ReturnStatement *node);
236 virtual void endVisit(AST::ReturnStatement *node);
238 virtual bool visit(AST::WithStatement *node);
239 virtual void endVisit(AST::WithStatement *node);
241 virtual bool visit(AST::SwitchStatement *node);
242 virtual void endVisit(AST::SwitchStatement *node);
244 virtual bool visit(AST::CaseBlock *node);
245 virtual void endVisit(AST::CaseBlock *node);
247 virtual bool visit(AST::CaseClauses *node);
248 virtual void endVisit(AST::CaseClauses *node);
250 virtual bool visit(AST::CaseClause *node);
251 virtual void endVisit(AST::CaseClause *node);
253 virtual bool visit(AST::DefaultClause *node);
254 virtual void endVisit(AST::DefaultClause *node);
256 virtual bool visit(AST::LabelledStatement *node);
257 virtual void endVisit(AST::LabelledStatement *node);
259 virtual bool visit(AST::ThrowStatement *node);
260 virtual void endVisit(AST::ThrowStatement *node);
262 virtual bool visit(AST::TryStatement *node);
263 virtual void endVisit(AST::TryStatement *node);
265 virtual bool visit(AST::Catch *node);
266 virtual void endVisit(AST::Catch *node);
268 virtual bool visit(AST::Finally *node);
269 virtual void endVisit(AST::Finally *node);
271 virtual bool visit(AST::FunctionDeclaration *node);
272 virtual void endVisit(AST::FunctionDeclaration *node);
274 virtual bool visit(AST::FunctionExpression *node);
275 virtual void endVisit(AST::FunctionExpression *node);
277 virtual bool visit(AST::FormalParameterList *node);
278 virtual void endVisit(AST::FormalParameterList *node);
280 virtual bool visit(AST::FunctionBody *node);
281 virtual void endVisit(AST::FunctionBody *node);
283 virtual bool visit(AST::Program *node);
284 virtual void endVisit(AST::Program *node);
286 virtual bool visit(AST::SourceElements *node);
287 virtual void endVisit(AST::SourceElements *node);
289 virtual bool visit(AST::FunctionSourceElement *node);
290 virtual void endVisit(AST::FunctionSourceElement *node);
292 virtual bool visit(AST::StatementSourceElement *node);
293 virtual void endVisit(AST::StatementSourceElement *node);
295 virtual bool visit(AST::DebuggerStatement *node);
296 virtual void endVisit(AST::DebuggerStatement *node);
298 int indentLevel(int level)
300 int was = m_indentLevel;
301 m_indentLevel = level;
302 return was;
305 void pushIndentLevel()
306 { ++m_indentLevel; }
308 void popIndentLevel()
309 { --m_indentLevel; }
311 QTextStream &newlineAndIndent();
313 void acceptAsBlock(AST::Node *node);
315 static int operatorPrecedenceLevel(int op);
316 static int compareOperatorPrecedence(int op1, int op2);
318 private:
319 QTextStream &out;
320 int m_indentLevel;
322 Q_DISABLE_COPY(PrettyPretty)
325 } // namespace QScript
327 QT_END_NAMESPACE
329 #endif