summaryrefslogtreecommitdiffstats
path: root/source/core/slang-string-util.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2021-04-29 09:01:46 -0400
committerGitHub <noreply@github.com>2021-04-29 09:01:46 -0400
commit972bd3c4c24b06501c52127416afb763a066b8ad (patch)
treee3874d4952ac557d5c323bb1e43be4584c100afc /source/core/slang-string-util.cpp
parent541d1cab81d895c406fc33cb476e37ce8a6a9702 (diff)
Support for escaped paths in tools (#1823)
* #include an absolute path didn't work - because paths were taken to always be relative. * Split out StringEscapeUtil. * Added StringEscapeUtil. * Fix typo in unix quoting type. * Small comment improvements. * Try to fix linux linking issue. * Fix typo. * Attempt to fix linux link issue. * Update VS proj even though nothing really changed. * Fix another typo issue. * Fix for windows issue. Fixed bug. * Make separate Utils for escaping. * Fix typo. * Split out into StringEscapeHandler. * Windows shell does handle removing quotes (so remove code to remove them). * Handle unescaping if not initiating using the shell. * Slight improvement around shell like decoding. * Simplify command extraction. * Add shared-library category type. * Fix bug in command extraction. * Typo in transcendental category. * Enable unit-test on in smoke test category. * Make parsing failing output as a failing test. * Fixes for transcendental tests. Disable tests that do not work. * Changed category parsing. * Removed the TestResult parameter from _gatherTestsForFile. Made testsList only output. * Remove testing if all tests were disabled. * Fix typo. * Disable path canonical test on linux because CI issue.
Diffstat (limited to 'source/core/slang-string-util.cpp')
-rw-r--r--source/core/slang-string-util.cpp75
1 files changed, 3 insertions, 72 deletions
diff --git a/source/core/slang-string-util.cpp b/source/core/slang-string-util.cpp
index 8108bdc98..cddee4bc4 100644
--- a/source/core/slang-string-util.cpp
+++ b/source/core/slang-string-util.cpp
@@ -2,6 +2,9 @@
#include "slang-blob.h"
+#include "slang-char-util.h"
+#include "slang-text-io.h"
+
namespace Slang {
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! StringUtil !!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -491,76 +494,4 @@ SLANG_FORCE_INLINE static bool _isDigit(char c)
return SLANG_OK;
}
-static char _getHexChar(int v)
-{
- return (v <= 9) ? char(v + '0') : char(v - 10 + 'A');
-}
-
-static char _getEscapedChar(char c)
-{
- switch (c)
- {
- case '\b': return 'b';
- case '\f': return 'f';
- case '\n': return 'n';
- case '\r': return 'r';
- case '\a': return 'a';
- case '\t': return 't';
- case '\v': return 'v';
- case '\'': return '\'';
- case '\"': return '"';
- case '\\': return '\\';
- default: return 0;
- }
-}
-
-/* static */void StringUtil::appendEscaped(const UnownedStringSlice& slice, StringBuilder& out)
-{
- const char* start = slice.begin();
- const char* cur = start;
- const char*const end = slice.end();
-
- for (; cur < end; ++cur)
- {
- const char c = *cur;
- const char escapedChar = _getEscapedChar(c);
-
- if (escapedChar)
- {
- // Flush
- if (start < cur)
- {
- out.append(start, end);
- }
- out.appendChar('\\');
- out.appendChar(escapedChar);
-
- start = cur + 1;
- }
- else if ( c < ' ' || c > 126)
- {
- // Flush
- if (start < cur)
- {
- out.append(start, end);
- }
-
- char buf[5] = "\\0x0";
-
- buf[3] = _getHexChar((int(c) >> 4) & 0xf);
- buf[4] = _getHexChar(c & 0xf);
-
- out.append(buf, buf + 4);
-
- start = cur + 1;
- }
- }
-
- if (start < end)
- {
- out.append(start, end);
- }
-}
-
-
} // namespace Slang