From 2d3392f22c894957d17dd13486e0565c4ecea89c Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Fri, 27 May 2022 17:28:05 -0400 Subject: Added NativeStringType (#2252) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. --- source/core/slang-token-reader.cpp | 87 -------------------------------------- 1 file changed, 87 deletions(-) (limited to 'source/core/slang-token-reader.cpp') diff --git a/source/core/slang-token-reader.cpp b/source/core/slang-token-reader.cpp index 7ffbc12fa..5acc1736c 100644 --- a/source/core/slang-token-reader.cpp +++ b/source/core/slang-token-reader.cpp @@ -671,93 +671,6 @@ namespace Misc { return TokenizeText("", text); } - String EscapeStringLiteral(String str) - { - StringBuilder sb; - sb << "\""; - const Index length = str.getLength(); - const char*const data = str.getBuffer(); - for (Index i = 0; i < length; i++) - { - switch (data[i]) - { - case '\n': - sb << "\\n"; - break; - case '\r': - sb << "\\r"; - break; - case '\t': - sb << "\\t"; - break; - case '\v': - sb << "\\v"; - break; - case '\'': - sb << "\\\'"; - break; - case '\"': - sb << "\\\""; - break; - case '\\': - sb << "\\\\"; - break; - default: - sb << data[i]; - break; - } - } - sb << "\""; - return sb.ProduceString(); - } - - String UnescapeStringLiteral(String str) - { - StringBuilder sb; - const Index length = str.getLength(); - const char*const data = str.getBuffer(); - for (Index i = 0; i < length; i++) - { - if (data[i] == '\\' && i < length - 1) - { - switch (data[i + 1]) - { - case 's': - sb << " "; - break; - case 't': - sb << '\t'; - break; - case 'n': - sb << '\n'; - break; - case 'r': - sb << '\r'; - break; - case 'v': - sb << '\v'; - break; - case '\'': - sb << '\''; - break; - case '\"': - sb << "\""; - break; - case '\\': - sb << "\\"; - break; - default: - i = i - 1; - sb << data[i]; - } - i++; - } - else - sb << data[i]; - } - return sb.ProduceString(); - } - TokenReader::TokenReader(String text) { this->tokens = TokenizeText("", text); -- cgit v1.2.3