summaryrefslogtreecommitdiffstats
path: root/tools
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 /tools
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 'tools')
-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
8 files changed, 43 insertions, 36 deletions
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"