OSDN Git Service

bc918670ea5d5f263a5fea83d629a53fe755efc4
[qt-creator-jp/qt-creator-jp.git] / src / libs / cplusplus / TypePrettyPrinter.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
8 **
9 ** No Commercial Usage
10 **
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 **
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file.  Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights.  These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
31 **
32 **************************************************************************/
33 #ifndef CPLUSPLUS_TYPEPRETTYPRINTER_H
34 #define CPLUSPLUS_TYPEPRETTYPRINTER_H
35
36 #include <TypeVisitor.h>
37 #include <FullySpecifiedType.h>
38 #include <QString>
39 #include <QList>
40
41 namespace CPlusPlus {
42
43 class Overview;
44 class FullySpecifiedType;
45
46 class CPLUSPLUS_EXPORT TypePrettyPrinter: protected TypeVisitor
47 {
48 public:
49     TypePrettyPrinter(const Overview *overview);
50     virtual ~TypePrettyPrinter();
51
52     const Overview *overview() const;
53
54     QString operator()(const FullySpecifiedType &type);
55     QString operator()(const FullySpecifiedType &type, const QString &name);
56
57 protected:
58     QString switchText(const QString &text = QString());
59     bool switchNeedsParens(bool needsParens);
60     QString switchName(const QString &name);
61
62     void acceptType(const FullySpecifiedType &ty);
63
64     virtual void visit(UndefinedType *type);
65     virtual void visit(VoidType *type);
66     virtual void visit(IntegerType *type);
67     virtual void visit(FloatType *type);
68     virtual void visit(PointerToMemberType *type);
69     virtual void visit(PointerType *type);
70     virtual void visit(ReferenceType *type);
71     virtual void visit(ArrayType *type);
72     virtual void visit(NamedType *type);
73     virtual void visit(Function *type);
74     virtual void visit(Namespace *type);
75     virtual void visit(Template *type);
76     virtual void visit(Class *type);
77     virtual void visit(Enum *type);
78
79     void appendSpace();
80     void prependSpaceUnlessBracket();
81     void prependWordSeparatorSpace();
82     void prependCv(const FullySpecifiedType &ty);
83
84 private:
85     const Overview *_overview;
86     QString _name;
87     QString _text;
88     FullySpecifiedType _fullySpecifiedType;
89     bool _needsParens;
90 };
91
92 } // namespace CPlusPlus
93
94 #endif // CPLUSPLUS_TYPEPRETTYPRINTER_H