diff options
Diffstat (limited to 'Source/JavaScriptCore/parser/ParserTokens.h')
-rw-r--r-- | Source/JavaScriptCore/parser/ParserTokens.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/parser/ParserTokens.h b/Source/JavaScriptCore/parser/ParserTokens.h index ed9780b52..898fe62cb 100644 --- a/Source/JavaScriptCore/parser/ParserTokens.h +++ b/Source/JavaScriptCore/parser/ParserTokens.h @@ -150,6 +150,23 @@ enum JSTokenType { INVALID_STRING_LITERAL_ERRORTOK = 9 | ErrorTokenFlag, }; +struct JSTextPosition { + JSTextPosition() : line(0), offset(0), lineStartOffset(0) { } + JSTextPosition(int _line, int _offset, int _lineStartOffset) : line(_line), offset(_offset), lineStartOffset(_lineStartOffset) { } + JSTextPosition(const JSTextPosition& other) : line(other.line), offset(other.offset), lineStartOffset(other.lineStartOffset) { } + + JSTextPosition operator+(int adjustment) const { return JSTextPosition(line, offset + adjustment, lineStartOffset); } + JSTextPosition operator+(unsigned adjustment) const { return *this + static_cast<int>(adjustment); } + JSTextPosition operator-(int adjustment) const { return *this + (- adjustment); } + JSTextPosition operator-(unsigned adjustment) const { return *this + (- static_cast<int>(adjustment)); } + + operator int() const { return offset; } + + int line; + int offset; + int lineStartOffset; +}; + union JSTokenData { struct { uint32_t line; @@ -180,6 +197,8 @@ struct JSToken { JSTokenType m_type; JSTokenData m_data; JSTokenLocation m_location; + JSTextPosition m_startPosition; + JSTextPosition m_endPosition; }; } // namespace JSC |