From efa2c8f41aa5cd2c27990fd9b57ea0eff06976e7 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Fri, 21 Dec 2018 11:00:28 -0500 Subject: 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 --- source/core/slang-std-writers.h | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 source/core/slang-std-writers.h (limited to 'source/core/slang-std-writers.h') 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 m_writers[SLANG_WRITER_CHANNEL_COUNT_OF]; + + static StdWriters* s_singleton; +}; + +} + +#endif -- cgit v1.2.3