diff options
Diffstat (limited to 'src/systemc/tests/systemc/misc/stars/star113320/test.cpp')
-rw-r--r-- | src/systemc/tests/systemc/misc/stars/star113320/test.cpp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/systemc/tests/systemc/misc/stars/star113320/test.cpp b/src/systemc/tests/systemc/misc/stars/star113320/test.cpp new file mode 100644 index 000000000..6688626bd --- /dev/null +++ b/src/systemc/tests/systemc/misc/stars/star113320/test.cpp @@ -0,0 +1,98 @@ +/***************************************************************************** + + Licensed to Accellera Systems Initiative Inc. (Accellera) under one or + more contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright ownership. + Accellera licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + *****************************************************************************/ + +/***************************************************************************** + + test.cpp -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* +Ulli Holtmann, Nov/10/00 + +I would like to convert between sc_int and sc_bv like in this example: +*/ + +#include "systemc.h" + +int sc_main(int argc, char* arg[]) +{ + sc_int<10> a; + sc_bv<10> b; + sc_int<7> c; + + a=10; cout << "a="<< a << "\n"; + b=a; cout << "b="<< b << "\n"; + c=b; cout << "c="<< c << "\n"; + + return 0; +} + +/* +This doesn't work on with either SC5.0 or g++ for different reasons. + +SC 5.0 +------------------------------------ +compile error at assignment "c=b" == sc_int<7> = sc_bv<10> : + +"/view/ccss_ulli/vobs/abc/src/scenic/scenery/include/sc_lv.h", line 165: Error: The function "convert" must have a prototype. +"str.cc", line 12: Where: While instantiating "sc_bv_ns::sc_lv<7>::sc_lv(const sc_bv_ns::sc_bv_base&)". +"str.cc", line 12: Where: Instantiated from non-template code. + +file sc_lv.h: +#if !defined(__SUNPRO_CC) + template<class Y> sc_lv(const sc_proxy<Y>& y) + {init(y.back_cast().length()); assign_(y);} + template<class T> sc_lv& operator=(const sc_proxy<T>& t) + { sc_bv_ns::assign_(*this,t); return *this;} +#else + // at least some constructors + sc_lv(const sc_bv<W>& t){convert(t);verify_length();} + sc_lv(const sc_lv_base& y):sc_lv_base(y){verify_length();} + sc_lv(const sc_bv_base& t){convert(t);verify_length();} +#endif + +Apparently, the "convert" function is undeclared. + + +With gcc +------------------------------------ +compiles fine, but then Abort at assignment "b=a" == sc_bv<10> = sc_int<10> : + +a=10 +Abort (core dumped) + + + +I am using SystemC 1.0.1 (stellar does not yet have a 1.0.1 release entry). on +a Solaris 5.5.1 host with SC5.0 or g++ 2.95.2 +*/ + |