gem5 v24.0.0.0
Loading...
Searching...
No Matches
sc_bigint.hh
Go to the documentation of this file.
1/*****************************************************************************
2
3 Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
4 more contributor license agreements. See the NOTICE file distributed
5 with this work for additional information regarding copyright ownership.
6 Accellera licenses this file to you under the Apache License, Version 2.0
7 (the "License"); you may not use this file except in compliance with the
8 License. You may obtain a copy of the License at
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15 implied. See the License for the specific language governing
16 permissions and limitations under the License.
17
18 *****************************************************************************/
19
20/*****************************************************************************
21
22 sc_bigint.h -- Template version of sc_signed. This class enables
23 compile-time bit widths for sc_signed numbers.
24
25 Original Author: Ali Dasdan, Synopsys, Inc.
26
27 *****************************************************************************/
28
29/*****************************************************************************
30
31 MODIFICATION LOG - modifiers, enter your name, affiliation, date and
32 changes you are making here.
33
34 Name, Affiliation, Date: Gene Bushayev, Synopsys, Inc.
35 Description of Modification: - Interface between sc_bigint and sc_bv/sc_lv.
36
37 Name, Affiliation, Date:
38 Description of Modification:
39
40 *****************************************************************************/
41
42// $Log: sc_bigint.h,v $
43// Revision 1.2 2011/02/18 20:19:14 acg
44// Andy Goodrich: updating Copyright notice.
45//
46// Revision 1.1.1.1 2006/12/15 20:20:05 acg
47// SystemC 2.3
48//
49// Revision 1.3 2006/01/13 18:49:31 acg
50// Added $Log command so that CVS check in comments are reproduced in the
51// source.
52//
53
54#ifndef __SYSTEMC_EXT_DT_INT_SC_BIGINT_HH__
55#define __SYSTEMC_EXT_DT_INT_SC_BIGINT_HH__
56
57#include "sc_signed.hh"
58#include "sc_unsigned.hh"
59
60namespace sc_dt
61{
62
63// classes defined in this module
64template <int W>
65class sc_bigint;
66
67// forward class declarations
68class sc_bv_base;
69class sc_lv_base;
70class sc_fxval;
71class sc_fxval_fast;
72class sc_fxnum;
73class sc_fxnum_fast;
74
75
76// ----------------------------------------------------------------------------
77// CLASS TEMPLATE : sc_bigint<W>
78//
79// Arbitrary size signed integer type.
80// ----------------------------------------------------------------------------
81
82#ifdef SC_MAX_NBITS
83template<int W=SC_MAX_NBITS>
84#else
85template<int W>
86#endif
87class sc_bigint : public sc_signed
88{
89 public:
90 // constructors
92 sc_bigint(const sc_bigint<W> &v) : sc_signed(W) { *this = v; }
93 sc_bigint(const sc_signed &v) : sc_signed(W) { *this = v; }
94 sc_bigint(const sc_signed_subref &v) : sc_signed(W) { *this = v; }
95
96 template< class T >
98 {
99 a->to_sc_signed(*this);
100 }
101
102 sc_bigint(const sc_unsigned &v) : sc_signed(W) { *this = v; }
103 sc_bigint(const sc_unsigned_subref &v) : sc_signed(W) { *this = v; }
104 sc_bigint(const char *v) : sc_signed(W) { *this = v; }
105 sc_bigint(int64 v) : sc_signed(W) { *this = v; }
106 sc_bigint(uint64 v) : sc_signed(W) { *this = v; }
107 sc_bigint(long v) : sc_signed(W) { *this = v; }
108 sc_bigint(unsigned long v) : sc_signed(W) { *this = v; }
109 sc_bigint(int v) : sc_signed(W) { *this = v; }
110 sc_bigint(unsigned int v) : sc_signed(W) { *this = v; }
111 sc_bigint(double v) : sc_signed(W) { *this = v; }
112 sc_bigint(const sc_bv_base &v) : sc_signed(W) { *this = v; }
113 sc_bigint(const sc_lv_base &v) : sc_signed(W) { *this = v; }
114
115 explicit sc_bigint(const sc_fxval &v) : sc_signed(W) { *this = v; }
116 explicit sc_bigint(const sc_fxval_fast &v) : sc_signed(W) { *this = v; }
117 explicit sc_bigint(const sc_fxnum &v) : sc_signed(W) { *this = v; }
118 explicit sc_bigint(const sc_fxnum_fast &v) : sc_signed(W) { *this = v; }
119
120#ifndef SC_MAX_NBITS
121 // destructor
123#endif
124
125 // assignment operators
128 {
130 return *this;
131 }
132
135 {
137 return *this;
138 }
139
142 {
144 return *this;
145 }
146
147 template< class T >
150 {
151 a->to_sc_signed(*this);
152 return *this;
153 }
154
157 {
159 return *this;
160 }
161
164 {
166 return *this;
167 }
168
170 operator = (const char *v)
171 {
173 return *this;
174 }
175
178 {
180 return *this;
181 }
182
185 {
187 return *this;
188 }
189
192 {
194 return *this;
195 }
196
198 operator = (unsigned long v)
199 {
201 return *this;
202 }
203
206 {
208 return *this;
209 }
210
212 operator = (unsigned int v)
213 {
215 return *this;
216 }
217
219 {
221 return *this;
222 }
223
224
227 {
229 return *this;
230 }
231
234 {
236 return *this;
237 }
238
241 {
243 return *this;
244 }
245
248 {
250 return *this;
251 }
252
255 {
257 return *this;
258 }
259
262 {
264 return *this;
265 }
266
269 {
271 return *this;
272 }
273
276 {
278 return *this;
279 }
280};
281
282} // namespace sc_dt
283
284#endif // __SYSTEMC_EXT_DT_INT_SC_BIGINT_HH__
sc_bigint(const sc_fxnum_fast &v)
Definition sc_bigint.hh:118
sc_bigint(const sc_fxnum &v)
Definition sc_bigint.hh:117
sc_bigint(const sc_signed_subref &v)
Definition sc_bigint.hh:94
sc_bigint(const sc_bv_base &v)
Definition sc_bigint.hh:112
sc_bigint< W > & operator=(const sc_bigint< W > &v)
Definition sc_bigint.hh:127
sc_bigint(unsigned long v)
Definition sc_bigint.hh:108
sc_bigint(const sc_fxval_fast &v)
Definition sc_bigint.hh:116
sc_bigint(uint64 v)
Definition sc_bigint.hh:106
sc_bigint(double v)
Definition sc_bigint.hh:111
sc_bigint(const sc_lv_base &v)
Definition sc_bigint.hh:113
sc_bigint(const sc_fxval &v)
Definition sc_bigint.hh:115
sc_bigint(const sc_unsigned &v)
Definition sc_bigint.hh:102
sc_bigint(const sc_signed &v)
Definition sc_bigint.hh:93
sc_bigint(const sc_generic_base< T > &a)
Definition sc_bigint.hh:97
sc_bigint(unsigned int v)
Definition sc_bigint.hh:110
sc_bigint(const sc_bigint< W > &v)
Definition sc_bigint.hh:92
sc_bigint(int64 v)
Definition sc_bigint.hh:105
sc_bigint(const char *v)
Definition sc_bigint.hh:104
sc_bigint(const sc_unsigned_subref &v)
Definition sc_bigint.hh:103
const sc_signed & operator=(const sc_signed &v)
#define sc_fxval
Definition sc_fxnum.hh:485
SwitchingFiber a
uint64_t uint64
Definition sc_nbdefs.hh:172
int64_t int64
Definition sc_nbdefs.hh:171

Generated on Tue Jun 18 2024 16:24:06 for gem5 by doxygen 1.11.0