summaryrefslogtreecommitdiff
path: root/source/slang/slang-parameter-binding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-parameter-binding.cpp')
-rw-r--r--source/slang/slang-parameter-binding.cpp10
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)