19#include "tlm_gp_shared.h"
27struct tlm_id_extension :
public tlm_extension<tlm_id_extension> {
28 virtual tlm_extension_base* clone()
const {
29 tlm_id_extension* t =
new tlm_id_extension(this->
id);
32 virtual void copy_from(tlm_extension_base
const& from) {
id =
static_cast<tlm_id_extension const&
>(from).
id; }
33 tlm_id_extension(tlm_gp_shared_ptr& i)
34 : tlm_id_extension(
reinterpret_cast<uintptr_t
>(i.
get())) {}
35 tlm_id_extension(
void* i)
36 : tlm_id_extension(
reinterpret_cast<uintptr_t
>(i)) {}
37 tlm_id_extension(uintptr_t i)
42inline uintptr_t getId(tlm::tlm_generic_payload& gp) {
46 return (uintptr_t)&gp;
49inline uintptr_t getId(tlm::tlm_generic_payload* gp) {
52 if(
auto ext = gp->get_extension<tlm_id_extension>())
58inline void setId(tlm::tlm_generic_payload& gp, uintptr_t
id) {
59 if(
auto ext = gp.get_extension<tlm_id_extension>())
62 gp.set_auto_extension(
new tlm_id_extension(
id));
64 gp.set_extension(
new tlm_id_extension(
id));
T * get() const noexcept
Return the stored pointer.