aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppcodeformatter.h
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2010-07-07 11:01:38 +0200
committerChristian Kamm <christian.d.kamm@nokia.com>2010-07-08 10:16:17 +0200
commit7ae3fd5a10c584de0f0f0d1ff7761266eadc68d0 (patch)
tree6762c09b73a74b3ed5ad4386a432efc8754159f4 /src/plugins/cpptools/cppcodeformatter.h
parent486b23b8ef1df404c026514b93f073163885d324 (diff)
C++ indenter: Refactor to be independent of BaseTextDocumentLayout.
Done-with: Thomas Hartmann
Diffstat (limited to 'src/plugins/cpptools/cppcodeformatter.h')
-rw-r--r--src/plugins/cpptools/cppcodeformatter.h30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cppcodeformatter.h b/src/plugins/cpptools/cppcodeformatter.h
index 4fee466086..18b02cea1b 100644
--- a/src/plugins/cpptools/cppcodeformatter.h
+++ b/src/plugins/cpptools/cppcodeformatter.h
@@ -39,12 +39,30 @@ public:
void setTabSize(int tabSize);
- static void invalidateCache(QTextDocument *document);
+ void invalidateCache(QTextDocument *document);
protected:
virtual void onEnter(int newState, int *indentDepth, int *savedIndentDepth) const = 0;
virtual void adjustIndent(const QList<CPlusPlus::Token> &tokens, int lexerState, int *indentDepth) const = 0;
+ class State;
+ class BlockData
+ {
+ public:
+ BlockData();
+
+ QStack<State> m_beginState;
+ QStack<State> m_endState;
+ int m_indentDepth;
+ int m_blockRevision;
+ };
+
+ virtual void saveBlockData(QTextBlock *block, const BlockData &data) const = 0;
+ virtual bool loadBlockData(const QTextBlock &block, BlockData *data) const = 0;
+
+ virtual void saveLexerState(QTextBlock *block, int state) const = 0;
+ virtual int loadLexerState(const QTextBlock &block) const = 0;
+
protected:
enum StateType {
invalid = 0,
@@ -146,8 +164,8 @@ protected:
private:
void recalculateStateAfter(const QTextBlock &block);
- void storeBlockState(const QTextBlock &block);
- void restoreBlockState(const QTextBlock &block);
+ void saveCurrentState(const QTextBlock &block);
+ void restoreCurrentState(const QTextBlock &block);
QStringRef currentTokenText() const;
@@ -201,6 +219,12 @@ protected:
virtual void onEnter(int newState, int *indentDepth, int *savedIndentDepth) const;
virtual void adjustIndent(const QList<CPlusPlus::Token> &tokens, int lexerState, int *indentDepth) const;
+ virtual void saveBlockData(QTextBlock *block, const BlockData &data) const;
+ virtual bool loadBlockData(const QTextBlock &block, BlockData *data) const;
+
+ virtual void saveLexerState(QTextBlock *block, int state) const;
+ virtual int loadLexerState(const QTextBlock &block) const;
+
private:
int m_indentSize;
bool m_indentSubstatementBraces;