summaryrefslogtreecommitdiffstats
path: root/tools/slang-cpp-extractor/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/slang-cpp-extractor/options.cpp')
-rw-r--r--tools/slang-cpp-extractor/options.cpp153
1 files changed, 0 insertions, 153 deletions
diff --git a/tools/slang-cpp-extractor/options.cpp b/tools/slang-cpp-extractor/options.cpp
deleted file mode 100644
index 17ff5eebc..000000000
--- a/tools/slang-cpp-extractor/options.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-#include "options.h"
-
-#include "diagnostics.h"
-
-namespace CppExtract
-{
-
-SlangResult OptionsParser::_parseArgFlag(const char* option, bool& outFlag)
-{
- SLANG_ASSERT(UnownedStringSlice(m_args[m_index]) == option);
- SLANG_ASSERT(m_index < m_argCount);
-
- m_index++;
- outFlag = true;
- return SLANG_OK;
-}
-
-SlangResult OptionsParser::_parseArgWithValue(const char* option, String& ioValue)
-{
- SLANG_ASSERT(UnownedStringSlice(m_args[m_index]) == option);
- if (m_index + 1 < m_argCount)
- {
- // Next parameter is the output path, there can only be one
- if (ioValue.getLength())
- {
- // There already is output
- m_sink->diagnose(SourceLoc(), CPPDiagnostics::optionAlreadyDefined, option, ioValue);
- return SLANG_FAIL;
- }
- }
- else
- {
- m_sink->diagnose(SourceLoc(), CPPDiagnostics::requireValueAfterOption, option);
- return SLANG_FAIL;
- }
-
- ioValue = m_args[m_index + 1];
- m_index += 2;
- return SLANG_OK;
-}
-
-SlangResult OptionsParser::_parseArgReplaceValue(const char* option, String& ioValue)
-{
- SLANG_ASSERT(UnownedStringSlice(m_args[m_index]) == option);
- if (m_index + 1 >= m_argCount)
- {
- m_sink->diagnose(SourceLoc(), CPPDiagnostics::requireValueAfterOption, option);
- return SLANG_FAIL;
- }
-
- ioValue = m_args[m_index + 1];
- m_index += 2;
- return SLANG_OK;
-}
-
-SlangResult OptionsParser::parse(
- int argc,
- const char* const* argv,
- DiagnosticSink* sink,
- Options& outOptions)
-{
- outOptions.reset();
-
- m_index = 0;
- m_argCount = argc;
- m_args = argv;
- m_sink = sink;
-
- outOptions.reset();
-
- while (m_index < m_argCount)
- {
- const UnownedStringSlice arg = UnownedStringSlice(argv[m_index]);
-
- if (arg.getLength() > 0 && arg[0] == '-')
- {
- if (arg == "-d")
- {
- SLANG_RETURN_ON_FAIL(_parseArgWithValue("-d", outOptions.m_inputDirectory));
- continue;
- }
- else if (arg == "-o")
- {
- SLANG_RETURN_ON_FAIL(_parseArgWithValue("-o", outOptions.m_outputPath));
- continue;
- }
- else if (arg == "-dump")
- {
- SLANG_RETURN_ON_FAIL(_parseArgFlag("-dump", outOptions.m_dump));
- continue;
- }
- else if (arg == "-mark-prefix")
- {
- SLANG_RETURN_ON_FAIL(
- _parseArgReplaceValue("-mark-prefix", outOptions.m_markPrefix));
- continue;
- }
- else if (arg == "-mark-suffix")
- {
- SLANG_RETURN_ON_FAIL(
- _parseArgReplaceValue("-mark-suffix", outOptions.m_markSuffix));
- continue;
- }
- else if (arg == "-defs")
- {
- SLANG_RETURN_ON_FAIL(_parseArgFlag("-defs", outOptions.m_defs));
- continue;
- }
- else if (arg == "-output-fields")
- {
- SLANG_RETURN_ON_FAIL(_parseArgFlag("-output-fields", outOptions.m_outputFields));
- continue;
- }
- else if (arg == "-strip-prefix")
- {
- SLANG_RETURN_ON_FAIL(
- _parseArgWithValue("-strip-prefix", outOptions.m_stripFilePrefix));
- continue;
- }
- else if (arg == "-unit-test")
- {
- SLANG_RETURN_ON_FAIL(_parseArgFlag("-unit-test", outOptions.m_runUnitTests));
- continue;
- }
- else if (arg == "-unmarked")
- {
- bool unmarked;
- SLANG_RETURN_ON_FAIL(_parseArgFlag("-unmarked", unmarked));
- outOptions.m_requireMark = !unmarked;
- continue;
- }
-
- m_sink->diagnose(SourceLoc(), CPPDiagnostics::unknownOption, arg);
- return SLANG_FAIL;
- }
- else
- {
- // If it doesn't start with - then it's assumed to be an input path
- outOptions.m_inputPaths.add(arg);
- m_index++;
- }
- }
-
- if (outOptions.m_inputPaths.getCount() < 0)
- {
- m_sink->diagnose(SourceLoc(), CPPDiagnostics::noInputPathsSpecified);
- return SLANG_FAIL;
- }
-
- return SLANG_OK;
-}
-
-} // namespace CppExtract