SystemC  2.3.2
Accellera SystemC proof-of-concept library
sc_lv.h
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_lv.h -- Arbitrary size logic vector class.
23 */
32 /*****************************************************************************
33 
34  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
35  changes you are making here.
36 
37  Name, Affiliation, Date:
38  Description of Modification:
39 
40  *****************************************************************************/
41 
42 // $Log: sc_lv.h,v $
43 // Revision 1.1.1.1 2006/12/15 20:20:04 acg
44 // SystemC 2.3
45 //
46 // Revision 1.3 2006/01/13 18:53:53 acg
47 // Andy Goodrich: added $Log command so that CVS comments are reproduced in
48 // the source.
49 //
50 
51 #ifndef SC_LV_H
52 #define SC_LV_H
53 
54 
56 
57 
58 namespace sc_dt
59 {
60 
61 // classes defined in this module
62 template <int W> class sc_lv;
63 
64 
71 template <int W>
72 class sc_lv
73  : public sc_lv_base
74 {
75 public:
76 
77  // constructors
78 
80  : sc_lv_base( W )
81  {}
82 
83  explicit sc_lv( const sc_logic& init_value )
84  : sc_lv_base( init_value, W )
85  {}
86 
87  explicit sc_lv( bool init_value )
88  : sc_lv_base( sc_logic( init_value ), W )
89  {}
90 
91  explicit sc_lv( char init_value )
92  : sc_lv_base( sc_logic( init_value ), W )
93  {}
94 
95  sc_lv( const char* a )
96  : sc_lv_base( W )
97  { sc_lv_base::operator = ( a ); }
98 
99  sc_lv( const bool* a )
100  : sc_lv_base( W )
101  { sc_lv_base::operator = ( a ); }
102 
103  sc_lv( const sc_logic* a )
104  : sc_lv_base( W )
105  { sc_lv_base::operator = ( a ); }
106 
107  sc_lv( const sc_unsigned& a )
108  : sc_lv_base( W )
109  { sc_lv_base::operator = ( a ); }
110 
111  sc_lv( const sc_signed& a )
112  : sc_lv_base( W )
113  { sc_lv_base::operator = ( a ); }
114 
115  sc_lv( const sc_uint_base& a )
116  : sc_lv_base( W )
117  { sc_lv_base::operator = ( a ); }
118 
119  sc_lv( const sc_int_base& a )
120  : sc_lv_base( W )
121  { sc_lv_base::operator = ( a ); }
122 
123  sc_lv( unsigned long a )
124  : sc_lv_base( W )
125  { sc_lv_base::operator = ( a ); }
126 
127  sc_lv( long a )
128  : sc_lv_base( W )
129  { sc_lv_base::operator = ( a ); }
130 
131  sc_lv( unsigned int a )
132  : sc_lv_base( W )
133  { sc_lv_base::operator = ( a ); }
134 
135  sc_lv( int a )
136  : sc_lv_base( W )
137  { sc_lv_base::operator = ( a ); }
138 
140  : sc_lv_base( W )
141  { sc_lv_base::operator = ( a ); }
142 
144  : sc_lv_base( W )
145  { sc_lv_base::operator = ( a ); }
146 
147  template <class X>
148  sc_lv( const sc_proxy<X>& a )
149  : sc_lv_base( W )
150  { sc_lv_base::operator = ( a ); }
151 
152  sc_lv( const sc_lv<W>& a )
153  : sc_lv_base( a )
154  {}
155 
156 
157  // assignment operators
158 
159  template <class X>
161  { sc_lv_base::operator = ( a ); return *this; }
162 
164  { sc_lv_base::operator = ( a ); return *this; }
165 
166  sc_lv<W>& operator = ( const char* a )
167  { sc_lv_base::operator = ( a ); return *this; }
168 
169  sc_lv<W>& operator = ( const bool* a )
170  { sc_lv_base::operator = ( a ); return *this; }
171 
173  { sc_lv_base::operator = ( a ); return *this; }
174 
176  { sc_lv_base::operator = ( a ); return *this; }
177 
179  { sc_lv_base::operator = ( a ); return *this; }
180 
182  { sc_lv_base::operator = ( a ); return *this; }
183 
185  { sc_lv_base::operator = ( a ); return *this; }
186 
187  sc_lv<W>& operator = ( unsigned long a )
188  { sc_lv_base::operator = ( a ); return *this; }
189 
191  { sc_lv_base::operator = ( a ); return *this; }
192 
193  sc_lv<W>& operator = ( unsigned int a )
194  { sc_lv_base::operator = ( a ); return *this; }
195 
197  { sc_lv_base::operator = ( a ); return *this; }
198 
200  { sc_lv_base::operator = ( a ); return *this; }
201 
203  { sc_lv_base::operator = ( a ); return *this; }
204 };
205 
206 } // namespace sc_dt
207 
208 
209 #endif
sc_lv(const sc_int_base &a)
Definition: sc_lv.h:119
int64_t int64
Definition: sc_nbdefs.h:188
Base class for sc_uint.
Definition: sc_uint_base.h:534
sc_lv(const sc_logic &init_value)
Definition: sc_lv.h:83
Arbitrary size logic vector class.
Definition: sc_lv.h:62
Arbitrary precision signed number.
Definition: sc_signed.h:1099
sc_lv(const sc_logic *a)
Definition: sc_lv.h:103
Base class template for bit/logic vector classes.
Definition: sc_proxy.h:84
uint64_t uint64
Definition: sc_nbdefs.h:189
Arbitrary precision unsigned number.
Definition: sc_unsigned.h:1001
Four-valued logic type.
Definition: sc_logic.h:104
sc_lv< W > & operator=(const sc_proxy< X > &a)
Definition: sc_lv.h:160
Base class for sc_int.
Definition: sc_int_base.h:548
sc_lv_base & operator=(const sc_proxy< X > &a)
Definition: sc_lv_base.h:161
sc_lv(const sc_uint_base &a)
Definition: sc_lv.h:115
Arbitrary size logic vector base class.
Definition: sc_lv_base.h:91
sc_lv(char init_value)
Definition: sc_lv.h:91
sc_lv(const sc_signed &a)
Definition: sc_lv.h:111
sc_lv(unsigned long a)
Definition: sc_lv.h:123
sc_lv(const sc_lv< W > &a)
Definition: sc_lv.h:152
sc_lv(const sc_unsigned &a)
Definition: sc_lv.h:107
sc_lv(int64 a)
Definition: sc_lv.h:143
sc_lv(unsigned int a)
Definition: sc_lv.h:131
sc_lv(const bool *a)
Definition: sc_lv.h:99
sc_lv(uint64 a)
Definition: sc_lv.h:139
sc_lv(const sc_proxy< X > &a)
Definition: sc_lv.h:148
sc_lv(const char *a)
Definition: sc_lv.h:95
Arbitrary size logic vector class.
sc_lv(long a)
Definition: sc_lv.h:127
sc_lv(int a)
Definition: sc_lv.h:135
sc_lv(bool init_value)
Definition: sc_lv.h:87