diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2010-07-07 11:01:38 +0200 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2010-07-08 10:16:17 +0200 |
commit | 7ae3fd5a10c584de0f0f0d1ff7761266eadc68d0 (patch) | |
tree | 6762c09b73a74b3ed5ad4386a432efc8754159f4 /src/plugins/cpptools/cppcodeformatter.h | |
parent | 486b23b8ef1df404c026514b93f073163885d324 (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.h | 30 |
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; |