14#ifndef SIMICS_SYSTEMC_AWARENESS_EXPORT_SPY_FACTORY_H
15#define SIMICS_SYSTEMC_AWARENESS_EXPORT_SPY_FACTORY_H
21#include <sysc/intc/communication/sc_export_spy.h>
31template <
typename IF,
typename HANDLER>
34 typedef typename std::vector<HANDLER *>::iterator handler_iterator;
35 typedef typename std::map<IF*, intc::sc_export_spy<IF> *>::iterator
38 ExportSpyFactory(
const ExportSpyFactory &f) {}
39 ExportSpyFactory &operator = (
const ExportSpyFactory &f) {}
40 virtual ~ExportSpyFactory() {
41 for (
auto *handler : handlers_)
43 for (
auto &spy : spies_)
46 void applyOn(sc_core::sc_object *sc_object)
override {
47 if (sc_core::sc_export<IF> *if_
48 =
dynamic_cast<sc_core::sc_export<IF> *
>(sc_object)) {
49 intc::sc_export_spy<IF> *spy =
new intc::sc_export_spy<IF>(if_);
50 HANDLER *handler =
new HANDLER(spy);
51 handlers_.push_back(handler);
52 spy->set_spy_interface(handler);
53 spies_[spy->get_interface()] = spy;
56 void done()
override {}
57 std::map<IF*, intc::sc_export_spy<IF> *> *get_spies() {
62 std::vector<HANDLER *> handlers_;
63 std::map<IF*, intc::sc_export_spy<IF> *> spies_;
Definition: traverser_interface.h:24