summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/core/core.vcxproj6
-rw-r--r--source/core/core.vcxproj.filters18
-rw-r--r--source/core/slang-app-context.cpp67
-rw-r--r--source/core/slang-app-context.h60
-rw-r--r--source/core/slang-std-writers.cpp43
-rw-r--r--source/core/slang-std-writers.h44
-rw-r--r--source/core/slang-test-tool-util.cpp21
-rw-r--r--source/core/slang-test-tool-util.h25
-rw-r--r--source/core/slang-writer.h2
-rw-r--r--source/slang/slang.vcxproj2
-rw-r--r--source/slangc/main.cpp17
-rw-r--r--tools/render-test/main.cpp10
-rw-r--r--tools/slang-reflection-test/main.cpp16
-rw-r--r--tools/slang-test/main.cpp30
-rw-r--r--tools/slang-test/options.cpp2
-rw-r--r--tools/slang-test/slangc-tool.cpp8
-rw-r--r--tools/slang-test/slangc-tool.h4
-rw-r--r--tools/slang-test/test-context.h7
-rw-r--r--tools/slang-test/test-reporter.h2
19 files changed, 202 insertions, 182 deletions
diff --git a/source/core/core.vcxproj b/source/core/core.vcxproj
index 5dad716fb..bebf7350c 100644
--- a/source/core/core.vcxproj
+++ b/source/core/core.vcxproj
@@ -182,7 +182,6 @@
<ClInclude Include="list.h" />
<ClInclude Include="platform.h" />
<ClInclude Include="secure-crt.h" />
- <ClInclude Include="slang-app-context.h" />
<ClInclude Include="slang-byte-encode-util.h" />
<ClInclude Include="slang-cpu-defines.h" />
<ClInclude Include="slang-free-list.h" />
@@ -192,9 +191,11 @@
<ClInclude Include="slang-object-scope-manager.h" />
<ClInclude Include="slang-random-generator.h" />
<ClInclude Include="slang-shared-library.h" />
+ <ClInclude Include="slang-std-writers.h" />
<ClInclude Include="slang-string-slice-pool.h" />
<ClInclude Include="slang-string-util.h" />
<ClInclude Include="slang-string.h" />
+ <ClInclude Include="slang-test-tool-util.h" />
<ClInclude Include="slang-writer.h" />
<ClInclude Include="smart-pointer.h" />
<ClInclude Include="stream.h" />
@@ -204,7 +205,6 @@
</ItemGroup>
<ItemGroup>
<ClCompile Include="platform.cpp" />
- <ClCompile Include="slang-app-context.cpp" />
<ClCompile Include="slang-byte-encode-util.cpp" />
<ClCompile Include="slang-free-list.cpp" />
<ClCompile Include="slang-io.cpp" />
@@ -212,9 +212,11 @@
<ClCompile Include="slang-object-scope-manager.cpp" />
<ClCompile Include="slang-random-generator.cpp" />
<ClCompile Include="slang-shared-library.cpp" />
+ <ClCompile Include="slang-std-writers.cpp" />
<ClCompile Include="slang-string-slice-pool.cpp" />
<ClCompile Include="slang-string-util.cpp" />
<ClCompile Include="slang-string.cpp" />
+ <ClCompile Include="slang-test-tool-util.cpp" />
<ClCompile Include="slang-writer.cpp" />
<ClCompile Include="stream.cpp" />
<ClCompile Include="text-io.cpp" />
diff --git a/source/core/core.vcxproj.filters b/source/core/core.vcxproj.filters
index c5c1fc733..dd33b61f9 100644
--- a/source/core/core.vcxproj.filters
+++ b/source/core/core.vcxproj.filters
@@ -45,9 +45,6 @@
<ClInclude Include="secure-crt.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="slang-app-context.h">
- <Filter>Header Files</Filter>
- </ClInclude>
<ClInclude Include="slang-byte-encode-util.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -75,6 +72,9 @@
<ClInclude Include="slang-shared-library.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="slang-std-writers.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
<ClInclude Include="slang-string-slice-pool.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -84,6 +84,9 @@
<ClInclude Include="slang-string.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="slang-test-tool-util.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
<ClInclude Include="slang-writer.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -107,9 +110,6 @@
<ClCompile Include="platform.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="slang-app-context.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
<ClCompile Include="slang-byte-encode-util.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -131,6 +131,9 @@
<ClCompile Include="slang-shared-library.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="slang-std-writers.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="slang-string-slice-pool.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -140,6 +143,9 @@
<ClCompile Include="slang-string.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="slang-test-tool-util.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="slang-writer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
diff --git a/source/core/slang-app-context.cpp b/source/core/slang-app-context.cpp
deleted file mode 100644
index 2b3f32cbc..000000000
--- a/source/core/slang-app-context.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-
-#include "slang-app-context.h"
-
-#include "slang-writer.h"
-
-namespace Slang
-{
-
-/* static */AppContext* AppContext::s_singleton = nullptr;
-
-
-/* static */AppContext* AppContext::getDefault()
-{
- static AppContext* s_context = nullptr;
-
- if (!s_context)
- {
- static FileWriter s_stdError(stderr, WriterFlag::IsStatic | WriterFlag::IsUnowned | WriterFlag::AutoFlush);
- static FileWriter s_stdOut(stdout, WriterFlag::IsStatic | WriterFlag::IsUnowned | WriterFlag::AutoFlush);
-
- static AppContext s_contextVar;
- s_context = &s_contextVar;
-
- s_context->setWriter(SLANG_WRITER_CHANNEL_STD_ERROR, &s_stdError);
- s_context->setWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT, &s_stdOut);
- }
- return s_context;
-}
-
-/* static */AppContext* AppContext::initDefault()
-{
- AppContext* context = getDefault();
- setSingleton(context);
- return context;
-}
-
-/* static */int AppContext::getReturnCode(SlangResult res)
-{
- if (SLANG_SUCCEEDED(res))
- {
- return 0;
- }
- else if (res == SLANG_E_INTERNAL_FAIL)
- {
- return -1;
- }
- return 1;
-}
-
-void AppContext::setRequestWriters(SlangCompileRequest* request)
-{
- for (int i = 0; i < SLANG_WRITER_CHANNEL_COUNT_OF; ++i)
- {
- if (m_replaceWriterFlags & (1 << i))
- {
- spSetWriter(request, SlangWriterChannel(i), m_writers[i]);
- }
- }
-}
-
-void AppContext::configureRequest(SlangCompileRequest* request)
-{
- setRequestWriters(request);
-}
-
-}
-
diff --git a/source/core/slang-app-context.h b/source/core/slang-app-context.h
deleted file mode 100644
index 9f1eb306c..000000000
--- a/source/core/slang-app-context.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef SLANG_APP_CONTEXT_H
-#define SLANG_APP_CONTEXT_H
-
-#include "slang-writer.h"
-#include "../../slang-com-ptr.h"
-
-namespace Slang
-{
-
-#ifdef SLANG_SHARED_LIBRARY_TOOL
-# define SLANG_SHARED_LIBRARY_TOOL_API SLANG_EXTERN_C SLANG_DLL_EXPORT
-#else
-# define SLANG_SHARED_LIBRARY_TOOL_API
-#endif
-
-/* A structure to hold general state shared across an application */
-class AppContext
-{
-public:
-
- ISlangWriter * getWriter(SlangWriterChannel chan) const { return m_writers[chan]; }
- void setWriter(SlangWriterChannel chan, ISlangWriter* writer) { m_writers[chan] = writer; }
-
- /// Make modifications to the request
- void configureRequest(SlangCompileRequest* request);
-
- void setRequestWriters(SlangCompileRequest* request);
-
- void setReplaceWriterFlagsAll() { setReplaceWriterFlags((1 << SLANG_WRITER_CHANNEL_COUNT_OF) - 1); }
- void setReplaceWriterFlags(int flags) { m_replaceWriterFlags = flags; }
- int getReplaceWriterFlags() const { return m_replaceWriterFlags; }
-
- /// Ctor
- AppContext() : m_replaceWriterFlags(0) {}
-
- /// Initialize a default context
- static AppContext* initDefault();
-
- static AppContext* getDefault();
-
- static AppContext* getSingleton() { return s_singleton; }
- static void setSingleton(AppContext* context) { s_singleton = context; }
-
- static WriterHelper getStdError() { return getSingleton()->getWriter(SLANG_WRITER_CHANNEL_STD_ERROR); }
- static WriterHelper getStdOut() { return getSingleton()->getWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT); }
- static WriterHelper getDiagnostic() { return getSingleton()->getWriter(SLANG_WRITER_CHANNEL_DIAGNOSTIC); }
-
- static int getReturnCode(SlangResult res);
-
-protected:
-
- ComPtr<ISlangWriter> m_writers[SLANG_WRITER_CHANNEL_COUNT_OF];
- int m_replaceWriterFlags; ///< Bit for each writer
-
- static AppContext* s_singleton;
-};
-
-}
-
-#endif
diff --git a/source/core/slang-std-writers.cpp b/source/core/slang-std-writers.cpp
new file mode 100644
index 000000000..963af9ef5
--- /dev/null
+++ b/source/core/slang-std-writers.cpp
@@ -0,0 +1,43 @@
+
+#include "slang-std-writers.h"
+
+namespace Slang
+{
+
+/* static */StdWriters* StdWriters::s_singleton = nullptr;
+
+/* static */StdWriters* StdWriters::getDefault()
+{
+ static StdWriters* s_context = nullptr;
+
+ if (!s_context)
+ {
+ static FileWriter s_stdError(stderr, WriterFlag::IsStatic | WriterFlag::IsUnowned | WriterFlag::AutoFlush);
+ static FileWriter s_stdOut(stdout, WriterFlag::IsStatic | WriterFlag::IsUnowned | WriterFlag::AutoFlush);
+
+ static StdWriters s_contextVar;
+ s_context = &s_contextVar;
+
+ s_context->setWriter(SLANG_WRITER_CHANNEL_STD_ERROR, &s_stdError);
+ s_context->setWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT, &s_stdOut);
+ }
+ return s_context;
+}
+
+/* static */StdWriters* StdWriters::initDefault()
+{
+ StdWriters* context = getDefault();
+ setSingleton(context);
+ return context;
+}
+
+void StdWriters::setRequestWriters(SlangCompileRequest* request)
+{
+ for (int i = 0; i < SLANG_WRITER_CHANNEL_COUNT_OF; ++i)
+ {
+ spSetWriter(request, SlangWriterChannel(i), m_writers[i]);
+ }
+}
+
+}
+
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
diff --git a/source/core/slang-test-tool-util.cpp b/source/core/slang-test-tool-util.cpp
new file mode 100644
index 000000000..7ecfacefa
--- /dev/null
+++ b/source/core/slang-test-tool-util.cpp
@@ -0,0 +1,21 @@
+
+#include "slang-test-tool-util.h"
+
+namespace Slang
+{
+
+/* static */int TestToolUtil::getReturnCode(SlangResult res)
+{
+ if (SLANG_SUCCEEDED(res))
+ {
+ return 0;
+ }
+ else if (res == SLANG_E_INTERNAL_FAIL)
+ {
+ return -1;
+ }
+ return 1;
+}
+
+}
+
diff --git a/source/core/slang-test-tool-util.h b/source/core/slang-test-tool-util.h
new file mode 100644
index 000000000..615bbe10d
--- /dev/null
+++ b/source/core/slang-test-tool-util.h
@@ -0,0 +1,25 @@
+#ifndef SLANG_TEST_TOOL_UTIL_H
+#define SLANG_TEST_TOOL_UTIL_H
+
+#include "slang-std-writers.h"
+
+namespace Slang {
+
+#ifdef SLANG_SHARED_LIBRARY_TOOL
+# define SLANG_TEST_TOOL_API SLANG_EXTERN_C SLANG_DLL_EXPORT
+#else
+# define SLANG_TEST_TOOL_API
+#endif
+
+/* Utility functions for 'test tools' */
+struct TestToolUtil
+{
+ typedef SlangResult(*InnerMainFunc)(Slang::StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv);
+
+ /// Given a slang result, returns a return code that can be returned from an executable
+ static int getReturnCode(SlangResult res);
+};
+
+} // namespace Slang
+
+#endif // SLANG_TEST_TOOL_H
diff --git a/source/core/slang-writer.h b/source/core/slang-writer.h
index b18af373f..463450ac9 100644
--- a/source/core/slang-writer.h
+++ b/source/core/slang-writer.h
@@ -45,7 +45,7 @@ public:
// ISlangUnknown
SLANG_REF_OBJECT_IUNKNOWN_QUERY_INTERFACE
SLANG_REF_OBJECT_IUNKNOWN_ADD_REF
- SLANG_NO_THROW uint32_t SLANG_MCALL release() { return (m_flags & WriterFlag::IsStatic) ? 1 : (uint32_t)releaseReference(); }
+ SLANG_NO_THROW uint32_t SLANG_MCALL release() { return (m_flags & WriterFlag::IsStatic) ? (uint32_t)decreaseReference() : (uint32_t)releaseReference(); }
// ISlangWriter - default impl
SLANG_NO_THROW virtual void SLANG_MCALL flush() SLANG_OVERRIDE {}
diff --git a/source/slang/slang.vcxproj b/source/slang/slang.vcxproj
index a36d9bfbf..132a56ea5 100644
--- a/source/slang/slang.vcxproj
+++ b/source/slang/slang.vcxproj
@@ -314,4 +314,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project> \ No newline at end of file
+</Project> \ No newline at end of file
diff --git a/source/slangc/main.cpp b/source/slangc/main.cpp
index c2d64730a..ae15b7d49 100644
--- a/source/slangc/main.cpp
+++ b/source/slangc/main.cpp
@@ -5,8 +5,7 @@
SLANG_API void spSetCommandLineCompilerMode(SlangCompileRequest* request);
#include "../core/slang-io.h"
-#include "../core/slang-app-context.h"
-#include "../core/slang-writer.h"
+#include "../core/slang-test-tool-util.h"
using namespace Slang;
@@ -16,7 +15,7 @@ static void diagnosticCallback(
char const* message,
void* /*userData*/)
{
- auto stdError = AppContext::getStdError();
+ auto stdError = StdWriters::getError();
stdError.put(message);
stdError.flush();
}
@@ -27,9 +26,9 @@ static void diagnosticCallback(
#define MAIN main
#endif
-SLANG_SHARED_LIBRARY_TOOL_API SlangResult innerMain(AppContext* appContext, SlangSession* session, int argc, const char*const* argv)
+SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv)
{
- AppContext::setSingleton(appContext);
+ StdWriters::setSingleton(stdWriters);
SlangCompileRequest* compileRequest = spCreateCompileRequest(session);
@@ -41,7 +40,7 @@ SLANG_SHARED_LIBRARY_TOOL_API SlangResult innerMain(AppContext* appContext, Slan
spSetCommandLineCompilerMode(compileRequest);
// Do any app specific configuration
- appContext->configureRequest(compileRequest);
+ stdWriters->setRequestWriters(compileRequest);
char const* appName = "slangc";
if (argc > 0) appName = argv[0];
@@ -70,7 +69,7 @@ SLANG_SHARED_LIBRARY_TOOL_API SlangResult innerMain(AppContext* appContext, Slan
#ifndef _DEBUG
catch (Exception & e)
{
- AppContext::getStdOut().print("internal compiler error: %S\n", e.Message.ToWString().begin());
+ StdWriters::getOut().print("internal compiler error: %S\n", e.Message.ToWString().begin());
res = SLANG_FAIL;
}
#endif
@@ -85,10 +84,10 @@ int MAIN(int argc, char** argv)
SlangResult res;
{
SlangSession* session = spCreateSession(nullptr);
- res = innerMain(AppContext::initDefault(), session, argc, argv);
+ res = innerMain(StdWriters::initDefault(), session, argc, argv);
spDestroySession(session);
}
- return AppContext::getReturnCode(res);
+ return TestToolUtil::getReturnCode(res);
}
#ifdef _WIN32
diff --git a/tools/render-test/main.cpp b/tools/render-test/main.cpp
index dab8e9c6e..69874ac04 100644
--- a/tools/render-test/main.cpp
+++ b/tools/render-test/main.cpp
@@ -17,7 +17,7 @@
#include <stdio.h>
#include <stdlib.h>
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-test-tool-util.h"
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
@@ -491,15 +491,15 @@ Result RenderTestApp::writeScreen(const char* filename)
} // namespace renderer_test
-SLANG_SHARED_LIBRARY_TOOL_API SlangResult innerMain(Slang::AppContext* appContext, SlangSession* session, int argcIn, const char*const* argvIn)
+SLANG_TEST_TOOL_API SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSession* session, int argcIn, const char*const* argvIn)
{
using namespace renderer_test;
using namespace Slang;
- AppContext::setSingleton(appContext);
+ StdWriters::setSingleton(stdWriters);
// Parse command-line options
- SLANG_RETURN_ON_FAIL(parseOptions(argcIn, argvIn, AppContext::getStdError()));
+ SLANG_RETURN_ON_FAIL(parseOptions(argcIn, argvIn, StdWriters::getError()));
RefPtr<renderer_test::Window> window(new renderer_test::Window);
SLANG_RETURN_ON_FAIL(window->initialize(gWindowWidth, gWindowHeight));
@@ -671,7 +671,7 @@ SLANG_SHARED_LIBRARY_TOOL_API SlangResult innerMain(Slang::AppContext* appContex
int main(int argc, char** argv)
{
SlangSession* session = spCreateSession(nullptr);
- SlangResult res = innerMain(Slang::AppContext::initDefault(), session, argc, argv);
+ SlangResult res = innerMain(Slang::StdWriters::initDefault(), session, argc, argv);
spDestroySession(session);
return SLANG_FAILED(res) ? 1 : 0;
diff --git a/tools/slang-reflection-test/main.cpp b/tools/slang-reflection-test/main.cpp
index ad474ee70..04818dfdf 100644
--- a/tools/slang-reflection-test/main.cpp
+++ b/tools/slang-reflection-test/main.cpp
@@ -8,7 +8,7 @@
#include <slang.h>
#include <slang-com-helper.h>
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-test-tool-util.h"
struct PrettyWriter
{
@@ -19,7 +19,7 @@ struct PrettyWriter
static void writeRaw(PrettyWriter& writer, char const* begin, char const* end)
{
SLANG_ASSERT(end >= begin);
- Slang::AppContext::getStdOut().write(begin, size_t(end - begin));
+ Slang::StdWriters::getOut().write(begin, size_t(end - begin));
}
static void writeRaw(PrettyWriter& writer, char const* begin)
@@ -80,7 +80,7 @@ static void write(PrettyWriter& writer, char const* text)
static void write(PrettyWriter& writer, SlangUInt val)
{
adjust(writer);
- Slang::AppContext::getStdOut().print("%llu", (unsigned long long)val);
+ Slang::StdWriters::getOut().print("%llu", (unsigned long long)val);
}
static void emitReflectionVarInfoJSON(PrettyWriter& writer, slang::VariableReflection* var);
@@ -893,18 +893,18 @@ static SlangResult maybeDumpDiagnostic(SlangResult res, SlangCompileRequest* req
const char* diagnostic;
if (SLANG_FAILED(res) && (diagnostic = spGetDiagnosticOutput(request)))
{
- Slang::AppContext::getStdError().put(diagnostic);
+ Slang::StdWriters::getError().put(diagnostic);
}
return res;
}
-SLANG_SHARED_LIBRARY_TOOL_API SlangResult innerMain(Slang::AppContext* appContext, SlangSession* session, int argc, const char*const* argv)
+SLANG_TEST_TOOL_API SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv)
{
- Slang::AppContext::setSingleton(appContext);
+ Slang::StdWriters::setSingleton(stdWriters);
SlangCompileRequest* request = spCreateCompileRequest(session);
- appContext->configureRequest(request);
+ stdWriters->setRequestWriters(request);
char const* appName = "slang-reflection-test";
if (argc > 0) appName = argv[0];
@@ -928,7 +928,7 @@ int main(
char** argv)
{
SlangSession* session = spCreateSession(nullptr);
- SlangResult res = innerMain(Slang::AppContext::initDefault(), session, argc, argv);
+ SlangResult res = innerMain(Slang::StdWriters::initDefault(), session, argc, argv);
spDestroySession(session);
return SLANG_FAILED(res) ? 1 : 0;
diff --git a/tools/slang-test/main.cpp b/tools/slang-test/main.cpp
index 07647e58f..102b0b961 100644
--- a/tools/slang-test/main.cpp
+++ b/tools/slang-test/main.cpp
@@ -2,7 +2,7 @@
#include "../../source/core/slang-io.h"
#include "../../source/core/token-reader.h"
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
#include "../../slang-com-helper.h"
@@ -386,16 +386,17 @@ OSError spawnAndWait(TestContext* context, const String& testPath, OSProcessSpaw
StringWriter stdError(&stdErrorString, WriterFlag::IsConsole | WriterFlag::IsStatic);
StringWriter stdOut(&stdOutString, WriterFlag::IsConsole | WriterFlag::IsStatic);
- AppContext appContext;
- appContext.setWriter(SLANG_WRITER_CHANNEL_STD_ERROR, &stdError);
- appContext.setWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT, &stdOut);
+ StdWriters* prevStdWriters = StdWriters::getSingleton();
+
+ StdWriters stdWriters;
+ stdWriters.setWriter(SLANG_WRITER_CHANNEL_STD_ERROR, &stdError);
+ stdWriters.setWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT, &stdOut);
if (exeName == "slangc")
{
- appContext.setWriter(SLANG_WRITER_CHANNEL_DIAGNOSTIC, &stdError);
+ stdWriters.setWriter(SLANG_WRITER_CHANNEL_DIAGNOSTIC, &stdError);
}
- appContext.setReplaceWriterFlagsAll();
-
+
List<const char*> args;
args.Add(exeName.Buffer());
for (int i = 0; i < int(spawner.argumentList_.Count()); ++i)
@@ -403,11 +404,14 @@ OSError spawnAndWait(TestContext* context, const String& testPath, OSProcessSpaw
args.Add(spawner.argumentList_[i].Buffer());
}
- SlangResult res = func(&appContext, context->getSession(), int(args.Count()), args.begin());
+ SlangResult res = func(&stdWriters, context->getSession(), int(args.Count()), args.begin());
+
+ StdWriters::setSingleton(prevStdWriters);
spawner.standardError_ = stdErrorString;
spawner.standardOutput_ = stdOutString;
- spawner.resultCode_ = AppContext::getReturnCode(res);
+
+ spawner.resultCode_ = TestToolUtil::getReturnCode(res);
return kOSError_None;
}
@@ -1763,7 +1767,7 @@ void runTestsInDirectory(
SlangResult innerMain(int argc, char** argv)
{
- AppContext::initDefault();
+ StdWriters::initDefault();
// The context holds useful things used during testing
TestContext context;
@@ -1789,7 +1793,7 @@ SlangResult innerMain(int argc, char** argv)
context.setInnerMainFunc("slangc", &SlangCTool::innerMain);
}
- SLANG_RETURN_ON_FAIL(Options::parse(argc, argv, &categorySet, AppContext::getStdError(), &context.options));
+ SLANG_RETURN_ON_FAIL(Options::parse(argc, argv, &categorySet, StdWriters::getError(), &context.options));
Options& options = context.options;
@@ -1799,7 +1803,7 @@ SlangResult innerMain(int argc, char** argv)
auto func = context.getInnerMainFunc(options.binDir, options.subCommand);
if (!func)
{
- AppContext::getStdError().print("error: Unable to launch tool '%s'\n", options.subCommand.Buffer());
+ StdWriters::getError().print("error: Unable to launch tool '%s'\n", options.subCommand.Buffer());
return SLANG_FAIL;
}
@@ -1812,7 +1816,7 @@ SlangResult innerMain(int argc, char** argv)
args[i] = srcArgs[i].Buffer();
}
- return func(AppContext::getSingleton(), context.getSession(), int(args.Count()), args.Buffer());
+ return func(StdWriters::getSingleton(), context.getSession(), int(args.Count()), args.Buffer());
}
if( options.includeCategories.Count() == 0 )
diff --git a/tools/slang-test/options.cpp b/tools/slang-test/options.cpp
index 6f3f5d79b..0a6023733 100644
--- a/tools/slang-test/options.cpp
+++ b/tools/slang-test/options.cpp
@@ -37,7 +37,7 @@ TestCategory* TestCategorySet::findOrError(String const& name)
TestCategory* category = find(name);
if (!category)
{
- AppContext::getStdError().print("error: unknown test category name '%s'\n", name.Buffer());
+ StdWriters::getError().print("error: unknown test category name '%s'\n", name.Buffer());
}
return category;
}
diff --git a/tools/slang-test/slangc-tool.cpp b/tools/slang-test/slangc-tool.cpp
index 3085e2ab5..bf1bb8c28 100644
--- a/tools/slang-test/slangc-tool.cpp
+++ b/tools/slang-test/slangc-tool.cpp
@@ -7,19 +7,19 @@ SLANG_API void spSetCommandLineCompilerMode(SlangCompileRequest* request);
static void _diagnosticCallback(char const* message, void* /*userData*/)
{
- auto stdError = AppContext::getStdError();
+ auto stdError = StdWriters::getError();
stdError.put(message);
stdError.flush();
}
-SlangResult SlangCTool::innerMain(AppContext* appContext, SlangSession* session, int argc, const char*const* argv)
+SlangResult SlangCTool::innerMain(StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv)
{
SlangCompileRequest* compileRequest = spCreateCompileRequest(session);
spSetDiagnosticCallback(compileRequest, &_diagnosticCallback, nullptr);
spSetCommandLineCompilerMode(compileRequest);
// Do any app specific configuration
- appContext->configureRequest(compileRequest);
+ stdWriters->setRequestWriters(compileRequest);
{
const SlangResult res = spProcessCommandLineArguments(compileRequest, &argv[1], argc - 1);
@@ -45,7 +45,7 @@ SlangResult SlangCTool::innerMain(AppContext* appContext, SlangSession* session,
#ifndef _DEBUG
catch (Exception & e)
{
- AppContext::getStdOut().print("internal compiler error: %S\n", e.Message.ToWString().begin());
+ StdWriters::getOut().print("internal compiler error: %S\n", e.Message.ToWString().begin());
res = SLANG_FAIL;
}
#endif
diff --git a/tools/slang-test/slangc-tool.h b/tools/slang-test/slangc-tool.h
index dd6e1b977..a1fcaa71b 100644
--- a/tools/slang-test/slangc-tool.h
+++ b/tools/slang-test/slangc-tool.h
@@ -3,13 +3,13 @@
#ifndef SLANGC_TOOL_H_INCLUDED
#define SLANGC_TOOL_H_INCLUDED
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
/* The slangc 'tool' interface, such that slangc like functionality is available directly without invoking slangc command line tool, or
need for a dll/shared library. */
struct SlangCTool
{
- static SlangResult innerMain(Slang::AppContext* appContext, SlangSession* session, int argc, const char*const* argv);
+ static SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv);
};
#endif // SLANGC_TOOL_H_INCLUDED
diff --git a/tools/slang-test/test-context.h b/tools/slang-test/test-context.h
index cfa9837da..b07ca94e6 100644
--- a/tools/slang-test/test-context.h
+++ b/tools/slang-test/test-context.h
@@ -5,15 +5,18 @@
#include "../../source/core/slang-string-util.h"
#include "../../source/core/platform.h"
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
#include "../../source/core/dictionary.h"
+#include "../../source/core/slang-test-tool-util.h"
#include "options.h"
class TestContext
{
public:
- typedef SlangResult(*InnerMainFunc)(Slang::AppContext* appContext, SlangSession* session, int argc, const char*const* argv);
+
+ typedef Slang::TestToolUtil::InnerMainFunc InnerMainFunc;
+
/// Get the slang session
SlangSession* getSession() const { return m_session; }
diff --git a/tools/slang-test/test-reporter.h b/tools/slang-test/test-reporter.h
index 13bcfe6a4..38e0d2cc3 100644
--- a/tools/slang-test/test-reporter.h
+++ b/tools/slang-test/test-reporter.h
@@ -5,7 +5,7 @@
#include "../../source/core/slang-string-util.h"
#include "../../source/core/platform.h"
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
#include "../../source/core/dictionary.h"