summaryrefslogtreecommitdiffstats
path: root/source/core/slang-std-writers.h
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2018-12-21 11:00:28 -0500
committerGitHub <noreply@github.com>2018-12-21 11:00:28 -0500
commitefa2c8f41aa5cd2c27990fd9b57ea0eff06976e7 (patch)
tree4c1a4d8e6e71e81c42cfbf315610e380d75527bf /source/core/slang-std-writers.h
parentb5bda9b3d155234be079debe6997cbc900773cf2 (diff)
Feature/remove app context (#765)
* Remove AppContext. Use StdChannels to hold writers, and TestToolUtil to hold test tool specific functionality. * StdChannels -> StdWriters * getStdOut -> getOut, getStdError -> getError
Diffstat (limited to 'source/core/slang-std-writers.h')
-rw-r--r--source/core/slang-std-writers.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/source/core/slang-std-writers.h b/source/core/slang-std-writers.h
new file mode 100644
index 000000000..d580842eb
--- /dev/null
+++ b/source/core/slang-std-writers.h
@@ -0,0 +1,44 @@
+#ifndef SLANG_STD_WRITERS_H
+#define SLANG_STD_WRITERS_H
+
+#include "slang-writer.h"
+#include "../../slang-com-ptr.h"
+
+namespace Slang
+{
+
+/* Holds standard writers for the channels */
+class StdWriters
+{
+public:
+ ISlangWriter * getWriter(SlangWriterChannel chan) const { return m_writers[chan]; }
+ void setWriter(SlangWriterChannel chan, ISlangWriter* writer) { m_writers[chan] = writer; }
+
+ /// Set the writers on the SlangCompileRequest
+ void setRequestWriters(SlangCompileRequest* request);
+
+ /// Ctor
+ StdWriters() {}
+
+ /// Initialize a default context
+ static StdWriters* initDefault();
+
+ static StdWriters* getDefault();
+
+ static StdWriters* getSingleton() { return s_singleton; }
+ static void setSingleton(StdWriters* context) { s_singleton = context; }
+
+ static WriterHelper getError() { return getSingleton()->getWriter(SLANG_WRITER_CHANNEL_STD_ERROR); }
+ static WriterHelper getOut() { return getSingleton()->getWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT); }
+ static WriterHelper getDiagnostic() { return getSingleton()->getWriter(SLANG_WRITER_CHANNEL_DIAGNOSTIC); }
+
+protected:
+
+ ComPtr<ISlangWriter> m_writers[SLANG_WRITER_CHANNEL_COUNT_OF];
+
+ static StdWriters* s_singleton;
+};
+
+}
+
+#endif