diff options
Diffstat (limited to 'source/slang/slang-ast-decl.cpp')
| -rw-r--r-- | source/slang/slang-ast-decl.cpp | 14 |
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); |
