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 24 Original Author: Gene Bushuyev, Synopsys, Inc. 25 26 *****************************************************************************/ 27 28/***************************************************************************** 29 30 MODIFICATION LOG - modifiers, enter your name, affiliation, date and 31 changes you are making here. 32 33 Name, Affiliation, Date: 34 Description of Modification: 35 36 *****************************************************************************/ 37 38// $Log: sc_lv.h,v $ 39// Revision 1.1.1.1 2006/12/15 20:20:04 acg 40// SystemC 2.3 41// 42// Revision 1.3 2006/01/13 18:53:53 acg 43// Andy Goodrich: added $Log command so that CVS comments are reproduced in 44// the source. 45// 46 47#ifndef __SYSTEMC_EXT_DT_BIT_SC_LV_HH__ 48#define __SYSTEMC_EXT_DT_BIT_SC_LV_HH__ 49 50#include "sc_lv_base.hh" 51 52namespace sc_dt 53{ 54 55// classes defined in this module 56template <int W> 57class sc_lv; 58 59 60// ---------------------------------------------------------------------------- 61// CLASS TEMPLATE : sc_lv<W> 62// 63// Arbitrary size logic vector class. 64// ---------------------------------------------------------------------------- 65 66template <int W> 67class sc_lv : public sc_lv_base 68{ 69 public: 70 // constructors 71 sc_lv() : sc_lv_base(W) {} 72 explicit sc_lv(const sc_logic &init_value) : sc_lv_base(init_value, W) {} 73 explicit sc_lv(bool init_value) : sc_lv_base(sc_logic(init_value), W) {} 74 explicit sc_lv(char init_value) : sc_lv_base(sc_logic(init_value), W) {} 75 sc_lv(const char *a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 76 sc_lv(const bool *a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 77 sc_lv(const sc_logic *a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 78 sc_lv(const sc_unsigned &a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 79 sc_lv(const sc_signed &a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 80 sc_lv(const sc_uint_base &a) : sc_lv_base(W) 81 { 82 sc_lv_base::operator = (a); 83 } 84 sc_lv(const sc_int_base &a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 85 sc_lv(unsigned long a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 86 sc_lv(long a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 87 sc_lv(unsigned int a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 88 sc_lv(int a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 89 sc_lv(uint64 a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 90 sc_lv(int64 a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 91 template <class X> 92 sc_lv(const sc_proxy<X> &a) : sc_lv_base(W) { sc_lv_base::operator = (a); } 93 sc_lv(const sc_lv<W> &a) : sc_lv_base(a) {} 94 95 // assignment operators 96 template <class X> 97 sc_lv<W> & 98 operator = (const sc_proxy<X> &a) 99 { 100 sc_lv_base::operator = (a); 101 return *this; 102 } 103 104 sc_lv<W> & 105 operator = (const sc_lv<W> &a) 106 { 107 sc_lv_base::operator = (a); 108 return *this; 109 } 110 111 sc_lv<W> & 112 operator = (const char *a) 113 { 114 sc_lv_base::operator = (a); 115 return *this; 116 } 117 118 sc_lv<W> & 119 operator = (const bool *a) 120 { 121 sc_lv_base::operator = (a); 122 return *this; 123 } 124 125 sc_lv<W> & 126 operator = (const sc_logic *a) 127 { 128 sc_lv_base::operator = (a); 129 return *this; 130 } 131 132 sc_lv<W> & 133 operator = (const sc_unsigned &a) 134 { 135 sc_lv_base::operator = (a); 136 return *this; 137 } 138 139 sc_lv<W> & 140 operator = (const sc_signed &a) 141 { 142 sc_lv_base::operator = (a); 143 return *this; 144 } 145 146 sc_lv<W> & 147 operator = (const sc_uint_base &a) 148 { 149 sc_lv_base::operator = (a); 150 return *this; 151 } 152 153 sc_lv<W> & 154 operator = (const sc_int_base &a) 155 { 156 sc_lv_base::operator = (a); 157 return *this; 158 } 159 160 sc_lv<W> & 161 operator = (unsigned long a) 162 { 163 sc_lv_base::operator = (a); 164 return *this; 165 } 166 167 sc_lv<W> & 168 operator = (long a) 169 { 170 sc_lv_base::operator = (a); 171 return *this; 172 } 173 174 sc_lv<W> & 175 operator = (unsigned int a) 176 { 177 sc_lv_base::operator = (a); 178 return *this; 179 } 180 181 sc_lv<W> & 182 operator = (int a) 183 { 184 sc_lv_base::operator = (a); 185 return *this; 186 } 187 188 sc_lv<W> & 189 operator = (uint64 a) 190 { 191 sc_lv_base::operator = (a); 192 return *this; 193 } 194 195 sc_lv<W> & 196 operator = (int64 a) 197 { 198 sc_lv_base::operator = (a); 199 return *this; 200 } 201}; 202 203} // namespace sc_dt 204 205#endif // __SYSTEMC_EXT_DT_BIT_SC_LV_HH__ 206