Skip to content

File axi_tlm_ext.h

File List > axi > axi_tlm_ext.h

Go to the documentation of this file

#pragma once

#include <ARM/TLM/arm_axi4.h>

class axi_tlm_extension : public tlm::tlm_extension<axi_tlm_extension> {
 public:
  ARM::AXI::Payload* arm_payload_;

  explicit axi_tlm_extension(ARM::AXI::Payload* arm_payload = nullptr)
      : arm_payload_(arm_payload) {
    if (arm_payload_) arm_payload_->ref();
  }

  virtual ~axi_tlm_extension() {
    if (arm_payload_) arm_payload_->unref();
  }

  virtual tlm::tlm_extension_base* clone() const {
    return new axi_tlm_extension(arm_payload_);
  }

  virtual void copy_from(const tlm_extension_base& extension) {
    if (arm_payload_) arm_payload_->unref();
    arm_payload_ =
        static_cast<axi_tlm_extension const&>(extension).arm_payload_;
    arm_payload_->ref();
  }
};