⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sc_fxnum.h

📁 system C源码 一种替代verilog的语言
💻 H
📖 第 1 页 / 共 5 页
字号:
protected:    bool set_bit( int, bool );    bool get_slice( int, int, sc_bv_base& ) const;    bool set_slice( int, int, const sc_bv_base& );    sc_fxnum_fast_observer* lock_observer() const;    void unlock_observer( sc_fxnum_fast_observer* ) const;private:    double                          m_val;    scfx_params                     m_params;    bool                            m_q_flag;    bool                            m_o_flag;    mutable sc_fxnum_fast_observer* m_observer;private:    // disabled    sc_fxnum_fast();    sc_fxnum_fast( const sc_fxnum_fast& );};// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII// ----------------------------------------------------------------------------//  CLASS : sc_fxnum_bitref////  Proxy class for bit-selection in class sc_fxnum, behaves like sc_bit.// ----------------------------------------------------------------------------// constructorinlinesc_fxnum_bitref::sc_fxnum_bitref( sc_fxnum& num_, int idx_ )    : m_num( num_ ), m_idx( idx_ ){}// copy constructorinlinesc_fxnum_bitref::sc_fxnum_bitref( const sc_fxnum_bitref& a )    : m_num( a.m_num ), m_idx( a.m_idx ){}// assignment operatorsinlinesc_fxnum_bitref&sc_fxnum_bitref::operator = ( const sc_fxnum_bitref& a ){    if( &a != this )    {	SC_FXNUM_OBSERVER_READ_( a.m_num )	set( a.get() );	SC_FXNUM_OBSERVER_WRITE_( m_num )    }    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator = ( const sc_fxnum_fast_bitref& a ){    SC_FXNUM_FAST_OBSERVER_READ_( a.m_num )    set( a.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator = ( const sc_bit& a ){    set( static_cast<bool>( a ) );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator = ( bool a ){    set( a );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator &= ( const sc_fxnum_bitref& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    SC_FXNUM_OBSERVER_READ_( b.m_num )    set( get() && b.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator &= ( const sc_fxnum_fast_bitref& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    SC_FXNUM_FAST_OBSERVER_READ_( b.m_num )    set( get() && b.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator &= ( const sc_bit& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    set( get() && static_cast<bool>( b ) );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator &= ( bool b ){    SC_FXNUM_OBSERVER_READ_( m_num )    set( get() && b );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator |= ( const sc_fxnum_bitref& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    SC_FXNUM_OBSERVER_READ_( b.m_num )    set( get() || b.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator |= ( const sc_fxnum_fast_bitref& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    SC_FXNUM_FAST_OBSERVER_READ_( b.m_num )    set( get() || b.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator |= ( const sc_bit& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    set( get() || static_cast<bool>( b ) );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator |= ( bool b ){    SC_FXNUM_OBSERVER_READ_( m_num )    set( get() || b );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator ^= ( const sc_fxnum_bitref& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    SC_FXNUM_OBSERVER_READ_( b.m_num )    set( get() != b.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator ^= ( const sc_fxnum_fast_bitref& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    SC_FXNUM_FAST_OBSERVER_READ_( b.m_num )    set( get() != b.get() );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator ^= ( const sc_bit& b ){    SC_FXNUM_OBSERVER_READ_( m_num )    set( get() != static_cast<bool>( b ) );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_bitref&sc_fxnum_bitref::operator ^= ( bool b ){    SC_FXNUM_OBSERVER_READ_( m_num )    set( get() != b );    SC_FXNUM_OBSERVER_WRITE_( m_num )    return *this;}// implicit conversioninlinesc_fxnum_bitref::operator bool() const{    SC_FXNUM_OBSERVER_READ_( m_num )    return get();}inline::std::ostream&operator << ( ::std::ostream& os, const sc_fxnum_bitref& a ){    a.print( os );    return os;}inline::std::istream&operator >> ( ::std::istream& is, sc_fxnum_bitref& a ){    a.scan( is );    return is;}// ----------------------------------------------------------------------------//  CLASS : sc_fxnum_fast_bitref////  Proxy class for bit-selection in class sc_fxnum_fast, behaves like sc_bit.// ----------------------------------------------------------------------------// constructorinlinesc_fxnum_fast_bitref::sc_fxnum_fast_bitref( sc_fxnum_fast& num_, int idx_ )    : m_num( num_ ), m_idx( idx_ ){}// copy constructorinlinesc_fxnum_fast_bitref::sc_fxnum_fast_bitref( const sc_fxnum_fast_bitref& a )    : m_num( a.m_num ), m_idx( a.m_idx ){}// assignment operatorsinlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator = ( const sc_fxnum_bitref& a ){    SC_FXNUM_OBSERVER_READ_( a.m_num )    set( a.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator = ( const sc_fxnum_fast_bitref& a ){    if( &a != this )    {	SC_FXNUM_FAST_OBSERVER_READ_( a.m_num )	set( a.get() );	SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    }    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator = ( const sc_bit& a ){    set( static_cast<bool>( a ) );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator = ( bool a ){    set( a );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator &= ( const sc_fxnum_bitref& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    SC_FXNUM_OBSERVER_READ_( b.m_num )    set( get() && b.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator &= ( const sc_fxnum_fast_bitref& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    SC_FXNUM_FAST_OBSERVER_READ_( b.m_num )    set( get() && b.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator &= ( const sc_bit& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    set( get() && static_cast<bool>( b ) );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator &= ( bool b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    set( get() && b );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator |= ( const sc_fxnum_bitref& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    SC_FXNUM_OBSERVER_READ_( b.m_num )    set( get() || b.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator |= ( const sc_fxnum_fast_bitref& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    SC_FXNUM_FAST_OBSERVER_READ_( b.m_num )    set( get() || b.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator |= ( const sc_bit& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    set( get() || static_cast<bool>( b ) );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator |= ( bool b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    set( get() || b );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator ^= ( const sc_fxnum_bitref& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    SC_FXNUM_OBSERVER_READ_( b.m_num )    set( get() != b.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator ^= ( const sc_fxnum_fast_bitref& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    SC_FXNUM_FAST_OBSERVER_READ_( b.m_num )    set( get() != b.get() );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator ^= ( const sc_bit& b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    set( get() != static_cast<bool>( b ) );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}inlinesc_fxnum_fast_bitref&sc_fxnum_fast_bitref::operator ^= ( bool b ){    SC_FXNUM_FAST_OBSERVER_READ_( m_num )    set( get() != b );    SC_FXNUM_FAST_OBSERVER_WRITE_( m_num )    return *this;}

⌨️ 快捷键说明

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