summaryrefslogtreecommitdiff
path: root/source/slang/slang-ast-base.h
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-05-21 15:36:02 -0400
committerGitHub <noreply@github.com>2020-05-21 15:36:02 -0400
commitdaf53bb2708982a2bcc6d6cc08fe88790ccf0bc2 (patch)
treed72a1f5a820db75072cc1d6055a0f35cf6feaccd /source/slang/slang-ast-base.h
parentd90ae365210cdecdad7f66a7b2e3993df2cbb7d4 (diff)
Non virtual accept implementation on AST types (#1351)
* First pass impl of making accept on AST node types non virtual. * A single switch for ITypeVistor on Val type. * Use ORIGIN to choose ITypeVisitor dispatch. * Don't use ORIGIN - we don't need special handling for ITypeVisitor on Val derived types.
Diffstat (limited to 'source/slang/slang-ast-base.h')
-rw-r--r--source/slang/slang-ast-base.h13
1 files changed, 6 insertions, 7 deletions
diff --git a/source/slang/slang-ast-base.h b/source/slang/slang-ast-base.h
index b25c8a371..66afece19 100644
--- a/source/slang/slang-ast-base.h
+++ b/source/slang/slang-ast-base.h
@@ -74,7 +74,7 @@ class Val : public NodeBase
typedef IValVisitor Visitor;
- virtual void accept(IValVisitor* visitor, void* extra) = 0;
+ void accept(IValVisitor* visitor, void* extra);
// construct a new value by applying a set of parameter
// substitutions to this one
@@ -122,8 +122,7 @@ class Type: public Val
typedef ITypeVisitor Visitor;
- virtual void accept(IValVisitor* visitor, void* extra) override;
- virtual void accept(ITypeVisitor* visitor, void* extra) = 0;
+ void accept(ITypeVisitor* visitor, void* extra);
public:
Session* getSession() { return this->session; }
@@ -271,7 +270,7 @@ class Modifier : public SyntaxNode
SLANG_ABSTRACT_CLASS(Modifier)
typedef IModifierVisitor Visitor;
- virtual void accept(IModifierVisitor* visitor, void* extra) = 0;
+ void accept(IModifierVisitor* visitor, void* extra);
// Next modifier in linked list of modifiers on same piece of syntax
RefPtr<Modifier> next;
@@ -312,7 +311,7 @@ class DeclBase : public ModifiableSyntaxNode
typedef IDeclVisitor Visitor;
- virtual void accept(IDeclVisitor* visitor, void* extra) = 0;
+ void accept(IDeclVisitor* visitor, void* extra);
};
class Decl : public DeclBase
@@ -350,7 +349,7 @@ class Expr : public SyntaxNode
QualType type;
- virtual void accept(IExprVisitor* visitor, void* extra) = 0;
+ void accept(IExprVisitor* visitor, void* extra);
};
class Stmt : public ModifiableSyntaxNode
@@ -359,7 +358,7 @@ class Stmt : public ModifiableSyntaxNode
typedef IStmtVisitor Visitor;
- virtual void accept(IStmtVisitor* visitor, void* extra) = 0;
+ void accept(IStmtVisitor* visitor, void* extra);
};
} // namespace Slang