| /***************************************************************************** |
| |
| Licensed to Accellera Systems Initiative Inc. (Accellera) under one or |
| more contributor license agreements. See the NOTICE file distributed |
| with this work for additional information regarding copyright ownership. |
| Accellera licenses this file to you under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with the |
| License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
| implied. See the License for the specific language governing |
| permissions and limitations under the License. |
| |
| *****************************************************************************/ |
| |
| #ifndef __MY_EXTENSION_H__ |
| #define __MY_EXTENSION_H__ |
| |
| #include "tlm.h" |
| #include <cassert> |
| |
| class my_extension : |
| public tlm::tlm_extension<my_extension> |
| { |
| public: |
| my_extension() |
| : m_data(0) |
| {} |
| tlm_extension_base* clone() const |
| { |
| return new my_extension(*this); |
| } |
| void free() |
| { |
| delete this; |
| } |
| void copy_from(tlm_extension_base const & e) |
| { |
| sc_assert(typeid(this) == typeid(e)); |
| m_data = static_cast<my_extension const &>(e).m_data; |
| } |
| |
| int m_data; |
| }; |
| |
| struct my_extended_payload_types |
| { |
| typedef tlm::tlm_base_protocol_types::tlm_payload_type tlm_payload_type; |
| typedef tlm::tlm_base_protocol_types::tlm_phase_type tlm_phase_type; |
| }; |
| |
| #endif |