SystemC  2.3.2
Accellera SystemC proof-of-concept library
sc_proxy.h File Reference

Proxy base class for vector data types. More...

Include dependency graph for sc_proxy.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  sc_dt::sc_proxy< X >
 Base class template for bit/logic vector classes. More...
 
class  sc_dt::sc_bitref_r< T >
 
class  sc_dt::sc_bitref< X >
 
class  sc_dt::sc_subref_r< X >
 
class  sc_dt::sc_subref< X >
 
class  sc_dt::sc_concref_r< X, Y >
 
class  sc_dt::sc_concref< X, Y >
 
class  sc_dt::sc_proxy_traits< X >
 Template traits helper to select the correct bit/value/vector_types for. More...
 
struct  sc_dt::sc_proxy_traits< sc_bv_base >
 
struct  sc_dt::sc_proxy_traits< sc_lv_base >
 
struct  sc_dt::sc_proxy_traits< sc_bitref_r< X > >
 
struct  sc_dt::sc_proxy_traits< sc_bitref< X > >
 
struct  sc_dt::sc_proxy_traits< sc_subref_r< X > >
 
struct  sc_dt::sc_proxy_traits< sc_subref< X > >
 
struct  sc_dt::sc_proxy_traits< sc_proxy< X > >
 
struct  sc_dt::sc_mixed_proxy_traits_helper< X, Y >
 
struct  sc_dt::sc_mixed_proxy_traits_helper< X, X >
 
struct  sc_dt::sc_proxy_traits< sc_concref_r< X, Y > >
 
struct  sc_dt::sc_proxy_traits< sc_concref< X, Y > >
 
class  sc_dt::sc_proxy< X >
 Base class template for bit/logic vector classes. More...
 

Namespaces

 sc_dt
 

Macros

#define DECL_BITWISE_AND_OP_T(tp)
 
#define DECL_BITWISE_OR_OP_T(tp)
 
#define DECL_BITWISE_XOR_OP_T(tp)
 
#define DECL_REL_OP_T(tp)
 
#define DEFN_REL_OP_T(tp)
 

Functions

SC_API void sc_dt::sc_proxy_out_of_bounds (const char *msg=NULL, int64 val=0)
 
