scc  2022.4.0
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 More...
 
virtual const_reference operator[] (std::size_t idx) const noexcept=0
 get value at index More...
 
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 338 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 354 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 367 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 450 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 440 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 433 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 426 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 380 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 390 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 403 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 413 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 373 of file register.h.


The documentation for this class was generated from the following file: