C++: Streamline preprocessor expansion buffer handling

Change-Id: If86c73945808e871f60fdf231b91e02f66bd1b32
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
hjk
2013-04-16 11:23:05 +02:00
committed by Erik Verbruggen
parent 237c82fe47
commit 980fe3203d
2 changed files with 28 additions and 52 deletions

View File

@@ -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);