summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ast-decl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ast-decl.cpp')
-rw-r--r--source/slang/slang-ast-decl.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/slang/slang-ast-decl.cpp b/source/slang/slang-ast-decl.cpp
index 530f983d9..4c5d32f71 100644
--- a/source/slang/slang-ast-decl.cpp
+++ b/source/slang/slang-ast-decl.cpp
@@ -105,6 +105,20 @@ void ContainerDecl::buildMemberDictionary()
SLANG_ASSERT(isMemberDictionaryValid());
}
+Index ContainerDecl::getDeclIndex(Decl* decl)
+{
+ if (Index* ptr = mapDeclMemberToIndex.tryGetValue(decl))
+ {
+ return *ptr;
+ }
+ Index res = members.findFirstIndex([&](Decl* d) { return d == decl; });
+ if (res >= Index(0))
+ {
+ mapDeclMemberToIndex[decl] = res;
+ }
+ return res;
+}
+
bool isLocalVar(const Decl* decl)
{
const auto varDecl = as<VarDecl>(decl);