summaryrefslogtreecommitdiff
path: root/src/systemc/tests/systemc/misc/stars/star113320/test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/tests/systemc/misc/stars/star113320/test.cpp')
-rw-r--r--src/systemc/tests/systemc/misc/stars/star113320/test.cpp98
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
+*/
+