sc_int_base.h

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

H
2,692
字号
inlinesc_int_concref_r<sc_int_base,sc_int_bitref_r>operator , ( const sc_int_base&, sc_int_bitref );inlinesc_int_concref_r<sc_int_base,sc_int_bitref_r>operator , ( sc_int_base&, sc_int_bitref_r );inlinesc_int_concref_r<sc_int_base,sc_int_subref_r>operator , ( const sc_int_base&, sc_int_subref );inlinesc_int_concref_r<sc_int_base,sc_int_subref_r>operator , ( sc_int_base&, sc_int_subref_r );inlinesc_int_concref_r<sc_int_base,sc_int_base>operator , ( const sc_int_base&, sc_int_base& );inlinesc_int_concref_r<sc_int_base,sc_int_base>operator , ( sc_int_base&, const sc_int_base& );inlinesc_int_concref_r<sc_int_base,sc_int_base>operator , ( sc_int_base&, bool );inlinesc_int_concref_r<sc_int_base,sc_int_base>operator , ( bool, sc_int_base& );template <class T1, class T2>inlinesc_int_concref_r<sc_int_base,sc_int_concref_r<T1,T2> >concat( const sc_int_base&, sc_int_concref<T1,T2> );template <class T1, class T2>inlinesc_int_concref_r<sc_int_base,sc_int_concref_r<T1,T2> >concat( sc_int_base&, sc_int_concref_r<T1,T2> );inlinesc_int_concref_r<sc_int_base,sc_int_bitref_r>concat( const sc_int_base&, sc_int_bitref );inlinesc_int_concref_r<sc_int_base,sc_int_bitref_r>concat( sc_int_base&, sc_int_bitref_r );inlinesc_int_concref_r<sc_int_base,sc_int_subref_r>concat( const sc_int_base&, sc_int_subref );inlinesc_int_concref_r<sc_int_base,sc_int_subref_r>concat( sc_int_base&, sc_int_subref_r );inlinesc_int_concref_r<sc_int_base,sc_int_base>concat( const sc_int_base&, sc_int_base& );inlinesc_int_concref_r<sc_int_base,sc_int_base>concat( sc_int_base&, const sc_int_base& );inlinesc_int_concref_r<sc_int_base,sc_int_base>concat( sc_int_base&, bool );inlinesc_int_concref_r<sc_int_base,sc_int_base>concat( bool, sc_int_base& );#endif// l-value concatenation operators and functionstemplate <class T1, class T2>inlinesc_int_concref<sc_int_base,sc_int_concref<T1,T2> >operator , ( sc_int_base&, sc_int_concref<T1,T2> );inlinesc_int_concref<sc_int_base,sc_int_bitref>operator , ( sc_int_base&, sc_int_bitref );inlinesc_int_concref<sc_int_base,sc_int_subref>operator , ( sc_int_base&, sc_int_subref );inlinesc_int_concref<sc_int_base,sc_int_base>operator , ( sc_int_base&, sc_int_base& );template <class T1, class T2>inlinesc_int_concref<sc_int_base,sc_int_concref<T1,T2> >concat( sc_int_base&, sc_int_concref<T1,T2> );inlinesc_int_concref<sc_int_base,sc_int_bitref>concat( sc_int_base&, sc_int_bitref );inlinesc_int_concref<sc_int_base,sc_int_subref>concat( sc_int_base&, sc_int_subref );inlinesc_int_concref<sc_int_base,sc_int_base>concat( sc_int_base&, sc_int_base& );inlineostream&operator << ( ostream&, const sc_int_base& );inlineistream&operator >> ( istream&, sc_int_base& );// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII// ----------------------------------------------------------------------------//  CLASS TEMPLATE : sc_int_concref_r<T1,T2>////  Proxy class for sc_int concatenation (r-value only).// ----------------------------------------------------------------------------// destructortemplate <class T1, class T2>inlinesc_int_concref_r<T1,T2>::~sc_int_concref_r(){    if( -- m_refs == 0 ) {	delete &m_refs;	if( m_delete == 0 ) {	    return;	}	if( m_delete & 1 ) {	    delete &m_left;	}	if( m_delete & 2 ) {	    delete &m_right;	}    }}// reduce methodstemplate <class T1, class T2>inlineboolsc_int_concref_r<T1,T2>::and_reduce() const{    sc_int_base a( *this );    return a.and_reduce();}template <class T1, class T2>inlineboolsc_int_concref_r<T1,T2>::or_reduce() const{    sc_int_base a( *this );    return a.or_reduce();}template <class T1, class T2>inlineboolsc_int_concref_r<T1,T2>::xor_reduce() const{    sc_int_base a( *this );    return a.xor_reduce();}// implicit conversion to int_typetemplate <class T1, class T2>inlinesc_int_concref_r<T1,T2>::operator int_type() const{    int_type mask = ( ~UINT_ZERO >> (SC_INTWIDTH - m_right.length()) );    int_type high = ((int_type) m_left << m_right.length()) & (~mask);    int_type low  = m_right & mask;    int_type tmp = high | low;    int ulen = SC_INTWIDTH - m_len;    return ( tmp << ulen >> ulen );}// explicit conversionstemplate <class T1, class T2>inlineintsc_int_concref_r<T1,T2>::to_int() const{    sc_int_base a( *this );    return a.to_int();}template <class T1, class T2>inlineunsigned intsc_int_concref_r<T1,T2>::to_uint() const{    sc_int_base a( *this );    return a.to_uint();}template <class T1, class T2>inlinelongsc_int_concref_r<T1,T2>::to_long() const{    sc_int_base a( *this );    return a.to_long();}template <class T1, class T2>inlineunsigned longsc_int_concref_r<T1,T2>::to_ulong() const{    sc_int_base a( *this );    return a.to_ulong();}template <class T1, class T2>inlineint64sc_int_concref_r<T1,T2>::to_int64() const{    sc_int_base a( *this );    return a.to_int64();}template <class T1, class T2>inlineuint64sc_int_concref_r<T1,T2>::to_uint64() const{    sc_int_base a( *this );    return a.to_uint64();}template <class T1, class T2>inlinedoublesc_int_concref_r<T1,T2>::to_double() const{    sc_int_base a( *this );    return a.to_double();}// explicit conversion to character stringtemplate <class T1, class T2>inlineconst sc_stringsc_int_concref_r<T1,T2>::to_string( sc_numrep numrep ) const{    sc_int_base a( *this );    return a.to_string( numrep );}template <class T1, class T2>inlineconst sc_stringsc_int_concref_r<T1,T2>::to_string( sc_numrep numrep, bool w_prefix ) const{    sc_int_base a( *this );    return a.to_string( numrep, w_prefix );}// functional notation for the reduce methodstemplate <class T1, class T2>inlinebooland_reduce( const sc_int_concref_r<T1,T2>& a ){    return a.and_reduce();}template <class T1, class T2>inlineboolnand_reduce( const sc_int_concref_r<T1,T2>& a ){    return a.nand_reduce();}template <class T1, class T2>inlineboolor_reduce( const sc_int_concref_r<T1,T2>& a ){    return a.or_reduce();}template <class T1, class T2>inlineboolnor_reduce( const sc_int_concref_r<T1,T2>& a ){    return a.nor_reduce();}template <class T1, class T2>inlineboolxor_reduce( const sc_int_concref_r<T1,T2>& a ){    return a.xor_reduce();}template <class T1, class T2>inlineboolxnor_reduce( const sc_int_concref_r<T1,T2>& a ){    return a.xnor_reduce();}// r-value concatenation operators and functionstemplate <class T1, class T2, class T3, class T4>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_concref_r<T3,T4> >operator , ( sc_int_concref_r<T1,T2> a, sc_int_concref_r<T3,T4> b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,	sc_int_concref_r<T3,T4> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>operator , ( sc_int_concref_r<T1,T2> a, sc_int_bitref_r b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>operator , ( sc_int_concref_r<T1,T2> a, sc_int_subref_r b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>operator , ( sc_int_concref_r<T1,T2> a, const sc_int_base& b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>operator , ( sc_int_concref_r<T1,T2> a, bool b ){    sc_int_base& bb = *new sc_int_base( 1 );    bb = (b ? -1 : 0);    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(	*a.clone(), bb, 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_base,sc_int_concref_r<T1,T2> >operator , ( bool a, sc_int_concref_r<T1,T2> b ){    sc_int_base& aa = *new sc_int_base( 1 );    aa = (a ? -1 : 0);    return sc_int_concref_r<sc_int_base,sc_int_concref_r<T1,T2> >(	aa, *b.clone(), 3 );}template <class T1, class T2, class T3, class T4>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_concref_r<T3,T4> >concat( sc_int_concref_r<T1,T2> a, sc_int_concref_r<T3,T4> b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,	sc_int_concref_r<T3,T4> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>concat( sc_int_concref_r<T1,T2> a, sc_int_bitref_r b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>concat( sc_int_concref_r<T1,T2> a, sc_int_subref_r b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>concat( sc_int_concref_r<T1,T2> a, const sc_int_base& b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>concat( sc_int_concref_r<T1,T2> a, bool b ){    sc_int_base& bb = *new sc_int_base( 1 );    bb = (b ? -1 : 0);    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(	*a.clone(), bb, 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_base,sc_int_concref_r<T1,T2> >concat( bool a, sc_int_concref_r<T1,T2> b ){    sc_int_base& aa = *new sc_int_base( 1 );    aa = (a ? -1 : 0);    return sc_int_concref_r<sc_int_base,sc_int_concref_r<T1,T2> >(	aa, *b.clone(), 3 );}#ifdef SC_DT_MIXED_COMMA_OPERATORStemplate <class T1, class T2, class T3, class T4>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_concref_r<T3,T4> >operator , ( sc_int_concref_r<T1,T2> a, sc_int_concref<T3,T4> b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,	sc_int_concref_r<T3,T4> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3, class T4>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_concref_r<T3,T4> >operator , ( sc_int_concref<T1,T2> a, sc_int_concref_r<T3,T4> b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,	sc_int_concref_r<T3,T4> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>operator , ( sc_int_concref_r<T1,T2> a, sc_int_bitref b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>operator , ( sc_int_concref<T1,T2> a, sc_int_bitref_r b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_bitref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>operator , ( sc_int_concref_r<T1,T2> a, sc_int_subref b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>operator , ( sc_int_concref<T1,T2> a, sc_int_subref_r b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_subref_r>(	*a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>operator , ( sc_int_concref_r<T1,T2> a, sc_int_base& b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>operator , ( sc_int_concref<T1,T2> a, const sc_int_base& b ){    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(	*a.clone(), b, 1 );}template <class T1, class T2>inlinesc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>operator , ( sc_int_concref<T1,T2> a, bool b ){    sc_int_base& bb = *new sc_int_base( 1 );    bb = (b ? -1 : 0);    return sc_int_concref_r<sc_int_concref_r<T1,T2>,sc_int_base>(

⌨️ 快捷键说明

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