template<class X , class Y >
void sc_dt::assign_p_ (sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class T >
void sc_dt::assign_v_ (sc_proxy< X > &px, const T &a)
 
SC_API const std::string sc_dt::convert_to_bin (const char *s)
 
SC_API const std::string sc_dt::convert_to_fmt (const std::string &s, sc_numrep numrep, bool)
 
template<class X , class Y >
X & sc_dt::operator&= (sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
const sc_lv_base sc_dt::operator& (const sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
X & sc_dt::operator|= (sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
const sc_lv_base sc_dt::operator| (const sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
X & sc_dt::operator^= (sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
const sc_lv_base sc_dt::operator^ (const sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
bool sc_dt::operator== (const sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
bool sc_dt::operator!= (const sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X >
void sc_dt::get_words_ (const X &x, int wi, sc_digit &x_dw, sc_digit &x_cw)
 
template<class X >
void sc_dt::set_words_ (X &x, int wi, sc_digit x_dw, sc_digit x_cw)
 
template<class X >
void sc_dt::extend_sign_w_ (X &x, int wi, bool sign)
 
template<class X >
void sc_dt::assign_v_ (sc_proxy< X > &px, const sc_int_base &a)
 
template<class X >
void sc_dt::assign_v_ (sc_proxy< X > &px, const sc_signed &a)
 
template<class X >
void sc_dt::assign_v_ (sc_proxy< X > &px, const sc_uint_base &a)
 
template<class X >
void sc_dt::assign_v_ (sc_proxy< X > &px, const sc_unsigned &a)
 
template<class X , class Y >
X & sc_dt::b_and_assign_ (sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
X & sc_dt::b_or_assign_ (sc_proxy< X > &px, const sc_proxy< Y > &py)
 
template<class X , class Y >
X & sc_dt::b_xor_assign_ (sc_proxy< X > &a, const sc_proxy< Y > &b)
 
template<class X >
const sc_lv_base sc_dt::lrotate (const sc_proxy< X > &x, int n)
 
template<class X >
const sc_lv_base sc_dt::rrotate (const sc_proxy< X > &x, int n)
 
template<class X >
const sc_lv_base sc_dt::reverse (const sc_proxy< X > &x)
 
template<class X >
sc_proxy< X >::value_type sc_dt::and_reduce (const sc_proxy< X > &a)
 
template<class X >
sc_proxy< X >::value_type sc_dt::nand_reduce (const sc_proxy< X > &a)
 
template<class X >
sc_proxy< X >::value_type sc_dt::or_reduce (const sc_proxy< X > &a)
 
template<class X >
sc_proxy< X >::value_type sc_dt::nor_reduce (const sc_proxy< X > &a)
 
template<class X >
sc_proxy< X >::value_type sc_dt::xor_reduce (const sc_proxy< X > &a)
 
template<class X >
sc_proxy< X >::value_type sc_dt::xnor_reduce (const sc_proxy< X > &a)
 
template<class X >
inline ::std::ostream & sc_dt::operator<< (::std::ostream &os, const sc_proxy< X > &a)
 
template<class X >
inline ::std::istream & sc_dt::operator>> (::std::istream &is, sc_proxy< X > &a)
 

Variables

const int sc_dt::SC_DIGIT_SIZE = BITS_PER_BYTE * sizeof( sc_digit )
 
const sc_digit sc_dt::SC_DIGIT_ZERO = (sc_digit)0
 
const sc_digit sc_dt::SC_DIGIT_ONE = (sc_digit)1
 
const sc_digit sc_dt::SC_DIGIT_TWO = (sc_digit)2
 

Detailed Description

Proxy base class for vector data types.

This class is created for several purposes: 1) hiding operators from the global namespace that would be otherwise found by Koenig lookup 2) avoiding repeating the same operations in every class including proxies that could also be achieved by common base class, but this method allows 3) improve performance by using non-virtual functions

Original Author: Gene Bushuyev, Synopsys, Inc.

Definition in file sc_proxy.h.

Macro Definition Documentation

◆ DECL_BITWISE_AND_OP_T

#define DECL_BITWISE_AND_OP_T (   tp)
Value:
template <class X> \
inline \
operator & ( tp b, const sc_proxy<X>& px );
uint64 const sc_uint_base int b
Definition: sc_fxval.h:1005
const sc_lv_base operator&(const sc_proxy< X > &px, const sc_proxy< Y > &py)
Definition: sc_lv_base.h:379

Definition at line 557 of file sc_proxy.h.

◆ DECL_BITWISE_OR_OP_T

#define DECL_BITWISE_OR_OP_T (   tp)
Value:
template <class X> \
inline \
operator | ( tp a, const sc_proxy<X>& px );
const sc_bit operator|(const sc_bit &a, const sc_bit &b)
Definition: sc_bit.h:338

Definition at line 594 of file sc_proxy.h.

◆ DECL_BITWISE_XOR_OP_T

#define DECL_BITWISE_XOR_OP_T (   tp)
Value:
template <class X> \
inline \
operator ^ ( tp a, const sc_proxy<X>& px );
const sc_bit operator^(const sc_bit &a, const sc_bit &b)
Definition: sc_bit.h:341

Definition at line 631 of file sc_proxy.h.

◆ DECL_REL_OP_T

#define DECL_REL_OP_T (   tp)
Value:
template <class X> \
inline \
bool \
operator == ( tp b, const sc_proxy<X>& px ); \
\
template <class X> \
inline \
bool \
operator != ( const sc_proxy<X>& px, tp b ); \
\
template <class X> \
inline \
bool \
operator != ( tp b, const sc_proxy<X>& px );
uint64 const sc_uint_base int b
Definition: sc_fxval.h:1005

Definition at line 667 of file sc_proxy.h.

◆ DEFN_REL_OP_T

#define DEFN_REL_OP_T (   tp)
Value:
template <class X> \
inline \
bool \
operator == ( tp b, const sc_proxy<X>& px ) \
{ \
return ( px == b ); \
} \
\
template <class X> \
inline \
bool \
operator != ( const sc_proxy<X>& px, tp b ) \
{ \
return !( px == b ); \
} \
\
template <class X> \
inline \
bool \
operator != ( tp b, const sc_proxy<X>& px ) \
{ \
return !( px == b ); \
}
uint64 const sc_uint_base int b
Definition: sc_fxval.h:1005

Definition at line 1338 of file sc_proxy.h.