blob: a6a3ed11f545b5126b7d3ec01e1475467c5a6cad [file] [log] [blame]
#ifndef NETLIST_WALKER_H
#define NETLIST_WALKER_H
#include "vpr_types.h"
class NetlistVisitor;
class NetlistWalker {
public:
NetlistWalker(NetlistVisitor& netlist_visitor)
: visitor_(netlist_visitor) {}
void walk();
private:
void walk_atoms(const t_pb* pb);
private:
NetlistVisitor& visitor_;
};
class NetlistVisitor {
public:
virtual ~NetlistVisitor() = default;
void start() { start_impl(); }
void visit_top(const char* top_level_name) { visit_top_impl(top_level_name); }
void visit_clb(const t_pb* clb) { visit_clb_impl(clb); }
void visit_atom(const t_pb* atom) { visit_atom_impl(atom); }
void finish() { finish_impl(); }
protected:
//All implementation methods are no-ops in this base class
virtual void start_impl();
virtual void visit_top_impl(const char* top_level_name);
virtual void visit_clb_impl(const t_pb* clb);
virtual void visit_atom_impl(const t_pb* atom);
virtual void finish_impl();
};
#endif