From be563abf68c5c8561d9d6c0b765941b6123fd52e Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Fri, 24 Sep 2010 15:07:42 +0200
Subject: [PATCH] C++ indenter: Simplify debugging by making dump() more
 verbose.

---
 src/plugins/cpptools/cppcodeformatter.cpp            | 5 ++++-
 src/plugins/cpptools/cppcodeformatter.h              | 5 ++++-
 tests/auto/cplusplus/codeformatter/codeformatter.pro | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp
index b242f6c490d..87811c01cdc 100644
--- a/src/plugins/cpptools/cppcodeformatter.cpp
+++ b/src/plugins/cpptools/cppcodeformatter.cpp
@@ -36,6 +36,7 @@
 #include <texteditor/tabsettings.h>
 
 #include <QtCore/QDebug>
+#include <QtCore/QMetaEnum>
 #include <QtGui/QTextDocument>
 #include <QtGui/QTextCursor>
 #include <QtGui/QTextBlock>
@@ -907,10 +908,12 @@ int CodeFormatter::tokenizeBlock(const QTextBlock &block, bool *endedJoined)
 
 void CodeFormatter::dump() const
 {
+    QMetaEnum metaEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("StateType"));
+
     qDebug() << "Current token index" << m_tokenIndex;
     qDebug() << "Current state:";
     foreach (State s, m_currentState) {
-        qDebug() << s.type << s.savedIndentDepth << s.savedPaddingDepth;
+        qDebug() << metaEnum.valueToKey(s.type) << s.savedIndentDepth << s.savedPaddingDepth;
     }
     qDebug() << "Current indent depth:" << m_indentDepth;
     qDebug() << "Current padding depth:" << m_paddingDepth;
diff --git a/src/plugins/cpptools/cppcodeformatter.h b/src/plugins/cpptools/cppcodeformatter.h
index bb46fc6abc5..fa306d2c340 100644
--- a/src/plugins/cpptools/cppcodeformatter.h
+++ b/src/plugins/cpptools/cppcodeformatter.h
@@ -57,6 +57,7 @@ class CppCodeFormatterData;
 
 class CPPTOOLS_EXPORT CodeFormatter
 {
+    Q_GADGET
 public:
     CodeFormatter();
     virtual ~CodeFormatter();
@@ -98,7 +99,7 @@ protected:
     virtual void saveLexerState(QTextBlock *block, int state) const = 0;
     virtual int loadLexerState(const QTextBlock &block) const = 0;
 
-protected:
+public: // must be public to make Q_GADGET introspection work
     enum StateType {
         invalid = 0,
 
@@ -170,7 +171,9 @@ protected:
         expression, // after a '=' in a declaration_start once we're sure it's not '= {'
         initializer, // after a '=' in a declaration start
     };
+    Q_ENUMS(StateType)
 
+protected:
     class State {
     public:
         State()
diff --git a/tests/auto/cplusplus/codeformatter/codeformatter.pro b/tests/auto/cplusplus/codeformatter/codeformatter.pro
index 6ebd7722237..6aa0259f588 100644
--- a/tests/auto/cplusplus/codeformatter/codeformatter.pro
+++ b/tests/auto/cplusplus/codeformatter/codeformatter.pro
@@ -12,6 +12,7 @@ SOURCES += \
     $$SRCDIR/plugins/texteditor/basetextdocumentlayout.cpp
 
 HEADERS += \
+    $$SRCDIR/plugins/cpptools/cppcodeformatter.h \
     $$SRCDIR/plugins/texteditor/basetextdocumentlayout.h
 
 INCLUDEPATH += $$SRCDIR/plugins $$SRCDIR/libs
-- 
GitLab