1 // =================================
 2 // Copyright (c) 2021 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #ifndef SOULNG_LEXER_SPAN_INCLUDED
 7 #define SOULNG_LEXER_SPAN_INCLUDED
 8 #include <soulng/lexer/LexerApi.hpp>
 9 
10 namespace soulng { namespace lexer {
11 
12 struct Span 
13 {
14     Span() : fileIndex(-1)line(-1)start(-1)end(-1) {}
15     Span(int fileIndex_int line_int start_) : fileIndex(fileIndex_)line(line_)start(start_)end(start) {}
16     Span(int fileIndex_int line_int start_int end_) : fileIndex(fileIndex_)line(line_)start(start_)end(end_) {}
17     bool Valid() const { return fileIndex != -1 && line != -1 && start != -1 && end != -1; }
18     int fileIndex;
19     int line;
20     int start;
21     int end;
22 };
23 
24 bool operator==(const Span& leftconst Span& right);
25 
26 } } // namespace soulng::lexer
27 
28 #endif // SOULNG_LEXER_SPAN_INCLUDED