21 #ifndef BM_BM_SIM_PHV_SOURCE_H_
22 #define BM_BM_SIM_PHV_SOURCE_H_
26 #include "device_id.h"
27 #include "phv_forward.h"
31 class PHVSourceIface {
33 virtual ~PHVSourceIface() { }
35 std::unique_ptr<PHV> get(cxt_id_t cxt);
37 void release(cxt_id_t cxt, std::unique_ptr<PHV> phv);
39 void set_phv_factory(cxt_id_t cxt,
const PHVFactory *factory);
41 size_t phvs_in_use(cxt_id_t cxt);
43 static std::unique_ptr<PHVSourceIface> make_phv_source(
size_t size = 1);
46 virtual std::unique_ptr<PHV> get_(cxt_id_t cxt) = 0;
48 virtual void release_(cxt_id_t cxt, std::unique_ptr<PHV> phv) = 0;
50 virtual void set_phv_factory_(cxt_id_t cxt,
const PHVFactory *factory) = 0;
52 virtual size_t phvs_in_use_(cxt_id_t cxt) = 0;
57 #endif // BM_BM_SIM_PHV_SOURCE_H_