aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus/pp-engine.h
diff options
context:
space:
mode:
authorhjk <[email protected]>2013-04-16 11:23:05 +0200
committerErik Verbruggen <[email protected]>2013-04-16 12:30:45 +0200
commit980fe3203d418235857bcd8f5a4a3d32ace15892 (patch)
treeebe6452ba9aaae39a1ca8f04e0836b4579d51452 /src/libs/cplusplus/pp-engine.h
parent237c82fe474b9da351e03c24a89f3305b1d7dc28 (diff)
C++: Streamline preprocessor expansion buffer handling
Change-Id: If86c73945808e871f60fdf231b91e02f66bd1b32 Reviewed-by: Erik Verbruggen <[email protected]>
Diffstat (limited to 'src/libs/cplusplus/pp-engine.h')
-rw-r--r--src/libs/cplusplus/pp-engine.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h
index 7d04849168d..7f75b7c6567 100644
--- a/src/libs/cplusplus/pp-engine.h
+++ b/src/libs/cplusplus/pp-engine.h
@@ -133,6 +133,14 @@ private:
unsigned m_lineRef;
ExpansionStatus m_expansionStatus;
+ void setExpansionStatus(ExpansionStatus status)
+ {
+ m_expansionStatus = status;
+ m_currentExpansion = (status == Expanding)
+ ? &m_expansionResult : m_result;
+ }
+ QByteArray *m_currentExpansion;
+
QByteArray m_expansionResult;
QVector<QPair<unsigned, unsigned> > m_expandedTokensInfo;
@@ -227,18 +235,13 @@ private:
void trackExpansionCycles(PPToken *tk);
- template <class T>
- void writeOutput(const T &t);
- void writeOutput(const ByteArrayRef &ref);
+ QByteArray &currentOutputBuffer() { return *m_state.m_currentExpansion; }
bool atStartOfOutputLine() const;
void maybeStartOutputLine();
void generateOutputLineMarker(unsigned lineno);
void synchronizeOutputLines(const PPToken &tk, bool forceLine = false);
void removeTrailingOutputLines();
- const QByteArray &currentOutputBuffer() const;
- QByteArray &currentOutputBuffer();
-
void enforceSpacing(const PPToken &tk, bool forceSpacing = false);
static std::size_t computeDistance(const PPToken &tk, bool forceTillLine = false);