diff options
Diffstat (limited to 'source/slang/slang-parameter-binding.cpp')
| -rw-r--r-- | source/slang/slang-parameter-binding.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/slang/slang-parameter-binding.cpp b/source/slang/slang-parameter-binding.cpp index 6a1080b0e..046c35ef9 100644 --- a/source/slang/slang-parameter-binding.cpp +++ b/source/slang/slang-parameter-binding.cpp @@ -480,8 +480,8 @@ static bool isDigit(char c) return (c >= '0') && (c <= '9'); } -void splitNameAndIndex( - UnownedStringSlice const& text, +bool splitNameAndIndex( + UnownedStringSlice const& text, UnownedStringSlice& outName, UnownedStringSlice& outDigits) { @@ -489,14 +489,20 @@ void splitNameAndIndex( char const* digitsEnd = text.end(); char const* nameEnd = digitsEnd; + // ExplicitIndex is when a semantic has an index at the end of its name + // "SV_TARGET1" has an ExplicitIndex + // "SV_TARGET" does not have an ExplicitIndex + bool hasExplicitIndex = false; while( nameEnd != nameBegin && isDigit(*(nameEnd - 1)) ) { + hasExplicitIndex = true; nameEnd--; } char const* digitsBegin = nameEnd; outName = UnownedStringSlice(nameBegin, nameEnd); outDigits = UnownedStringSlice(digitsBegin, digitsEnd); + return hasExplicitIndex; } LayoutResourceKind findRegisterClassFromName(UnownedStringSlice const& registerClassName) |
