93 void assign_from_string(
const std::string& );
111 { init( length_, a ); }
124 #ifdef SC_DT_DEPRECATED
216 {
sc_lv_base a( *
this );
return ( a <<= n ); }
225 {
sc_lv_base a( *
this );
return ( a >>= n ); }
305 rrotate(
const sc_lv_base& x,
int n )
308 return a.rrotate( n );
333 m_data[wi] &= value << bi | ~mask;
334 m_ctrl[wi] &= value >> 1 << bi | ~mask;
376 template <
class X,
class Y>
388 #define DEFN_BITWISE_AND_ASN_OP_T(tp) \
392 sc_proxy<X>::operator &= ( tp b ) \
394 X& x = back_cast(); \
395 sc_lv_base a( x.length() ); \
397 return b_and_assign_( x, a ); \
410 #undef DEFN_BITWISE_AND_ASN_OP_T
413 template <
class X,
class Y>
423 #define DEFN_BITWISE_AND_OP_T_A(tp) \
427 sc_proxy<X>::operator & ( tp b ) const \
429 sc_lv_base a( back_cast() ); \
447 #undef DEFN_BITWISE_AND_OP_T_A
450 #define DEFN_BITWISE_AND_OP_T_B(tp) \
454 operator & ( tp b, const sc_proxy<X>& px ) \
473 #undef DEFN_BITWISE_AND_OP_T_B
478 template <
class X,
class Y>
490 #define DEFN_BITWISE_OR_ASN_OP_T(tp) \
494 sc_proxy<X>::operator |= ( tp b ) \
496 X& x = back_cast(); \
497 sc_lv_base a( x.length() ); \
499 return b_or_assign_( x, a ); \
512 #undef DEFN_BITWISE_OR_ASN_OP_T
515 template <
class X,
class Y>
525 #define DEFN_BITWISE_OR_OP_T_A(tp) \
529 sc_proxy<X>::operator | ( tp b ) const \
531 sc_lv_base a( back_cast() ); \
549 #undef DEFN_BITWISE_OR_OP_T_A
552 #define DEFN_BITWISE_OR_OP_T_B(tp) \
556 operator | ( tp b, const sc_proxy<X>& px ) \
575 #undef DEFN_BITWISE_OR_OP_T_B
580 template <
class X,
class Y>
592 #define DEFN_BITWISE_XOR_ASN_OP_T(tp) \
596 sc_proxy<X>::operator ^= ( tp b ) \
598 X& x = back_cast(); \
599 sc_lv_base a( x.length() ); \
601 return b_xor_assign_( x, a ); \
614 #undef DEFN_BITWISE_XOR_ASN_OP_T
617 template <
class X,
class Y>
627 #define DEFN_BITWISE_XOR_OP_T_A(tp) \
631 sc_proxy<X>::operator ^ ( tp b ) const \
633 sc_lv_base a( back_cast() ); \
651 #undef DEFN_BITWISE_XOR_OP_T_A
654 #define DEFN_BITWISE_XOR_OP_T_B(tp) \
658 operator ^ ( tp b, const sc_proxy<X>& px ) \
677 #undef DEFN_BITWISE_XOR_OP_T_B
716 "left rotate operation is only allowed with positive "
717 "rotate values, rotate value = %d", n );
720 int len = x.length();
726 for(
int i = 0; i < sz; ++ i ) {
755 "right rotate operation is only allowed with positive "
756 "rotate values, rotate value = %d", n );
759 int len = x.length();
765 for(
int i = 0; i < sz; ++ i ) {
797 template <
class X,
class Y>
804 int x_len = x.length();
805 int y_len = y.length();
806 if( x_len != y_len ) {
810 for(
int i = 0; i < sz; ++ i ) {
811 if( x.get_word( i ) != y.get_word( i ) ||
812 x.get_cword( i ) != y.get_cword( i ) ) {
820 #define DEFN_REL_OP_T(tp) \
824 sc_proxy<X>::operator == ( tp b ) const \
826 const X& x = back_cast(); \
827 sc_lv_base y( x.length() ); \
859 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
868 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
877 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
886 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
895 sc_concref_r<sc_bitref_r<T>,sc_bv_base>
904 sc_concref_r<sc_bv_base,sc_bitref_r<T> >
914 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
923 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
932 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
941 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
950 sc_concref_r<sc_bitref_r<T>,sc_bv_base>
959 sc_concref_r<sc_bv_base,sc_bitref_r<T> >
967 #ifdef SC_DT_MIXED_COMMA_OPERATORS
971 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
980 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
989 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
998 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
1007 sc_concref_r<sc_bitref_r<T>,sc_bv_base>
1016 sc_concref_r<sc_bv_base,sc_bitref_r<T> >
1026 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
1035 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
1044 sc_concref_r<sc_bitref_r<T>,sc_lv_base>
1053 sc_concref_r<sc_lv_base,sc_bitref_r<T> >
1062 sc_concref_r<sc_bitref_r<T>,sc_bv_base>
1071 sc_concref_r<sc_bv_base,sc_bitref_r<T> >
1091 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1100 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1109 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1118 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1127 sc_concref_r<sc_subref_r<T>,sc_bv_base>
1136 sc_concref_r<sc_bv_base,sc_subref_r<T> >
1146 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1155 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1164 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1173 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1182 sc_concref_r<sc_subref_r<T>,sc_bv_base>
1191 sc_concref_r<sc_bv_base,sc_subref_r<T> >
1199 #ifdef SC_DT_MIXED_COMMA_OPERATORS
1203 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1212 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1221 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1230 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1239 sc_concref_r<sc_subref_r<T>,sc_bv_base>
1248 sc_concref_r<sc_bv_base,sc_subref_r<T> >
1258 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1267 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1276 sc_concref_r<sc_subref_r<T>,sc_lv_base>
1285 sc_concref_r<sc_lv_base,sc_subref_r<T> >
1294 sc_concref_r<sc_subref_r<T>,sc_bv_base>
1303 sc_concref_r<sc_bv_base,sc_subref_r<T> >
1326 if( ! this->reversed() ) {
1327 for(
int i = len - 1; i >= 0; -- i ) {
1328 this->m_obj.set_bit( this->m_lo + i, t[i].
value() );
1331 for(
int i = len - 1; i >= 0; -- i ) {
1332 this->m_obj.set_bit( this->m_lo - i, t[i].
value() );
1345 if( ! this->reversed() ) {
1346 for(
int i = len - 1; i >= 0; -- i ) {
1347 this->m_obj.set_bit( this->m_lo + i, t[i].
value() );
1350 for(
int i = len - 1; i >= 0; -- i ) {
1351 this->m_obj.set_bit( this->m_lo - i, t[i].
value() );
1366 template <
class T1,
class T2>
1375 template <
class T1,
class T2>
1377 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1384 template <
class T1,
class T2>
1386 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1393 template <
class T1,
class T2>
1395 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1402 template <
class T1,
class T2>
1404 sc_concref_r<sc_concref_r<T1,T2>,sc_bv_base>
1411 template <
class T1,
class T2>
1413 sc_concref_r<sc_bv_base,sc_concref_r<T1,T2> >
1421 template <
class T1,
class T2>
1423 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1430 template <
class T1,
class T2>
1432 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1439 template <
class T1,
class T2>
1441 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1448 template <
class T1,
class T2>
1450 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1457 template <
class T1,
class T2>
1459 sc_concref_r<sc_concref_r<T1,T2>,sc_bv_base>
1466 template <
class T1,
class T2>
1468 sc_concref_r<sc_bv_base,sc_concref_r<T1,T2> >
1476 #ifdef SC_DT_MIXED_COMMA_OPERATORS
1478 template <
class T1,
class T2>
1480 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1487 template <
class T1,
class T2>
1489 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1496 template <
class T1,
class T2>
1498 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1505 template <
class T1,
class T2>
1507 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1514 template <
class T1,
class T2>
1516 sc_concref_r<sc_concref_r<T1,T2>,sc_bv_base>
1523 template <
class T1,
class T2>
1525 sc_concref_r<sc_bv_base,sc_concref_r<T1,T2> >
1533 template <
class T1,
class T2>
1535 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1542 template <
class T1,
class T2>
1544 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1551 template <
class T1,
class T2>
1553 sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>
1560 template <
class T1,
class T2>
1562 sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >
1569 template <
class T1,
class T2>
1571 sc_concref_r<sc_concref_r<T1,T2>,sc_bv_base>
1578 template <
class T1,
class T2>
1580 sc_concref_r<sc_bv_base,sc_concref_r<T1,T2> >
1601 sc_concref_r<T,sc_lv_base>
1610 sc_concref_r<sc_lv_base,T>
1619 sc_concref_r<T,sc_lv_base>
1628 sc_concref_r<sc_lv_base,T>
1637 sc_concref_r<T,sc_bv_base>
1646 sc_concref_r<sc_bv_base,T>
1656 sc_concref_r<T,sc_lv_base>
1665 sc_concref_r<sc_lv_base,T>
1674 sc_concref_r<T,sc_lv_base>
1683 sc_concref_r<sc_lv_base,T>
1692 sc_concref_r<T,sc_bv_base>
1701 sc_concref_r<sc_bv_base,T>
1709 #ifdef SC_DT_MIXED_COMMA_OPERATORS
1713 sc_concref_r<T,sc_lv_base>
1722 sc_concref_r<sc_lv_base,T>
1731 sc_concref_r<T,sc_lv_base>
1740 sc_concref_r<sc_lv_base,T>
1749 sc_concref_r<T,sc_bv_base>
1758 sc_concref_r<sc_bv_base,T>
1768 sc_concref_r<T,sc_lv_base>
1777 sc_concref_r<sc_lv_base,T>
1786 sc_concref_r<T,sc_lv_base>
1795 sc_concref_r<sc_lv_base,T>
1804 sc_concref_r<T,sc_bv_base>
1813 sc_concref_r<sc_bv_base,T>
X & b_and_assign_(sc_proxy< X > &px, const sc_proxy< Y > &py)
#define DEFN_BITWISE_AND_OP_T_A(tp)
#define DEFN_BITWISE_OR_ASN_OP_T(tp)
sc_digit get_word(int wi) const
void set_bit(int i, sc_logic_value_t value)
const sc_bit operator|(const sc_bit &a, const sc_bit &b)
sc_proxy< sc_lv_base > base_type
#define SC_REPORT_ERROR(msg_type, msg)
X & operator^=(sc_proxy< X > &px, const sc_proxy< Y > &py)
const sc_logic SC_LOGIC_X
const sc_bit operator^(const sc_bit &a, const sc_bit &b)
X & b_or_assign_(sc_proxy< X > &px, const sc_proxy< Y > &py)
const sc_digit SC_DIGIT_TWO
#define DEFN_BITWISE_OR_OP_T_B(tp)
#define DEFN_BITWISE_XOR_ASN_OP_T(tp)
sc_lv_base & operator>>=(int n)
sc_subref_r< X > * clone() const
sc_bitref_r< T > * clone() const
X & operator|=(sc_proxy< X > &px, const sc_proxy< Y > &py)
sc_concref_r< X, Y > * clone() const
sc_subref< X > * clone() const
#define DEFN_REL_OP_T(tp)
uint64 const sc_uint_base int b
#define DEFN_BITWISE_AND_OP_T_B(tp)
void set_cword(int wi, sc_digit w)
bool operator==(const sc_bit &a, const sc_bit &b)
sc_lv_base(int length_=sc_length_param().len())
void set_word(int wi, sc_digit w)
X & operator&=(sc_proxy< X > &px, const sc_proxy< Y > &py)
const sc_digit SC_DIGIT_ONE
sc_subref< X > & operator=(const sc_proxy< Y > &a)
const sc_lv_base operator~() const
const T sc_min(const T &a, const T &b)
#define DEFN_BITWISE_XOR_OP_T_B(tp)
sc_lv_base & assign_(const sc_proxy< Y > &a)
const sc_digit SC_DIGIT_ZERO
sc_lv_base & operator<<=(int n)
#define DEFN_BITWISE_OR_OP_T_A(tp)
sc_logic_value_t get_bit(int i) const
void assign_p_(sc_proxy< X > &px, const sc_proxy< Y > &py)
X & b_xor_assign_(sc_proxy< X > &a, const sc_proxy< Y > &b)
const sc_lv_base operator<<(int n) const
#define DEFN_BITWISE_XOR_OP_T_A(tp)
sc_lv_base & rrotate(int n)
#define DEFN_BITWISE_AND_ASN_OP_T(tp)
sc_digit get_cword(int wi) const
const sc_lv_base lrotate(const sc_proxy< X > &x, int n)
sc_lv_base & lrotate(int n)
const char SC_ID_OUT_OF_BOUNDS_[]
const sc_lv_base rrotate(const sc_proxy< X > &x, int n)
sc_clock period is zero sc_clock low time is zero sc_fifo< T > cannot have more than one writer bind interface to port failed complete binding failed remove port failed insert primitive channel failed sc_signal< T > cannot have more than one driver resolved port not bound to resolved signal sc_semaphore requires an initial value
sc_lv_base(const sc_proxy< X > &a)
sc_lv_base(const sc_logic &a, int length_=sc_length_param().len())
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > concat(sc_bitref_r< T1 >, sc_bitref_r< T2 >)
const sc_lv_base reverse(const sc_proxy< X > &x)
const sc_bit operator&(const sc_bit &a, const sc_bit &b)
sc_concref< X, Y > * clone() const
sc_bitref< X > * clone() const
sc_lv_base & operator=(const sc_proxy< X > &a)
const sc_lv_base operator>>(int n) const
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > operator,(sc_bitref_r< T1 >, sc_bitref_r< T2 >)