📄 sc_fxnum.h
字号:
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 + -