scc 2025.09
SystemC components library
scc::sc_register_indexed< DATATYPE, SIZE, START > Class Template Reference

#include <register.h>

Inheritance diagram for scc::sc_register_indexed< DATATYPE, SIZE, START >:
Collaboration diagram for scc::sc_register_indexed< DATATYPE, SIZE, START >:

Public Types

using BASE_DATA_TYPE = typename impl::helper<DATATYPE>::Type
using value_type = sc_register<DATATYPE>
using pointer = value_type*
Public Types inherited from scc::indexed_resource_access_if
using value_type = resource_access_if
using pointer = value_type*
using const_pointer = const value_type*
using reference = value_type&
using const_reference = const value_type&
using iterator = resource_access_if*
using const_iterator = const resource_access_if*

Public Member Functions

 sc_register_indexed (sc_core::sc_module_name nm, std::array< DATATYPE, SIZE > &storage, const DATATYPE reset_val, resetable &owner, BASE_DATA_TYPE rdmask=std::numeric_limits< BASE_DATA_TYPE >::is_signed ? -1 :std::numeric_limits< BASE_DATA_TYPE >::max(), BASE_DATA_TYPE wrmask=std::numeric_limits< BASE_DATA_TYPE >::is_signed ? -1 :std::numeric_limits< BASE_DATA_TYPE >::max())
 ~sc_register_indexed () override
size_t size () override
void set_read_cb (std::function< bool(size_t, const sc_register< DATATYPE > &, DATATYPE &)> read_cb)
void set_read_cb (std::function< bool(size_t, const sc_register< DATATYPE > &, DATATYPE &, sc_core::sc_time &)> read_cb)
void set_write_cb (std::function< bool(size_t, sc_register< DATATYPE > &, DATATYPE const &)> write_cb)
void set_write_cb (std::function< bool(size_t, sc_register< DATATYPE > &, DATATYPE const &, sc_core::sc_time &)> write_cb)
reference operator[] (size_t idx) noexcept override
const_reference operator[] (size_t idx) const noexcept override
reference at (size_t idx) override
const_reference at (size_t idx) const override
Public Member Functions inherited from scc::indexed_resource_access_if
virtual reference operator[] (std::size_t idx) noexcept=0
 get value at index
virtual const_reference operator[] (std::size_t idx) const noexcept=0
 get value at index
virtual reference at (std::size_t idx)=0
virtual const_reference at (std::size_t idx) const =0

Detailed Description

template<typename DATATYPE, size_t SIZE, size_t START = 0>
class scc::sc_register_indexed< DATATYPE, SIZE, START >

an indexed register aka a register file of a certain type

Definition at line 342 of file register.h.

Member Typedef Documentation

◆ BASE_DATA_TYPE

template<typename DATATYPE, size_t SIZE, size_t START = 0>
using scc::sc_register_indexed< DATATYPE, SIZE, START >::BASE_DATA_TYPE = typename impl::helper<DATATYPE>::Type

Definition at line 344 of file register.h.

◆ pointer

template<typename DATATYPE, size_t SIZE, size_t START = 0>
using scc::sc_register_indexed< DATATYPE, SIZE, START >::pointer = value_type*

Definition at line 347 of file register.h.

◆ value_type

template<typename DATATYPE, size_t SIZE, size_t START = 0>
using scc::sc_register_indexed< DATATYPE, SIZE, START >::value_type = sc_register<DATATYPE>

Definition at line 346 of file register.h.

Constructor & Destructor Documentation

◆ sc_register_indexed()

template<typename DATATYPE, size_t SIZE, size_t START = 0>
scc::sc_register_indexed< DATATYPE, SIZE, START >::sc_register_indexed ( sc_core::sc_module_name nm,
std::array< DATATYPE, SIZE > & storage,
const DATATYPE reset_val,
resetable & owner,
BASE_DATA_TYPE rdmask = std::numeric_limits<BASE_DATA_TYPE>::is_signed ? -1 : std::numeric_limits<BASE_DATA_TYPE>::max(),
BASE_DATA_TYPE wrmask = std::numeric_limits<BASE_DATA_TYPE>::is_signed ? -1 : std::numeric_limits<BASE_DATA_TYPE>::max() )
inline

