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; }
276 void set_data(std::vector<uint8_t>&& value) { m_data = std::move(value); }
308 void set_response_status(
const tlm_response_status response_status) { m_response_status = response_status; }
321 auto ret = pool.front();
329 t->free_all_extensions();
338 std::deque<tlm_network_payload<CMDENUM>*> pool;
348 static thread_local gp_mm mm;
354 m_command = x.m_command;
356 m_response_status = x.m_response_status;
360 std::vector<uint8_t> m_data;
361 tlm_response_status m_response_status;
364template <
typename CMDENUM>
367, m_command(static_cast<CMDENUM>(0))
368, m_response_status(TLM_OK_RESPONSE) {}
370template <
typename CMDENUM>
373, m_command(static_cast<CMDENUM>(0))
374, m_response_status(TLM_OK_RESPONSE) {}
376inline void tlm_network_payload_base::free_all_extensions() {
377 m_extensions.free_entire_cache();
378 for(
unsigned int i = 0; i < m_extensions.size(); i++) {
379 if(m_extensions[i]) {
380 m_extensions[i]->free();
390 copy_extensions_from(other);
394 switch(m_response_status) {
395 case TLM_OK_RESPONSE:
396 return "TLM_OK_RESPONSE";
397 case TLM_INCOMPLETE_RESPONSE:
398 return "TLM_INCOMPLETE_RESPONSE";
399 case TLM_GENERIC_ERROR_RESPONSE:
400 return "TLM_GENERIC_ERROR_RESPONSE";
401 case TLM_ADDRESS_ERROR_RESPONSE:
402 return "TLM_ADDRESS_ERROR_RESPONSE";
403 case TLM_COMMAND_ERROR_RESPONSE:
404 return "TLM_COMMAND_ERROR_RESPONSE";
405 case TLM_BURST_ERROR_RESPONSE:
406 return "TLM_BURST_ERROR_RESPONSE";
407 case TLM_BYTE_ENABLE_ERROR_RESPONSE:
408 return "TLM_BYTE_ENABLE_ERROR_RESPONSE";
410 return "TLM_UNKNOWN_RESPONSE";
413inline tlm_extension_base* tlm_network_payload_base::set_extension(
unsigned int index, tlm_extension_base* ext) {
414 sc_assert(index < m_extensions.size());
415 tlm_extension_base* tmp = m_extensions[index];
416 m_extensions[index] = ext;
420inline tlm_extension_base* tlm_network_payload_base::set_auto_extension(
unsigned int index, tlm_extension_base* ext) {
421 sc_assert(index < m_extensions.size());
422 tlm_extension_base* tmp = m_extensions[index];
423 m_extensions[index] = ext;
425 m_extensions.insert_in_cache(&m_extensions[index]);
426 sc_assert(m_mm != 0);
430inline tlm_extension_base* tlm_network_payload_base::get_extension(
unsigned int index)
const {
431 sc_assert(index < m_extensions.size());
432 return m_extensions[index];
435inline void tlm_network_payload_base::clear_extension(
unsigned int index) {
436 sc_assert(index < m_extensions.size());
437 m_extensions[index] =
static_cast<tlm_extension_base*
>(0);
440inline void tlm_network_payload_base::release_extension(
unsigned int index) {
441 sc_assert(index < m_extensions.size());
443 m_extensions.insert_in_cache(&m_extensions[index]);
445 m_extensions[index]->free();
446 m_extensions[index] =
static_cast<tlm_extension_base*
>(0);
452 sc_assert(m_extensions.size() <= other.m_extensions.size());
453 for(
unsigned int i = 0; i < m_extensions.size(); i++) {
454 if(other.m_extensions[i]) {
455 if(m_extensions[i]) {
456 m_extensions[i]->copy_from(*other.m_extensions[i]);
464 if(m_extensions.size() < other.m_extensions.size())
465 m_extensions.expand(other.m_extensions.size());
466 for(
unsigned int i = 0; i < other.m_extensions.size(); i++) {
467 if(other.m_extensions[i]) {
468 if(!m_extensions[i]) {
469 tlm_extension_base* ext = other.m_extensions[i]->clone();
472 set_auto_extension(i, ext);
474 set_extension(i, ext);
478 m_extensions[i]->copy_from(*other.m_extensions[i]);
484inline void tlm_network_payload_base::resize_extensions() { m_extensions.expand(max_num_extensions()); }