diff options
Diffstat (limited to 'source/slang/slang-syntax.h')
| -rw-r--r-- | source/slang/slang-syntax.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/slang/slang-syntax.h b/source/slang/slang-syntax.h index 86cc4b902..35c21227c 100644 --- a/source/slang/slang-syntax.h +++ b/source/slang/slang-syntax.h @@ -541,6 +541,23 @@ namespace Slang return SyntaxClass<T>::getClass(); } + NodeBase* _dynamicCastImpl(NodeBase* node, SyntaxClassBase const& toClass); + + template<typename T> + T* dynamicCast(NodeBase* node) + { + return (T*) _dynamicCastImpl(node, getClass<T>()); + } + + template<typename T> + const T* dynamicCast(const NodeBase* node) { return dynamicCast<T>(const_cast<NodeBase*>(node)); } + + template<typename T> + T* as(NodeBase* node) { return dynamicCast<T>(node); } + + template<typename T> + const T* as(const NodeBase* node) { return dynamicCast<T>(const_cast<NodeBase*>(node)); } + struct SubstitutionSet { RefPtr<Substitutions> substitutions; |
