sc_ufixed.h

来自「system C源码 一种替代verilog的语言」· C头文件 代码 · 共 648 行 · 第 1/2 页

H
648
字号
sc_ufixed<W,I,Q,O,N>::sc_ufixed( tp a,                                        \				 sc_fxnum_observer* observer_ )               \: sc_ufix( a, W, I, Q, O, N, observer_ )                                      \{}                                                                            \                                                                              \template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>                       \inline                                                                        \sc_ufixed<W,I,Q,O,N>::sc_ufixed( tp a,                                        \				 const sc_fxcast_switch& cast_sw,             \				 sc_fxnum_observer* observer_ )               \: sc_ufix( a, W, I, Q, O, N, cast_sw, observer_ )                             \{}DEFN_CTORS_T(int)DEFN_CTORS_T(unsigned int)DEFN_CTORS_T(long)DEFN_CTORS_T(unsigned long)DEFN_CTORS_T(double)DEFN_CTORS_T(const char*)DEFN_CTORS_T(const sc_fxval&)DEFN_CTORS_T(const sc_fxval_fast&)DEFN_CTORS_T(const sc_fxnum&)DEFN_CTORS_T(const sc_fxnum_fast&)#ifndef SC_FX_EXCLUDE_OTHERDEFN_CTORS_T(int64)DEFN_CTORS_T(uint64)DEFN_CTORS_T(const sc_int_base&)DEFN_CTORS_T(const sc_uint_base&)DEFN_CTORS_T(const sc_signed&)DEFN_CTORS_T(const sc_unsigned&)#endif#undef DEFN_CTORS_T// copy constructortemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed<W,I,Q,O,N>::sc_ufixed( const sc_ufixed<W,I,Q,O,N>& a ): sc_ufix( a, W, I, Q, O, N ){}// assignment operatorstemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed<W,I,Q,O,N>&sc_ufixed<W,I,Q,O,N>::operator = ( const sc_ufixed<W,I,Q,O,N>& a ){    sc_ufix::operator = ( a );    return *this;}#define DEFN_ASN_OP_T(op,tp)                                                  \template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>                       \inline                                                                        \sc_ufixed<W,I,Q,O,N>&                                                         \sc_ufixed<W,I,Q,O,N>::operator op ( tp a )                                    \{                                                                             \    sc_ufix::operator op ( a );                                               \    return *this;                                                             \}#ifndef SC_FX_EXCLUDE_OTHER#define DEFN_ASN_OP_OTHER(op)                                                 \DEFN_ASN_OP_T(op,int64)                                                       \DEFN_ASN_OP_T(op,uint64)                                                      \DEFN_ASN_OP_T(op,const sc_int_base&)                                          \DEFN_ASN_OP_T(op,const sc_uint_base&)                                         \DEFN_ASN_OP_T(op,const sc_signed&)                                            \DEFN_ASN_OP_T(op,const sc_unsigned&)#else#define DEFN_ASN_OP_OTHER(op)#endif#define DEFN_ASN_OP(op)                                                       \DEFN_ASN_OP_T(op,int)                                                         \DEFN_ASN_OP_T(op,unsigned int)                                                \DEFN_ASN_OP_T(op,long)                                                        \DEFN_ASN_OP_T(op,unsigned long)                                               \DEFN_ASN_OP_T(op,double)                                                      \DEFN_ASN_OP_T(op,const char*)                                                 \DEFN_ASN_OP_T(op,const sc_fxval&)                                             \DEFN_ASN_OP_T(op,const sc_fxval_fast&)                                        \DEFN_ASN_OP_T(op,const sc_fxnum&)                                             \DEFN_ASN_OP_T(op,const sc_fxnum_fast&)                                        \DEFN_ASN_OP_OTHER(op)DEFN_ASN_OP(=)DEFN_ASN_OP(*=)DEFN_ASN_OP(/=)DEFN_ASN_OP(+=)DEFN_ASN_OP(-=)DEFN_ASN_OP_T(<<=,int)DEFN_ASN_OP_T(>>=,int)DEFN_ASN_OP_T(&=,const sc_ufix&)DEFN_ASN_OP_T(&=,const sc_ufix_fast&)DEFN_ASN_OP_T(|=,const sc_ufix&)DEFN_ASN_OP_T(|=,const sc_ufix_fast&)DEFN_ASN_OP_T(^=,const sc_ufix&)DEFN_ASN_OP_T(^=,const sc_ufix_fast&)#undef DEFN_ASN_OP_T#undef DEFN_ASN_OP_OTHER#undef DEFN_ASN_OP// auto-increment and auto-decrementtemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlineconst sc_fxvalsc_ufixed<W,I,Q,O,N>::operator ++ ( int ){    return sc_fxval( sc_ufix::operator ++ ( 0 ) );}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlineconst sc_fxvalsc_ufixed<W,I,Q,O,N>::operator -- ( int ){    return sc_fxval( sc_ufix::operator -- ( 0 ) );}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed<W,I,Q,O,N>&sc_ufixed<W,I,Q,O,N>::operator ++ (){    sc_ufix::operator ++ ();    return *this;}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed<W,I,Q,O,N>&sc_ufixed<W,I,Q,O,N>::operator -- (){    sc_ufix::operator -- ();    return *this;}// ----------------------------------------------------------------------------//  TEMPLATE CLASS : sc_ufixed_fast////  "Constrained" unsigned fixed-point class; limited precision.// ----------------------------------------------------------------------------template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed_fast<W,I,Q,O,N>::sc_ufixed_fast( sc_fxnum_fast_observer* observer_ ): sc_ufix_fast( W, I, Q, O, N, observer_ ){}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed_fast<W,I,Q,O,N>::sc_ufixed_fast( const sc_fxcast_switch& cast_sw,					   sc_fxnum_fast_observer* observer_ ): sc_ufix_fast( W, I, Q, O, N, cast_sw, observer_ ){}#define DEFN_CTORS_T(tp)                                                      \template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>                       \inline                                                                        \sc_ufixed_fast<W,I,Q,O,N>::sc_ufixed_fast( tp a,                              \					   sc_fxnum_fast_observer* observer_ )\: sc_ufix_fast( a, W, I, Q, O, N, observer_ )                                 \{}                                                                            \                                                                              \template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>                       \inline                                                                        \sc_ufixed_fast<W,I,Q,O,N>::sc_ufixed_fast( tp a,                              \					   const sc_fxcast_switch& cast_sw,   \					   sc_fxnum_fast_observer* observer_ )\: sc_ufix_fast( a, W, I, Q, O, N, cast_sw, observer_ )                        \{}DEFN_CTORS_T(int)DEFN_CTORS_T(unsigned int)DEFN_CTORS_T(long)DEFN_CTORS_T(unsigned long)DEFN_CTORS_T(double)DEFN_CTORS_T(const char*)DEFN_CTORS_T(const sc_fxval&)DEFN_CTORS_T(const sc_fxval_fast&)DEFN_CTORS_T(const sc_fxnum&)DEFN_CTORS_T(const sc_fxnum_fast&)#ifndef SC_FX_EXCLUDE_OTHERDEFN_CTORS_T(int64)DEFN_CTORS_T(uint64)DEFN_CTORS_T(const sc_int_base&)DEFN_CTORS_T(const sc_uint_base&)DEFN_CTORS_T(const sc_signed&)DEFN_CTORS_T(const sc_unsigned&)#endif#undef DEFN_CTORS_T// copy constructortemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed_fast<W,I,Q,O,N>::sc_ufixed_fast( const sc_ufixed_fast<W,I,Q,O,N>& a ): sc_ufix_fast( a, W, I, Q, O, N ){}// assignment operatorstemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed_fast<W,I,Q,O,N>&sc_ufixed_fast<W,I,Q,O,N>::operator = ( const sc_ufixed_fast<W,I,Q,O,N>& a ){    sc_ufix_fast::operator = ( a );    return *this;}#define DEFN_ASN_OP_T(op,tp)                                                  \template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>                       \inline                                                                        \sc_ufixed_fast<W,I,Q,O,N>&                                                    \sc_ufixed_fast<W,I,Q,O,N>::operator op ( tp a )                               \{                                                                             \    sc_ufix_fast::operator op ( a );                                          \    return *this;                                                             \}#ifndef SC_FX_EXCLUDE_OTHER#define DEFN_ASN_OP_OTHER(op)                                                 \DEFN_ASN_OP_T(op,int64)                                                       \DEFN_ASN_OP_T(op,uint64)                                                      \DEFN_ASN_OP_T(op,const sc_int_base&)                                          \DEFN_ASN_OP_T(op,const sc_uint_base&)                                         \DEFN_ASN_OP_T(op,const sc_signed&)                                            \DEFN_ASN_OP_T(op,const sc_unsigned&)#else#define DEFN_ASN_OP_OTHER(op)#endif#define DEFN_ASN_OP(op)                                                       \DEFN_ASN_OP_T(op,int)                                                         \DEFN_ASN_OP_T(op,unsigned int)                                                \DEFN_ASN_OP_T(op,long)                                                        \DEFN_ASN_OP_T(op,unsigned long)                                               \DEFN_ASN_OP_T(op,double)                                                      \DEFN_ASN_OP_T(op,const char*)                                                 \DEFN_ASN_OP_T(op,const sc_fxval&)                                             \DEFN_ASN_OP_T(op,const sc_fxval_fast&)                                        \DEFN_ASN_OP_T(op,const sc_fxnum&)                                             \DEFN_ASN_OP_T(op,const sc_fxnum_fast&)                                        \DEFN_ASN_OP_OTHER(op)DEFN_ASN_OP(=)DEFN_ASN_OP(*=)DEFN_ASN_OP(/=)DEFN_ASN_OP(+=)DEFN_ASN_OP(-=)DEFN_ASN_OP_T(<<=,int)DEFN_ASN_OP_T(>>=,int)DEFN_ASN_OP_T(&=,const sc_ufix&)DEFN_ASN_OP_T(&=,const sc_ufix_fast&)DEFN_ASN_OP_T(|=,const sc_ufix&)DEFN_ASN_OP_T(|=,const sc_ufix_fast&)DEFN_ASN_OP_T(^=,const sc_ufix&)DEFN_ASN_OP_T(^=,const sc_ufix_fast&)#undef DEFN_ASN_OP_T#undef DEFN_ASN_OP_OTHER#undef DEFN_ASN_OP// auto-increment and auto-decrementtemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlineconst sc_fxval_fastsc_ufixed_fast<W,I,Q,O,N>::operator ++ ( int ){    return sc_fxval_fast( sc_ufix_fast::operator ++ ( 0 ) );}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlineconst sc_fxval_fastsc_ufixed_fast<W,I,Q,O,N>::operator -- ( int ){    return sc_fxval_fast( sc_ufix_fast::operator -- ( 0 ) );}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed_fast<W,I,Q,O,N>&sc_ufixed_fast<W,I,Q,O,N>::operator ++ (){    sc_ufix_fast::operator ++ ();    return *this;}template<int W, int I, sc_q_mode Q, sc_o_mode O, int N>inlinesc_ufixed_fast<W,I,Q,O,N>&sc_ufixed_fast<W,I,Q,O,N>::operator -- (){    sc_ufix_fast::operator -- ();    return *this;}} // namespace sc_dt#endif// Taf!

⌨️ 快捷键说明

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