📄 sc_bit_proxies.h
字号:
concat( const sc_proxy<T>&, const sc_logic& );template <class T>inlinesc_concref_r<sc_lv_base,T>concat( const sc_logic&, const sc_proxy<T>& );template <class T>inlinesc_concref_r<T,sc_lv_base>concat( const sc_proxy<T>&, bool );template <class T>inlinesc_concref_r<sc_lv_base,T>concat( bool, const sc_proxy<T>& );#ifdef SC_DT_MIXED_COMMA_OPERATORStemplate <class T1, class T2>inlinesc_concref_r<T1,sc_bitref_r<T2> >operator , ( const sc_proxy<T1>&, sc_bitref<T2> );template <class T1, class T2>inlinesc_concref_r<T1,sc_bitref_r<T2> >operator , ( sc_proxy<T1>&, sc_bitref_r<T2> );template <class T1, class T2>inlinesc_concref_r<T1,sc_subref_r<T2> >operator , ( const sc_proxy<T1>&, sc_subref<T2> );template <class T1, class T2>inlinesc_concref_r<T1,sc_subref_r<T2> >operator , ( sc_proxy<T1>&, sc_subref_r<T2> );template <class T1, class T2, class T3>inlinesc_concref_r<T1,sc_concref_r<T2,T3> >operator , ( const sc_proxy<T1>&, sc_concref<T2,T3> );template <class T1, class T2, class T3>inlinesc_concref_r<T1,sc_concref_r<T2,T3> >operator , ( sc_proxy<T1>&, sc_concref_r<T2,T3> );template <class T1, class T2>inlinesc_concref_r<T1,T2>operator , ( const sc_proxy<T1>&, sc_proxy<T2>& );template <class T1, class T2>inlinesc_concref_r<T1,T2>operator , ( sc_proxy<T1>&, const sc_proxy<T2>& );template <class T>inlinesc_concref_r<T,sc_lv_base>operator , ( sc_proxy<T>&, const char* );template <class T>inlinesc_concref_r<sc_lv_base,T>operator , ( const char*, sc_proxy<T>& );template <class T>inlinesc_concref_r<T,sc_lv_base>operator , ( sc_proxy<T>&, const sc_logic& );template <class T>inlinesc_concref_r<sc_lv_base,T>operator , ( const sc_logic&, sc_proxy<T>& );template <class T>inlinesc_concref_r<T,sc_lv_base>operator , ( sc_proxy<T>&, bool );template <class T>inlinesc_concref_r<sc_lv_base,T>operator , ( bool, sc_proxy<T>& );template <class T1, class T2>inlinesc_concref_r<T1,sc_bitref_r<T2> >concat( const sc_proxy<T1>&, sc_bitref<T2> );template <class T1, class T2>inlinesc_concref_r<T1,sc_bitref_r<T2> >concat( sc_proxy<T1>&, sc_bitref_r<T2> );template <class T1, class T2>inlinesc_concref_r<T1,sc_subref_r<T2> >concat( const sc_proxy<T1>&, sc_subref<T2> );template <class T1, class T2>inlinesc_concref_r<T1,sc_subref_r<T2> >concat( sc_proxy<T1>&, sc_subref_r<T2> );template <class T1, class T2, class T3>inlinesc_concref_r<T1,sc_concref_r<T2,T3> >concat( const sc_proxy<T1>&, sc_concref<T2,T3> );template <class T1, class T2, class T3>inlinesc_concref_r<T1,sc_concref_r<T2,T3> >concat( sc_proxy<T1>&, sc_concref_r<T2,T3> );template <class T1, class T2>inlinesc_concref_r<T1,T2>concat( const sc_proxy<T1>&, sc_proxy<T2>& );template <class T1, class T2>inlinesc_concref_r<T1,T2>concat( sc_proxy<T1>&, const sc_proxy<T2>& );template <class T>inlinesc_concref_r<T,sc_lv_base>concat( sc_proxy<T>&, const char* );template <class T>inlinesc_concref_r<sc_lv_base,T>concat( const char*, sc_proxy<T>& );template <class T>inlinesc_concref_r<T,sc_lv_base>concat( sc_proxy<T>&, const sc_logic& );template <class T>inlinesc_concref_r<sc_lv_base,T>concat( const sc_logic&, sc_proxy<T>& );template <class T>inlinesc_concref_r<T,sc_lv_base>concat( sc_proxy<T>&, bool );template <class T>inlinesc_concref_r<sc_lv_base,T>concat( bool, sc_proxy<T>& );#endif// l-value concatenation operators and functionstemplate <class T1, class T2>inlinesc_concref<T1,sc_bitref<T2> >operator , ( sc_proxy<T1>&, sc_bitref<T2> );template <class T1, class T2>inlinesc_concref<T1,sc_subref<T2> >operator , ( sc_proxy<T1>&, sc_subref<T2> );template <class T1, class T2, class T3>inlinesc_concref<T1,sc_concref<T2,T3> >operator , ( sc_proxy<T1>&, sc_concref<T2,T3> );template <class T1, class T2>inlinesc_concref<T1,T2>operator , ( sc_proxy<T1>&, sc_proxy<T2>& );template <class T1, class T2>inlinesc_concref<T1,sc_bitref<T2> >concat( sc_proxy<T1>&, sc_bitref<T2> );template <class T1, class T2>inlinesc_concref<T1,sc_subref<T2> >concat( sc_proxy<T1>&, sc_subref<T2> );template <class T1, class T2, class T3>inlinesc_concref<T1,sc_concref<T2,T3> >concat( sc_proxy<T1>&, sc_concref<T2,T3> );template <class T1, class T2>inlinesc_concref<T1,T2>concat( sc_proxy<T1>&, sc_proxy<T2>& );// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII// ----------------------------------------------------------------------------// CLASS TEMPLATE : sc_bitref_r<T>//// Proxy class for sc_proxy bit selection (r-value only).// ----------------------------------------------------------------------------// bitwise operators and functions// bitwise andtemplate <class T1, class T2>inlineconst sc_logicoperator & ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ){ return sc_logic( sc_logic::and_table[a.value()][b.value()] );}// bitwise ortemplate <class T1, class T2>inlineconst sc_logicoperator | ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ){ return sc_logic( sc_logic::or_table[a.value()][b.value()] );}// bitwise xortemplate <class T1, class T2>inlineconst sc_logicoperator ^ ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ){ return sc_logic( sc_logic::xor_table[a.value()][b.value()] );}// relational operators and functionstemplate <class T1, class T2>inlinebooloperator == ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ){ return ( (int) a.value() == b.value() );}template <class T1, class T2>inlinebooloperator != ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ){ return ( (int) a.value() != b.value() );}// common methodstemplate <class T>inlinesc_logic_value_tsc_bitref_r<T>::get_bit( int n ) const{ if( n == 0 ) { return m_obj.get_bit( m_index ); } else { SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_ , 0 ); // never reached return Log_0; }}template <class T>inlinesc_digitsc_bitref_r<T>::get_word( int n ) const{ if( n == 0 ) { return ( get_bit( n ) & SC_DIGIT_ONE ); } else { SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); // never reached return 0; }}template <class T>inlinesc_digitsc_bitref_r<T>::get_cword( int n ) const{ if( n == 0 ) { return ( get_bit( n ) & SC_DIGIT_TWO ); } else { SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); // never reached return 0; }}// r-value concatenation operators and functionstemplate <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >operator , ( sc_bitref_r<T1> a, sc_bitref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >operator , ( sc_bitref_r<T1> a, sc_subref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3>inlinesc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >operator , ( sc_bitref_r<T1> a, sc_concref_r<T2,T3> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,T2>operator , ( sc_bitref_r<T1> a, const sc_proxy<T2>& b ){ return sc_concref_r<sc_bitref_r<T1>,T2>( *a.clone(), b.back_cast(), 1 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >concat( sc_bitref_r<T1> a, sc_bitref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >concat( sc_bitref_r<T1> a, sc_subref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3>inlinesc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >concat( sc_bitref_r<T1> a, sc_concref_r<T2,T3> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,T2>concat( sc_bitref_r<T1> a, const sc_proxy<T2>& b ){ return sc_concref_r<sc_bitref_r<T1>,T2>( *a.clone(), b.back_cast(), 1 );}#ifdef SC_DT_MIXED_COMMA_OPERATORStemplate <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >operator , ( sc_bitref_r<T1> a, sc_bitref<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >operator , ( sc_bitref<T1> a, sc_bitref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >operator , ( sc_bitref_r<T1> a, sc_subref<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >operator , ( sc_bitref<T1> a, sc_subref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3>inlinesc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >operator , ( sc_bitref_r<T1> a, sc_concref<T2,T3> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3>inlinesc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >operator , ( sc_bitref<T1> a, sc_concref_r<T2,T3> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,T2>operator , ( sc_bitref<T1> a, const sc_proxy<T2>& b ){ return sc_concref_r<sc_bitref_r<T1>,T2>( *a.clone(), b.back_cast(), 1 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,T2>operator , ( sc_bitref_r<T1> a, sc_proxy<T2>& b ){ return sc_concref_r<sc_bitref_r<T1>,T2>( *a.clone(), b.back_cast(), 1 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >concat( sc_bitref_r<T1> a, sc_bitref<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >concat( sc_bitref<T1> a, sc_bitref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >concat( sc_bitref_r<T1> a, sc_subref<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >concat( sc_bitref<T1> a, sc_subref_r<T2> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3>inlinesc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >concat( sc_bitref_r<T1> a, sc_concref<T2,T3> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2, class T3>inlinesc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >concat( sc_bitref<T1> a, sc_concref_r<T2,T3> b ){ return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( *a.clone(), *b.clone(), 3 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,T2>concat( sc_bitref<T1> a, const sc_proxy<T2>& b ){ return sc_concref_r<sc_bitref_r<T1>,T2>( *a.clone(), b.back_cast(), 1 );}template <class T1, class T2>inlinesc_concref_r<sc_bitref_r<T1>,T2>concat( sc_bitref_r<T1> a, sc_proxy<T2>& b ){ return sc_concref_r<sc_bitref_r<T1>,T2>( *a.clone(), b.back_cast(), 1 );}#endif// ----------------------------------------------------------------------------// CLASS TEMPLATE : sc_bitref<X>//// Proxy class for sc_proxy bit selection (r-value and l-value).// ----------------------------------------------------------------------------// assignment operatorstemplate <class X>inlinesc_bitref<X>&sc_bitref<X>::operator = ( const sc_bitref_r<X>& a ){ this->m_obj.set_bit( this->m_index, a.value() ); return *this;}template <class X>inlinesc_bitref<X>&sc_bitref<X>::operator = ( const sc_bitref<X>& a ){ if( &a != this ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -