75 #ifndef SC_CONCATREF_H 
   76 #define SC_CONCATREF_H 
  114             m_len_r = right.concat_length(&right_xz);
 
  128             m_len_r = right.concat_length(&right_xz);
 
  144 #ifdef SC_DT_DEPRECATED 
  160         m_left_p->concat_clear_data(to_ones); 
 
  166         bool rnz = 
m_right_p->concat_get_ctrl( dst_p, low_i );
 
  173         bool rnz = 
m_right_p->concat_get_data( dst_p, low_i );
 
  231                 result = result & ~(mask << 
m_len);
 
  242             result_p->nbits = result_p->num_bits(
m_len);
 
  243             result_p->ndigits = 
DIV_CEIL(result_p->nbits);
 
  245                 sizeof(
sc_digit)*result_p->ndigits );
 
  246 #if defined(_MSC_VER) 
  248             memset( result_p->digit, 0, 
sizeof(
sc_digit)*result_p->ndigits );
 
  250             result_p->digit[result_p->ndigits-1] = 0;
 
  252             right_non_zero = 
m_right_p->concat_get_data( result_p->digit, 0 );
 
  254             if ( left_non_zero || right_non_zero ) 
 
  277         { target = 
value(); }
 
  280         { target = 
value(); }
 
  428     void print( ::std::ostream& os = ::std::cout )
 const 
  429         { os << this->
value(); }
 
  431     void scan( ::std::istream& is ) 
 
  515     return target.
value() << (int)shift;
 
  520     return target.
value() << (int)shift;
 
  526     return target.
value() << (int)shift;
 
  532     return target.
value() << shift;
 
  538     return target.
value() << (int)shift;
 
  543     return target.
value() << (int)shift;
 
  548     return target.
value() >> (int)shift;
 
  553     return target.
value() >> (int)shift;
 
  559     return target.
value() >> (int)shift;
 
  565     return target.
value() >> shift;
 
  571     return target.
value() >> (int)shift;
 
  576     return target.
value() >> (int)shift;
 
  586     return os << v.
value();
 
  638         if ( xz_present_p ) *xz_present_p = 
false;
 
  646         dst_p[word_i] &= ~bit;
 
  655             dst_p[word_i] |= bit;
 
  657             dst_p[word_i] &= ~bit;
 
  672 #define SC_CONCAT_OP_TYPE(RESULT,OP,OTHER_TYPE) \ 
  673     inline RESULT operator OP ( const sc_concatref& a, OTHER_TYPE b ) \ 
  675         return a.value() OP b; \ 
  677     inline RESULT operator OP ( OTHER_TYPE a, const sc_concatref& b ) \ 
  679         return a OP b.value(); \ 
  683 #define SC_CONCAT_OP(RESULT,OP) \ 
  684     inline RESULT operator OP ( const sc_concatref& a, const sc_concatref& b ) \ 
  686         return a.value() OP b.value(); \ 
  688     SC_CONCAT_OP_TYPE(const sc_signed,OP,int) \ 
  689     SC_CONCAT_OP_TYPE(const sc_signed,OP,long) \ 
  690     SC_CONCAT_OP_TYPE(const sc_signed,OP,int64) \ 
  691     SC_CONCAT_OP_TYPE(RESULT,OP,unsigned int) \ 
  692     SC_CONCAT_OP_TYPE(RESULT,OP,unsigned long) \ 
  693     SC_CONCAT_OP_TYPE(RESULT,OP,uint64) \ 
  694     SC_CONCAT_OP_TYPE(const sc_signed,OP,const sc_int_base&) \ 
  695     SC_CONCAT_OP_TYPE(RESULT,OP,const sc_uint_base&) \ 
  696     SC_CONCAT_OP_TYPE(const sc_signed,OP,const sc_signed&) \ 
  697     SC_CONCAT_OP_TYPE(RESULT,OP,const sc_unsigned&) \ 
  698     inline RESULT operator OP ( const sc_concatref& a, bool b ) \ 
  700         return a.value() OP (int)b; \ 
  702     inline RESULT operator OP ( bool a, const sc_concatref& b ) \ 
  704         return (int)a OP b.value(); \ 
  707 #define SC_CONCAT_BOOL_OP(OP) \ 
  708     inline bool operator OP ( const sc_concatref& a, const sc_concatref& b ) \ 
  710         return a.value() OP b.value(); \ 
  712     SC_CONCAT_OP_TYPE(bool,OP,int) \ 
  713     SC_CONCAT_OP_TYPE(bool,OP,long) \ 
  714     SC_CONCAT_OP_TYPE(bool,OP,int64) \ 
  715     SC_CONCAT_OP_TYPE(bool,OP,unsigned int) \ 
  716     SC_CONCAT_OP_TYPE(bool,OP,unsigned long) \ 
  717     SC_CONCAT_OP_TYPE(bool,OP,uint64) \ 
  718     SC_CONCAT_OP_TYPE(bool,OP,const sc_int_base&) \ 
  719     SC_CONCAT_OP_TYPE(bool,OP,const sc_uint_base&) \ 
  720     SC_CONCAT_OP_TYPE(bool,OP,const sc_signed&) \ 
  721     SC_CONCAT_OP_TYPE(bool,OP,const sc_unsigned&) \ 
  722     inline bool operator OP ( const sc_concatref& a, bool b ) \ 
  724         return a.value() OP (int)b; \ 
  726     inline bool operator OP ( bool a, const sc_concatref& b ) \ 
  728         return (int)a OP b.value(); \ 
  747 #undef SC_CONCAT_OP_TYPE 
  852 #endif //  SC_CONCATREF_H 
