diff options
Diffstat (limited to 'source/core/slang-std-writers.h')
| -rw-r--r-- | source/core/slang-std-writers.h | 44 |
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 |
