diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-05-21 15:36:02 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-21 15:36:02 -0400 |
| commit | daf53bb2708982a2bcc6d6cc08fe88790ccf0bc2 (patch) | |
| tree | d72a1f5a820db75072cc1d6055a0f35cf6feaccd /source/slang/slang-ast-base.h | |
| parent | d90ae365210cdecdad7f66a7b2e3993df2cbb7d4 (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.h | 13 |
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 |
