Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

sc_bigint.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002 
00003   The following code is derived, directly or indirectly, from the SystemC
00004   source code Copyright (c) 1996-2004 by all Contributors.
00005   All Rights reserved.
00006 
00007   The contents of this file are subject to the restrictions and limitations
00008   set forth in the SystemC Open Source License Version 2.3 (the "License");
00009   You may not use this file except in compliance with such restrictions and
00010   limitations. You may obtain instructions on how to receive a copy of the
00011   License at http://www.systemc.org/. Software distributed by Contributors
00012   under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
00013   ANY KIND, either express or implied. See the License for the specific
00014   language governing rights and limitations under the License.
00015 
00016  *****************************************************************************/
00017 
00018 /*****************************************************************************
00019 
00020   sc_bigint.h -- Template version of sc_signed. This class enables
00021                  compile-time bit widths for sc_signed numbers.
00022 
00023   Original Author: Ali Dasdan, Synopsys, Inc.
00024 
00025  *****************************************************************************/
00026 
00027 /*****************************************************************************
00028 
00029   MODIFICATION LOG - modifiers, enter your name, affiliation, date and
00030   changes you are making here.
00031 
00032       Name, Affiliation, Date: Gene Bushayev, Synopsys, Inc.
00033   Description of Modification: - Interface between sc_bigint and sc_bv/sc_lv.
00034 
00035       Name, Affiliation, Date:
00036   Description of Modification:
00037 
00038  *****************************************************************************/
00039 
00040 #ifndef SC_BIGINT_H
00041 #define SC_BIGINT_H
00042 
00043 
00044 #include "systemc/datatypes/int/sc_signed.h"
00045 #include "systemc/datatypes/int/sc_unsigned.h"
00046 
00047 namespace sc_dt
00048 {
00049 
00050 // classes defined in this module
00051 template <int W> class sc_bigint;
00052 
00053 // forward class declarations
00054 class sc_bv_base;
00055 class sc_lv_base;
00056 class sc_fxval;
00057 class sc_fxval_fast;
00058 class sc_fxnum;
00059 class sc_fxnum_fast;
00060 
00061 
00062 // ----------------------------------------------------------------------------
00063 //  CLASS TEMPLATE : sc_bigint<W>
00064 //
00065 //  Arbitrary size signed integer type.
00066 // ----------------------------------------------------------------------------
00067 
00068 #ifdef SC_MAX_NBITS
00069 template< int W = SC_MAX_NBITS >
00070 #else
00071 template< int W >
00072 #endif
00073 class sc_bigint
00074     : public sc_signed
00075 {
00076 public:
00077 
00078     // constructors
00079 
00080     sc_bigint()
00081   : sc_signed( W )
00082   {}
00083 
00084     sc_bigint( const sc_bigint<W>& v )
00085   : sc_signed( W )
00086   { *this = v; }
00087 
00088     sc_bigint( const sc_signed& v )
00089   : sc_signed( W )
00090   { *this = v; }
00091 
00092     sc_bigint( const sc_signed_subref& v )
00093   : sc_signed( W )
00094   { *this = v; }
00095 
00096     sc_bigint( const sc_concatref& a )
00097   : sc_signed( W )
00098   { sc_signed::operator = ( a ); }
00099 
00100     sc_bigint( const sc_unsigned& v )
00101   : sc_signed( W )
00102   { *this = v; }
00103 
00104     sc_bigint( const sc_unsigned_subref& v )
00105   : sc_signed( W )
00106   { *this = v; }
00107 
00108     sc_bigint( const char* v )
00109   : sc_signed( W )
00110   { *this = v; }
00111 
00112     sc_bigint( int64 v )
00113   : sc_signed( W )
00114   { *this = v; }
00115 
00116     sc_bigint( uint64 v )
00117   : sc_signed( W )
00118   { *this = v; }
00119 
00120     sc_bigint( long v )
00121   : sc_signed( W )
00122   { *this = v; }
00123 
00124     sc_bigint( unsigned long v )
00125   : sc_signed( W )
00126   { *this = v; }
00127 
00128     sc_bigint( int v )
00129   : sc_signed( W )
00130   { *this = v; }
00131 
00132     sc_bigint( unsigned int v )
00133   : sc_signed( W )
00134   { *this = v; }
00135 
00136     sc_bigint( double v )
00137   : sc_signed( W )
00138   { *this = v; }
00139   
00140     sc_bigint( const sc_bv_base& v )
00141   : sc_signed( W )
00142   { *this = v; }
00143 
00144     sc_bigint( const sc_lv_base& v )
00145   : sc_signed( W )
00146   { *this = v; }
00147 
00148 #ifdef SC_INCLUDE_FX
00149 
00150     explicit sc_bigint( const sc_fxval& v )
00151   : sc_signed( W )
00152   { *this = v; }
00153 
00154     explicit sc_bigint( const sc_fxval_fast& v )
00155   : sc_signed( W )
00156   { *this = v; }
00157 
00158     explicit sc_bigint( const sc_fxnum& v )
00159   : sc_signed( W )
00160   { *this = v; }
00161 
00162     explicit sc_bigint( const sc_fxnum_fast& v )
00163   : sc_signed( W )
00164   { *this = v; }
00165 
00166 #endif
00167 
00168 
00169 #ifndef SC_MAX_NBITS
00170 
00171     // destructor
00172 
00173     ~sc_bigint()
00174   {}
00175 
00176 #endif
00177  
00178 
00179     // assignment operators
00180 
00181     sc_bigint<W>& operator = ( const sc_bigint<W>& v )
00182   { sc_signed::operator = ( v ); return *this; }
00183 
00184     sc_bigint<W>& operator = ( const sc_signed& v )
00185   { sc_signed::operator = ( v ); return *this; }
00186 
00187     sc_bigint<W>& operator = (const sc_signed_subref& v )
00188   { sc_signed::operator = ( v ); return *this; }
00189 
00190     sc_bigint<W>& operator = ( const sc_concatref& a )
00191   { sc_signed::operator = ( a ); return *this; }
00192 
00193     sc_bigint<W>& operator = ( const sc_unsigned& v )
00194   { sc_signed::operator = ( v ); return *this; }
00195 
00196     sc_bigint<W>& operator = ( const sc_unsigned_subref& v )
00197   { sc_signed::operator = ( v ); return *this; }
00198 
00199     sc_bigint<W>& operator = ( const char* v )
00200   { sc_signed::operator = ( v ); return *this; }
00201 
00202     sc_bigint<W>& operator = ( int64 v )
00203   { sc_signed::operator = ( v ); return *this; }
00204 
00205     sc_bigint<W>& operator = ( uint64 v )
00206   { sc_signed::operator = ( v ); return *this; }
00207 
00208     sc_bigint<W>& operator = ( long v )
00209   { sc_signed::operator = ( v ); return *this; }
00210 
00211     sc_bigint<W>& operator = ( unsigned long v )
00212   { sc_signed::operator = ( v ); return *this; }
00213 
00214     sc_bigint<W>& operator = ( int v )
00215   { sc_signed::operator = ( v ); return *this; }
00216 
00217     sc_bigint<W>& operator = ( unsigned int v )
00218   { sc_signed::operator = ( v ); return *this; }
00219 
00220     sc_bigint<W>& operator = ( double v )
00221   { sc_signed::operator = ( v ); return *this; }
00222 
00223 
00224     sc_bigint<W>& operator = ( const sc_bv_base& v )
00225   { sc_signed::operator = ( v ); return *this; }
00226 
00227     sc_bigint<W>& operator = ( const sc_lv_base& v )
00228   { sc_signed::operator = ( v ); return *this; }
00229 
00230     sc_bigint<W>& operator = ( const sc_int_base& v )
00231   { sc_signed::operator = ( v ); return *this; }
00232 
00233     sc_bigint<W>& operator = ( const sc_uint_base& v )
00234   { sc_signed::operator = ( v ); return *this; }
00235 
00236 #ifdef SC_INCLUDE_FX
00237 
00238     sc_bigint<W>& operator = ( const sc_fxval& v )
00239   { sc_signed::operator = ( v ); return *this; }
00240 
00241     sc_bigint<W>& operator = ( const sc_fxval_fast& v )
00242   { sc_signed::operator = ( v ); return *this; }
00243 
00244     sc_bigint<W>& operator = ( const sc_fxnum& v )
00245   { sc_signed::operator = ( v ); return *this; }
00246 
00247     sc_bigint<W>& operator = ( const sc_fxnum_fast& v )
00248   { sc_signed::operator = ( v ); return *this; }
00249 
00250 #endif
00251 };
00252 
00253 } // namespace sc_dt
00254 
00255 
00256 #endif

Generated on Fri Jan 14 08:28:59 2005 for SystemC2.1beta11(excludingMSLib)(IncludingSCV)\nProvidedby:www.openverificationfoundation.org by doxygen1.2.18