/** ** \file ast/object-visitor.hh ** \brief Provide default visits for object-related nodes. */ #pragma once #include namespace ast { /** GenObjectVisitor provides default visit methods for object-related nodes. This class is meant to factor the code visiting object-related nodes. ast::GenObjectVisitor inherits virtually from ast::GenVisitor to allow diamond inheritance, notably for a ``compatibility'' purpose with ast::GenDefaultVisitor. For instance, bind::Binder, a visitor that handles bindings for an AST without objects, inherits from ast::DefaultVisitor to factor default (``empty'') traversal implementations for non-object-related nodes, and from ast::ObjectVisitor for object-related nodes. \verbatim /ast::Visitor/ ^ (virtual) | (virtual) ,--------------+--------------. | | | | /ast::DefaultVisitor/ /ast::ObjectVisitor/ ^ ^ | | `--------------+--------------' | | bind::Binder \endverbatim */ template