diff options
author | Neil <nyamatongwe@gmail.com> | 2020-04-13 08:06:56 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2020-04-13 08:06:56 +1000 |
commit | 98fba9dcdd0b734e0788de4d731bd3dcf5ee9fc0 (patch) | |
tree | c3a81410095a73a45756f6b26f6b7ea3a24e797e /lexers/LexCPP.cxx | |
parent | 1769cc3907d3f06254053ab76bd9e827417f07cf (diff) | |
download | scintilla-mirror-98fba9dcdd0b734e0788de4d731bd3dcf5ee9fc0.tar.gz |
Hide implementation of EscapeSequence and use const. Add tests for escape
sequences.
Diffstat (limited to 'lexers/LexCPP.cxx')
-rw-r--r-- | lexers/LexCPP.cxx | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/lexers/LexCPP.cxx b/lexers/LexCPP.cxx index af60dce3a..09e5b1cb4 100644 --- a/lexers/LexCPP.cxx +++ b/lexers/LexCPP.cxx @@ -163,18 +163,14 @@ void highlightTaskMarker(StyleContext &sc, LexAccessor &styler, } } -struct EscapeSequence { - int digitsLeft; - CharacterSet setHexDigits; - CharacterSet setOctDigits; - CharacterSet setNoneNumeric; - CharacterSet *escapeSetValid; - EscapeSequence() { - digitsLeft = 0; - escapeSetValid = nullptr; - setHexDigits = CharacterSet(CharacterSet::setDigits, "ABCDEFabcdef"); - setOctDigits = CharacterSet(CharacterSet::setNone, "01234567"); - } +class EscapeSequence { + const CharacterSet setHexDigits = CharacterSet(CharacterSet::setDigits, "ABCDEFabcdef"); + const CharacterSet setOctDigits = CharacterSet(CharacterSet::setNone, "01234567"); + const CharacterSet setNoneNumeric; + const CharacterSet *escapeSetValid = nullptr; + int digitsLeft = 0; +public: + EscapeSequence() = default; void resetEscapeState(int nextChar) { digitsLeft = 0; escapeSetValid = &setNoneNumeric; @@ -195,6 +191,9 @@ struct EscapeSequence { bool atEscapeEnd(int currChar) const { return (digitsLeft <= 0) || !escapeSetValid->Contains(currChar); } + void consumeDigit() noexcept { + digitsLeft--; + } }; std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) { @@ -1107,7 +1106,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i } break; case SCE_C_ESCAPESEQUENCE: - escapeSeq.digitsLeft--; + escapeSeq.consumeDigit(); if (!escapeSeq.atEscapeEnd(sc.ch)) { break; } |