From 4880789e3003441732cca4471091563f36531635 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Mon, 29 Apr 2019 17:03:46 -0400 Subject: String/List closer to conventions, and use Index type (#959) * List made members m_ Tweaked types to closer match conventions. * Use asserts for checking conditions on List. Other small improvements. * List.Count() -> getSize() * List Add -> add First -> getFirst Last -> getLast RemoveLast -> removeLast ReleaseBuffer -> detachBuffer GetArrayView -> getArrayView * List:: AddRange -> addRange Capacity -> getCapacity Insert -> insert InsertRange -> insertRange AddRange -> addRange RemoveRange -> removeRange RemoveAt -> removeAt Remove -> remove Reverse -> reverse FastRemove -> fastRemove FastRemoveAt -> fastRemoveAt Clear -> clear * List FreeBuffer -> _deallocateBuffer Free -> clearAndDeallocate SwapWith -> swapWith * List SetSize -> setSize Reserve -> reserve GrowToSize growToSize * UnsafeShrinkToSize -> unsafeShrinkToSize Compress -> compress FindLast -> findLastIndex FindLast -> findLastIndex Simplify Contains * List Removed m_allocator (wasn't used) Swap -> swapElements Sort -> sort Contains -> contains ForEach -> forEach QuickSort -> quickSort InsertionSort -> insertionSort BinarySearch -> binarySearch Max -> calcMax Min -> calcMin * Initializer::Initialize -> initialize List:: Allocate -> _allocate Init -> _init IndexOf -> indexOf * * Put #include in common.h, and remove unneeded inclusions * Small refactor of ArrayView - remove stride as not used * getSize -> getCount setSize -> setCount unsafeShrinkToSize->unsafeShrinkToCount growToSize -> growToCount m_size -> m_count * Some tidy up around Allocator. * Use Index type on List. * Refactor of IntSet. First tentative look at using Index. * Made Index an Int Did preliminary fixes. Made String use Index. * Partial refactor of String. * String::Buffer -> getBuffer ToWString -> toWString * Small improvements to String. String:: Buffer() -> getBuffer() Equals() -> equals * Try to use Index where appropriate. * Fix warnings on windows x86 builds. --- source/core/token-reader.cpp | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'source/core/token-reader.cpp') diff --git a/source/core/token-reader.cpp b/source/core/token-reader.cpp index bf3294c8e..ea40c9ed9 100644 --- a/source/core/token-reader.cpp +++ b/source/core/token-reader.cpp @@ -44,15 +44,15 @@ namespace Slang void ParseOperators(const String & str, List & tokens, TokenFlags& tokenFlags, int line, int col, int startPos, String fileName) { - int pos = 0; - while (pos < (int)str.Length()) + Index pos = 0; + while (pos < str.getLength()) { wchar_t curChar = str[pos]; - wchar_t nextChar = (pos < (int)str.Length() - 1) ? str[pos + 1] : '\0'; - wchar_t nextNextChar = (pos < (int)str.Length() - 2) ? str[pos + 2] : '\0'; + wchar_t nextChar = (pos < str.getLength() - 1) ? str[pos + 1] : '\0'; + wchar_t nextNextChar = (pos < str.getLength() - 2) ? str[pos + 2] : '\0'; auto InsertToken = [&](TokenType type, const String & ct) { - tokens.Add(Token(type, ct, line, col + pos, pos + startPos, fileName, tokenFlags)); + tokens.add(Token(type, ct, line, int(col + pos), int(pos + startPos), fileName, tokenFlags)); tokenFlags = 0; }; switch (curChar) @@ -323,7 +323,7 @@ namespace Slang List TokenizeText(const String & fileName, const String & text) { - int lastPos = 0, pos = 0; + Index lastPos = 0, pos = 0; int line = 1, col = 0; String file = fileName; State state = State::Start; @@ -335,7 +335,7 @@ namespace Slang auto InsertToken = [&](TokenType type) { derivative = LexDerivative::None; - tokenList.Add(Token(type, tokenBuilder.ToString(), tokenLine, tokenCol, pos, file, tokenFlags)); + tokenList.add(Token(type, tokenBuilder.ToString(), tokenLine, tokenCol, int(pos), file, tokenFlags)); tokenFlags = 0; tokenBuilder.Clear(); }; @@ -365,10 +365,10 @@ namespace Slang break; } }; - while (pos <= (int)text.Length()) + while (pos <= text.getLength()) { - char curChar = (pos < (int)text.Length() ? text[pos] : ' '); - char nextChar = (pos < (int)text.Length() - 1) ? text[pos + 1] : '\0'; + char curChar = (pos < text.getLength() ? text[pos] : ' '); + char nextChar = (pos < text.getLength() - 1) ? text[pos + 1] : '\0'; if (lastPos != pos) { if (curChar == '\n') @@ -490,7 +490,7 @@ namespace Slang else { //do token analyze - ParseOperators(tokenBuilder.ToString(), tokenList, tokenFlags, tokenLine, tokenCol, (int)(pos - tokenBuilder.Length()), file); + ParseOperators(tokenBuilder.ToString(), tokenList, tokenFlags, tokenLine, tokenCol, (int)(pos - tokenBuilder.getLength()), file); tokenBuilder.Clear(); state = State::Start; } @@ -674,9 +674,11 @@ namespace Slang { StringBuilder sb; sb << "\""; - for (int i = 0; i < (int)str.Length(); i++) + const Index length = str.getLength(); + const char*const data = str.getBuffer(); + for (Index i = 0; i < length; i++) { - switch (str[i]) + switch (data[i]) { case ' ': sb << "\\s"; @@ -703,7 +705,7 @@ namespace Slang sb << "\\\\"; break; default: - sb << str[i]; + sb << data[i]; break; } } @@ -714,11 +716,13 @@ namespace Slang String UnescapeStringLiteral(String str) { StringBuilder sb; - for (int i = 0; i < (int)str.Length(); i++) + const Index length = str.getLength(); + const char*const data = str.getBuffer(); + for (Index i = 0; i < length; i++) { - if (str[i] == '\\' && i < (int)str.Length() - 1) + if (data[i] == '\\' && i < length - 1) { - switch (str[i + 1]) + switch (data[i + 1]) { case 's': sb << " "; @@ -746,12 +750,12 @@ namespace Slang break; default: i = i - 1; - sb << str[i]; + sb << data[i]; } i++; } else - sb << str[i]; + sb << data[i]; } return sb.ProduceString(); } -- cgit v1.2.3