summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/slang-deprecated.h3
-rw-r--r--include/slang.h7
-rw-r--r--source/slang/slang-reflection-api.cpp15
3 files changed, 25 insertions, 0 deletions
diff --git a/include/slang-deprecated.h b/include/slang-deprecated.h
index c81ae8537..026845888 100644
--- a/include/slang-deprecated.h
+++ b/include/slang-deprecated.h
@@ -750,6 +750,9 @@ extern "C"
SLANG_API SlangReflectionGeneric* spReflectionDecl_castToGeneric(SlangReflectionDecl* decl);
SLANG_API SlangReflectionType* spReflection_getTypeFromDecl(SlangReflectionDecl* decl);
SLANG_API SlangReflectionDecl* spReflectionDecl_getParent(SlangReflectionDecl* decl);
+ SLANG_API SlangReflectionModifier* spReflectionDecl_findModifier(
+ SlangReflectionDecl* decl,
+ SlangModifierID modifierID);
// Generic Reflection
diff --git a/include/slang.h b/include/slang.h
index a3d979de5..a3ed2112a 100644
--- a/include/slang.h
+++ b/include/slang.h
@@ -3518,6 +3518,13 @@ struct DeclReflection
return (DeclReflection*)spReflectionDecl_getParent((SlangReflectionDecl*)this);
}
+ Modifier* findModifier(Modifier::ID id)
+ {
+ return (Modifier*)spReflectionDecl_findModifier(
+ (SlangReflectionDecl*)this,
+ (SlangModifierID)id);
+ }
+
template<Kind K>
struct FilteredList
{
diff --git a/source/slang/slang-reflection-api.cpp b/source/slang/slang-reflection-api.cpp
index c5d39859e..a14bb4ac1 100644
--- a/source/slang/slang-reflection-api.cpp
+++ b/source/slang/slang-reflection-api.cpp
@@ -3516,6 +3516,21 @@ SLANG_API SlangReflectionModifier* spReflectionFunction_FindModifier(
return spReflectionVariable_FindModifier(varRefl, modifierID);
}
+SLANG_API SlangReflectionModifier* spReflectionDecl_findModifier(
+ SlangReflectionDecl* decl,
+ SlangModifierID modifierID)
+{
+ Decl* slangDecl = (Decl*)decl;
+ if (!slangDecl)
+ return nullptr;
+
+ auto varRefl = convert(DeclRef<Decl>(slangDecl));
+ if (!varRefl)
+ return nullptr;
+
+ return spReflectionVariable_FindModifier(varRefl, modifierID);
+}
+
SLANG_API unsigned int spReflectionFunction_GetUserAttributeCount(SlangReflectionFunction* inFunc)
{
auto func = convertToFunc(inFunc);