sc_uint_base.h

来自「基于4个mips核的noc设计」· C头文件 代码 · 共 2,628 行 · 第 1/5 页

H
2,628
字号
inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_bitref_r>operator , ( sc_uint_concref<T1,T2> a, sc_uint_bitref_r b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>operator , ( sc_uint_concref_r<T1,T2> a, sc_uint_subref b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>operator , ( sc_uint_concref<T1,T2> a, sc_uint_subref_r b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>operator , ( sc_uint_concref_r<T1,T2> a, sc_uint_base& b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>operator , ( sc_uint_concref<T1,T2> a, const sc_uint_base& b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>operator , ( sc_uint_concref<T1,T2> a, bool b ){    sc_uint_base& bb = *new sc_uint_base( 1 );    bb = (b ? 1 : 0);    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>(	*a.clone(), bb, 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_base,sc_uint_concref_r<T1,T2> >operator , ( bool a, sc_uint_concref<T1,T2> b ){    sc_uint_base& aa = *new sc_uint_base( 1 );    aa = (a ? 1 : 0);    return sc_uint_concref_r<sc_uint_base,sc_uint_concref_r<T1,T2> >(	aa, *b.clone(), 3 );}template <class T1, class T2, class T3, class T4>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_concref_r<T3,T4> >concat( sc_uint_concref_r<T1,T2> a, sc_uint_concref<T3,T4> b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,	sc_uint_concref_r<T3,T4> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3, class T4>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_concref_r<T3,T4> >concat( sc_uint_concref<T1,T2> a, sc_uint_concref_r<T3,T4> b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,	sc_uint_concref_r<T3,T4> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_bitref_r>concat( sc_uint_concref_r<T1,T2> a, sc_uint_bitref b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_bitref_r>concat( sc_uint_concref<T1,T2> a, sc_uint_bitref_r b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>concat( sc_uint_concref_r<T1,T2> a, sc_uint_subref b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>concat( sc_uint_concref<T1,T2> a, sc_uint_subref_r b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>concat( sc_uint_concref_r<T1,T2> a, sc_uint_base& b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>concat( sc_uint_concref<T1,T2> a, const sc_uint_base& b ){    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>concat( sc_uint_concref<T1,T2> a, bool b ){    sc_uint_base& bb = *new sc_uint_base( 1 );    bb = (b ? 1 : 0);    return sc_uint_concref_r<sc_uint_concref_r<T1,T2>,sc_uint_base>(	*a.clone(), bb, 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_base,sc_uint_concref_r<T1,T2> >concat( bool a, sc_uint_concref<T1,T2> b ){    sc_uint_base& aa = *new sc_uint_base( 1 );    aa = (a ? 1 : 0);    return sc_uint_concref_r<sc_uint_base,sc_uint_concref_r<T1,T2> >(	aa, *b.clone(), 3 );}#endiftemplate <class T1, class T2>inlineostream&operator << ( ostream& os, const sc_uint_concref_r<T1,T2>& a ){    a.print( os );    return os;}// ----------------------------------------------------------------------------//  CLASS TEMPLATE : sc_uint_concref<T1,T2>////  Proxy class for sc_uint concatenation (r-value and l-value).// ----------------------------------------------------------------------------// assignment operatorstemplate <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( uint_type v ){    int_type mask = ( ~UINT_ZERO >> (SC_INTWIDTH - this->m_right.length()) );    this->m_right = v & mask;    this->m_left = (v & ~mask) >> this->m_right.length();    return *this;}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const sc_uint_base& a ){    return operator = ( a.operator uint_type() );}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const sc_uint_subref_r& a ){    return operator = ( a.operator uint_type() );}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const char* a ){    sc_uint_base aa( this->length() );    return ( *this = aa = a );}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const sc_signed& a ){    sc_uint_base aa( this->length() );    return ( *this = aa = a );}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const sc_unsigned& a ){    sc_uint_base aa( this->length() );    return ( *this = aa = a );}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const sc_bv_base& a ){    sc_uint_base aa( this->length() );    return ( *this = aa = a );}template <class T1, class T2>inlinesc_uint_concref<T1,T2>&sc_uint_concref<T1,T2>::operator = ( const sc_lv_base& a ){    sc_uint_base aa( this->length() );    return ( *this = aa = a );}// other methodstemplate <class T1, class T2>inlinevoidsc_uint_concref<T1,T2>::scan( istream& is ){    sc_string s;    is >> s;    *this = s.c_str();}// l-value concatenation operators and functionstemplate <class T1, class T2, class T3, class T4>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_concref<T3,T4> >operator , ( sc_uint_concref<T1,T2> a, sc_uint_concref<T3,T4> b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_concref<T3,T4> >(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_bitref>operator , ( sc_uint_concref<T1,T2> a, sc_uint_bitref b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_bitref>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_subref>operator , ( sc_uint_concref<T1,T2> a, sc_uint_subref b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_subref>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_base>operator , ( sc_uint_concref<T1,T2> a, sc_uint_base& b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_base>(	*a.clone(), b, 1 );}template <class T1, class T2, class T3, class T4>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_concref<T3,T4> >concat( sc_uint_concref<T1,T2> a, sc_uint_concref<T3,T4> b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_concref<T3,T4> >(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_bitref>concat( sc_uint_concref<T1,T2> a, sc_uint_bitref b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_bitref>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_subref>concat( sc_uint_concref<T1,T2> a, sc_uint_subref b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_subref>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_base>concat( sc_uint_concref<T1,T2> a, sc_uint_base& b ){    return sc_uint_concref<sc_uint_concref<T1,T2>,sc_uint_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlineistream&operator >> ( istream& is, sc_uint_concref<T1,T2>& a ){    a.scan( is );    return is;}// ----------------------------------------------------------------------------//  CLASS : sc_uint_bitref_r////  Proxy class for sc_uint bit selection (r-value only).// ----------------------------------------------------------------------------// implicit conversion to boolinlinesc_uint_bitref_r::operator bool () const{    return m_obj.test( m_index );}inlineboolsc_uint_bitref_r::operator ! () const{    return ! m_obj.test( m_index );}inlineboolsc_uint_bitref_r::operator ~ () const{    return ! m_obj.test( m_index );}// r-value concatenation operators and functionstemplate <class T1, class T2>inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >operator , ( sc_uint_bitref_r a, sc_uint_concref_r<T1,T2> b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>operator , ( sc_uint_bitref_r a, sc_uint_bitref_r b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_subref_r>operator , ( sc_uint_bitref_r a, sc_uint_subref_r b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_subref_r>(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>operator , ( sc_uint_bitref_r a, const sc_uint_base& b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>(	*a.clone(), b, 1 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>operator , ( sc_uint_bitref_r a, bool b ){    sc_uint_base& bb = *new sc_uint_base( 1 );    bb = (b ? 1 : 0);    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>(	*a.clone(), bb, 3 );}inlinesc_uint_concref_r<sc_uint_base,sc_uint_bitref_r>operator , ( bool a, sc_uint_bitref_r b ){    sc_uint_base& aa = *new sc_uint_base( 1 );    aa = (a ? 1 : 0);    return sc_uint_concref_r<sc_uint_base,sc_uint_bitref_r>(	aa, *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >concat( sc_uint_bitref_r a, sc_uint_concref_r<T1,T2> b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>concat( sc_uint_bitref_r a, sc_uint_bitref_r b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_subref_r>concat( sc_uint_bitref_r a, sc_uint_subref_r b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_subref_r>(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>concat( sc_uint_bitref_r a, const sc_uint_base& b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>(	*a.clone(), b, 1 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>concat( sc_uint_bitref_r a, bool b ){    sc_uint_base& bb = *new sc_uint_base( 1 );    bb = (b ? 1 : 0);    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_base>(	*a.clone(), bb, 3 );}inlinesc_uint_concref_r<sc_uint_base,sc_uint_bitref_r>concat( bool a, sc_uint_bitref_r b ){    sc_uint_base& aa = *new sc_uint_base( 1 );    aa = (a ? 1 : 0);    return sc_uint_concref_r<sc_uint_base,sc_uint_bitref_r>(	aa, *b.clone(), 3 );}#ifdef SC_DT_MIXED_COMMA_OPERATORStemplate <class T1, class T2>inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >operator , ( sc_uint_bitref_r a, sc_uint_concref<T1,T2> b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >operator , ( sc_uint_bitref a, sc_uint_concref_r<T1,T2> b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_concref_r<T1,T2> >(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>operator , ( sc_uint_bitref_r a, sc_uint_bitref b ){    return sc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>(	*a.clone(), *b.clone(), 3 );}inlinesc_uint_concref_r<sc_uint_bitref_r,sc_uint_bitref_r>op

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?