]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/glsl_error.h
Record information of the provoking location of a diagnostic
[libs/gl.git] / source / glsl / glsl_error.h
index 63c49bbd9112d95f521369d43577603958e17589..84aa2f52a60a45c42f6bdbe30a5fbc676e418d25 100644 (file)
@@ -13,6 +13,7 @@ struct Location;
 class invalid_shader_source: public std::runtime_error
 {
 public:
+       invalid_shader_source(const std::string &w): runtime_error(w) { }
        invalid_shader_source(const Location &, const std::string &);
 #if __cplusplus>=201103L
        template<typename... Args>
@@ -23,6 +24,13 @@ public:
        virtual ~invalid_shader_source() throw() { }
 };
 
+class syntax_error: public invalid_shader_source
+{
+public:
+       syntax_error(const Location &, const std::string &, const std::string &);
+       virtual ~syntax_error() throw() { }
+};
+
 class parse_error: public invalid_shader_source
 {
 public:
@@ -30,6 +38,25 @@ public:
        virtual ~parse_error() throw() { }
 };
 
+struct Diagnostic
+{
+       enum Severity
+       {
+               INFO,
+               WARN,
+               ERR
+       };
+
+       Severity severity;
+       int source;
+       unsigned line;
+       int provoking_source;
+       unsigned provoking_line;
+       std::string message;
+
+       Diagnostic(): severity(INFO), source(-2), line(0) { }
+};
+
 } // namespace SL
 } // namespace GL
 } // namespace Msp