virtual uint64 concat_get_uint64() const 
 
sc_value_base * m_right_p
 
virtual bool concat_get_ctrl(sc_digit *dst_p, int low_i) const 
 
virtual void concat_set(const sc_unsigned &src, int low_i)
 
virtual bool concat_get_data(sc_digit *dst_p, int low_i) const 
 
virtual uint64 concat_get_uint64() const 
 
virtual bool concat_get_data(sc_digit *dst_p, int low_i) const 
 
#define SC_CONCAT_BOOL_OP(OP)
 
sc_logic_value_t nand_reduce(const sc_proxy< X > &a)
 
virtual void concat_set(const sc_signed &src, int low_i)
 
sc_unsigned operator+() const 
 
sc_logic_value_t xor_reduce(const sc_proxy< X > &a)
 
void scan(::std::istream &is)
 
uint64 const sc_uint_base int b
 
#define SC_CONCAT_OP(RESULT, OP)
 
sc_unsigned operator~() const 
 
void initialize(sc_value_base &left, sc_value_base &right)
 
void print(::std::ostream &os=::std::cout) const 
 
virtual int concat_length(bool *xz_present_p) const 
 
sc_logic_value_t nor_reduce(const sc_proxy< X > &a)
 
const sc_unsigned & value() const 
 
const std::string to_string(sc_numrep numrep=SC_DEC) const 
 
inline::std::istream & operator>>(::std::istream &is, sc_bit &a)
 
void initialize(const sc_value_base &left, const sc_value_base &right)
 
static sc_core::sc_vpool< sc_concatref > m_pool
 
sc_logic_value_t or_reduce(const sc_proxy< X > &a)
 
static sc_core::sc_vpool< sc_unsigned > m_pool
 
void to_sc_signed(sc_signed &target) const 
 
const std::string to_string(sc_numrep numrep=SC_DEC) const 
 
const sc_concatref & operator=(int v)
 
virtual bool concat_get_ctrl(sc_digit *dst_p, int low_i) const 
 
static sc_concat_bool * allocate(bool v)
 
sc_signed operator-() const 
 
virtual void concat_clear_data(bool to_ones)
 
void scan(::std::istream &is=::std::cin)
 
unsigned int to_uint() const 
 
sc_byte_heap sc_temp_heap
 
unsigned int length() const 
 
virtual int concat_length(bool *xz_present_p) const 
 
static sc_core::sc_vpool< sc_concat_bool > m_pool
 
sc_logic_value_t xnor_reduce(const sc_proxy< X > &a)
 
inline::std::ostream & operator<<(::std::ostream &os, const sc_bit &a)
 
sc_logic_value_t and_reduce(const sc_proxy< X > &a)
 
virtual void concat_set(int64 src, int low_i)
 
const std::string to_string(sc_numrep numrep, bool w_prefix) const 
 
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > concat(sc_bitref_r< T1 >, sc_bitref_r< T2 >)
 
virtual ~sc_concat_bool()
 
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > operator,(sc_bitref_r< T1 >, sc_bitref_r< T2 >)
 
unsigned long to_ulong() const 
 
void to_sc_unsigned(sc_unsigned &target) const 
 
virtual void concat_set(uint64 src, int low_i)