summaryrefslogtreecommitdiffstats
path: root/source/slang/source-loc.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/source-loc.h')
-rw-r--r--source/slang/source-loc.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/source/slang/source-loc.h b/source/slang/source-loc.h
new file mode 100644
index 000000000..dc353f402
--- /dev/null
+++ b/source/slang/source-loc.h
@@ -0,0 +1,47 @@
+// source-loc.h
+#ifndef SLANG_SOURCE_LOC_H_INCLUDED
+#define SLANG_SOURCE_LOC_H_INCLUDED
+
+#include "../core/basic.h"
+
+namespace Slang {
+namespace Compiler {
+
+using namespace CoreLib::Basic;
+
+class CodePosition
+{
+public:
+ int Line = -1, Col = -1, Pos = -1;
+ String FileName;
+ String ToString()
+ {
+ StringBuilder sb(100);
+ sb << FileName;
+ if (Line != -1)
+ sb << "(" << Line << ")";
+ return sb.ProduceString();
+ }
+ CodePosition() = default;
+ CodePosition(int line, int col, int pos, String fileName)
+ {
+ Line = line;
+ Col = col;
+ Pos = pos;
+ this->FileName = fileName;
+ }
+ bool operator < (const CodePosition & pos) const
+ {
+ return FileName < pos.FileName || (FileName == pos.FileName && Line < pos.Line) ||
+ (FileName == pos.FileName && Line == pos.Line && Col < pos.Col);
+ }
+ bool operator == (const CodePosition & pos) const
+ {
+ return FileName == pos.FileName && Line == pos.Line && Col == pos.Col;
+ }
+};
+
+
+}}
+
+#endif