📄 sc_logic.h
字号:
sc_logic& operator = ( int a ) { *this = sc_logic( a ); return *this; } sc_logic& operator = ( const sc_bit& a ) { *this = sc_logic( a ); return *this; } // bitwise assignment operators sc_logic& operator &= ( const sc_logic& b ) { m_val = and_table[m_val][b.m_val]; return *this; } sc_logic& operator &= ( sc_logic_value_t v ) { *this &= sc_logic( v ); return *this; } sc_logic& operator &= ( bool b ) { *this &= sc_logic( b ); return *this; } sc_logic& operator &= ( char b ) { *this &= sc_logic( b ); return *this; } sc_logic& operator &= ( int b ) { *this &= sc_logic( b ); return *this; } sc_logic& operator |= ( const sc_logic& b ) { m_val = or_table[m_val][b.m_val]; return *this; } sc_logic& operator |= ( sc_logic_value_t v ) { *this |= sc_logic( v ); return *this; } sc_logic& operator |= ( bool b ) { *this |= sc_logic( b ); return *this; } sc_logic& operator |= ( char b ) { *this |= sc_logic( b ); return *this; } sc_logic& operator |= ( int b ) { *this |= sc_logic( b ); return *this; } sc_logic& operator ^= ( const sc_logic& b ) { m_val = xor_table[m_val][b.m_val]; return *this; } sc_logic& operator ^= ( sc_logic_value_t v ) { *this ^= sc_logic( v ); return *this; } sc_logic& operator ^= ( bool b ) { *this ^= sc_logic( b ); return *this; } sc_logic& operator ^= ( char b ) { *this ^= sc_logic( b ); return *this; } sc_logic& operator ^= ( int b ) { *this ^= sc_logic( b ); return *this; } // bitwise operators and functions // bitwise complement const sc_logic operator ~ () const { return sc_logic( not_table[m_val] ); } sc_logic& b_not() { m_val = not_table[m_val]; return *this; } // bitwise and friend const sc_logic operator & ( const sc_logic& a, const sc_logic& b ) { return sc_logic( sc_logic::and_table[a.m_val][b.m_val] ); } friend const sc_logic operator & ( const sc_logic& a, sc_logic_value_t b ) { return ( a & sc_logic( b ) ); } friend const sc_logic operator & ( const sc_logic& a, bool b ) { return ( a & sc_logic( b ) ); } friend const sc_logic operator & ( const sc_logic& a, char b ) { return ( a & sc_logic( b ) ); } friend const sc_logic operator & ( const sc_logic& a, int b ) { return ( a & sc_logic( b ) ); } friend const sc_logic operator & ( sc_logic_value_t a, const sc_logic& b ) { return ( sc_logic( a ) & b ); } friend const sc_logic operator & ( bool a, const sc_logic& b ) { return ( sc_logic( a ) & b ); } friend const sc_logic operator & ( char a, const sc_logic& b ) { return ( sc_logic( a ) & b ); } friend const sc_logic operator & ( int a, const sc_logic& b ) { return ( sc_logic( a ) & b ); } // bitwise or friend const sc_logic operator | ( const sc_logic& a, const sc_logic& b ) { return sc_logic( sc_logic::or_table[a.m_val][b.m_val] ); } friend const sc_logic operator | ( const sc_logic& a, sc_logic_value_t b ) { return ( a | sc_logic( b ) ); } friend const sc_logic operator | ( const sc_logic& a, bool b ) { return ( a | sc_logic( b ) ); } friend const sc_logic operator | ( const sc_logic& a, char b ) { return ( a | sc_logic( b ) ); } friend const sc_logic operator | ( const sc_logic& a, int b ) { return ( a | sc_logic( b ) ); } friend const sc_logic operator | ( sc_logic_value_t a, const sc_logic& b ) { return ( sc_logic( a ) | b ); } friend const sc_logic operator | ( bool a, const sc_logic& b ) { return ( sc_logic( a ) | b ); } friend const sc_logic operator | ( char a, const sc_logic& b ) { return ( sc_logic( a ) | b ); } friend const sc_logic operator | ( int a, const sc_logic& b ) { return ( sc_logic( a ) | b ); } // bitwise xor friend const sc_logic operator ^ ( const sc_logic& a, const sc_logic& b ) { return sc_logic( sc_logic::xor_table[a.m_val][b.m_val] ); } friend const sc_logic operator ^ ( const sc_logic& a, sc_logic_value_t b ) { return ( a ^ sc_logic( b ) ); } friend const sc_logic operator ^ ( const sc_logic& a, bool b ) { return ( a ^ sc_logic( b ) ); } friend const sc_logic operator ^ ( const sc_logic& a, char b ) { return ( a ^ sc_logic( b ) ); } friend const sc_logic operator ^ ( const sc_logic& a, int b ) { return ( a ^ sc_logic( b ) ); } friend const sc_logic operator ^ ( sc_logic_value_t a, const sc_logic& b ) { return ( sc_logic( a ) ^ b ); } friend const sc_logic operator ^ ( bool a, const sc_logic& b ) { return ( sc_logic( a ) ^ b ); } friend const sc_logic operator ^ ( char a, const sc_logic& b ) { return ( sc_logic( a ) ^ b ); } friend const sc_logic operator ^ ( int a, const sc_logic& b ) { return ( sc_logic( a ) ^ b ); } // relational operators and functions friend bool operator == ( const sc_logic& a, const sc_logic& b ) { return ( (int) a.m_val == b.m_val ); } friend bool operator == ( const sc_logic& a, sc_logic_value_t b ) { return ( a == sc_logic( b ) ); } friend bool operator == ( const sc_logic& a, bool b ) { return ( a == sc_logic( b ) ); } friend bool operator == ( const sc_logic& a, char b ) { return ( a == sc_logic( b ) ); } friend bool operator == ( const sc_logic& a, int b ) { return ( a == sc_logic( b ) ); } friend bool operator == ( sc_logic_value_t a, const sc_logic& b ) { return ( sc_logic( a ) == b ); } friend bool operator == ( bool a, const sc_logic& b ) { return ( sc_logic( a ) == b ); } friend bool operator == ( char a, const sc_logic& b ) { return ( sc_logic( a ) == b ); } friend bool operator == ( int a, const sc_logic& b ) { return ( sc_logic( a ) == b ); } friend bool operator != ( const sc_logic& a, const sc_logic& b ) { return ( (int) a.m_val != b.m_val ); } friend bool operator != ( const sc_logic& a, sc_logic_value_t b ) { return ( a != sc_logic( b ) ); } friend bool operator != ( const sc_logic& a, bool b ) { return ( a != sc_logic( b ) ); } friend bool operator != ( const sc_logic& a, char b ) { return ( a != sc_logic( b ) ); } friend bool operator != ( const sc_logic& a, int b ) { return ( a != sc_logic( b ) ); } friend bool operator != ( sc_logic_value_t a, const sc_logic& b ) { return ( sc_logic( a ) != b ); } friend bool operator != ( bool a, const sc_logic& b ) { return ( sc_logic( a ) != b ); } friend bool operator != ( char a, const sc_logic& b ) { return ( sc_logic( a ) != b ); } friend bool operator != ( int a, const sc_logic& b ) { return ( sc_logic( a ) != b ); } // explicit conversions sc_logic_value_t value() const { return m_val; } bool is_01() const { return ( (int) m_val == Log_0 || (int) m_val == Log_1 ); } bool to_bool() const { if( ! is_01() ) { invalid_01(); } return ( (int) m_val != Log_0 ); } char to_char() const { return logic_to_char[m_val]; } // other methods void print( ::std::ostream& os = ::std::cout ) const { os << to_char(); } void scan( ::std::istream& is = ::std::cin ); // memory (de)allocation static void* operator new( std::size_t, void* p ) // placement new { return p; } static void* operator new( std::size_t sz ) { return sc_core::sc_mempool::allocate( sz ); } static void operator delete( void* p, std::size_t sz ) { sc_core::sc_mempool::release( p, sz ); } static void* operator new [] ( std::size_t sz ) { return sc_core::sc_mempool::allocate( sz ); } static void operator delete [] ( void* p, std::size_t sz ) { sc_core::sc_mempool::release( p, sz ); }private: sc_logic_value_t m_val;private: // disabled explicit sc_logic( const char* ); sc_logic& operator = ( const char* );};// ----------------------------------------------------------------------------inline::std::ostream&operator << ( ::std::ostream& os, const sc_logic& a ){ a.print( os ); return os;}inline::std::istream&operator >> ( ::std::istream& is, sc_logic& a ){ a.scan( is ); return is;}extern const sc_logic SC_LOGIC_0;extern const sc_logic SC_LOGIC_1;extern const sc_logic SC_LOGIC_Z;extern const sc_logic SC_LOGIC_X;// #ifdef SC_DT_DEPRECATEDextern const sc_logic sc_logic_0;extern const sc_logic sc_logic_1;extern const sc_logic sc_logic_Z;extern const sc_logic sc_logic_X;// #endif} // namespace sc_dt#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -