diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-03-08 17:31:14 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-03-08 17:31:14 +0100 |
commit | c124b0d1d05f22672cd706273c15a27e5b0a015b (patch) | |
tree | a6d7ae346419b0654092fc360db9026150cfebe4 /tests/manual | |
parent | 206793d7853070a7a96b815bbdde5ce016e7f19a (diff) | |
download | qt-creator-c124b0d1d05f22672cd706273c15a27e5b0a015b.tar.gz |
More symbol dumping.
Diffstat (limited to 'tests/manual')
-rw-r--r-- | tests/manual/cplusplus-dump/main.cpp | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/tests/manual/cplusplus-dump/main.cpp b/tests/manual/cplusplus-dump/main.cpp index bcfe66c7e8..839af6a562 100644 --- a/tests/manual/cplusplus-dump/main.cpp +++ b/tests/manual/cplusplus-dump/main.cpp @@ -41,6 +41,7 @@ #include <CoreTypes.h> #include <CppDocument.h> #include <SymbolVisitor.h> +#include <Overview.h> #include <QFile> #include <QList> @@ -161,7 +162,11 @@ class SymbolDump: protected SymbolVisitor public: SymbolDump(TranslationUnit *unit) : translationUnit(unit) - {} + { + o.setShowArgumentNames(true); + o.setShowFunctionSignatures(true); + o.setShowReturnTypes(true); + } void operator()(Symbol *s) { QByteArray basename = translationUnit->fileName(); @@ -224,26 +229,20 @@ protected: out << _id[symbol].constData() << " [label=\"" << name(symbol).constData() << "\"];" << std::endl; } - void generateTemplateParams(const char *from, TemplateParameters *params) { - if (!params) + void generateTemplateParams(TemplateParameters *params) { + if (!params || params->scope()->symbolCount() == 0) return; - static int templateCount = 0; - QByteArray id("t"); - id.append(QByteArray::number(++templateCount)); - out << from << " -> " << id.constData() << ";" << std::endl; - out << id.constData() << " [shape=record label=\""; + out << "<"; for (unsigned i = 0; i < params->scope()->symbolCount(); ++i) { if (i > 0) - out<<"|"; + out << ","; Symbol *s = params->scope()->symbolAt(i); - if (s->identifier()) { - out<<s->identifier()->chars(); - } else { - out << "<anonymous>"; - } + out << qPrintable(o(s->name())); + if (s->type()) + out << ":" << qPrintable(o(s->type())); } - out << "\"];" << std::endl; + out << ">"; } virtual bool visit(Class *symbol) { @@ -258,6 +257,8 @@ protected: } else { out << "UNKNOWN"; } + generateTemplateParams(symbol->templateParameters()); + out << "\\nid: "; if (symbol->identifier()) { out << symbol->identifier()->chars(); @@ -266,17 +267,34 @@ protected: } out << "\"];" << std::endl; - generateTemplateParams(id, symbol->templateParameters()); - return true; } virtual bool visit(UsingNamespaceDirective *symbol) { simpleNode(symbol); return true; } virtual bool visit(UsingDeclaration *symbol) { simpleNode(symbol); return true; } - virtual bool visit(Declaration *symbol) { simpleNode(symbol); return true; } + + virtual bool visit(Declaration *symbol) { + out << _id[symbol].constData() << " [label=\""; + out << "Declaration\\n"; + out << qPrintable(o(symbol->name())); + out << ": "; + out << qPrintable(o(symbol->type())); + out << "\"];" << std::endl; + + return true; + } + virtual bool visit(Argument *symbol) { simpleNode(symbol); return true; } virtual bool visit(TypenameArgument *symbol) { simpleNode(symbol); return true; } - virtual bool visit(BaseClass *symbol) { simpleNode(symbol); return true; } + + virtual bool visit(BaseClass *symbol) { + out << _id[symbol].constData() << " [label=\"BaseClass\\n"; + out << qPrintable(o(symbol->name())); + out << "\"];" << std::endl; + + return true; + } + virtual bool visit(Enum *symbol) { simpleNode(symbol); return true; } virtual bool visit(Function *symbol) { simpleNode(symbol); return true; } virtual bool visit(Namespace *symbol) { simpleNode(symbol); return true; } @@ -297,6 +315,7 @@ private: QList<QPair<Symbol *,Symbol*> >_connections; QList<Symbol *> _stack; std::ofstream out; + Overview o; }; int main(int argc, char *argv[]) |