252 std::vector<uint8_t>
const&
get_data()
const {
return m_data; }
260 std::vector<uint8_t>&
get_data() {
return m_data; }
268 void set_data(std::vector<uint8_t>
const& value) { m_data = value; }
300 void set_response_status(
const tlm_response_status response_status) { m_response_status = response_status; }
313 auto ret = pool.front();
321 t->free_all_extensions();
330 std::deque<tlm_network_payload<CMDENUM>*> pool;
340 static thread_local gp_mm mm;
346 m_command = x.m_command;
348 m_response_status = x.m_response_status;
352 std::vector<uint8_t> m_data;
353 tlm_response_status m_response_status;
356template <
typename CMDENUM>
359, m_command(static_cast<CMDENUM>(0))
360, m_response_status(TLM_OK_RESPONSE) {}
362template <
typename CMDENUM>
365, m_command(static_cast<CMDENUM>(0))
366, m_response_status(TLM_OK_RESPONSE) {}
368inline void tlm_network_payload_base::free_all_extensions() {
369 m_extensions.free_entire_cache();
370 for(
unsigned int i = 0; i < m_extensions.size(); i++) {
371 if(m_extensions[i]) {
372 m_extensions[i]->free();
382 copy_extensions_from(other);
386 switch(m_response_status) {
387 case TLM_OK_RESPONSE:
388 return "TLM_OK_RESPONSE";
389 case TLM_INCOMPLETE_RESPONSE:
390 return "TLM_INCOMPLETE_RESPONSE";
391 case TLM_GENERIC_ERROR_RESPONSE:
392 return "TLM_GENERIC_ERROR_RESPONSE";
393 case TLM_ADDRESS_ERROR_RESPONSE:
394 return "TLM_ADDRESS_ERROR_RESPONSE";
395 case TLM_COMMAND_ERROR_RESPONSE:
396 return "TLM_COMMAND_ERROR_RESPONSE";
397 case TLM_BURST_ERROR_RESPONSE:
398 return "TLM_BURST_ERROR_RESPONSE";
399 case TLM_BYTE_ENABLE_ERROR_RESPONSE:
400 return "TLM_BYTE_ENABLE_ERROR_RESPONSE";
402 return "TLM_UNKNOWN_RESPONSE";
405inline tlm_extension_base* tlm_network_payload_base::set_extension(
unsigned int index, tlm_extension_base* ext) {
406 sc_assert(index < m_extensions.size());
407 tlm_extension_base* tmp = m_extensions[index];
408 m_extensions[index] = ext;
412inline tlm_extension_base* tlm_network_payload_base::set_auto_extension(
unsigned int index, tlm_extension_base* ext) {
413 sc_assert(index < m_extensions.size());
414 tlm_extension_base* tmp = m_extensions[index];
415 m_extensions[index] = ext;
417 m_extensions.insert_in_cache(&m_extensions[index]);
418 sc_assert(m_mm != 0);
422inline tlm_extension_base* tlm_network_payload_base::get_extension(
unsigned int index)
const {
423 sc_assert(index < m_extensions.size());
424 return m_extensions[index];
427inline void tlm_network_payload_base::clear_extension(
unsigned int index) {
428 sc_assert(index < m_extensions.size());
429 m_extensions[index] =
static_cast<tlm_extension_base*
>(0);
432inline void tlm_network_payload_base::release_extension(
unsigned int index) {
433 sc_assert(index < m_extensions.size());
435 m_extensions.insert_in_cache(&m_extensions[index]);
437 m_extensions[index]->free();
438 m_extensions[index] =
static_cast<tlm_extension_base*
>(0);
444 sc_assert(m_extensions.size() <= other.m_extensions.size());
445 for(
unsigned int i = 0; i < m_extensions.size(); i++) {
446 if(other.m_extensions[i]) {
447 if(m_extensions[i]) {
448 m_extensions[i]->copy_from(*other.m_extensions[i]);
456 if(m_extensions.size() < other.m_extensions.size())
457 m_extensions.expand(other.m_extensions.size());
458 for(
unsigned int i = 0; i < other.m_extensions.size(); i++) {
459 if(other.m_extensions[i]) {
460 if(!m_extensions[i]) {
461 tlm_extension_base* ext = other.m_extensions[i]->clone();
464 set_auto_extension(i, ext);
466 set_extension(i, ext);
470 m_extensions[i]->copy_from(*other.m_extensions[i]);
476inline void tlm_network_payload_base::resize_extensions() { m_extensions.expand(max_num_extensions()); }