#pragma once #include "visitor.hpp" namespace dsp { struct stmt_t { virtual void accept(visitor_t const * visitor) const = 0; virtual uint32_t accept(visitor_t const * visitor) const = 0; }; template struct stmt_accept_t : stmt_t { virtual void accept(visitor_t const * visitor) const { return visitor->visit(static_cast(this)); } virtual uint32_t accept(visitor_t const * visitor) const { return visitor->visit(static_cast(this)); } }; }