the constructor

Parameters
nm
storage
reset_val
owner
rdmask
wrmask

Definition at line 358 of file register.h.

◆ ~sc_register_indexed()

template<typename DATATYPE, size_t SIZE, size_t START = 0>
scc::sc_register_indexed< DATATYPE, SIZE, START >::~sc_register_indexed ( )
inlineoverride

the destructor

Definition at line 371 of file register.h.

Member Function Documentation

◆ at() [1/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
const_reference scc::sc_register_indexed< DATATYPE, SIZE, START >::at ( size_t idx) const
inlineoverride

const element access operator

Parameters
idx
Returns
the data reference at the index

Definition at line 454 of file register.h.

◆ at() [2/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
reference scc::sc_register_indexed< DATATYPE, SIZE, START >::at ( size_t idx)
inlineoverride

Element access operator

Parameters
idxthe index
Returns
the data reference at the index

Definition at line 444 of file register.h.

◆ operator[]() [1/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
const_reference scc::sc_register_indexed< DATATYPE, SIZE, START >::operator[] ( size_t idx) const
inlineoverridenoexcept

const element access operator

Parameters
idx
Returns
the data reference at the index

Definition at line 437 of file register.h.

◆ operator[]() [2/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
reference scc::sc_register_indexed< DATATYPE, SIZE, START >::operator[] ( size_t idx)
inlineoverridenoexcept

Element access operator

Parameters
idxthe index
Returns
the data reference at the index

Definition at line 430 of file register.h.

◆ set_read_cb() [1/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
void scc::sc_register_indexed< DATATYPE, SIZE, START >::set_read_cb ( std::function< bool(size_t, const sc_register< DATATYPE > &, DATATYPE &)> read_cb)
inline

set the read callback triggered upon a read request without forwarding the annotated time this is primary for backward compatibility

Parameters
read_cb

Definition at line 384 of file register.h.

◆ set_read_cb() [2/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
void scc::sc_register_indexed< DATATYPE, SIZE, START >::set_read_cb ( std::function< bool(size_t, const sc_register< DATATYPE > &, DATATYPE &, sc_core::sc_time &)> read_cb)
inline

set the read callback triggered upon a read request

Parameters
read_cb

Definition at line 394 of file register.h.

◆ set_write_cb() [1/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
void scc::sc_register_indexed< DATATYPE, SIZE, START >::set_write_cb ( std::function< bool(size_t, sc_register< DATATYPE > &, DATATYPE const &)> write_cb)
inline

set the write callback triggered upon a write request without forwarding the annotated time this is primary for backward compatibility

Parameters
write_cb

Definition at line 407 of file register.h.

◆ set_write_cb() [2/2]

template<typename DATATYPE, size_t SIZE, size_t START = 0>
void scc::sc_register_indexed< DATATYPE, SIZE, START >::set_write_cb ( std::function< bool(size_t, sc_register< DATATYPE > &, DATATYPE const &, sc_core::sc_time &)> write_cb)
inline

set the write callback triggered upon a write request

Parameters
write_cb

Definition at line 417 of file register.h.

◆ size()

template<typename DATATYPE, size_t SIZE, size_t START = 0>
size_t scc::sc_register_indexed< DATATYPE, SIZE, START >::size ( )
inlineoverridevirtual

get the size of the register file

Returns
the size

Implements scc::indexed_resource_access_if.

Definition at line 377 of file register.h.


The documentation for this class was generated from the following file:
  • /home/eyck/Projects/MINRES/SystemC-Components/src/components/scc/register.h