summaryrefslogtreecommitdiffstats
path: root/source/core/slang-std-writers.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/core/slang-std-writers.h')
-rw-r--r--source/core/slang-std-writers.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/core/slang-std-writers.h b/source/core/slang-std-writers.h
index bb67d9d9c..bb38d12e0 100644
--- a/source/core/slang-std-writers.h
+++ b/source/core/slang-std-writers.h
@@ -7,6 +7,27 @@
namespace Slang
{
+enum class DebugMessageType
+{
+ Info,
+ Warning,
+ Error
+};
+
+enum class DebugMessageSource
+{
+ Layer,
+ Driver,
+ Slang
+};
+
+class IDebugCallback
+{
+public:
+ virtual SLANG_NO_THROW void SLANG_MCALL
+ handleMessage(DebugMessageType type, DebugMessageSource source, const char* message) = 0;
+};
+
/* Holds standard writers for the channels */
class StdWriters : public RefObject
{
@@ -14,6 +35,9 @@ public:
ISlangWriter* getWriter(SlangWriterChannel chan) const { return m_writers[chan]; }
void setWriter(SlangWriterChannel chan, ISlangWriter* writer) { m_writers[chan] = writer; }
+ IDebugCallback* getDebugCallback() const { return m_debugCallback; }
+ void setDebugCallback(IDebugCallback* callback) { m_debugCallback = callback; }
+
/// Flush all the set writers
void flushWriters();
@@ -42,6 +66,7 @@ public:
protected:
ComPtr<ISlangWriter> m_writers[SLANG_WRITER_CHANNEL_COUNT_OF];
+ IDebugCallback* m_debugCallback = nullptr;
static StdWriters* s_singleton;
};