112027Sjungma@eit.uni-kl.de/***************************************************************************** 212027Sjungma@eit.uni-kl.de 312027Sjungma@eit.uni-kl.de Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 412027Sjungma@eit.uni-kl.de more contributor license agreements. See the NOTICE file distributed 512027Sjungma@eit.uni-kl.de with this work for additional information regarding copyright ownership. 612027Sjungma@eit.uni-kl.de Accellera licenses this file to you under the Apache License, Version 2.0 712027Sjungma@eit.uni-kl.de (the "License"); you may not use this file except in compliance with the 812027Sjungma@eit.uni-kl.de License. You may obtain a copy of the License at 912027Sjungma@eit.uni-kl.de 1012027Sjungma@eit.uni-kl.de http://www.apache.org/licenses/LICENSE-2.0 1112027Sjungma@eit.uni-kl.de 1212027Sjungma@eit.uni-kl.de Unless required by applicable law or agreed to in writing, software 1312027Sjungma@eit.uni-kl.de distributed under the License is distributed on an "AS IS" BASIS, 1412027Sjungma@eit.uni-kl.de WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1512027Sjungma@eit.uni-kl.de implied. See the License for the specific language governing 1612027Sjungma@eit.uni-kl.de permissions and limitations under the License. 1712027Sjungma@eit.uni-kl.de 1812027Sjungma@eit.uni-kl.de *****************************************************************************/ 1912027Sjungma@eit.uni-kl.de 2012027Sjungma@eit.uni-kl.de/***************************************************************************** 2112027Sjungma@eit.uni-kl.de 2212027Sjungma@eit.uni-kl.de sc_bit_proxies.h -- Proxy classes for vector data types. 2312027Sjungma@eit.uni-kl.de 2412027Sjungma@eit.uni-kl.de Original Author: Gene Bushuyev, Synopsys, Inc. 2512027Sjungma@eit.uni-kl.de 2612027Sjungma@eit.uni-kl.de CHANGE LOG AT THE END OF THE FILE 2712027Sjungma@eit.uni-kl.de *****************************************************************************/ 2812027Sjungma@eit.uni-kl.de 2912027Sjungma@eit.uni-kl.de#ifndef SC_BIT_PROXIES_H 3012027Sjungma@eit.uni-kl.de#define SC_BIT_PROXIES_H 3112027Sjungma@eit.uni-kl.de 3212027Sjungma@eit.uni-kl.de 3312027Sjungma@eit.uni-kl.de#include "sysc/datatypes/bit/sc_bit_ids.h" 3412027Sjungma@eit.uni-kl.de#include "sysc/datatypes/bit/sc_proxy.h" 3512027Sjungma@eit.uni-kl.de 3612027Sjungma@eit.uni-kl.de 3712027Sjungma@eit.uni-kl.denamespace sc_dt 3812027Sjungma@eit.uni-kl.de{ 3912027Sjungma@eit.uni-kl.de 4012027Sjungma@eit.uni-kl.de// classes defined in this module 4112027Sjungma@eit.uni-kl.detemplate <class X> class sc_bitref_r; 4212027Sjungma@eit.uni-kl.detemplate <class X> class sc_bitref; 4312027Sjungma@eit.uni-kl.detemplate <class X> class sc_subref_r; 4412027Sjungma@eit.uni-kl.detemplate <class X> class sc_subref; 4512027Sjungma@eit.uni-kl.detemplate <class X, class Y> class sc_concref_r; 4612027Sjungma@eit.uni-kl.detemplate <class X, class Y> class sc_concref; 4712027Sjungma@eit.uni-kl.de 4812027Sjungma@eit.uni-kl.de 4912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 5012027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_bitref_r<T> 5112027Sjungma@eit.uni-kl.de// 5212027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy bit selection (r-value only). 5312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 5412027Sjungma@eit.uni-kl.de 5512027Sjungma@eit.uni-kl.detemplate <class T> 5612027Sjungma@eit.uni-kl.declass sc_bitref_r 5712027Sjungma@eit.uni-kl.de{ 5812027Sjungma@eit.uni-kl.de friend class sc_bv_base; 5912027Sjungma@eit.uni-kl.de friend class sc_lv_base; 6012027Sjungma@eit.uni-kl.de 6112027Sjungma@eit.uni-kl.depublic: 6212027Sjungma@eit.uni-kl.de 6312027Sjungma@eit.uni-kl.de // typedefs 6412027Sjungma@eit.uni-kl.de 6512027Sjungma@eit.uni-kl.de typedef typename T::traits_type traits_type; 6612027Sjungma@eit.uni-kl.de typedef typename traits_type::bit_type bit_type; 6712027Sjungma@eit.uni-kl.de 6812027Sjungma@eit.uni-kl.de // constructor 6912027Sjungma@eit.uni-kl.de 7012027Sjungma@eit.uni-kl.de sc_bitref_r( const T& obj_, int index_ ) 7112027Sjungma@eit.uni-kl.de : m_obj( CCAST<T&>( obj_ ) ), m_index( index_ ) 7212027Sjungma@eit.uni-kl.de {} 7312027Sjungma@eit.uni-kl.de 7412027Sjungma@eit.uni-kl.de 7512027Sjungma@eit.uni-kl.de // copy constructor 7612027Sjungma@eit.uni-kl.de 7712027Sjungma@eit.uni-kl.de sc_bitref_r( const sc_bitref_r<T>& a ) 7812027Sjungma@eit.uni-kl.de : m_obj( a.m_obj ), m_index( a.m_index ) 7912027Sjungma@eit.uni-kl.de {} 8012027Sjungma@eit.uni-kl.de 8112027Sjungma@eit.uni-kl.de // cloning 8212027Sjungma@eit.uni-kl.de 8312027Sjungma@eit.uni-kl.de sc_bitref_r<T>* clone() const 8412027Sjungma@eit.uni-kl.de { return new sc_bitref_r<T>( *this ); } 8512027Sjungma@eit.uni-kl.de 8612027Sjungma@eit.uni-kl.de 8712027Sjungma@eit.uni-kl.de // bitwise operators and functions 8812027Sjungma@eit.uni-kl.de 8912027Sjungma@eit.uni-kl.de // bitwise complement 9012027Sjungma@eit.uni-kl.de 9112027Sjungma@eit.uni-kl.de const bit_type operator ~ () const 9212027Sjungma@eit.uni-kl.de { return bit_type( sc_logic::not_table[value()] ); } 9312027Sjungma@eit.uni-kl.de 9412027Sjungma@eit.uni-kl.de 9512027Sjungma@eit.uni-kl.de // implicit conversion to bit_type 9612027Sjungma@eit.uni-kl.de 9712027Sjungma@eit.uni-kl.de operator const bit_type() const 9812027Sjungma@eit.uni-kl.de { return bit_type( m_obj.get_bit( m_index ) ); } 9912027Sjungma@eit.uni-kl.de 10012027Sjungma@eit.uni-kl.de 10112027Sjungma@eit.uni-kl.de // explicit conversions 10212027Sjungma@eit.uni-kl.de 10312027Sjungma@eit.uni-kl.de sc_logic_value_t value() const 10412027Sjungma@eit.uni-kl.de { return m_obj.get_bit( m_index ); } 10512027Sjungma@eit.uni-kl.de 10612027Sjungma@eit.uni-kl.de 10712027Sjungma@eit.uni-kl.de bool is_01() const 10812027Sjungma@eit.uni-kl.de { return sc_logic( value() ).is_01(); } 10912027Sjungma@eit.uni-kl.de 11012027Sjungma@eit.uni-kl.de bool to_bool() const 11112027Sjungma@eit.uni-kl.de { return sc_logic( value() ).to_bool(); } 11212027Sjungma@eit.uni-kl.de 11312027Sjungma@eit.uni-kl.de char to_char() const 11412027Sjungma@eit.uni-kl.de { return sc_logic( value() ).to_char(); } 11512027Sjungma@eit.uni-kl.de 11612027Sjungma@eit.uni-kl.de 11712027Sjungma@eit.uni-kl.de // common methods 11812027Sjungma@eit.uni-kl.de 11912027Sjungma@eit.uni-kl.de int length() const 12012027Sjungma@eit.uni-kl.de { return 1; } 12112027Sjungma@eit.uni-kl.de 12212027Sjungma@eit.uni-kl.de int size() const 12312027Sjungma@eit.uni-kl.de { return ( (length() - 1) / SC_DIGIT_SIZE + 1 ); } 12412027Sjungma@eit.uni-kl.de 12512027Sjungma@eit.uni-kl.de sc_logic_value_t get_bit( int n ) const; 12612027Sjungma@eit.uni-kl.de 12712027Sjungma@eit.uni-kl.de sc_digit get_word( int i ) const; 12812027Sjungma@eit.uni-kl.de sc_digit get_cword( int i ) const; 12912027Sjungma@eit.uni-kl.de 13012027Sjungma@eit.uni-kl.de 13112027Sjungma@eit.uni-kl.de // other methods 13212027Sjungma@eit.uni-kl.de 13312027Sjungma@eit.uni-kl.de void print( ::std::ostream& os = ::std::cout ) const 13412027Sjungma@eit.uni-kl.de { os << to_char(); } 13512027Sjungma@eit.uni-kl.de 13612027Sjungma@eit.uni-kl.deprotected: 13712027Sjungma@eit.uni-kl.de 13812027Sjungma@eit.uni-kl.de T& m_obj; 13912027Sjungma@eit.uni-kl.de int m_index; 14012027Sjungma@eit.uni-kl.de 14112027Sjungma@eit.uni-kl.deprivate: 14212027Sjungma@eit.uni-kl.de 14312027Sjungma@eit.uni-kl.de // disabled 14412027Sjungma@eit.uni-kl.de sc_bitref_r(); 14512027Sjungma@eit.uni-kl.de sc_bitref_r<T>& operator = ( const sc_bitref_r<T>& ); 14612027Sjungma@eit.uni-kl.de}; 14712027Sjungma@eit.uni-kl.de 14812027Sjungma@eit.uni-kl.de 14912027Sjungma@eit.uni-kl.de// bitwise operators and functions 15012027Sjungma@eit.uni-kl.de 15112027Sjungma@eit.uni-kl.de// bitwise and 15212027Sjungma@eit.uni-kl.de 15312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 15412027Sjungma@eit.uni-kl.deinline 15512027Sjungma@eit.uni-kl.deconst sc_logic 15612027Sjungma@eit.uni-kl.deoperator & ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ); 15712027Sjungma@eit.uni-kl.de 15812027Sjungma@eit.uni-kl.de 15912027Sjungma@eit.uni-kl.de// bitwise or 16012027Sjungma@eit.uni-kl.de 16112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 16212027Sjungma@eit.uni-kl.deinline 16312027Sjungma@eit.uni-kl.deconst sc_logic 16412027Sjungma@eit.uni-kl.deoperator | ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ); 16512027Sjungma@eit.uni-kl.de 16612027Sjungma@eit.uni-kl.de 16712027Sjungma@eit.uni-kl.de// bitwise xor 16812027Sjungma@eit.uni-kl.de 16912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 17012027Sjungma@eit.uni-kl.deinline 17112027Sjungma@eit.uni-kl.deconst sc_logic 17212027Sjungma@eit.uni-kl.deoperator ^ ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ); 17312027Sjungma@eit.uni-kl.de 17412027Sjungma@eit.uni-kl.de 17512027Sjungma@eit.uni-kl.de// relational operators and functions 17612027Sjungma@eit.uni-kl.de 17712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 17812027Sjungma@eit.uni-kl.deinline 17912027Sjungma@eit.uni-kl.debool 18012027Sjungma@eit.uni-kl.deoperator == ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ); 18112027Sjungma@eit.uni-kl.de 18212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 18312027Sjungma@eit.uni-kl.deinline 18412027Sjungma@eit.uni-kl.debool 18512027Sjungma@eit.uni-kl.deoperator != ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ); 18612027Sjungma@eit.uni-kl.de 18712027Sjungma@eit.uni-kl.de 18812027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 18912027Sjungma@eit.uni-kl.de 19012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 19112027Sjungma@eit.uni-kl.deinline 19212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 19312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_bitref_r<T2> ); 19412027Sjungma@eit.uni-kl.de 19512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 19612027Sjungma@eit.uni-kl.deinline 19712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 19812027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_subref_r<T2> ); 19912027Sjungma@eit.uni-kl.de 20012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 20112027Sjungma@eit.uni-kl.deinline 20212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 20312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_concref_r<T2,T3> ); 20412027Sjungma@eit.uni-kl.de 20512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 20612027Sjungma@eit.uni-kl.deinline 20712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 20812027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, const sc_proxy<T2>& ); 20912027Sjungma@eit.uni-kl.de 21012027Sjungma@eit.uni-kl.detemplate <class T> 21112027Sjungma@eit.uni-kl.deinline 21212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 21312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T>, const char* ); 21412027Sjungma@eit.uni-kl.de 21512027Sjungma@eit.uni-kl.detemplate <class T> 21612027Sjungma@eit.uni-kl.deinline 21712027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 21812027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_bitref_r<T> ); 21912027Sjungma@eit.uni-kl.de 22012027Sjungma@eit.uni-kl.detemplate <class T> 22112027Sjungma@eit.uni-kl.deinline 22212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 22312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T>, const sc_logic& ); 22412027Sjungma@eit.uni-kl.de 22512027Sjungma@eit.uni-kl.detemplate <class T> 22612027Sjungma@eit.uni-kl.deinline 22712027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 22812027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_bitref_r<T> ); 22912027Sjungma@eit.uni-kl.de 23012027Sjungma@eit.uni-kl.detemplate <class T> 23112027Sjungma@eit.uni-kl.deinline 23212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 23312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T>, bool ); 23412027Sjungma@eit.uni-kl.de 23512027Sjungma@eit.uni-kl.detemplate <class T> 23612027Sjungma@eit.uni-kl.deinline 23712027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 23812027Sjungma@eit.uni-kl.deoperator , ( bool, sc_bitref_r<T> ); 23912027Sjungma@eit.uni-kl.de 24012027Sjungma@eit.uni-kl.de 24112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 24212027Sjungma@eit.uni-kl.deinline 24312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 24412027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_bitref_r<T2> ); 24512027Sjungma@eit.uni-kl.de 24612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 24712027Sjungma@eit.uni-kl.deinline 24812027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 24912027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_subref_r<T2> ); 25012027Sjungma@eit.uni-kl.de 25112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 25212027Sjungma@eit.uni-kl.deinline 25312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 25412027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_concref_r<T2,T3> ); 25512027Sjungma@eit.uni-kl.de 25612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 25712027Sjungma@eit.uni-kl.deinline 25812027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 25912027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, const sc_proxy<T2>& ); 26012027Sjungma@eit.uni-kl.de 26112027Sjungma@eit.uni-kl.detemplate <class T> 26212027Sjungma@eit.uni-kl.deinline 26312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 26412027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T>, const char* ); 26512027Sjungma@eit.uni-kl.de 26612027Sjungma@eit.uni-kl.detemplate <class T> 26712027Sjungma@eit.uni-kl.deinline 26812027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 26912027Sjungma@eit.uni-kl.deconcat( const char*, sc_bitref_r<T> ); 27012027Sjungma@eit.uni-kl.de 27112027Sjungma@eit.uni-kl.detemplate <class T> 27212027Sjungma@eit.uni-kl.deinline 27312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 27412027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T>, const sc_logic& ); 27512027Sjungma@eit.uni-kl.de 27612027Sjungma@eit.uni-kl.detemplate <class T> 27712027Sjungma@eit.uni-kl.deinline 27812027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 27912027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_bitref_r<T> ); 28012027Sjungma@eit.uni-kl.de 28112027Sjungma@eit.uni-kl.detemplate <class T> 28212027Sjungma@eit.uni-kl.deinline 28312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 28412027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T>, bool ); 28512027Sjungma@eit.uni-kl.de 28612027Sjungma@eit.uni-kl.detemplate <class T> 28712027Sjungma@eit.uni-kl.deinline 28812027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 28912027Sjungma@eit.uni-kl.deconcat( bool, sc_bitref_r<T> ); 29012027Sjungma@eit.uni-kl.de 29112027Sjungma@eit.uni-kl.de 29212027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 29312027Sjungma@eit.uni-kl.de 29412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 29512027Sjungma@eit.uni-kl.deinline 29612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 29712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_bitref<T2> ); 29812027Sjungma@eit.uni-kl.de 29912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 30012027Sjungma@eit.uni-kl.deinline 30112027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 30212027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_bitref_r<T2> ); 30312027Sjungma@eit.uni-kl.de 30412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 30512027Sjungma@eit.uni-kl.deinline 30612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 30712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_subref<T2> ); 30812027Sjungma@eit.uni-kl.de 30912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 31012027Sjungma@eit.uni-kl.deinline 31112027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 31212027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_subref_r<T2> ); 31312027Sjungma@eit.uni-kl.de 31412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 31512027Sjungma@eit.uni-kl.deinline 31612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 31712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_concref<T2,T3> ); 31812027Sjungma@eit.uni-kl.de 31912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 32012027Sjungma@eit.uni-kl.deinline 32112027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 32212027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_concref_r<T2,T3> ); 32312027Sjungma@eit.uni-kl.de 32412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 32512027Sjungma@eit.uni-kl.deinline 32612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 32712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, const sc_proxy<T2>& ); 32812027Sjungma@eit.uni-kl.de 32912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 33012027Sjungma@eit.uni-kl.deinline 33112027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 33212027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1>, sc_proxy<T2>& ); 33312027Sjungma@eit.uni-kl.de 33412027Sjungma@eit.uni-kl.detemplate <class T> 33512027Sjungma@eit.uni-kl.deinline 33612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 33712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T>, const char* ); 33812027Sjungma@eit.uni-kl.de 33912027Sjungma@eit.uni-kl.detemplate <class T> 34012027Sjungma@eit.uni-kl.deinline 34112027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 34212027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_bitref<T> ); 34312027Sjungma@eit.uni-kl.de 34412027Sjungma@eit.uni-kl.detemplate <class T> 34512027Sjungma@eit.uni-kl.deinline 34612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 34712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T>, const sc_logic& ); 34812027Sjungma@eit.uni-kl.de 34912027Sjungma@eit.uni-kl.detemplate <class T> 35012027Sjungma@eit.uni-kl.deinline 35112027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 35212027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_bitref<T> ); 35312027Sjungma@eit.uni-kl.de 35412027Sjungma@eit.uni-kl.detemplate <class T> 35512027Sjungma@eit.uni-kl.deinline 35612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 35712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T>, bool ); 35812027Sjungma@eit.uni-kl.de 35912027Sjungma@eit.uni-kl.detemplate <class T> 36012027Sjungma@eit.uni-kl.deinline 36112027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 36212027Sjungma@eit.uni-kl.deoperator , ( bool, sc_bitref<T> ); 36312027Sjungma@eit.uni-kl.de 36412027Sjungma@eit.uni-kl.de 36512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 36612027Sjungma@eit.uni-kl.deinline 36712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 36812027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_bitref<T2> ); 36912027Sjungma@eit.uni-kl.de 37012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 37112027Sjungma@eit.uni-kl.deinline 37212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 37312027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_bitref_r<T2> ); 37412027Sjungma@eit.uni-kl.de 37512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 37612027Sjungma@eit.uni-kl.deinline 37712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 37812027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_subref<T2> ); 37912027Sjungma@eit.uni-kl.de 38012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 38112027Sjungma@eit.uni-kl.deinline 38212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 38312027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_subref_r<T2> ); 38412027Sjungma@eit.uni-kl.de 38512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 38612027Sjungma@eit.uni-kl.deinline 38712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 38812027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_concref<T2,T3> ); 38912027Sjungma@eit.uni-kl.de 39012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 39112027Sjungma@eit.uni-kl.deinline 39212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 39312027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_concref_r<T2,T3> ); 39412027Sjungma@eit.uni-kl.de 39512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 39612027Sjungma@eit.uni-kl.deinline 39712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 39812027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, const sc_proxy<T2>& ); 39912027Sjungma@eit.uni-kl.de 40012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 40112027Sjungma@eit.uni-kl.deinline 40212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 40312027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1>, sc_proxy<T2>& ); 40412027Sjungma@eit.uni-kl.de 40512027Sjungma@eit.uni-kl.detemplate <class T> 40612027Sjungma@eit.uni-kl.deinline 40712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 40812027Sjungma@eit.uni-kl.deconcat( sc_bitref<T>, const char* ); 40912027Sjungma@eit.uni-kl.de 41012027Sjungma@eit.uni-kl.detemplate <class T> 41112027Sjungma@eit.uni-kl.deinline 41212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 41312027Sjungma@eit.uni-kl.deconcat( const char*, sc_bitref<T> ); 41412027Sjungma@eit.uni-kl.de 41512027Sjungma@eit.uni-kl.detemplate <class T> 41612027Sjungma@eit.uni-kl.deinline 41712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 41812027Sjungma@eit.uni-kl.deconcat( sc_bitref<T>, const sc_logic& ); 41912027Sjungma@eit.uni-kl.de 42012027Sjungma@eit.uni-kl.detemplate <class T> 42112027Sjungma@eit.uni-kl.deinline 42212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 42312027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_bitref<T> ); 42412027Sjungma@eit.uni-kl.de 42512027Sjungma@eit.uni-kl.detemplate <class T> 42612027Sjungma@eit.uni-kl.deinline 42712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T>,sc_lv_base> 42812027Sjungma@eit.uni-kl.deconcat( sc_bitref<T>, bool ); 42912027Sjungma@eit.uni-kl.de 43012027Sjungma@eit.uni-kl.detemplate <class T> 43112027Sjungma@eit.uni-kl.deinline 43212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_bitref_r<T> > 43312027Sjungma@eit.uni-kl.deconcat( bool, sc_bitref<T> ); 43412027Sjungma@eit.uni-kl.de 43512027Sjungma@eit.uni-kl.de#endif 43612027Sjungma@eit.uni-kl.de 43712027Sjungma@eit.uni-kl.de 43812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 43912027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_bitref<X> 44012027Sjungma@eit.uni-kl.de// 44112027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy bit selection (r-value and l-value). 44212027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 44312027Sjungma@eit.uni-kl.de 44412027Sjungma@eit.uni-kl.detemplate <class X> 44512027Sjungma@eit.uni-kl.declass sc_bitref 44612027Sjungma@eit.uni-kl.de : public sc_bitref_r<X> 44712027Sjungma@eit.uni-kl.de{ 44812027Sjungma@eit.uni-kl.de friend class sc_bv_base; 44912027Sjungma@eit.uni-kl.de friend class sc_lv_base; 45012027Sjungma@eit.uni-kl.de 45112027Sjungma@eit.uni-kl.depublic: 45212027Sjungma@eit.uni-kl.de 45312027Sjungma@eit.uni-kl.de // constructor 45412027Sjungma@eit.uni-kl.de 45512027Sjungma@eit.uni-kl.de sc_bitref( X& obj_, int index_ ) 45612027Sjungma@eit.uni-kl.de : sc_bitref_r<X>( obj_, index_ ) 45712027Sjungma@eit.uni-kl.de {} 45812027Sjungma@eit.uni-kl.de 45912027Sjungma@eit.uni-kl.de 46012027Sjungma@eit.uni-kl.de // copy constructor 46112027Sjungma@eit.uni-kl.de 46212027Sjungma@eit.uni-kl.de sc_bitref( const sc_bitref<X>& a ) 46312027Sjungma@eit.uni-kl.de : sc_bitref_r<X>( a ) 46412027Sjungma@eit.uni-kl.de {} 46512027Sjungma@eit.uni-kl.de 46612027Sjungma@eit.uni-kl.de 46712027Sjungma@eit.uni-kl.de // cloning 46812027Sjungma@eit.uni-kl.de 46912027Sjungma@eit.uni-kl.de sc_bitref<X>* clone() const 47012027Sjungma@eit.uni-kl.de { return new sc_bitref<X>( *this ); } 47112027Sjungma@eit.uni-kl.de 47212027Sjungma@eit.uni-kl.de 47312027Sjungma@eit.uni-kl.de // assignment operators 47412027Sjungma@eit.uni-kl.de 47512027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( const sc_bitref_r<X>& a ); 47612027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( const sc_bitref<X>& a ); 47712027Sjungma@eit.uni-kl.de 47812027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( const sc_logic& a ) 47912027Sjungma@eit.uni-kl.de { this->m_obj.set_bit( this->m_index, a.value() ); return *this; } 48012027Sjungma@eit.uni-kl.de 48112027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( sc_logic_value_t v ) 48212027Sjungma@eit.uni-kl.de { *this = sc_logic( v ); return *this; } 48312027Sjungma@eit.uni-kl.de 48412027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( bool a ) 48512027Sjungma@eit.uni-kl.de { *this = sc_logic( a ); return *this; } 48612027Sjungma@eit.uni-kl.de 48712027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( char a ) 48812027Sjungma@eit.uni-kl.de { *this = sc_logic( a ); return *this; } 48912027Sjungma@eit.uni-kl.de 49012027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( int a ) 49112027Sjungma@eit.uni-kl.de { *this = sc_logic( a ); return *this; } 49212027Sjungma@eit.uni-kl.de 49312027Sjungma@eit.uni-kl.de sc_bitref<X>& operator = ( const sc_bit& a ) 49412027Sjungma@eit.uni-kl.de { *this = sc_logic( a ); return *this; } 49512027Sjungma@eit.uni-kl.de 49612027Sjungma@eit.uni-kl.de 49712027Sjungma@eit.uni-kl.de // bitwise assignment operators 49812027Sjungma@eit.uni-kl.de 49912027Sjungma@eit.uni-kl.de sc_bitref<X>& operator &= ( const sc_bitref_r<X>& a ); 50012027Sjungma@eit.uni-kl.de sc_bitref<X>& operator &= ( const sc_logic& a ); 50112027Sjungma@eit.uni-kl.de 50212027Sjungma@eit.uni-kl.de sc_bitref<X>& operator &= ( sc_logic_value_t v ) 50312027Sjungma@eit.uni-kl.de { *this &= sc_logic( v ); return *this; } 50412027Sjungma@eit.uni-kl.de 50512027Sjungma@eit.uni-kl.de sc_bitref<X>& operator &= ( bool a ) 50612027Sjungma@eit.uni-kl.de { *this &= sc_logic( a ); return *this; } 50712027Sjungma@eit.uni-kl.de 50812027Sjungma@eit.uni-kl.de sc_bitref<X>& operator &= ( char a ) 50912027Sjungma@eit.uni-kl.de { *this &= sc_logic( a ); return *this; } 51012027Sjungma@eit.uni-kl.de 51112027Sjungma@eit.uni-kl.de sc_bitref<X>& operator &= ( int a ) 51212027Sjungma@eit.uni-kl.de { *this &= sc_logic( a ); return *this; } 51312027Sjungma@eit.uni-kl.de 51412027Sjungma@eit.uni-kl.de 51512027Sjungma@eit.uni-kl.de sc_bitref<X>& operator |= ( const sc_bitref_r<X>& a ); 51612027Sjungma@eit.uni-kl.de sc_bitref<X>& operator |= ( const sc_logic& a ); 51712027Sjungma@eit.uni-kl.de 51812027Sjungma@eit.uni-kl.de sc_bitref<X>& operator |= ( sc_logic_value_t v ) 51912027Sjungma@eit.uni-kl.de { *this |= sc_logic( v ); return *this; } 52012027Sjungma@eit.uni-kl.de 52112027Sjungma@eit.uni-kl.de sc_bitref<X>& operator |= ( bool a ) 52212027Sjungma@eit.uni-kl.de { *this |= sc_logic( a ); return *this; } 52312027Sjungma@eit.uni-kl.de 52412027Sjungma@eit.uni-kl.de sc_bitref<X>& operator |= ( char a ) 52512027Sjungma@eit.uni-kl.de { *this |= sc_logic( a ); return *this; } 52612027Sjungma@eit.uni-kl.de 52712027Sjungma@eit.uni-kl.de sc_bitref<X>& operator |= ( int a ) 52812027Sjungma@eit.uni-kl.de { *this |= sc_logic( a ); return *this; } 52912027Sjungma@eit.uni-kl.de 53012027Sjungma@eit.uni-kl.de 53112027Sjungma@eit.uni-kl.de sc_bitref<X>& operator ^= ( const sc_bitref_r<X>& a ); 53212027Sjungma@eit.uni-kl.de sc_bitref<X>& operator ^= ( const sc_logic& a ); 53312027Sjungma@eit.uni-kl.de 53412027Sjungma@eit.uni-kl.de sc_bitref<X>& operator ^= ( sc_logic_value_t v ) 53512027Sjungma@eit.uni-kl.de { *this ^= sc_logic( v ); return *this; } 53612027Sjungma@eit.uni-kl.de 53712027Sjungma@eit.uni-kl.de sc_bitref<X>& operator ^= ( bool a ) 53812027Sjungma@eit.uni-kl.de { *this ^= sc_logic( a ); return *this; } 53912027Sjungma@eit.uni-kl.de 54012027Sjungma@eit.uni-kl.de sc_bitref<X>& operator ^= ( char a ) 54112027Sjungma@eit.uni-kl.de { *this ^= sc_logic( a ); return *this; } 54212027Sjungma@eit.uni-kl.de 54312027Sjungma@eit.uni-kl.de sc_bitref<X>& operator ^= ( int a ) 54412027Sjungma@eit.uni-kl.de { *this ^= sc_logic( a ); return *this; } 54512027Sjungma@eit.uni-kl.de 54612027Sjungma@eit.uni-kl.de 54712027Sjungma@eit.uni-kl.de // bitwise operators and functions 54812027Sjungma@eit.uni-kl.de 54912027Sjungma@eit.uni-kl.de // bitwise complement 55012027Sjungma@eit.uni-kl.de 55112027Sjungma@eit.uni-kl.de sc_bitref<X>& b_not(); 55212027Sjungma@eit.uni-kl.de 55312027Sjungma@eit.uni-kl.de 55412027Sjungma@eit.uni-kl.de // common methods 55512027Sjungma@eit.uni-kl.de 55612027Sjungma@eit.uni-kl.de void set_bit( int n, sc_logic_value_t value ); 55712027Sjungma@eit.uni-kl.de 55812027Sjungma@eit.uni-kl.de void set_word( int i, sc_digit w ); 55912027Sjungma@eit.uni-kl.de void set_cword( int i, sc_digit w ); 56012027Sjungma@eit.uni-kl.de 56112027Sjungma@eit.uni-kl.de void clean_tail() 56212027Sjungma@eit.uni-kl.de { this->m_obj.clean_tail(); } 56312027Sjungma@eit.uni-kl.de 56412027Sjungma@eit.uni-kl.de 56512027Sjungma@eit.uni-kl.de // other methods 56612027Sjungma@eit.uni-kl.de 56712027Sjungma@eit.uni-kl.de void scan( ::std::istream& is = ::std::cin ); 56812027Sjungma@eit.uni-kl.de 56912027Sjungma@eit.uni-kl.deprivate: 57012027Sjungma@eit.uni-kl.de 57112027Sjungma@eit.uni-kl.de // disabled 57212027Sjungma@eit.uni-kl.de sc_bitref(); 57312027Sjungma@eit.uni-kl.de}; 57412027Sjungma@eit.uni-kl.de 57512027Sjungma@eit.uni-kl.de 57612027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 57712027Sjungma@eit.uni-kl.de 57812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 57912027Sjungma@eit.uni-kl.deinline 58012027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_bitref<T2> > 58112027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_bitref<T2> ); 58212027Sjungma@eit.uni-kl.de 58312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 58412027Sjungma@eit.uni-kl.deinline 58512027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_subref<T2> > 58612027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_subref<T2> ); 58712027Sjungma@eit.uni-kl.de 58812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 58912027Sjungma@eit.uni-kl.deinline 59012027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_concref<T2,T3> > 59112027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_concref<T2,T3> ); 59212027Sjungma@eit.uni-kl.de 59312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 59412027Sjungma@eit.uni-kl.deinline 59512027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,T2> 59612027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1>, sc_proxy<T2>& ); 59712027Sjungma@eit.uni-kl.de 59812027Sjungma@eit.uni-kl.de 59912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 60012027Sjungma@eit.uni-kl.deinline 60112027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_bitref<T2> > 60212027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_bitref<T2> ); 60312027Sjungma@eit.uni-kl.de 60412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 60512027Sjungma@eit.uni-kl.deinline 60612027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_subref<T2> > 60712027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_subref<T2> ); 60812027Sjungma@eit.uni-kl.de 60912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 61012027Sjungma@eit.uni-kl.deinline 61112027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_concref<T2,T3> > 61212027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_concref<T2,T3> ); 61312027Sjungma@eit.uni-kl.de 61412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 61512027Sjungma@eit.uni-kl.deinline 61612027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,T2> 61712027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1>, sc_proxy<T2>& ); 61812027Sjungma@eit.uni-kl.de 61912027Sjungma@eit.uni-kl.de 62012027Sjungma@eit.uni-kl.detemplate <class T> 62112027Sjungma@eit.uni-kl.de::std::istream& 62212027Sjungma@eit.uni-kl.deoperator >> ( ::std::istream&, sc_bitref<T> ); 62312027Sjungma@eit.uni-kl.de 62412027Sjungma@eit.uni-kl.de 62512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 62612027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_subref_r<X> 62712027Sjungma@eit.uni-kl.de// 62812027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy part selection (r-value only). 62912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 63012027Sjungma@eit.uni-kl.de 63112027Sjungma@eit.uni-kl.detemplate <class X> 63212027Sjungma@eit.uni-kl.declass sc_subref_r 63312027Sjungma@eit.uni-kl.de : public sc_proxy<sc_subref_r<X> > 63412027Sjungma@eit.uni-kl.de{ 63512027Sjungma@eit.uni-kl.de void check_bounds(); 63612027Sjungma@eit.uni-kl.de 63712027Sjungma@eit.uni-kl.depublic: 63812027Sjungma@eit.uni-kl.de 63912027Sjungma@eit.uni-kl.de // constructor 64012027Sjungma@eit.uni-kl.de 64112027Sjungma@eit.uni-kl.de sc_subref_r( const X& obj_, int hi_, int lo_ ) 64212027Sjungma@eit.uni-kl.de : m_obj( CCAST<X&>( obj_ ) ), m_hi( hi_ ), m_lo( lo_ ), m_len( 0 ) 64312027Sjungma@eit.uni-kl.de { check_bounds(); } 64412027Sjungma@eit.uni-kl.de 64512027Sjungma@eit.uni-kl.de 64612027Sjungma@eit.uni-kl.de // copy constructor 64712027Sjungma@eit.uni-kl.de 64812027Sjungma@eit.uni-kl.de sc_subref_r( const sc_subref_r<X>& a ) 64912027Sjungma@eit.uni-kl.de : m_obj( a.m_obj ), m_hi( a.m_hi ), m_lo( a.m_lo ), m_len( a.m_len ) 65012027Sjungma@eit.uni-kl.de {} 65112027Sjungma@eit.uni-kl.de 65212027Sjungma@eit.uni-kl.de 65312027Sjungma@eit.uni-kl.de // cloning 65412027Sjungma@eit.uni-kl.de 65512027Sjungma@eit.uni-kl.de sc_subref_r<X>* clone() const 65612027Sjungma@eit.uni-kl.de { return new sc_subref_r<X>( *this ); } 65712027Sjungma@eit.uni-kl.de 65812027Sjungma@eit.uni-kl.de 65912027Sjungma@eit.uni-kl.de // common methods 66012027Sjungma@eit.uni-kl.de 66112027Sjungma@eit.uni-kl.de int length() const 66212027Sjungma@eit.uni-kl.de { return m_len; } 66312027Sjungma@eit.uni-kl.de 66412027Sjungma@eit.uni-kl.de int size() const 66512027Sjungma@eit.uni-kl.de { return ( (length() - 1) / SC_DIGIT_SIZE + 1 ); } 66612027Sjungma@eit.uni-kl.de 66712027Sjungma@eit.uni-kl.de sc_logic_value_t get_bit( int n ) const; 66812027Sjungma@eit.uni-kl.de void set_bit( int n, sc_logic_value_t value ); 66912027Sjungma@eit.uni-kl.de 67012027Sjungma@eit.uni-kl.de sc_digit get_word( int i )const; 67112027Sjungma@eit.uni-kl.de void set_word( int i, sc_digit w ); 67212027Sjungma@eit.uni-kl.de 67312027Sjungma@eit.uni-kl.de sc_digit get_cword( int i ) const; 67412027Sjungma@eit.uni-kl.de void set_cword( int i, sc_digit w ); 67512027Sjungma@eit.uni-kl.de 67612027Sjungma@eit.uni-kl.de void clean_tail() 67712027Sjungma@eit.uni-kl.de { m_obj.clean_tail(); } 67812027Sjungma@eit.uni-kl.de 67912027Sjungma@eit.uni-kl.de 68012027Sjungma@eit.uni-kl.de // other methods 68112027Sjungma@eit.uni-kl.de 68212027Sjungma@eit.uni-kl.de bool is_01() const; 68312027Sjungma@eit.uni-kl.de 68412027Sjungma@eit.uni-kl.de bool reversed() const 68512027Sjungma@eit.uni-kl.de { return m_lo > m_hi; } 68612027Sjungma@eit.uni-kl.de 68712027Sjungma@eit.uni-kl.deprotected: 68812027Sjungma@eit.uni-kl.de 68912027Sjungma@eit.uni-kl.de X& m_obj; 69012027Sjungma@eit.uni-kl.de int m_hi; 69112027Sjungma@eit.uni-kl.de int m_lo; 69212027Sjungma@eit.uni-kl.de int m_len; 69312027Sjungma@eit.uni-kl.de 69412027Sjungma@eit.uni-kl.deprivate: 69512027Sjungma@eit.uni-kl.de 69612027Sjungma@eit.uni-kl.de // disabled 69712027Sjungma@eit.uni-kl.de sc_subref_r(); 69812027Sjungma@eit.uni-kl.de sc_subref_r<X>& operator = ( const sc_subref_r<X>& ); 69912027Sjungma@eit.uni-kl.de}; 70012027Sjungma@eit.uni-kl.de 70112027Sjungma@eit.uni-kl.de 70212027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 70312027Sjungma@eit.uni-kl.de 70412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 70512027Sjungma@eit.uni-kl.deinline 70612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 70712027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_bitref_r<T2> ); 70812027Sjungma@eit.uni-kl.de 70912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 71012027Sjungma@eit.uni-kl.deinline 71112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 71212027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_subref_r<T2> ); 71312027Sjungma@eit.uni-kl.de 71412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 71512027Sjungma@eit.uni-kl.deinline 71612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 71712027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_concref_r<T2,T3> ); 71812027Sjungma@eit.uni-kl.de 71912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 72012027Sjungma@eit.uni-kl.deinline 72112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 72212027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, const sc_proxy<T2>& ); 72312027Sjungma@eit.uni-kl.de 72412027Sjungma@eit.uni-kl.detemplate <class T> 72512027Sjungma@eit.uni-kl.deinline 72612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 72712027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T>, const char* ); 72812027Sjungma@eit.uni-kl.de 72912027Sjungma@eit.uni-kl.detemplate <class T> 73012027Sjungma@eit.uni-kl.deinline 73112027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 73212027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_subref_r<T> ); 73312027Sjungma@eit.uni-kl.de 73412027Sjungma@eit.uni-kl.detemplate <class T> 73512027Sjungma@eit.uni-kl.deinline 73612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 73712027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T>, const sc_logic& ); 73812027Sjungma@eit.uni-kl.de 73912027Sjungma@eit.uni-kl.detemplate <class T> 74012027Sjungma@eit.uni-kl.deinline 74112027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 74212027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_subref_r<T> ); 74312027Sjungma@eit.uni-kl.de 74412027Sjungma@eit.uni-kl.detemplate <class T> 74512027Sjungma@eit.uni-kl.deinline 74612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_bv_base> 74712027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T>, bool ); 74812027Sjungma@eit.uni-kl.de 74912027Sjungma@eit.uni-kl.detemplate <class T> 75012027Sjungma@eit.uni-kl.deinline 75112027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_subref_r<T> > 75212027Sjungma@eit.uni-kl.deoperator , ( bool, sc_subref_r<T> ); 75312027Sjungma@eit.uni-kl.de 75412027Sjungma@eit.uni-kl.de 75512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 75612027Sjungma@eit.uni-kl.deinline 75712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 75812027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_bitref_r<T2> ); 75912027Sjungma@eit.uni-kl.de 76012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 76112027Sjungma@eit.uni-kl.deinline 76212027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 76312027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_subref_r<T2> ); 76412027Sjungma@eit.uni-kl.de 76512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 76612027Sjungma@eit.uni-kl.deinline 76712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 76812027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_concref_r<T2,T3> ); 76912027Sjungma@eit.uni-kl.de 77012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 77112027Sjungma@eit.uni-kl.deinline 77212027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 77312027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, const sc_proxy<T2>& ); 77412027Sjungma@eit.uni-kl.de 77512027Sjungma@eit.uni-kl.detemplate <class T> 77612027Sjungma@eit.uni-kl.deinline 77712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 77812027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T>, const char* ); 77912027Sjungma@eit.uni-kl.de 78012027Sjungma@eit.uni-kl.detemplate <class T> 78112027Sjungma@eit.uni-kl.deinline 78212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 78312027Sjungma@eit.uni-kl.deconcat( const char*, sc_subref_r<T> ); 78412027Sjungma@eit.uni-kl.de 78512027Sjungma@eit.uni-kl.detemplate <class T> 78612027Sjungma@eit.uni-kl.deinline 78712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 78812027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T>, const sc_logic& ); 78912027Sjungma@eit.uni-kl.de 79012027Sjungma@eit.uni-kl.detemplate <class T> 79112027Sjungma@eit.uni-kl.deinline 79212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 79312027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_subref_r<T> ); 79412027Sjungma@eit.uni-kl.de 79512027Sjungma@eit.uni-kl.detemplate <class T> 79612027Sjungma@eit.uni-kl.deinline 79712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_bv_base> 79812027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T>, bool ); 79912027Sjungma@eit.uni-kl.de 80012027Sjungma@eit.uni-kl.detemplate <class T> 80112027Sjungma@eit.uni-kl.deinline 80212027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_subref_r<T> > 80312027Sjungma@eit.uni-kl.deconcat( bool, sc_subref_r<T> ); 80412027Sjungma@eit.uni-kl.de 80512027Sjungma@eit.uni-kl.de 80612027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 80712027Sjungma@eit.uni-kl.de 80812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 80912027Sjungma@eit.uni-kl.deinline 81012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 81112027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_bitref<T2> ); 81212027Sjungma@eit.uni-kl.de 81312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 81412027Sjungma@eit.uni-kl.deinline 81512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 81612027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_bitref_r<T2> ); 81712027Sjungma@eit.uni-kl.de 81812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 81912027Sjungma@eit.uni-kl.deinline 82012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 82112027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_subref<T2> ); 82212027Sjungma@eit.uni-kl.de 82312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 82412027Sjungma@eit.uni-kl.deinline 82512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 82612027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_subref_r<T2> ); 82712027Sjungma@eit.uni-kl.de 82812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 82912027Sjungma@eit.uni-kl.deinline 83012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 83112027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_concref<T2,T3> ); 83212027Sjungma@eit.uni-kl.de 83312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 83412027Sjungma@eit.uni-kl.deinline 83512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 83612027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_concref_r<T2,T3> ); 83712027Sjungma@eit.uni-kl.de 83812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 83912027Sjungma@eit.uni-kl.deinline 84012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 84112027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, const sc_proxy<T2>& ); 84212027Sjungma@eit.uni-kl.de 84312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 84412027Sjungma@eit.uni-kl.deinline 84512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 84612027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1>, sc_proxy<T2>& ); 84712027Sjungma@eit.uni-kl.de 84812027Sjungma@eit.uni-kl.detemplate <class T> 84912027Sjungma@eit.uni-kl.deinline 85012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 85112027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T>, const char* ); 85212027Sjungma@eit.uni-kl.de 85312027Sjungma@eit.uni-kl.detemplate <class T> 85412027Sjungma@eit.uni-kl.deinline 85512027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 85612027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_subref<T> ); 85712027Sjungma@eit.uni-kl.de 85812027Sjungma@eit.uni-kl.detemplate <class T> 85912027Sjungma@eit.uni-kl.deinline 86012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 86112027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T>, const sc_logic& ); 86212027Sjungma@eit.uni-kl.de 86312027Sjungma@eit.uni-kl.detemplate <class T> 86412027Sjungma@eit.uni-kl.deinline 86512027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 86612027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_subref<T> ); 86712027Sjungma@eit.uni-kl.de 86812027Sjungma@eit.uni-kl.detemplate <class T> 86912027Sjungma@eit.uni-kl.deinline 87012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_bv_base> 87112027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T>, bool ); 87212027Sjungma@eit.uni-kl.de 87312027Sjungma@eit.uni-kl.detemplate <class T> 87412027Sjungma@eit.uni-kl.deinline 87512027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_subref_r<T> > 87612027Sjungma@eit.uni-kl.deoperator , ( bool, sc_subref<T> ); 87712027Sjungma@eit.uni-kl.de 87812027Sjungma@eit.uni-kl.de 87912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 88012027Sjungma@eit.uni-kl.deinline 88112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 88212027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_bitref<T2> ); 88312027Sjungma@eit.uni-kl.de 88412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 88512027Sjungma@eit.uni-kl.deinline 88612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 88712027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_bitref_r<T2> ); 88812027Sjungma@eit.uni-kl.de 88912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 89012027Sjungma@eit.uni-kl.deinline 89112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 89212027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_subref<T2> ); 89312027Sjungma@eit.uni-kl.de 89412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 89512027Sjungma@eit.uni-kl.deinline 89612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 89712027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_subref_r<T2> ); 89812027Sjungma@eit.uni-kl.de 89912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 90012027Sjungma@eit.uni-kl.deinline 90112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 90212027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_concref<T2,T3> ); 90312027Sjungma@eit.uni-kl.de 90412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 90512027Sjungma@eit.uni-kl.deinline 90612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 90712027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_concref_r<T2,T3> ); 90812027Sjungma@eit.uni-kl.de 90912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 91012027Sjungma@eit.uni-kl.deinline 91112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 91212027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, const sc_proxy<T2>& ); 91312027Sjungma@eit.uni-kl.de 91412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 91512027Sjungma@eit.uni-kl.deinline 91612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 91712027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1>, sc_proxy<T2>& ); 91812027Sjungma@eit.uni-kl.de 91912027Sjungma@eit.uni-kl.detemplate <class T> 92012027Sjungma@eit.uni-kl.deinline 92112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 92212027Sjungma@eit.uni-kl.deconcat( sc_subref<T>, const char* ); 92312027Sjungma@eit.uni-kl.de 92412027Sjungma@eit.uni-kl.detemplate <class T> 92512027Sjungma@eit.uni-kl.deinline 92612027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 92712027Sjungma@eit.uni-kl.deconcat( const char*, sc_subref<T> ); 92812027Sjungma@eit.uni-kl.de 92912027Sjungma@eit.uni-kl.detemplate <class T> 93012027Sjungma@eit.uni-kl.deinline 93112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_lv_base> 93212027Sjungma@eit.uni-kl.deconcat( sc_subref<T>, const sc_logic& ); 93312027Sjungma@eit.uni-kl.de 93412027Sjungma@eit.uni-kl.detemplate <class T> 93512027Sjungma@eit.uni-kl.deinline 93612027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_subref_r<T> > 93712027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_subref<T> ); 93812027Sjungma@eit.uni-kl.de 93912027Sjungma@eit.uni-kl.detemplate <class T> 94012027Sjungma@eit.uni-kl.deinline 94112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T>,sc_bv_base> 94212027Sjungma@eit.uni-kl.deconcat( sc_subref<T>, bool ); 94312027Sjungma@eit.uni-kl.de 94412027Sjungma@eit.uni-kl.detemplate <class T> 94512027Sjungma@eit.uni-kl.deinline 94612027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_subref_r<T> > 94712027Sjungma@eit.uni-kl.deconcat( bool, sc_subref<T> ); 94812027Sjungma@eit.uni-kl.de 94912027Sjungma@eit.uni-kl.de#endif 95012027Sjungma@eit.uni-kl.de 95112027Sjungma@eit.uni-kl.de 95212027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 95312027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_subref<X> 95412027Sjungma@eit.uni-kl.de// 95512027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy part selection (r-value and l-value). 95612027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 95712027Sjungma@eit.uni-kl.de 95812027Sjungma@eit.uni-kl.detemplate <class X> 95912027Sjungma@eit.uni-kl.declass sc_subref 96012027Sjungma@eit.uni-kl.de : public sc_subref_r<X> 96112027Sjungma@eit.uni-kl.de{ 96212027Sjungma@eit.uni-kl.depublic: 96312027Sjungma@eit.uni-kl.de 96412027Sjungma@eit.uni-kl.de // typedefs 96512027Sjungma@eit.uni-kl.de 96612027Sjungma@eit.uni-kl.de typedef sc_subref_r<X> base_type; 96712027Sjungma@eit.uni-kl.de 96812027Sjungma@eit.uni-kl.de 96912027Sjungma@eit.uni-kl.de // constructor 97012027Sjungma@eit.uni-kl.de 97112027Sjungma@eit.uni-kl.de sc_subref( X& obj_, int hi_, int lo_ ) 97212027Sjungma@eit.uni-kl.de : sc_subref_r<X>( obj_, hi_, lo_ ) 97312027Sjungma@eit.uni-kl.de {} 97412027Sjungma@eit.uni-kl.de 97512027Sjungma@eit.uni-kl.de 97612027Sjungma@eit.uni-kl.de // copy constructor 97712027Sjungma@eit.uni-kl.de 97812027Sjungma@eit.uni-kl.de sc_subref( const sc_subref<X>& a ) 97912027Sjungma@eit.uni-kl.de : sc_subref_r<X>( a ) 98012027Sjungma@eit.uni-kl.de {} 98112027Sjungma@eit.uni-kl.de 98212027Sjungma@eit.uni-kl.de 98312027Sjungma@eit.uni-kl.de // cloning 98412027Sjungma@eit.uni-kl.de 98512027Sjungma@eit.uni-kl.de sc_subref<X>* clone() const 98612027Sjungma@eit.uni-kl.de { return new sc_subref<X>( *this ); } 98712027Sjungma@eit.uni-kl.de 98812027Sjungma@eit.uni-kl.de 98912027Sjungma@eit.uni-kl.de // assignment operators 99012027Sjungma@eit.uni-kl.de 99112027Sjungma@eit.uni-kl.de template <class Y> 99212027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_proxy<Y>& a ) 99312027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 99412027Sjungma@eit.uni-kl.de 99512027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_subref_r<X>& a ); 99612027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_subref<X>& a ); 99712027Sjungma@eit.uni-kl.de 99812027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const char* a ) 99912027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 100012027Sjungma@eit.uni-kl.de 100112027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const bool* a ) 100212027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 100312027Sjungma@eit.uni-kl.de 100412027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_logic* a ) 100512027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 100612027Sjungma@eit.uni-kl.de 100712027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_unsigned& a ) 100812027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 100912027Sjungma@eit.uni-kl.de 101012027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_signed& a ) 101112027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 101212027Sjungma@eit.uni-kl.de 101312027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_uint_base& a ) 101412027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 101512027Sjungma@eit.uni-kl.de 101612027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( const sc_int_base& a ) 101712027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 101812027Sjungma@eit.uni-kl.de 101912027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( unsigned long a ) 102012027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 102112027Sjungma@eit.uni-kl.de 102212027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( long a ) 102312027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 102412027Sjungma@eit.uni-kl.de 102512027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( unsigned int a ) 102612027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 102712027Sjungma@eit.uni-kl.de 102812027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( int a ) 102912027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 103012027Sjungma@eit.uni-kl.de 103112027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( uint64 a ) 103212027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 103312027Sjungma@eit.uni-kl.de 103412027Sjungma@eit.uni-kl.de sc_subref<X>& operator = ( int64 a ) 103512027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 103612027Sjungma@eit.uni-kl.de 103712027Sjungma@eit.uni-kl.de 103812027Sjungma@eit.uni-kl.de // other methods 103912027Sjungma@eit.uni-kl.de 104012027Sjungma@eit.uni-kl.de void scan( ::std::istream& = ::std::cin ); 104112027Sjungma@eit.uni-kl.de 104212027Sjungma@eit.uni-kl.deprivate: 104312027Sjungma@eit.uni-kl.de 104412027Sjungma@eit.uni-kl.de // disabled 104512027Sjungma@eit.uni-kl.de sc_subref(); 104612027Sjungma@eit.uni-kl.de}; 104712027Sjungma@eit.uni-kl.de 104812027Sjungma@eit.uni-kl.de 104912027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 105012027Sjungma@eit.uni-kl.de 105112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 105212027Sjungma@eit.uni-kl.deinline 105312027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_bitref<T2> > 105412027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_bitref<T2> ); 105512027Sjungma@eit.uni-kl.de 105612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 105712027Sjungma@eit.uni-kl.deinline 105812027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_subref<T2> > 105912027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_subref<T2> ); 106012027Sjungma@eit.uni-kl.de 106112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 106212027Sjungma@eit.uni-kl.deinline 106312027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_concref<T2,T3> > 106412027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_concref<T2,T3> ); 106512027Sjungma@eit.uni-kl.de 106612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 106712027Sjungma@eit.uni-kl.deinline 106812027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,T2> 106912027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1>, sc_proxy<T2>& ); 107012027Sjungma@eit.uni-kl.de 107112027Sjungma@eit.uni-kl.de 107212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 107312027Sjungma@eit.uni-kl.deinline 107412027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_bitref<T2> > 107512027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_bitref<T2> ); 107612027Sjungma@eit.uni-kl.de 107712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 107812027Sjungma@eit.uni-kl.deinline 107912027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_subref<T2> > 108012027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_subref<T2> ); 108112027Sjungma@eit.uni-kl.de 108212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 108312027Sjungma@eit.uni-kl.deinline 108412027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_concref<T2,T3> > 108512027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_concref<T2,T3> ); 108612027Sjungma@eit.uni-kl.de 108712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 108812027Sjungma@eit.uni-kl.deinline 108912027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,T2> 109012027Sjungma@eit.uni-kl.deconcat( sc_subref<T1>, sc_proxy<T2>& ); 109112027Sjungma@eit.uni-kl.de 109212027Sjungma@eit.uni-kl.de 109312027Sjungma@eit.uni-kl.detemplate <class T> 109412027Sjungma@eit.uni-kl.deinline 109512027Sjungma@eit.uni-kl.de::std::istream& 109612027Sjungma@eit.uni-kl.deoperator >> ( ::std::istream&, sc_subref<T> ); 109712027Sjungma@eit.uni-kl.de 109812027Sjungma@eit.uni-kl.de 109912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 110012027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_concref_r<X,Y> 110112027Sjungma@eit.uni-kl.de// 110212027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy concatenation (r-value only). 110312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 110412027Sjungma@eit.uni-kl.de 110512027Sjungma@eit.uni-kl.detemplate <class X, class Y> 110612027Sjungma@eit.uni-kl.declass sc_concref_r 110712027Sjungma@eit.uni-kl.de : public sc_proxy<sc_concref_r<X,Y> > 110812027Sjungma@eit.uni-kl.de{ 110912027Sjungma@eit.uni-kl.depublic: 111012027Sjungma@eit.uni-kl.de 111112027Sjungma@eit.uni-kl.de // constructor 111212027Sjungma@eit.uni-kl.de 111312027Sjungma@eit.uni-kl.de sc_concref_r( const X& left_, const Y& right_, int delete_ = 0 ) 111412027Sjungma@eit.uni-kl.de : m_left( CCAST<X&>( left_ ) ), m_right( CCAST<Y&>( right_ ) ), 111512027Sjungma@eit.uni-kl.de m_delete( delete_ ), m_refs( *new int( 1 ) ) 111612027Sjungma@eit.uni-kl.de {} 111712027Sjungma@eit.uni-kl.de 111812027Sjungma@eit.uni-kl.de 111912027Sjungma@eit.uni-kl.de // copy constructor 112012027Sjungma@eit.uni-kl.de 112112027Sjungma@eit.uni-kl.de sc_concref_r( const sc_concref_r<X,Y>& a ) 112212027Sjungma@eit.uni-kl.de : m_left( a.m_left ), m_right( a.m_right ), 112312027Sjungma@eit.uni-kl.de m_delete( a.m_delete ), m_refs( a.m_refs ) 112412027Sjungma@eit.uni-kl.de { ++ m_refs; } 112512027Sjungma@eit.uni-kl.de 112612027Sjungma@eit.uni-kl.de 112712027Sjungma@eit.uni-kl.de // destructor 112812027Sjungma@eit.uni-kl.de 112912027Sjungma@eit.uni-kl.de virtual ~sc_concref_r(); 113012027Sjungma@eit.uni-kl.de 113112027Sjungma@eit.uni-kl.de 113212027Sjungma@eit.uni-kl.de // cloning 113312027Sjungma@eit.uni-kl.de 113412027Sjungma@eit.uni-kl.de sc_concref_r<X,Y>* clone() const 113512027Sjungma@eit.uni-kl.de { return new sc_concref_r<X,Y>( *this ); } 113612027Sjungma@eit.uni-kl.de 113712027Sjungma@eit.uni-kl.de 113812027Sjungma@eit.uni-kl.de // common methods 113912027Sjungma@eit.uni-kl.de 114012027Sjungma@eit.uni-kl.de int length() const 114112027Sjungma@eit.uni-kl.de { return ( m_left.length() + m_right.length() ); } 114212027Sjungma@eit.uni-kl.de 114312027Sjungma@eit.uni-kl.de int size() const 114412027Sjungma@eit.uni-kl.de { return ( (length() - 1) / SC_DIGIT_SIZE + 1 ); } 114512027Sjungma@eit.uni-kl.de 114612027Sjungma@eit.uni-kl.de sc_logic_value_t get_bit( int n ) const; 114712027Sjungma@eit.uni-kl.de void set_bit( int n, sc_logic_value_t value ); 114812027Sjungma@eit.uni-kl.de 114912027Sjungma@eit.uni-kl.de sc_digit get_word( int i ) const; 115012027Sjungma@eit.uni-kl.de void set_word( int i, sc_digit w ); 115112027Sjungma@eit.uni-kl.de 115212027Sjungma@eit.uni-kl.de sc_digit get_cword( int i ) const; 115312027Sjungma@eit.uni-kl.de void set_cword( int i, sc_digit w ); 115412027Sjungma@eit.uni-kl.de 115512027Sjungma@eit.uni-kl.de void clean_tail() 115612027Sjungma@eit.uni-kl.de { m_left.clean_tail(); m_right.clean_tail(); } 115712027Sjungma@eit.uni-kl.de 115812027Sjungma@eit.uni-kl.de 115912027Sjungma@eit.uni-kl.de // other methods 116012027Sjungma@eit.uni-kl.de 116112027Sjungma@eit.uni-kl.de bool is_01() const 116212027Sjungma@eit.uni-kl.de { return ( m_left.is_01() && m_right.is_01() ); } 116312027Sjungma@eit.uni-kl.de 116412027Sjungma@eit.uni-kl.deprotected: 116512027Sjungma@eit.uni-kl.de 116612027Sjungma@eit.uni-kl.de X& m_left; 116712027Sjungma@eit.uni-kl.de Y& m_right; 116812027Sjungma@eit.uni-kl.de mutable int m_delete; 116912027Sjungma@eit.uni-kl.de int& m_refs; 117012027Sjungma@eit.uni-kl.de 117112027Sjungma@eit.uni-kl.deprivate: 117212027Sjungma@eit.uni-kl.de 117312027Sjungma@eit.uni-kl.de // disabled 117412027Sjungma@eit.uni-kl.de sc_concref_r(); 117512027Sjungma@eit.uni-kl.de sc_concref_r<X,Y>& operator = ( const sc_concref_r<X,Y>& ); 117612027Sjungma@eit.uni-kl.de}; 117712027Sjungma@eit.uni-kl.de 117812027Sjungma@eit.uni-kl.de 117912027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 118012027Sjungma@eit.uni-kl.de 118112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 118212027Sjungma@eit.uni-kl.deinline 118312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 118412027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_bitref_r<T3> ); 118512027Sjungma@eit.uni-kl.de 118612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 118712027Sjungma@eit.uni-kl.deinline 118812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 118912027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_subref_r<T3> ); 119012027Sjungma@eit.uni-kl.de 119112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 119212027Sjungma@eit.uni-kl.deinline 119312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 119412027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_concref_r<T3,T4> ); 119512027Sjungma@eit.uni-kl.de 119612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 119712027Sjungma@eit.uni-kl.deinline 119812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 119912027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, const sc_proxy<T3>& ); 120012027Sjungma@eit.uni-kl.de 120112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 120212027Sjungma@eit.uni-kl.deinline 120312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 120412027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, const char* ); 120512027Sjungma@eit.uni-kl.de 120612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 120712027Sjungma@eit.uni-kl.deinline 120812027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 120912027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_concref_r<T1,T2> ); 121012027Sjungma@eit.uni-kl.de 121112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 121212027Sjungma@eit.uni-kl.deinline 121312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 121412027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, const sc_logic& ); 121512027Sjungma@eit.uni-kl.de 121612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 121712027Sjungma@eit.uni-kl.deinline 121812027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 121912027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_concref_r<T1,T2> ); 122012027Sjungma@eit.uni-kl.de 122112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 122212027Sjungma@eit.uni-kl.deinline 122312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bv_base> 122412027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, bool ); 122512027Sjungma@eit.uni-kl.de 122612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 122712027Sjungma@eit.uni-kl.deinline 122812027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_concref_r<T1,T2> > 122912027Sjungma@eit.uni-kl.deoperator , ( bool, sc_concref_r<T1,T2> ); 123012027Sjungma@eit.uni-kl.de 123112027Sjungma@eit.uni-kl.de 123212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 123312027Sjungma@eit.uni-kl.deinline 123412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 123512027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_bitref_r<T3> ); 123612027Sjungma@eit.uni-kl.de 123712027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 123812027Sjungma@eit.uni-kl.deinline 123912027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 124012027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_subref_r<T3> ); 124112027Sjungma@eit.uni-kl.de 124212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 124312027Sjungma@eit.uni-kl.deinline 124412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 124512027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_concref_r<T3,T4> ); 124612027Sjungma@eit.uni-kl.de 124712027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 124812027Sjungma@eit.uni-kl.deinline 124912027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 125012027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, const sc_proxy<T3>& ); 125112027Sjungma@eit.uni-kl.de 125212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 125312027Sjungma@eit.uni-kl.deinline 125412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 125512027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, const char* ); 125612027Sjungma@eit.uni-kl.de 125712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 125812027Sjungma@eit.uni-kl.deinline 125912027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 126012027Sjungma@eit.uni-kl.deconcat( const char*, sc_concref_r<T1,T2> ); 126112027Sjungma@eit.uni-kl.de 126212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 126312027Sjungma@eit.uni-kl.deinline 126412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 126512027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, const sc_logic& ); 126612027Sjungma@eit.uni-kl.de 126712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 126812027Sjungma@eit.uni-kl.deinline 126912027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 127012027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_concref_r<T1,T2> ); 127112027Sjungma@eit.uni-kl.de 127212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 127312027Sjungma@eit.uni-kl.deinline 127412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bv_base> 127512027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, bool ); 127612027Sjungma@eit.uni-kl.de 127712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 127812027Sjungma@eit.uni-kl.deinline 127912027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_concref_r<T1,T2> > 128012027Sjungma@eit.uni-kl.deconcat( bool, sc_concref_r<T1,T2> ); 128112027Sjungma@eit.uni-kl.de 128212027Sjungma@eit.uni-kl.de 128312027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 128412027Sjungma@eit.uni-kl.de 128512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 128612027Sjungma@eit.uni-kl.deinline 128712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 128812027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_bitref<T3> ); 128912027Sjungma@eit.uni-kl.de 129012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 129112027Sjungma@eit.uni-kl.deinline 129212027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 129312027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_bitref_r<T3> ); 129412027Sjungma@eit.uni-kl.de 129512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 129612027Sjungma@eit.uni-kl.deinline 129712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 129812027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_subref<T3> ); 129912027Sjungma@eit.uni-kl.de 130012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 130112027Sjungma@eit.uni-kl.deinline 130212027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 130312027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_subref_r<T3> ); 130412027Sjungma@eit.uni-kl.de 130512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 130612027Sjungma@eit.uni-kl.deinline 130712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 130812027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_concref<T3,T4> ); 130912027Sjungma@eit.uni-kl.de 131012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 131112027Sjungma@eit.uni-kl.deinline 131212027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 131312027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_concref_r<T3,T4> ); 131412027Sjungma@eit.uni-kl.de 131512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 131612027Sjungma@eit.uni-kl.deinline 131712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 131812027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, const sc_proxy<T3>& ); 131912027Sjungma@eit.uni-kl.de 132012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 132112027Sjungma@eit.uni-kl.deinline 132212027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 132312027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2>, sc_proxy<T3>& ); 132412027Sjungma@eit.uni-kl.de 132512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 132612027Sjungma@eit.uni-kl.deinline 132712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 132812027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, const char* ); 132912027Sjungma@eit.uni-kl.de 133012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 133112027Sjungma@eit.uni-kl.deinline 133212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 133312027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_concref<T1,T2> ); 133412027Sjungma@eit.uni-kl.de 133512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 133612027Sjungma@eit.uni-kl.deinline 133712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 133812027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, const sc_logic& ); 133912027Sjungma@eit.uni-kl.de 134012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 134112027Sjungma@eit.uni-kl.deinline 134212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 134312027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_concref<T1,T2> ); 134412027Sjungma@eit.uni-kl.de 134512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 134612027Sjungma@eit.uni-kl.deinline 134712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bv_base> 134812027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, bool ); 134912027Sjungma@eit.uni-kl.de 135012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 135112027Sjungma@eit.uni-kl.deinline 135212027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_concref_r<T1,T2> > 135312027Sjungma@eit.uni-kl.deoperator , ( bool, sc_concref<T1,T2> ); 135412027Sjungma@eit.uni-kl.de 135512027Sjungma@eit.uni-kl.de 135612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 135712027Sjungma@eit.uni-kl.deinline 135812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 135912027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_bitref<T3> ); 136012027Sjungma@eit.uni-kl.de 136112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 136212027Sjungma@eit.uni-kl.deinline 136312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 136412027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_bitref_r<T3> ); 136512027Sjungma@eit.uni-kl.de 136612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 136712027Sjungma@eit.uni-kl.deinline 136812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 136912027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_subref<T3> ); 137012027Sjungma@eit.uni-kl.de 137112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 137212027Sjungma@eit.uni-kl.deinline 137312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 137412027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_subref_r<T3> ); 137512027Sjungma@eit.uni-kl.de 137612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 137712027Sjungma@eit.uni-kl.deinline 137812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 137912027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_concref<T3,T4> ); 138012027Sjungma@eit.uni-kl.de 138112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 138212027Sjungma@eit.uni-kl.deinline 138312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 138412027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_concref_r<T3,T4> ); 138512027Sjungma@eit.uni-kl.de 138612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 138712027Sjungma@eit.uni-kl.deinline 138812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 138912027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, const sc_proxy<T3>& ); 139012027Sjungma@eit.uni-kl.de 139112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 139212027Sjungma@eit.uni-kl.deinline 139312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 139412027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2>, sc_proxy<T3>& ); 139512027Sjungma@eit.uni-kl.de 139612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 139712027Sjungma@eit.uni-kl.deinline 139812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 139912027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, const char* ); 140012027Sjungma@eit.uni-kl.de 140112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 140212027Sjungma@eit.uni-kl.deinline 140312027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 140412027Sjungma@eit.uni-kl.deconcat( const char*, sc_concref<T1,T2> ); 140512027Sjungma@eit.uni-kl.de 140612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 140712027Sjungma@eit.uni-kl.deinline 140812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_lv_base> 140912027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, const sc_logic& ); 141012027Sjungma@eit.uni-kl.de 141112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 141212027Sjungma@eit.uni-kl.deinline 141312027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,sc_concref_r<T1,T2> > 141412027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_concref<T1,T2> ); 141512027Sjungma@eit.uni-kl.de 141612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 141712027Sjungma@eit.uni-kl.deinline 141812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bv_base> 141912027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, bool ); 142012027Sjungma@eit.uni-kl.de 142112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 142212027Sjungma@eit.uni-kl.deinline 142312027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,sc_concref_r<T1,T2> > 142412027Sjungma@eit.uni-kl.deconcat( bool, sc_concref<T1,T2> ); 142512027Sjungma@eit.uni-kl.de 142612027Sjungma@eit.uni-kl.de#endif 142712027Sjungma@eit.uni-kl.de 142812027Sjungma@eit.uni-kl.de 142912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 143012027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_concref<X,Y> 143112027Sjungma@eit.uni-kl.de// 143212027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy concatenation (r-value and l-value). 143312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 143412027Sjungma@eit.uni-kl.de 143512027Sjungma@eit.uni-kl.detemplate <class X, class Y> 143612027Sjungma@eit.uni-kl.declass sc_concref 143712027Sjungma@eit.uni-kl.de : public sc_concref_r<X,Y> 143812027Sjungma@eit.uni-kl.de{ 143912027Sjungma@eit.uni-kl.depublic: 144012027Sjungma@eit.uni-kl.de 144112027Sjungma@eit.uni-kl.de // typedefs 144212027Sjungma@eit.uni-kl.de 144312027Sjungma@eit.uni-kl.de typedef sc_concref_r<X,Y> base_type; 144412027Sjungma@eit.uni-kl.de 144512027Sjungma@eit.uni-kl.de 144612027Sjungma@eit.uni-kl.de // constructor 144712027Sjungma@eit.uni-kl.de 144812027Sjungma@eit.uni-kl.de sc_concref( X& left_, Y& right_, int delete_ = 0 ) 144912027Sjungma@eit.uni-kl.de : sc_concref_r<X,Y>( left_, right_, delete_ ) 145012027Sjungma@eit.uni-kl.de {} 145112027Sjungma@eit.uni-kl.de 145212027Sjungma@eit.uni-kl.de 145312027Sjungma@eit.uni-kl.de // copy constructor 145412027Sjungma@eit.uni-kl.de 145512027Sjungma@eit.uni-kl.de sc_concref( const sc_concref<X,Y>& a ) 145612027Sjungma@eit.uni-kl.de : sc_concref_r<X,Y>( a ) 145712027Sjungma@eit.uni-kl.de {} 145812027Sjungma@eit.uni-kl.de 145912027Sjungma@eit.uni-kl.de 146012027Sjungma@eit.uni-kl.de // cloning 146112027Sjungma@eit.uni-kl.de 146212027Sjungma@eit.uni-kl.de sc_concref<X,Y>* clone() const 146312027Sjungma@eit.uni-kl.de { return new sc_concref<X,Y>( *this ); } 146412027Sjungma@eit.uni-kl.de 146512027Sjungma@eit.uni-kl.de 146612027Sjungma@eit.uni-kl.de // assignment operators 146712027Sjungma@eit.uni-kl.de 146812027Sjungma@eit.uni-kl.de template <class Z> 146912027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_proxy<Z>& a ) 147012027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 147112027Sjungma@eit.uni-kl.de 147212027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_concref<X,Y>& a ) 147312027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 147412027Sjungma@eit.uni-kl.de 147512027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const char* a ) 147612027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 147712027Sjungma@eit.uni-kl.de 147812027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const bool* a ) 147912027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 148012027Sjungma@eit.uni-kl.de 148112027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_logic* a ) 148212027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 148312027Sjungma@eit.uni-kl.de 148412027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_unsigned& a ) 148512027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 148612027Sjungma@eit.uni-kl.de 148712027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_signed& a ) 148812027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 148912027Sjungma@eit.uni-kl.de 149012027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_uint_base& a ) 149112027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 149212027Sjungma@eit.uni-kl.de 149312027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( const sc_int_base& a ) 149412027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 149512027Sjungma@eit.uni-kl.de 149612027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( unsigned long a ) 149712027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 149812027Sjungma@eit.uni-kl.de 149912027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( long a ) 150012027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 150112027Sjungma@eit.uni-kl.de 150212027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( unsigned int a ) 150312027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 150412027Sjungma@eit.uni-kl.de 150512027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( int a ) 150612027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 150712027Sjungma@eit.uni-kl.de 150812027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( uint64 a ) 150912027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 151012027Sjungma@eit.uni-kl.de 151112027Sjungma@eit.uni-kl.de sc_concref<X,Y>& operator = ( int64 a ) 151212027Sjungma@eit.uni-kl.de { base_type::assign_( a ); return *this; } 151312027Sjungma@eit.uni-kl.de 151412027Sjungma@eit.uni-kl.de 151512027Sjungma@eit.uni-kl.de // other methods 151612027Sjungma@eit.uni-kl.de 151712027Sjungma@eit.uni-kl.de void scan( ::std::istream& = ::std::cin ); 151812027Sjungma@eit.uni-kl.de 151912027Sjungma@eit.uni-kl.deprivate: 152012027Sjungma@eit.uni-kl.de 152112027Sjungma@eit.uni-kl.de // disabled 152212027Sjungma@eit.uni-kl.de sc_concref(); 152312027Sjungma@eit.uni-kl.de}; 152412027Sjungma@eit.uni-kl.de 152512027Sjungma@eit.uni-kl.de 152612027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 152712027Sjungma@eit.uni-kl.de 152812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 152912027Sjungma@eit.uni-kl.deinline 153012027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_bitref<T3> > 153112027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_bitref<T3> ); 153212027Sjungma@eit.uni-kl.de 153312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 153412027Sjungma@eit.uni-kl.deinline 153512027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_subref<T3> > 153612027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_subref<T3> ); 153712027Sjungma@eit.uni-kl.de 153812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 153912027Sjungma@eit.uni-kl.deinline 154012027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> > 154112027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_concref<T3,T4> ); 154212027Sjungma@eit.uni-kl.de 154312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 154412027Sjungma@eit.uni-kl.deinline 154512027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,T3> 154612027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2>, sc_proxy<T3>& ); 154712027Sjungma@eit.uni-kl.de 154812027Sjungma@eit.uni-kl.de 154912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 155012027Sjungma@eit.uni-kl.deinline 155112027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_bitref<T3> > 155212027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_bitref<T3> ); 155312027Sjungma@eit.uni-kl.de 155412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 155512027Sjungma@eit.uni-kl.deinline 155612027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_subref<T3> > 155712027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_subref<T3> ); 155812027Sjungma@eit.uni-kl.de 155912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 156012027Sjungma@eit.uni-kl.deinline 156112027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> > 156212027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_concref<T3,T4> ); 156312027Sjungma@eit.uni-kl.de 156412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 156512027Sjungma@eit.uni-kl.deinline 156612027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,T3> 156712027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2>, sc_proxy<T3>& ); 156812027Sjungma@eit.uni-kl.de 156912027Sjungma@eit.uni-kl.de 157012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 157112027Sjungma@eit.uni-kl.deinline 157212027Sjungma@eit.uni-kl.de::std::istream& 157312027Sjungma@eit.uni-kl.deoperator >> ( ::std::istream&, sc_concref<T1,T2> ); 157412027Sjungma@eit.uni-kl.de 157512027Sjungma@eit.uni-kl.de 157612027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 157712027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_proxy<T> 157812027Sjungma@eit.uni-kl.de// 157912027Sjungma@eit.uni-kl.de// Base class template for bit/logic vector classes. 158012027Sjungma@eit.uni-kl.de// (Barton/Nackmann implementation) 158112027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 158212027Sjungma@eit.uni-kl.de 158312027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 158412027Sjungma@eit.uni-kl.de 158512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 158612027Sjungma@eit.uni-kl.deinline 158712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 158812027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_bitref_r<T2> ); 158912027Sjungma@eit.uni-kl.de 159012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 159112027Sjungma@eit.uni-kl.deinline 159212027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 159312027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_subref_r<T2> ); 159412027Sjungma@eit.uni-kl.de 159512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 159612027Sjungma@eit.uni-kl.deinline 159712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 159812027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_concref_r<T2,T3> ); 159912027Sjungma@eit.uni-kl.de 160012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 160112027Sjungma@eit.uni-kl.deinline 160212027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 160312027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, const sc_proxy<T2>& ); 160412027Sjungma@eit.uni-kl.de 160512027Sjungma@eit.uni-kl.detemplate <class T> 160612027Sjungma@eit.uni-kl.deinline 160712027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 160812027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T>&, const char* ); 160912027Sjungma@eit.uni-kl.de 161012027Sjungma@eit.uni-kl.detemplate <class T> 161112027Sjungma@eit.uni-kl.deinline 161212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 161312027Sjungma@eit.uni-kl.deoperator , ( const char*, const sc_proxy<T>& ); 161412027Sjungma@eit.uni-kl.de 161512027Sjungma@eit.uni-kl.detemplate <class T> 161612027Sjungma@eit.uni-kl.deinline 161712027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 161812027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T>&, const sc_logic& ); 161912027Sjungma@eit.uni-kl.de 162012027Sjungma@eit.uni-kl.detemplate <class T> 162112027Sjungma@eit.uni-kl.deinline 162212027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 162312027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, const sc_proxy<T>& ); 162412027Sjungma@eit.uni-kl.de 162512027Sjungma@eit.uni-kl.detemplate <class T> 162612027Sjungma@eit.uni-kl.deinline 162712027Sjungma@eit.uni-kl.desc_concref_r<T,sc_bv_base> 162812027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T>&, bool ); 162912027Sjungma@eit.uni-kl.de 163012027Sjungma@eit.uni-kl.detemplate <class T> 163112027Sjungma@eit.uni-kl.deinline 163212027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,T> 163312027Sjungma@eit.uni-kl.deoperator , ( bool, const sc_proxy<T>& ); 163412027Sjungma@eit.uni-kl.de 163512027Sjungma@eit.uni-kl.de 163612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 163712027Sjungma@eit.uni-kl.deinline 163812027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 163912027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_bitref_r<T2> ); 164012027Sjungma@eit.uni-kl.de 164112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 164212027Sjungma@eit.uni-kl.deinline 164312027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 164412027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_subref_r<T2> ); 164512027Sjungma@eit.uni-kl.de 164612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 164712027Sjungma@eit.uni-kl.deinline 164812027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 164912027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_concref_r<T2,T3> ); 165012027Sjungma@eit.uni-kl.de 165112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 165212027Sjungma@eit.uni-kl.deinline 165312027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 165412027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, const sc_proxy<T2>& ); 165512027Sjungma@eit.uni-kl.de 165612027Sjungma@eit.uni-kl.detemplate <class T> 165712027Sjungma@eit.uni-kl.deinline 165812027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 165912027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T>&, const char* ); 166012027Sjungma@eit.uni-kl.de 166112027Sjungma@eit.uni-kl.detemplate <class T> 166212027Sjungma@eit.uni-kl.deinline 166312027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 166412027Sjungma@eit.uni-kl.deconcat( const char*, const sc_proxy<T>& ); 166512027Sjungma@eit.uni-kl.de 166612027Sjungma@eit.uni-kl.detemplate <class T> 166712027Sjungma@eit.uni-kl.deinline 166812027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 166912027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T>&, const sc_logic& ); 167012027Sjungma@eit.uni-kl.de 167112027Sjungma@eit.uni-kl.detemplate <class T> 167212027Sjungma@eit.uni-kl.deinline 167312027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 167412027Sjungma@eit.uni-kl.deconcat( const sc_logic&, const sc_proxy<T>& ); 167512027Sjungma@eit.uni-kl.de 167612027Sjungma@eit.uni-kl.detemplate <class T> 167712027Sjungma@eit.uni-kl.deinline 167812027Sjungma@eit.uni-kl.desc_concref_r<T,sc_bv_base> 167912027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T>&, bool ); 168012027Sjungma@eit.uni-kl.de 168112027Sjungma@eit.uni-kl.detemplate <class T> 168212027Sjungma@eit.uni-kl.deinline 168312027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,T> 168412027Sjungma@eit.uni-kl.deconcat( bool, const sc_proxy<T>& ); 168512027Sjungma@eit.uni-kl.de 168612027Sjungma@eit.uni-kl.de 168712027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 168812027Sjungma@eit.uni-kl.de 168912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 169012027Sjungma@eit.uni-kl.deinline 169112027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 169212027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_bitref<T2> ); 169312027Sjungma@eit.uni-kl.de 169412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 169512027Sjungma@eit.uni-kl.deinline 169612027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 169712027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_bitref_r<T2> ); 169812027Sjungma@eit.uni-kl.de 169912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 170012027Sjungma@eit.uni-kl.deinline 170112027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 170212027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_subref<T2> ); 170312027Sjungma@eit.uni-kl.de 170412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 170512027Sjungma@eit.uni-kl.deinline 170612027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 170712027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_subref_r<T2> ); 170812027Sjungma@eit.uni-kl.de 170912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 171012027Sjungma@eit.uni-kl.deinline 171112027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 171212027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_concref<T2,T3> ); 171312027Sjungma@eit.uni-kl.de 171412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 171512027Sjungma@eit.uni-kl.deinline 171612027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 171712027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_concref_r<T2,T3> ); 171812027Sjungma@eit.uni-kl.de 171912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 172012027Sjungma@eit.uni-kl.deinline 172112027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 172212027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>&, sc_proxy<T2>& ); 172312027Sjungma@eit.uni-kl.de 172412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 172512027Sjungma@eit.uni-kl.deinline 172612027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 172712027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, const sc_proxy<T2>& ); 172812027Sjungma@eit.uni-kl.de 172912027Sjungma@eit.uni-kl.detemplate <class T> 173012027Sjungma@eit.uni-kl.deinline 173112027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 173212027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T>&, const char* ); 173312027Sjungma@eit.uni-kl.de 173412027Sjungma@eit.uni-kl.detemplate <class T> 173512027Sjungma@eit.uni-kl.deinline 173612027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 173712027Sjungma@eit.uni-kl.deoperator , ( const char*, sc_proxy<T>& ); 173812027Sjungma@eit.uni-kl.de 173912027Sjungma@eit.uni-kl.detemplate <class T> 174012027Sjungma@eit.uni-kl.deinline 174112027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 174212027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T>&, const sc_logic& ); 174312027Sjungma@eit.uni-kl.de 174412027Sjungma@eit.uni-kl.detemplate <class T> 174512027Sjungma@eit.uni-kl.deinline 174612027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 174712027Sjungma@eit.uni-kl.deoperator , ( const sc_logic&, sc_proxy<T>& ); 174812027Sjungma@eit.uni-kl.de 174912027Sjungma@eit.uni-kl.detemplate <class T> 175012027Sjungma@eit.uni-kl.deinline 175112027Sjungma@eit.uni-kl.desc_concref_r<T,sc_bv_base> 175212027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T>&, bool ); 175312027Sjungma@eit.uni-kl.de 175412027Sjungma@eit.uni-kl.detemplate <class T> 175512027Sjungma@eit.uni-kl.deinline 175612027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,T> 175712027Sjungma@eit.uni-kl.deoperator , ( bool, sc_proxy<T>& ); 175812027Sjungma@eit.uni-kl.de 175912027Sjungma@eit.uni-kl.de 176012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 176112027Sjungma@eit.uni-kl.deinline 176212027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 176312027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_bitref<T2> ); 176412027Sjungma@eit.uni-kl.de 176512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 176612027Sjungma@eit.uni-kl.deinline 176712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 176812027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_bitref_r<T2> ); 176912027Sjungma@eit.uni-kl.de 177012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 177112027Sjungma@eit.uni-kl.deinline 177212027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 177312027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_subref<T2> ); 177412027Sjungma@eit.uni-kl.de 177512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 177612027Sjungma@eit.uni-kl.deinline 177712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 177812027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_subref_r<T2> ); 177912027Sjungma@eit.uni-kl.de 178012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 178112027Sjungma@eit.uni-kl.deinline 178212027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 178312027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_concref<T2,T3> ); 178412027Sjungma@eit.uni-kl.de 178512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 178612027Sjungma@eit.uni-kl.deinline 178712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 178812027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_concref_r<T2,T3> ); 178912027Sjungma@eit.uni-kl.de 179012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 179112027Sjungma@eit.uni-kl.deinline 179212027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 179312027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>&, sc_proxy<T2>& ); 179412027Sjungma@eit.uni-kl.de 179512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 179612027Sjungma@eit.uni-kl.deinline 179712027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 179812027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, const sc_proxy<T2>& ); 179912027Sjungma@eit.uni-kl.de 180012027Sjungma@eit.uni-kl.detemplate <class T> 180112027Sjungma@eit.uni-kl.deinline 180212027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 180312027Sjungma@eit.uni-kl.deconcat( sc_proxy<T>&, const char* ); 180412027Sjungma@eit.uni-kl.de 180512027Sjungma@eit.uni-kl.detemplate <class T> 180612027Sjungma@eit.uni-kl.deinline 180712027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 180812027Sjungma@eit.uni-kl.deconcat( const char*, sc_proxy<T>& ); 180912027Sjungma@eit.uni-kl.de 181012027Sjungma@eit.uni-kl.detemplate <class T> 181112027Sjungma@eit.uni-kl.deinline 181212027Sjungma@eit.uni-kl.desc_concref_r<T,sc_lv_base> 181312027Sjungma@eit.uni-kl.deconcat( sc_proxy<T>&, const sc_logic& ); 181412027Sjungma@eit.uni-kl.de 181512027Sjungma@eit.uni-kl.detemplate <class T> 181612027Sjungma@eit.uni-kl.deinline 181712027Sjungma@eit.uni-kl.desc_concref_r<sc_lv_base,T> 181812027Sjungma@eit.uni-kl.deconcat( const sc_logic&, sc_proxy<T>& ); 181912027Sjungma@eit.uni-kl.de 182012027Sjungma@eit.uni-kl.detemplate <class T> 182112027Sjungma@eit.uni-kl.deinline 182212027Sjungma@eit.uni-kl.desc_concref_r<T,sc_bv_base> 182312027Sjungma@eit.uni-kl.deconcat( sc_proxy<T>&, bool ); 182412027Sjungma@eit.uni-kl.de 182512027Sjungma@eit.uni-kl.detemplate <class T> 182612027Sjungma@eit.uni-kl.deinline 182712027Sjungma@eit.uni-kl.desc_concref_r<sc_bv_base,T> 182812027Sjungma@eit.uni-kl.deconcat( bool, sc_proxy<T>& ); 182912027Sjungma@eit.uni-kl.de 183012027Sjungma@eit.uni-kl.de#endif 183112027Sjungma@eit.uni-kl.de 183212027Sjungma@eit.uni-kl.de 183312027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 183412027Sjungma@eit.uni-kl.de 183512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 183612027Sjungma@eit.uni-kl.deinline 183712027Sjungma@eit.uni-kl.desc_concref<T1,sc_bitref<T2> > 183812027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_bitref<T2> ); 183912027Sjungma@eit.uni-kl.de 184012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 184112027Sjungma@eit.uni-kl.deinline 184212027Sjungma@eit.uni-kl.desc_concref<T1,sc_subref<T2> > 184312027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_subref<T2> ); 184412027Sjungma@eit.uni-kl.de 184512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 184612027Sjungma@eit.uni-kl.deinline 184712027Sjungma@eit.uni-kl.desc_concref<T1,sc_concref<T2,T3> > 184812027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_concref<T2,T3> ); 184912027Sjungma@eit.uni-kl.de 185012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 185112027Sjungma@eit.uni-kl.deinline 185212027Sjungma@eit.uni-kl.desc_concref<T1,T2> 185312027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>&, sc_proxy<T2>& ); 185412027Sjungma@eit.uni-kl.de 185512027Sjungma@eit.uni-kl.de 185612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 185712027Sjungma@eit.uni-kl.deinline 185812027Sjungma@eit.uni-kl.desc_concref<T1,sc_bitref<T2> > 185912027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_bitref<T2> ); 186012027Sjungma@eit.uni-kl.de 186112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 186212027Sjungma@eit.uni-kl.deinline 186312027Sjungma@eit.uni-kl.desc_concref<T1,sc_subref<T2> > 186412027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_subref<T2> ); 186512027Sjungma@eit.uni-kl.de 186612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 186712027Sjungma@eit.uni-kl.deinline 186812027Sjungma@eit.uni-kl.desc_concref<T1,sc_concref<T2,T3> > 186912027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_concref<T2,T3> ); 187012027Sjungma@eit.uni-kl.de 187112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 187212027Sjungma@eit.uni-kl.deinline 187312027Sjungma@eit.uni-kl.desc_concref<T1,T2> 187412027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>&, sc_proxy<T2>& ); 187512027Sjungma@eit.uni-kl.de 187612027Sjungma@eit.uni-kl.de 187712027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 187812027Sjungma@eit.uni-kl.de 187912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 188012027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_bitref_r<T> 188112027Sjungma@eit.uni-kl.de// 188212027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy bit selection (r-value only). 188312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 188412027Sjungma@eit.uni-kl.de 188512027Sjungma@eit.uni-kl.de// bitwise operators and functions 188612027Sjungma@eit.uni-kl.de 188712027Sjungma@eit.uni-kl.de// bitwise and 188812027Sjungma@eit.uni-kl.de 188912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 189012027Sjungma@eit.uni-kl.deinline 189112027Sjungma@eit.uni-kl.deconst sc_logic 189212027Sjungma@eit.uni-kl.deoperator & ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ) 189312027Sjungma@eit.uni-kl.de{ 189412027Sjungma@eit.uni-kl.de return sc_logic( sc_logic::and_table[a.value()][b.value()] ); 189512027Sjungma@eit.uni-kl.de} 189612027Sjungma@eit.uni-kl.de 189712027Sjungma@eit.uni-kl.de 189812027Sjungma@eit.uni-kl.de// bitwise or 189912027Sjungma@eit.uni-kl.de 190012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 190112027Sjungma@eit.uni-kl.deinline 190212027Sjungma@eit.uni-kl.deconst sc_logic 190312027Sjungma@eit.uni-kl.deoperator | ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ) 190412027Sjungma@eit.uni-kl.de{ 190512027Sjungma@eit.uni-kl.de return sc_logic( sc_logic::or_table[a.value()][b.value()] ); 190612027Sjungma@eit.uni-kl.de} 190712027Sjungma@eit.uni-kl.de 190812027Sjungma@eit.uni-kl.de 190912027Sjungma@eit.uni-kl.de// bitwise xor 191012027Sjungma@eit.uni-kl.de 191112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 191212027Sjungma@eit.uni-kl.deinline 191312027Sjungma@eit.uni-kl.deconst sc_logic 191412027Sjungma@eit.uni-kl.deoperator ^ ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ) 191512027Sjungma@eit.uni-kl.de{ 191612027Sjungma@eit.uni-kl.de return sc_logic( sc_logic::xor_table[a.value()][b.value()] ); 191712027Sjungma@eit.uni-kl.de} 191812027Sjungma@eit.uni-kl.de 191912027Sjungma@eit.uni-kl.de 192012027Sjungma@eit.uni-kl.de// relational operators and functions 192112027Sjungma@eit.uni-kl.de 192212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 192312027Sjungma@eit.uni-kl.deinline 192412027Sjungma@eit.uni-kl.debool 192512027Sjungma@eit.uni-kl.deoperator == ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ) 192612027Sjungma@eit.uni-kl.de{ 192712027Sjungma@eit.uni-kl.de return ( (int) a.value() == b.value() ); 192812027Sjungma@eit.uni-kl.de} 192912027Sjungma@eit.uni-kl.de 193012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 193112027Sjungma@eit.uni-kl.deinline 193212027Sjungma@eit.uni-kl.debool 193312027Sjungma@eit.uni-kl.deoperator != ( const sc_bitref_r<T1>& a, const sc_bitref_r<T2>& b ) 193412027Sjungma@eit.uni-kl.de{ 193512027Sjungma@eit.uni-kl.de return ( (int) a.value() != b.value() ); 193612027Sjungma@eit.uni-kl.de} 193712027Sjungma@eit.uni-kl.de 193812027Sjungma@eit.uni-kl.de 193912027Sjungma@eit.uni-kl.de// common methods 194012027Sjungma@eit.uni-kl.de 194112027Sjungma@eit.uni-kl.detemplate <class T> 194212027Sjungma@eit.uni-kl.deinline 194312027Sjungma@eit.uni-kl.desc_logic_value_t 194412027Sjungma@eit.uni-kl.desc_bitref_r<T>::get_bit( int n ) const 194512027Sjungma@eit.uni-kl.de{ 194612027Sjungma@eit.uni-kl.de if( n == 0 ) { 194712027Sjungma@eit.uni-kl.de return m_obj.get_bit( m_index ); 194812027Sjungma@eit.uni-kl.de } else { 194912027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_ , 0 ); 195012027Sjungma@eit.uni-kl.de // never reached 195112027Sjungma@eit.uni-kl.de return Log_0; 195212027Sjungma@eit.uni-kl.de } 195312027Sjungma@eit.uni-kl.de} 195412027Sjungma@eit.uni-kl.de 195512027Sjungma@eit.uni-kl.de 195612027Sjungma@eit.uni-kl.detemplate <class T> 195712027Sjungma@eit.uni-kl.deinline 195812027Sjungma@eit.uni-kl.desc_digit 195912027Sjungma@eit.uni-kl.desc_bitref_r<T>::get_word( int n ) const 196012027Sjungma@eit.uni-kl.de{ 196112027Sjungma@eit.uni-kl.de if( n == 0 ) { 196212027Sjungma@eit.uni-kl.de return ( get_bit( n ) & SC_DIGIT_ONE ); 196312027Sjungma@eit.uni-kl.de } else { 196412027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 196512027Sjungma@eit.uni-kl.de // never reached 196612027Sjungma@eit.uni-kl.de return 0; 196712027Sjungma@eit.uni-kl.de } 196812027Sjungma@eit.uni-kl.de} 196912027Sjungma@eit.uni-kl.de 197012027Sjungma@eit.uni-kl.detemplate <class T> 197112027Sjungma@eit.uni-kl.deinline 197212027Sjungma@eit.uni-kl.desc_digit 197312027Sjungma@eit.uni-kl.desc_bitref_r<T>::get_cword( int n ) const 197412027Sjungma@eit.uni-kl.de{ 197512027Sjungma@eit.uni-kl.de if( n == 0 ) { 197612027Sjungma@eit.uni-kl.de return ( (get_bit( n ) & SC_DIGIT_TWO) >> 1 ); 197712027Sjungma@eit.uni-kl.de } else { 197812027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 197912027Sjungma@eit.uni-kl.de // never reached 198012027Sjungma@eit.uni-kl.de return 0; 198112027Sjungma@eit.uni-kl.de } 198212027Sjungma@eit.uni-kl.de} 198312027Sjungma@eit.uni-kl.de 198412027Sjungma@eit.uni-kl.de 198512027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 198612027Sjungma@eit.uni-kl.de 198712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 198812027Sjungma@eit.uni-kl.deinline 198912027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 199012027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_bitref_r<T2> b ) 199112027Sjungma@eit.uni-kl.de{ 199212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( 199312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 199412027Sjungma@eit.uni-kl.de} 199512027Sjungma@eit.uni-kl.de 199612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 199712027Sjungma@eit.uni-kl.deinline 199812027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 199912027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_subref_r<T2> b ) 200012027Sjungma@eit.uni-kl.de{ 200112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 200212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 200312027Sjungma@eit.uni-kl.de} 200412027Sjungma@eit.uni-kl.de 200512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 200612027Sjungma@eit.uni-kl.deinline 200712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 200812027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_concref_r<T2,T3> b ) 200912027Sjungma@eit.uni-kl.de{ 201012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 201112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 201212027Sjungma@eit.uni-kl.de} 201312027Sjungma@eit.uni-kl.de 201412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 201512027Sjungma@eit.uni-kl.deinline 201612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 201712027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, const sc_proxy<T2>& b ) 201812027Sjungma@eit.uni-kl.de{ 201912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,T2>( 202012027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 202112027Sjungma@eit.uni-kl.de} 202212027Sjungma@eit.uni-kl.de 202312027Sjungma@eit.uni-kl.de 202412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 202512027Sjungma@eit.uni-kl.deinline 202612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 202712027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_bitref_r<T2> b ) 202812027Sjungma@eit.uni-kl.de{ 202912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( 203012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 203112027Sjungma@eit.uni-kl.de} 203212027Sjungma@eit.uni-kl.de 203312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 203412027Sjungma@eit.uni-kl.deinline 203512027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 203612027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_subref_r<T2> b ) 203712027Sjungma@eit.uni-kl.de{ 203812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 203912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 204012027Sjungma@eit.uni-kl.de} 204112027Sjungma@eit.uni-kl.de 204212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 204312027Sjungma@eit.uni-kl.deinline 204412027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 204512027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_concref_r<T2,T3> b ) 204612027Sjungma@eit.uni-kl.de{ 204712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 204812027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 204912027Sjungma@eit.uni-kl.de} 205012027Sjungma@eit.uni-kl.de 205112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 205212027Sjungma@eit.uni-kl.deinline 205312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 205412027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, const sc_proxy<T2>& b ) 205512027Sjungma@eit.uni-kl.de{ 205612027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,T2>( 205712027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 205812027Sjungma@eit.uni-kl.de} 205912027Sjungma@eit.uni-kl.de 206012027Sjungma@eit.uni-kl.de 206112027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 206212027Sjungma@eit.uni-kl.de 206312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 206412027Sjungma@eit.uni-kl.deinline 206512027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 206612027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_bitref<T2> b ) 206712027Sjungma@eit.uni-kl.de{ 206812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( 206912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 207012027Sjungma@eit.uni-kl.de} 207112027Sjungma@eit.uni-kl.de 207212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 207312027Sjungma@eit.uni-kl.deinline 207412027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 207512027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_bitref_r<T2> b ) 207612027Sjungma@eit.uni-kl.de{ 207712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( 207812027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 207912027Sjungma@eit.uni-kl.de} 208012027Sjungma@eit.uni-kl.de 208112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 208212027Sjungma@eit.uni-kl.deinline 208312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 208412027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_subref<T2> b ) 208512027Sjungma@eit.uni-kl.de{ 208612027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 208712027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 208812027Sjungma@eit.uni-kl.de} 208912027Sjungma@eit.uni-kl.de 209012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 209112027Sjungma@eit.uni-kl.deinline 209212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 209312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_subref_r<T2> b ) 209412027Sjungma@eit.uni-kl.de{ 209512027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 209612027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 209712027Sjungma@eit.uni-kl.de} 209812027Sjungma@eit.uni-kl.de 209912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 210012027Sjungma@eit.uni-kl.deinline 210112027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 210212027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_concref<T2,T3> b ) 210312027Sjungma@eit.uni-kl.de{ 210412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 210512027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 210612027Sjungma@eit.uni-kl.de} 210712027Sjungma@eit.uni-kl.de 210812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 210912027Sjungma@eit.uni-kl.deinline 211012027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 211112027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_concref_r<T2,T3> b ) 211212027Sjungma@eit.uni-kl.de{ 211312027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 211412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 211512027Sjungma@eit.uni-kl.de} 211612027Sjungma@eit.uni-kl.de 211712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 211812027Sjungma@eit.uni-kl.deinline 211912027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 212012027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, const sc_proxy<T2>& b ) 212112027Sjungma@eit.uni-kl.de{ 212212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,T2>( 212312027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 212412027Sjungma@eit.uni-kl.de} 212512027Sjungma@eit.uni-kl.de 212612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 212712027Sjungma@eit.uni-kl.deinline 212812027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 212912027Sjungma@eit.uni-kl.deoperator , ( sc_bitref_r<T1> a, sc_proxy<T2>& b ) 213012027Sjungma@eit.uni-kl.de{ 213112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,T2>( 213212027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 213312027Sjungma@eit.uni-kl.de} 213412027Sjungma@eit.uni-kl.de 213512027Sjungma@eit.uni-kl.de 213612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 213712027Sjungma@eit.uni-kl.deinline 213812027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 213912027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_bitref<T2> b ) 214012027Sjungma@eit.uni-kl.de{ 214112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( 214212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 214312027Sjungma@eit.uni-kl.de} 214412027Sjungma@eit.uni-kl.de 214512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 214612027Sjungma@eit.uni-kl.deinline 214712027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> > 214812027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_bitref_r<T2> b ) 214912027Sjungma@eit.uni-kl.de{ 215012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >( 215112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 215212027Sjungma@eit.uni-kl.de} 215312027Sjungma@eit.uni-kl.de 215412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 215512027Sjungma@eit.uni-kl.deinline 215612027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 215712027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_subref<T2> b ) 215812027Sjungma@eit.uni-kl.de{ 215912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 216012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 216112027Sjungma@eit.uni-kl.de} 216212027Sjungma@eit.uni-kl.de 216312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 216412027Sjungma@eit.uni-kl.deinline 216512027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> > 216612027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_subref_r<T2> b ) 216712027Sjungma@eit.uni-kl.de{ 216812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 216912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 217012027Sjungma@eit.uni-kl.de} 217112027Sjungma@eit.uni-kl.de 217212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 217312027Sjungma@eit.uni-kl.deinline 217412027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 217512027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_concref<T2,T3> b ) 217612027Sjungma@eit.uni-kl.de{ 217712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 217812027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 217912027Sjungma@eit.uni-kl.de} 218012027Sjungma@eit.uni-kl.de 218112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 218212027Sjungma@eit.uni-kl.deinline 218312027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> > 218412027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_concref_r<T2,T3> b ) 218512027Sjungma@eit.uni-kl.de{ 218612027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 218712027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 218812027Sjungma@eit.uni-kl.de} 218912027Sjungma@eit.uni-kl.de 219012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 219112027Sjungma@eit.uni-kl.deinline 219212027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 219312027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, const sc_proxy<T2>& b ) 219412027Sjungma@eit.uni-kl.de{ 219512027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,T2>( 219612027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 219712027Sjungma@eit.uni-kl.de} 219812027Sjungma@eit.uni-kl.de 219912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 220012027Sjungma@eit.uni-kl.deinline 220112027Sjungma@eit.uni-kl.desc_concref_r<sc_bitref_r<T1>,T2> 220212027Sjungma@eit.uni-kl.deconcat( sc_bitref_r<T1> a, sc_proxy<T2>& b ) 220312027Sjungma@eit.uni-kl.de{ 220412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_bitref_r<T1>,T2>( 220512027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 220612027Sjungma@eit.uni-kl.de} 220712027Sjungma@eit.uni-kl.de 220812027Sjungma@eit.uni-kl.de#endif 220912027Sjungma@eit.uni-kl.de 221012027Sjungma@eit.uni-kl.de 221112027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 221212027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_bitref<X> 221312027Sjungma@eit.uni-kl.de// 221412027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy bit selection (r-value and l-value). 221512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 221612027Sjungma@eit.uni-kl.de 221712027Sjungma@eit.uni-kl.de// assignment operators 221812027Sjungma@eit.uni-kl.de 221912027Sjungma@eit.uni-kl.detemplate <class X> 222012027Sjungma@eit.uni-kl.deinline 222112027Sjungma@eit.uni-kl.desc_bitref<X>& 222212027Sjungma@eit.uni-kl.desc_bitref<X>::operator = ( const sc_bitref_r<X>& a ) 222312027Sjungma@eit.uni-kl.de{ 222412027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, a.value() ); 222512027Sjungma@eit.uni-kl.de return *this; 222612027Sjungma@eit.uni-kl.de} 222712027Sjungma@eit.uni-kl.de 222812027Sjungma@eit.uni-kl.detemplate <class X> 222912027Sjungma@eit.uni-kl.deinline 223012027Sjungma@eit.uni-kl.desc_bitref<X>& 223112027Sjungma@eit.uni-kl.desc_bitref<X>::operator = ( const sc_bitref<X>& a ) 223212027Sjungma@eit.uni-kl.de{ 223312027Sjungma@eit.uni-kl.de if( &a != this ) { 223412027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, a.value() ); 223512027Sjungma@eit.uni-kl.de } 223612027Sjungma@eit.uni-kl.de return *this; 223712027Sjungma@eit.uni-kl.de} 223812027Sjungma@eit.uni-kl.de 223912027Sjungma@eit.uni-kl.de 224012027Sjungma@eit.uni-kl.de// bitwise assignment operators 224112027Sjungma@eit.uni-kl.de 224212027Sjungma@eit.uni-kl.detemplate <class X> 224312027Sjungma@eit.uni-kl.deinline 224412027Sjungma@eit.uni-kl.desc_bitref<X>& 224512027Sjungma@eit.uni-kl.desc_bitref<X>::operator &= ( const sc_bitref_r<X>& a ) 224612027Sjungma@eit.uni-kl.de{ 224712027Sjungma@eit.uni-kl.de if( &a != this ) { 224812027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 224912027Sjungma@eit.uni-kl.de sc_logic::and_table[this->value()][a.value()] ); 225012027Sjungma@eit.uni-kl.de } 225112027Sjungma@eit.uni-kl.de return *this; 225212027Sjungma@eit.uni-kl.de} 225312027Sjungma@eit.uni-kl.de 225412027Sjungma@eit.uni-kl.detemplate <class X> 225512027Sjungma@eit.uni-kl.deinline 225612027Sjungma@eit.uni-kl.desc_bitref<X>& 225712027Sjungma@eit.uni-kl.desc_bitref<X>::operator &= ( const sc_logic& a ) 225812027Sjungma@eit.uni-kl.de{ 225912027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 226012027Sjungma@eit.uni-kl.de sc_logic::and_table[this->value()][a.value()] ); 226112027Sjungma@eit.uni-kl.de return *this; 226212027Sjungma@eit.uni-kl.de} 226312027Sjungma@eit.uni-kl.de 226412027Sjungma@eit.uni-kl.de 226512027Sjungma@eit.uni-kl.detemplate <class X> 226612027Sjungma@eit.uni-kl.deinline 226712027Sjungma@eit.uni-kl.desc_bitref<X>& 226812027Sjungma@eit.uni-kl.desc_bitref<X>::operator |= ( const sc_bitref_r<X>& a ) 226912027Sjungma@eit.uni-kl.de{ 227012027Sjungma@eit.uni-kl.de if( &a != this ) { 227112027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 227212027Sjungma@eit.uni-kl.de sc_logic::or_table[this->value()][a.value()] ); 227312027Sjungma@eit.uni-kl.de } 227412027Sjungma@eit.uni-kl.de return *this; 227512027Sjungma@eit.uni-kl.de} 227612027Sjungma@eit.uni-kl.de 227712027Sjungma@eit.uni-kl.detemplate <class X> 227812027Sjungma@eit.uni-kl.deinline 227912027Sjungma@eit.uni-kl.desc_bitref<X>& 228012027Sjungma@eit.uni-kl.desc_bitref<X>::operator |= ( const sc_logic& a ) 228112027Sjungma@eit.uni-kl.de{ 228212027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 228312027Sjungma@eit.uni-kl.de sc_logic::or_table[this->value()][a.value()] ); 228412027Sjungma@eit.uni-kl.de return *this; 228512027Sjungma@eit.uni-kl.de} 228612027Sjungma@eit.uni-kl.de 228712027Sjungma@eit.uni-kl.de 228812027Sjungma@eit.uni-kl.detemplate <class X> 228912027Sjungma@eit.uni-kl.deinline 229012027Sjungma@eit.uni-kl.desc_bitref<X>& 229112027Sjungma@eit.uni-kl.desc_bitref<X>::operator ^= ( const sc_bitref_r<X>& a ) 229212027Sjungma@eit.uni-kl.de{ 229312027Sjungma@eit.uni-kl.de if( &a != this ) { 229412027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 229512027Sjungma@eit.uni-kl.de sc_logic::xor_table[this->value()][a.value()] ); 229612027Sjungma@eit.uni-kl.de } 229712027Sjungma@eit.uni-kl.de return *this; 229812027Sjungma@eit.uni-kl.de} 229912027Sjungma@eit.uni-kl.de 230012027Sjungma@eit.uni-kl.detemplate <class X> 230112027Sjungma@eit.uni-kl.deinline 230212027Sjungma@eit.uni-kl.desc_bitref<X>& 230312027Sjungma@eit.uni-kl.desc_bitref<X>::operator ^= ( const sc_logic& a ) 230412027Sjungma@eit.uni-kl.de{ 230512027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 230612027Sjungma@eit.uni-kl.de sc_logic::xor_table[this->value()][a.value()] ); 230712027Sjungma@eit.uni-kl.de return *this; 230812027Sjungma@eit.uni-kl.de} 230912027Sjungma@eit.uni-kl.de 231012027Sjungma@eit.uni-kl.de 231112027Sjungma@eit.uni-kl.de// bitwise operators and functions 231212027Sjungma@eit.uni-kl.de 231312027Sjungma@eit.uni-kl.de// bitwise complement 231412027Sjungma@eit.uni-kl.de 231512027Sjungma@eit.uni-kl.detemplate <class X> 231612027Sjungma@eit.uni-kl.deinline 231712027Sjungma@eit.uni-kl.desc_bitref<X>& 231812027Sjungma@eit.uni-kl.desc_bitref<X>::b_not() 231912027Sjungma@eit.uni-kl.de{ 232012027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, 232112027Sjungma@eit.uni-kl.de sc_logic::not_table[this->value()] ); 232212027Sjungma@eit.uni-kl.de return *this; 232312027Sjungma@eit.uni-kl.de} 232412027Sjungma@eit.uni-kl.de 232512027Sjungma@eit.uni-kl.de 232612027Sjungma@eit.uni-kl.de// common methods 232712027Sjungma@eit.uni-kl.de 232812027Sjungma@eit.uni-kl.detemplate <class X> 232912027Sjungma@eit.uni-kl.deinline 233012027Sjungma@eit.uni-kl.devoid 233112027Sjungma@eit.uni-kl.desc_bitref<X>::set_bit( int n, sc_logic_value_t value ) 233212027Sjungma@eit.uni-kl.de{ 233312027Sjungma@eit.uni-kl.de if( n == 0 ) { 233412027Sjungma@eit.uni-kl.de this->m_obj.set_bit( this->m_index, value ); 233512027Sjungma@eit.uni-kl.de } else { 233612027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 233712027Sjungma@eit.uni-kl.de } 233812027Sjungma@eit.uni-kl.de} 233912027Sjungma@eit.uni-kl.de 234012027Sjungma@eit.uni-kl.detemplate <class X> 234112027Sjungma@eit.uni-kl.deinline 234212027Sjungma@eit.uni-kl.devoid 234312027Sjungma@eit.uni-kl.desc_bitref<X>::set_word( int n, sc_digit w ) 234412027Sjungma@eit.uni-kl.de{ 234512027Sjungma@eit.uni-kl.de unsigned int bi = this->m_index % (8*sizeof(sc_digit)); 234612027Sjungma@eit.uni-kl.de sc_digit temp; 234712027Sjungma@eit.uni-kl.de unsigned int wi = this->m_index / (8*sizeof(sc_digit)); 234812027Sjungma@eit.uni-kl.de if( n == 0 ) { 234912027Sjungma@eit.uni-kl.de temp = this->m_obj.get_word(wi); 235012027Sjungma@eit.uni-kl.de temp = (temp & ~(1 << bi)) | ((w&1) << bi); 235112027Sjungma@eit.uni-kl.de this->m_obj.set_word(wi, temp); 235212027Sjungma@eit.uni-kl.de } else { 235312027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 235412027Sjungma@eit.uni-kl.de } 235512027Sjungma@eit.uni-kl.de 235612027Sjungma@eit.uni-kl.de} 235712027Sjungma@eit.uni-kl.de 235812027Sjungma@eit.uni-kl.detemplate <class X> 235912027Sjungma@eit.uni-kl.deinline 236012027Sjungma@eit.uni-kl.devoid 236112027Sjungma@eit.uni-kl.desc_bitref<X>::set_cword( int n, sc_digit w ) 236212027Sjungma@eit.uni-kl.de{ 236312027Sjungma@eit.uni-kl.de unsigned int bi = this->m_index % (8*sizeof(sc_digit)); 236412027Sjungma@eit.uni-kl.de sc_digit temp; 236512027Sjungma@eit.uni-kl.de unsigned int wi = this->m_index / (8*sizeof(sc_digit)); 236612027Sjungma@eit.uni-kl.de if( n == 0 ) { 236712027Sjungma@eit.uni-kl.de temp = this->m_obj.get_cword(wi); 236812027Sjungma@eit.uni-kl.de temp = (temp & ~(1 << bi)) | ((w&1) << bi); 236912027Sjungma@eit.uni-kl.de this->m_obj.set_cword(wi, temp); 237012027Sjungma@eit.uni-kl.de } else { 237112027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 237212027Sjungma@eit.uni-kl.de } 237312027Sjungma@eit.uni-kl.de} 237412027Sjungma@eit.uni-kl.de 237512027Sjungma@eit.uni-kl.de// other methods 237612027Sjungma@eit.uni-kl.de 237712027Sjungma@eit.uni-kl.detemplate <class X> 237812027Sjungma@eit.uni-kl.deinline 237912027Sjungma@eit.uni-kl.devoid 238012027Sjungma@eit.uni-kl.desc_bitref<X>::scan( ::std::istream& is ) 238112027Sjungma@eit.uni-kl.de{ 238212027Sjungma@eit.uni-kl.de char c; 238312027Sjungma@eit.uni-kl.de is >> c; 238412027Sjungma@eit.uni-kl.de *this = c; 238512027Sjungma@eit.uni-kl.de} 238612027Sjungma@eit.uni-kl.de 238712027Sjungma@eit.uni-kl.de 238812027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 238912027Sjungma@eit.uni-kl.de 239012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 239112027Sjungma@eit.uni-kl.deinline 239212027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_bitref<T2> > 239312027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_bitref<T2> b ) 239412027Sjungma@eit.uni-kl.de{ 239512027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,sc_bitref<T2> >( 239612027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 239712027Sjungma@eit.uni-kl.de} 239812027Sjungma@eit.uni-kl.de 239912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 240012027Sjungma@eit.uni-kl.deinline 240112027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_subref<T2> > 240212027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_subref<T2> b ) 240312027Sjungma@eit.uni-kl.de{ 240412027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,sc_subref<T2> >( 240512027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 240612027Sjungma@eit.uni-kl.de} 240712027Sjungma@eit.uni-kl.de 240812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 240912027Sjungma@eit.uni-kl.deinline 241012027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_concref<T2,T3> > 241112027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_concref<T2,T3> b ) 241212027Sjungma@eit.uni-kl.de{ 241312027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,sc_concref<T2,T3> >( 241412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 241512027Sjungma@eit.uni-kl.de} 241612027Sjungma@eit.uni-kl.de 241712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 241812027Sjungma@eit.uni-kl.deinline 241912027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,T2> 242012027Sjungma@eit.uni-kl.deoperator , ( sc_bitref<T1> a, sc_proxy<T2>& b ) 242112027Sjungma@eit.uni-kl.de{ 242212027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,T2>( 242312027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 242412027Sjungma@eit.uni-kl.de} 242512027Sjungma@eit.uni-kl.de 242612027Sjungma@eit.uni-kl.de 242712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 242812027Sjungma@eit.uni-kl.deinline 242912027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_bitref<T2> > 243012027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_bitref<T2> b ) 243112027Sjungma@eit.uni-kl.de{ 243212027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,sc_bitref<T2> >( 243312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 243412027Sjungma@eit.uni-kl.de} 243512027Sjungma@eit.uni-kl.de 243612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 243712027Sjungma@eit.uni-kl.deinline 243812027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_subref<T2> > 243912027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_subref<T2> b ) 244012027Sjungma@eit.uni-kl.de{ 244112027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,sc_subref<T2> >( 244212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 244312027Sjungma@eit.uni-kl.de} 244412027Sjungma@eit.uni-kl.de 244512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 244612027Sjungma@eit.uni-kl.deinline 244712027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,sc_concref<T2,T3> > 244812027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_concref<T2,T3> b ) 244912027Sjungma@eit.uni-kl.de{ 245012027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,sc_concref<T2,T3> >( 245112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 245212027Sjungma@eit.uni-kl.de} 245312027Sjungma@eit.uni-kl.de 245412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 245512027Sjungma@eit.uni-kl.deinline 245612027Sjungma@eit.uni-kl.desc_concref<sc_bitref<T1>,T2> 245712027Sjungma@eit.uni-kl.deconcat( sc_bitref<T1> a, sc_proxy<T2>& b ) 245812027Sjungma@eit.uni-kl.de{ 245912027Sjungma@eit.uni-kl.de return sc_concref<sc_bitref<T1>,T2>( 246012027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 246112027Sjungma@eit.uni-kl.de} 246212027Sjungma@eit.uni-kl.de 246312027Sjungma@eit.uni-kl.de 246412027Sjungma@eit.uni-kl.detemplate <class X> 246512027Sjungma@eit.uni-kl.deinline 246612027Sjungma@eit.uni-kl.de::std::istream& 246712027Sjungma@eit.uni-kl.deoperator >> ( ::std::istream& is, sc_bitref<X> a ) 246812027Sjungma@eit.uni-kl.de{ 246912027Sjungma@eit.uni-kl.de a.scan( is ); 247012027Sjungma@eit.uni-kl.de return is; 247112027Sjungma@eit.uni-kl.de} 247212027Sjungma@eit.uni-kl.de 247312027Sjungma@eit.uni-kl.de 247412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 247512027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_subref_r<X> 247612027Sjungma@eit.uni-kl.de// 247712027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy part selection (r-value only). 247812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 247912027Sjungma@eit.uni-kl.de 248012027Sjungma@eit.uni-kl.detemplate <class X> 248112027Sjungma@eit.uni-kl.deinline 248212027Sjungma@eit.uni-kl.devoid 248312027Sjungma@eit.uni-kl.desc_subref_r<X>::check_bounds() 248412027Sjungma@eit.uni-kl.de{ 248512027Sjungma@eit.uni-kl.de int len = m_obj.length(); 248612027Sjungma@eit.uni-kl.de if( m_hi < 0 || m_hi >= len || m_lo < 0 || m_lo >= len ) { 248712027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 248812027Sjungma@eit.uni-kl.de } 248912027Sjungma@eit.uni-kl.de if( reversed() ) { 249012027Sjungma@eit.uni-kl.de m_len = m_lo - m_hi + 1; 249112027Sjungma@eit.uni-kl.de } else { 249212027Sjungma@eit.uni-kl.de m_len = m_hi - m_lo + 1; 249312027Sjungma@eit.uni-kl.de } 249412027Sjungma@eit.uni-kl.de} 249512027Sjungma@eit.uni-kl.de 249612027Sjungma@eit.uni-kl.de 249712027Sjungma@eit.uni-kl.de// common methods 249812027Sjungma@eit.uni-kl.de 249912027Sjungma@eit.uni-kl.detemplate <class X> 250012027Sjungma@eit.uni-kl.deinline 250112027Sjungma@eit.uni-kl.desc_logic_value_t 250212027Sjungma@eit.uni-kl.desc_subref_r<X>::get_bit( int n ) const 250312027Sjungma@eit.uni-kl.de{ 250412027Sjungma@eit.uni-kl.de if( reversed() ) { 250512027Sjungma@eit.uni-kl.de return m_obj.get_bit( m_lo - n ); 250612027Sjungma@eit.uni-kl.de } else { 250712027Sjungma@eit.uni-kl.de return m_obj.get_bit( m_lo + n ); 250812027Sjungma@eit.uni-kl.de } 250912027Sjungma@eit.uni-kl.de} 251012027Sjungma@eit.uni-kl.de 251112027Sjungma@eit.uni-kl.detemplate <class X> 251212027Sjungma@eit.uni-kl.deinline 251312027Sjungma@eit.uni-kl.devoid 251412027Sjungma@eit.uni-kl.desc_subref_r<X>::set_bit( int n, sc_logic_value_t value ) 251512027Sjungma@eit.uni-kl.de{ 251612027Sjungma@eit.uni-kl.de if( reversed() ) { 251712027Sjungma@eit.uni-kl.de m_obj.set_bit( m_lo - n, value ); 251812027Sjungma@eit.uni-kl.de } else { 251912027Sjungma@eit.uni-kl.de m_obj.set_bit( m_lo + n, value ); 252012027Sjungma@eit.uni-kl.de } 252112027Sjungma@eit.uni-kl.de} 252212027Sjungma@eit.uni-kl.de 252312027Sjungma@eit.uni-kl.de 252412027Sjungma@eit.uni-kl.detemplate <class X> 252512027Sjungma@eit.uni-kl.deinline 252612027Sjungma@eit.uni-kl.desc_digit 252712027Sjungma@eit.uni-kl.desc_subref_r<X>::get_word( int i ) const 252812027Sjungma@eit.uni-kl.de{ 252912027Sjungma@eit.uni-kl.de int n1 = 0; 253012027Sjungma@eit.uni-kl.de int n2 = 0; 253112027Sjungma@eit.uni-kl.de sc_digit result = 0; 253212027Sjungma@eit.uni-kl.de int k = 0; 253312027Sjungma@eit.uni-kl.de if( reversed() ) { 253412027Sjungma@eit.uni-kl.de n1 = m_lo - i * SC_DIGIT_SIZE; 253512027Sjungma@eit.uni-kl.de n2 = sc_max( n1 - SC_DIGIT_SIZE, m_hi - 1 ); 253612027Sjungma@eit.uni-kl.de for( int n = n1; n > n2; n -- ) { 253712027Sjungma@eit.uni-kl.de result |= (m_obj[n].value() & SC_DIGIT_ONE) << k ++; 253812027Sjungma@eit.uni-kl.de } 253912027Sjungma@eit.uni-kl.de } else { 254012027Sjungma@eit.uni-kl.de n1 = m_lo + i * SC_DIGIT_SIZE; 254112027Sjungma@eit.uni-kl.de n2 = sc_min( n1 + SC_DIGIT_SIZE, m_hi + 1 ); 254212027Sjungma@eit.uni-kl.de for( int n = n1; n < n2; n ++ ) { 254312027Sjungma@eit.uni-kl.de result |= (m_obj[n].value() & SC_DIGIT_ONE) << k ++; 254412027Sjungma@eit.uni-kl.de } 254512027Sjungma@eit.uni-kl.de } 254612027Sjungma@eit.uni-kl.de return result; 254712027Sjungma@eit.uni-kl.de} 254812027Sjungma@eit.uni-kl.de 254912027Sjungma@eit.uni-kl.detemplate <class X> 255012027Sjungma@eit.uni-kl.deinline 255112027Sjungma@eit.uni-kl.devoid 255212027Sjungma@eit.uni-kl.desc_subref_r<X>::set_word( int i, sc_digit w ) 255312027Sjungma@eit.uni-kl.de{ 255412027Sjungma@eit.uni-kl.de int n1 = 0; 255512027Sjungma@eit.uni-kl.de int n2 = 0; 255612027Sjungma@eit.uni-kl.de int k = 0; 255712027Sjungma@eit.uni-kl.de if( reversed() ) { 255812027Sjungma@eit.uni-kl.de n1 = m_lo - i * SC_DIGIT_SIZE; 255912027Sjungma@eit.uni-kl.de n2 = sc_max( n1 - SC_DIGIT_SIZE, m_hi - 1 ); 256012027Sjungma@eit.uni-kl.de for( int n = n1; n > n2; n -- ) { 256112027Sjungma@eit.uni-kl.de m_obj.set_bit( n, sc_logic_value_t( 256212027Sjungma@eit.uni-kl.de ( (w >> k ++) & SC_DIGIT_ONE ) | 256312027Sjungma@eit.uni-kl.de ( m_obj[n].value() & SC_DIGIT_TWO ) ) ); 256412027Sjungma@eit.uni-kl.de } 256512027Sjungma@eit.uni-kl.de } else { 256612027Sjungma@eit.uni-kl.de n1 = m_lo + i * SC_DIGIT_SIZE; 256712027Sjungma@eit.uni-kl.de n2 = sc_min( n1 + SC_DIGIT_SIZE, m_hi + 1 ); 256812027Sjungma@eit.uni-kl.de for( int n = n1; n < n2; n ++ ) { 256912027Sjungma@eit.uni-kl.de m_obj.set_bit( n, sc_logic_value_t( 257012027Sjungma@eit.uni-kl.de ( (w >> k ++) & SC_DIGIT_ONE ) | 257112027Sjungma@eit.uni-kl.de ( m_obj[n].value() & SC_DIGIT_TWO ) ) ); 257212027Sjungma@eit.uni-kl.de } 257312027Sjungma@eit.uni-kl.de } 257412027Sjungma@eit.uni-kl.de} 257512027Sjungma@eit.uni-kl.de 257612027Sjungma@eit.uni-kl.de 257712027Sjungma@eit.uni-kl.detemplate <class X> 257812027Sjungma@eit.uni-kl.deinline 257912027Sjungma@eit.uni-kl.desc_digit 258012027Sjungma@eit.uni-kl.desc_subref_r<X>::get_cword( int i ) const 258112027Sjungma@eit.uni-kl.de{ 258212027Sjungma@eit.uni-kl.de int n1 = 0; 258312027Sjungma@eit.uni-kl.de int n2 = 0; 258412027Sjungma@eit.uni-kl.de sc_digit result = 0; 258512027Sjungma@eit.uni-kl.de int k = 0; 258612027Sjungma@eit.uni-kl.de if( reversed() ) { 258712027Sjungma@eit.uni-kl.de n1 = m_lo - i * SC_DIGIT_SIZE; 258812027Sjungma@eit.uni-kl.de n2 = sc_max( n1 - SC_DIGIT_SIZE, m_hi - 1 ); 258912027Sjungma@eit.uni-kl.de for( int n = n1; n > n2; n -- ) { 259012027Sjungma@eit.uni-kl.de result |= ((m_obj[n].value() & SC_DIGIT_TWO) >> 1) << k ++; 259112027Sjungma@eit.uni-kl.de } 259212027Sjungma@eit.uni-kl.de } else { 259312027Sjungma@eit.uni-kl.de n1 = m_lo + i * SC_DIGIT_SIZE; 259412027Sjungma@eit.uni-kl.de n2 = sc_min( n1 + SC_DIGIT_SIZE, m_hi + 1 ); 259512027Sjungma@eit.uni-kl.de for( int n = n1; n < n2; n ++ ) { 259612027Sjungma@eit.uni-kl.de result |= ((m_obj[n].value() & SC_DIGIT_TWO) >> 1) << k ++; 259712027Sjungma@eit.uni-kl.de } 259812027Sjungma@eit.uni-kl.de } 259912027Sjungma@eit.uni-kl.de return result; 260012027Sjungma@eit.uni-kl.de} 260112027Sjungma@eit.uni-kl.de 260212027Sjungma@eit.uni-kl.detemplate <class X> 260312027Sjungma@eit.uni-kl.deinline 260412027Sjungma@eit.uni-kl.devoid 260512027Sjungma@eit.uni-kl.desc_subref_r<X>::set_cword( int i, sc_digit w ) 260612027Sjungma@eit.uni-kl.de{ 260712027Sjungma@eit.uni-kl.de int n1 = 0; 260812027Sjungma@eit.uni-kl.de int n2 = 0; 260912027Sjungma@eit.uni-kl.de int k = 0; 261012027Sjungma@eit.uni-kl.de if( reversed() ) { 261112027Sjungma@eit.uni-kl.de n1 = m_lo - i * SC_DIGIT_SIZE; 261212027Sjungma@eit.uni-kl.de n2 = sc_max( n1 - SC_DIGIT_SIZE, m_hi - 1 ); 261312027Sjungma@eit.uni-kl.de for( int n = n1; n > n2; n -- ) { 261412027Sjungma@eit.uni-kl.de m_obj.set_bit( n, sc_logic_value_t( 261512027Sjungma@eit.uni-kl.de ( ((w >> k ++) & SC_DIGIT_ONE) << 1 ) | 261612027Sjungma@eit.uni-kl.de ( m_obj[n].value() & SC_DIGIT_ONE ) ) ); 261712027Sjungma@eit.uni-kl.de } 261812027Sjungma@eit.uni-kl.de } else { 261912027Sjungma@eit.uni-kl.de n1 = m_lo + i * SC_DIGIT_SIZE; 262012027Sjungma@eit.uni-kl.de n2 = sc_min( n1 + SC_DIGIT_SIZE, m_hi + 1 ); 262112027Sjungma@eit.uni-kl.de for( int n = n1; n < n2; n ++ ) { 262212027Sjungma@eit.uni-kl.de m_obj.set_bit( n, sc_logic_value_t( 262312027Sjungma@eit.uni-kl.de ( ((w >> k ++) & SC_DIGIT_ONE) << 1 ) | 262412027Sjungma@eit.uni-kl.de ( m_obj[n].value() & SC_DIGIT_ONE ) ) ); 262512027Sjungma@eit.uni-kl.de } 262612027Sjungma@eit.uni-kl.de } 262712027Sjungma@eit.uni-kl.de} 262812027Sjungma@eit.uni-kl.de 262912027Sjungma@eit.uni-kl.de 263012027Sjungma@eit.uni-kl.de// other methods 263112027Sjungma@eit.uni-kl.de 263212027Sjungma@eit.uni-kl.detemplate <class X> 263312027Sjungma@eit.uni-kl.deinline 263412027Sjungma@eit.uni-kl.debool 263512027Sjungma@eit.uni-kl.desc_subref_r<X>::is_01() const 263612027Sjungma@eit.uni-kl.de{ 263712027Sjungma@eit.uni-kl.de int sz = size(); 263812027Sjungma@eit.uni-kl.de for( int i = 0; i < sz; ++ i ) { 263912027Sjungma@eit.uni-kl.de if( get_cword( i ) != SC_DIGIT_ZERO ) { 264012027Sjungma@eit.uni-kl.de return false; 264112027Sjungma@eit.uni-kl.de } 264212027Sjungma@eit.uni-kl.de } 264312027Sjungma@eit.uni-kl.de return true; 264412027Sjungma@eit.uni-kl.de} 264512027Sjungma@eit.uni-kl.de 264612027Sjungma@eit.uni-kl.de 264712027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 264812027Sjungma@eit.uni-kl.de 264912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 265012027Sjungma@eit.uni-kl.deinline 265112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 265212027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_bitref_r<T2> b ) 265312027Sjungma@eit.uni-kl.de{ 265412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 265512027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 265612027Sjungma@eit.uni-kl.de} 265712027Sjungma@eit.uni-kl.de 265812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 265912027Sjungma@eit.uni-kl.deinline 266012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 266112027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_subref_r<T2> b ) 266212027Sjungma@eit.uni-kl.de{ 266312027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 266412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 266512027Sjungma@eit.uni-kl.de} 266612027Sjungma@eit.uni-kl.de 266712027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 266812027Sjungma@eit.uni-kl.deinline 266912027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 267012027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_concref_r<T2,T3> b ) 267112027Sjungma@eit.uni-kl.de{ 267212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 267312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 267412027Sjungma@eit.uni-kl.de} 267512027Sjungma@eit.uni-kl.de 267612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 267712027Sjungma@eit.uni-kl.deinline 267812027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 267912027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, const sc_proxy<T2>& b ) 268012027Sjungma@eit.uni-kl.de{ 268112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,T2>( 268212027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 268312027Sjungma@eit.uni-kl.de} 268412027Sjungma@eit.uni-kl.de 268512027Sjungma@eit.uni-kl.de 268612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 268712027Sjungma@eit.uni-kl.deinline 268812027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 268912027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_bitref_r<T2> b ) 269012027Sjungma@eit.uni-kl.de{ 269112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 269212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 269312027Sjungma@eit.uni-kl.de} 269412027Sjungma@eit.uni-kl.de 269512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 269612027Sjungma@eit.uni-kl.deinline 269712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 269812027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_subref_r<T2> b ) 269912027Sjungma@eit.uni-kl.de{ 270012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 270112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 270212027Sjungma@eit.uni-kl.de} 270312027Sjungma@eit.uni-kl.de 270412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 270512027Sjungma@eit.uni-kl.deinline 270612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 270712027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_concref_r<T2,T3> b ) 270812027Sjungma@eit.uni-kl.de{ 270912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 271012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 271112027Sjungma@eit.uni-kl.de} 271212027Sjungma@eit.uni-kl.de 271312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 271412027Sjungma@eit.uni-kl.deinline 271512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 271612027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, const sc_proxy<T2>& b ) 271712027Sjungma@eit.uni-kl.de{ 271812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,T2>( 271912027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 272012027Sjungma@eit.uni-kl.de} 272112027Sjungma@eit.uni-kl.de 272212027Sjungma@eit.uni-kl.de 272312027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 272412027Sjungma@eit.uni-kl.de 272512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 272612027Sjungma@eit.uni-kl.deinline 272712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 272812027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_bitref<T2> b ) 272912027Sjungma@eit.uni-kl.de{ 273012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 273112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 273212027Sjungma@eit.uni-kl.de} 273312027Sjungma@eit.uni-kl.de 273412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 273512027Sjungma@eit.uni-kl.deinline 273612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 273712027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_bitref_r<T2> b ) 273812027Sjungma@eit.uni-kl.de{ 273912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 274012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 274112027Sjungma@eit.uni-kl.de} 274212027Sjungma@eit.uni-kl.de 274312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 274412027Sjungma@eit.uni-kl.deinline 274512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 274612027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_subref<T2> b ) 274712027Sjungma@eit.uni-kl.de{ 274812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 274912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 275012027Sjungma@eit.uni-kl.de} 275112027Sjungma@eit.uni-kl.de 275212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 275312027Sjungma@eit.uni-kl.deinline 275412027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 275512027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_subref_r<T2> b ) 275612027Sjungma@eit.uni-kl.de{ 275712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 275812027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 275912027Sjungma@eit.uni-kl.de} 276012027Sjungma@eit.uni-kl.de 276112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 276212027Sjungma@eit.uni-kl.deinline 276312027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 276412027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_concref<T2,T3> b ) 276512027Sjungma@eit.uni-kl.de{ 276612027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 276712027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 276812027Sjungma@eit.uni-kl.de} 276912027Sjungma@eit.uni-kl.de 277012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 277112027Sjungma@eit.uni-kl.deinline 277212027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 277312027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_concref_r<T2,T3> b ) 277412027Sjungma@eit.uni-kl.de{ 277512027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 277612027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 277712027Sjungma@eit.uni-kl.de} 277812027Sjungma@eit.uni-kl.de 277912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 278012027Sjungma@eit.uni-kl.deinline 278112027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 278212027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, const sc_proxy<T2>& b ) 278312027Sjungma@eit.uni-kl.de{ 278412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,T2>( 278512027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 278612027Sjungma@eit.uni-kl.de} 278712027Sjungma@eit.uni-kl.de 278812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 278912027Sjungma@eit.uni-kl.deinline 279012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 279112027Sjungma@eit.uni-kl.deoperator , ( sc_subref_r<T1> a, sc_proxy<T2>& b ) 279212027Sjungma@eit.uni-kl.de{ 279312027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,T2>( 279412027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 279512027Sjungma@eit.uni-kl.de} 279612027Sjungma@eit.uni-kl.de 279712027Sjungma@eit.uni-kl.de 279812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 279912027Sjungma@eit.uni-kl.deinline 280012027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 280112027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_bitref<T2> b ) 280212027Sjungma@eit.uni-kl.de{ 280312027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 280412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 280512027Sjungma@eit.uni-kl.de} 280612027Sjungma@eit.uni-kl.de 280712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 280812027Sjungma@eit.uni-kl.deinline 280912027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> > 281012027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_bitref_r<T2> b ) 281112027Sjungma@eit.uni-kl.de{ 281212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 281312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 281412027Sjungma@eit.uni-kl.de} 281512027Sjungma@eit.uni-kl.de 281612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 281712027Sjungma@eit.uni-kl.deinline 281812027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 281912027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_subref<T2> b ) 282012027Sjungma@eit.uni-kl.de{ 282112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 282212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 282312027Sjungma@eit.uni-kl.de} 282412027Sjungma@eit.uni-kl.de 282512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 282612027Sjungma@eit.uni-kl.deinline 282712027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> > 282812027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_subref_r<T2> b ) 282912027Sjungma@eit.uni-kl.de{ 283012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 283112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 283212027Sjungma@eit.uni-kl.de} 283312027Sjungma@eit.uni-kl.de 283412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 283512027Sjungma@eit.uni-kl.deinline 283612027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 283712027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_concref<T2,T3> b ) 283812027Sjungma@eit.uni-kl.de{ 283912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 284012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 284112027Sjungma@eit.uni-kl.de} 284212027Sjungma@eit.uni-kl.de 284312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 284412027Sjungma@eit.uni-kl.deinline 284512027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> > 284612027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_concref_r<T2,T3> b ) 284712027Sjungma@eit.uni-kl.de{ 284812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 284912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 285012027Sjungma@eit.uni-kl.de} 285112027Sjungma@eit.uni-kl.de 285212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 285312027Sjungma@eit.uni-kl.deinline 285412027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 285512027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, const sc_proxy<T2>& b ) 285612027Sjungma@eit.uni-kl.de{ 285712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,T2>( 285812027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 285912027Sjungma@eit.uni-kl.de} 286012027Sjungma@eit.uni-kl.de 286112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 286212027Sjungma@eit.uni-kl.deinline 286312027Sjungma@eit.uni-kl.desc_concref_r<sc_subref_r<T1>,T2> 286412027Sjungma@eit.uni-kl.deconcat( sc_subref_r<T1> a, sc_proxy<T2>& b ) 286512027Sjungma@eit.uni-kl.de{ 286612027Sjungma@eit.uni-kl.de return sc_concref_r<sc_subref_r<T1>,T2>( 286712027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 286812027Sjungma@eit.uni-kl.de} 286912027Sjungma@eit.uni-kl.de 287012027Sjungma@eit.uni-kl.de#endif 287112027Sjungma@eit.uni-kl.de 287212027Sjungma@eit.uni-kl.de 287312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 287412027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_subref<X> 287512027Sjungma@eit.uni-kl.de// 287612027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy part selection (r-value and l-value). 287712027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 287812027Sjungma@eit.uni-kl.de 287912027Sjungma@eit.uni-kl.de// assignment operators 288012027Sjungma@eit.uni-kl.de 288112027Sjungma@eit.uni-kl.de// sc_subref<X>::operator = ( const sc_subref_r<X>& ) in sc_lv_base.h 288212027Sjungma@eit.uni-kl.de// sc_subref<X>::operator = ( const sc_subref<X>& ) in sc_lv_base.h 288312027Sjungma@eit.uni-kl.de 288412027Sjungma@eit.uni-kl.de 288512027Sjungma@eit.uni-kl.de// other methods 288612027Sjungma@eit.uni-kl.de 288712027Sjungma@eit.uni-kl.detemplate <class T> 288812027Sjungma@eit.uni-kl.deinline 288912027Sjungma@eit.uni-kl.devoid 289012027Sjungma@eit.uni-kl.desc_subref<T>::scan( ::std::istream& is ) 289112027Sjungma@eit.uni-kl.de{ 289212027Sjungma@eit.uni-kl.de std::string s; 289312027Sjungma@eit.uni-kl.de is >> s; 289412027Sjungma@eit.uni-kl.de *this = s.c_str(); 289512027Sjungma@eit.uni-kl.de} 289612027Sjungma@eit.uni-kl.de 289712027Sjungma@eit.uni-kl.de 289812027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 289912027Sjungma@eit.uni-kl.de 290012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 290112027Sjungma@eit.uni-kl.deinline 290212027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_bitref<T2> > 290312027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_bitref<T2> b ) 290412027Sjungma@eit.uni-kl.de{ 290512027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,sc_bitref<T2> >( 290612027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 290712027Sjungma@eit.uni-kl.de} 290812027Sjungma@eit.uni-kl.de 290912027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 291012027Sjungma@eit.uni-kl.deinline 291112027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_subref<T2> > 291212027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_subref<T2> b ) 291312027Sjungma@eit.uni-kl.de{ 291412027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,sc_subref<T2> >( 291512027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 291612027Sjungma@eit.uni-kl.de} 291712027Sjungma@eit.uni-kl.de 291812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 291912027Sjungma@eit.uni-kl.deinline 292012027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_concref<T2,T3> > 292112027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_concref<T2,T3> b ) 292212027Sjungma@eit.uni-kl.de{ 292312027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,sc_concref<T2,T3> >( 292412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 292512027Sjungma@eit.uni-kl.de} 292612027Sjungma@eit.uni-kl.de 292712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 292812027Sjungma@eit.uni-kl.deinline 292912027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,T2> 293012027Sjungma@eit.uni-kl.deoperator , ( sc_subref<T1> a, sc_proxy<T2>& b ) 293112027Sjungma@eit.uni-kl.de{ 293212027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,T2>( 293312027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 293412027Sjungma@eit.uni-kl.de} 293512027Sjungma@eit.uni-kl.de 293612027Sjungma@eit.uni-kl.de 293712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 293812027Sjungma@eit.uni-kl.deinline 293912027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_bitref<T2> > 294012027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_bitref<T2> b ) 294112027Sjungma@eit.uni-kl.de{ 294212027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,sc_bitref<T2> >( 294312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 294412027Sjungma@eit.uni-kl.de} 294512027Sjungma@eit.uni-kl.de 294612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 294712027Sjungma@eit.uni-kl.deinline 294812027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_subref<T2> > 294912027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_subref<T2> b ) 295012027Sjungma@eit.uni-kl.de{ 295112027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,sc_subref<T2> >( 295212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 295312027Sjungma@eit.uni-kl.de} 295412027Sjungma@eit.uni-kl.de 295512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 295612027Sjungma@eit.uni-kl.deinline 295712027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,sc_concref<T2,T3> > 295812027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_concref<T2,T3> b ) 295912027Sjungma@eit.uni-kl.de{ 296012027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,sc_concref<T2,T3> >( 296112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 296212027Sjungma@eit.uni-kl.de} 296312027Sjungma@eit.uni-kl.de 296412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 296512027Sjungma@eit.uni-kl.deinline 296612027Sjungma@eit.uni-kl.desc_concref<sc_subref<T1>,T2> 296712027Sjungma@eit.uni-kl.deconcat( sc_subref<T1> a, sc_proxy<T2>& b ) 296812027Sjungma@eit.uni-kl.de{ 296912027Sjungma@eit.uni-kl.de return sc_concref<sc_subref<T1>,T2>( 297012027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 297112027Sjungma@eit.uni-kl.de} 297212027Sjungma@eit.uni-kl.de 297312027Sjungma@eit.uni-kl.de 297412027Sjungma@eit.uni-kl.detemplate <class X> 297512027Sjungma@eit.uni-kl.deinline 297612027Sjungma@eit.uni-kl.de::std::istream& 297712027Sjungma@eit.uni-kl.deoperator >> ( ::std::istream& is, sc_subref<X> a ) 297812027Sjungma@eit.uni-kl.de{ 297912027Sjungma@eit.uni-kl.de a.scan( is ); 298012027Sjungma@eit.uni-kl.de return is; 298112027Sjungma@eit.uni-kl.de} 298212027Sjungma@eit.uni-kl.de 298312027Sjungma@eit.uni-kl.de 298412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 298512027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_concref_r<X,Y> 298612027Sjungma@eit.uni-kl.de// 298712027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy concatenation (r-value only). 298812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 298912027Sjungma@eit.uni-kl.de 299012027Sjungma@eit.uni-kl.de// destructor 299112027Sjungma@eit.uni-kl.de 299212027Sjungma@eit.uni-kl.detemplate <class X, class Y> 299312027Sjungma@eit.uni-kl.deinline 299412027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::~sc_concref_r() 299512027Sjungma@eit.uni-kl.de{ 299612027Sjungma@eit.uni-kl.de if( -- m_refs == 0 ) { 299712027Sjungma@eit.uni-kl.de delete &m_refs; 299812027Sjungma@eit.uni-kl.de if( m_delete == 0 ) { 299912027Sjungma@eit.uni-kl.de return; 300012027Sjungma@eit.uni-kl.de } 300112027Sjungma@eit.uni-kl.de if( m_delete & 1 ) { 300212027Sjungma@eit.uni-kl.de delete &m_left; 300312027Sjungma@eit.uni-kl.de } 300412027Sjungma@eit.uni-kl.de if( m_delete & 2 ) { 300512027Sjungma@eit.uni-kl.de delete &m_right; 300612027Sjungma@eit.uni-kl.de } 300712027Sjungma@eit.uni-kl.de } 300812027Sjungma@eit.uni-kl.de} 300912027Sjungma@eit.uni-kl.de 301012027Sjungma@eit.uni-kl.de 301112027Sjungma@eit.uni-kl.de// common methods 301212027Sjungma@eit.uni-kl.de 301312027Sjungma@eit.uni-kl.detemplate <class X, class Y> 301412027Sjungma@eit.uni-kl.deinline 301512027Sjungma@eit.uni-kl.desc_logic_value_t 301612027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::get_bit( int n ) const 301712027Sjungma@eit.uni-kl.de{ 301812027Sjungma@eit.uni-kl.de int r_len = m_right.length(); 301912027Sjungma@eit.uni-kl.de if( n < r_len ) { 302012027Sjungma@eit.uni-kl.de return m_right.get_bit( n ); 302112027Sjungma@eit.uni-kl.de } else if( n < r_len + m_left.length() ) { 302212027Sjungma@eit.uni-kl.de return m_left.get_bit( n - r_len ); 302312027Sjungma@eit.uni-kl.de } else { 302412027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 302512027Sjungma@eit.uni-kl.de // never reached 302612027Sjungma@eit.uni-kl.de return Log_0; 302712027Sjungma@eit.uni-kl.de } 302812027Sjungma@eit.uni-kl.de} 302912027Sjungma@eit.uni-kl.de 303012027Sjungma@eit.uni-kl.detemplate <class X, class Y> 303112027Sjungma@eit.uni-kl.deinline 303212027Sjungma@eit.uni-kl.devoid 303312027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::set_bit( int n, sc_logic_value_t v ) 303412027Sjungma@eit.uni-kl.de{ 303512027Sjungma@eit.uni-kl.de int r_len = m_right.length(); 303612027Sjungma@eit.uni-kl.de if( n < r_len ) { 303712027Sjungma@eit.uni-kl.de m_right.set_bit( n, v ); 303812027Sjungma@eit.uni-kl.de } else if( n < r_len + m_left.length() ) { 303912027Sjungma@eit.uni-kl.de m_left.set_bit( n - r_len, v ); 304012027Sjungma@eit.uni-kl.de } else { 304112027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 304212027Sjungma@eit.uni-kl.de } 304312027Sjungma@eit.uni-kl.de} 304412027Sjungma@eit.uni-kl.de 304512027Sjungma@eit.uni-kl.de 304612027Sjungma@eit.uni-kl.detemplate <class X, class Y> 304712027Sjungma@eit.uni-kl.deinline 304812027Sjungma@eit.uni-kl.desc_digit 304912027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::get_word( int i ) const 305012027Sjungma@eit.uni-kl.de{ 305112027Sjungma@eit.uni-kl.de if( i < 0 || i >= size() ) { 305212027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 305312027Sjungma@eit.uni-kl.de } 305412027Sjungma@eit.uni-kl.de // 0 <= i < size() 305512027Sjungma@eit.uni-kl.de Y& r = m_right; 305612027Sjungma@eit.uni-kl.de int r_len = r.length(); 305712027Sjungma@eit.uni-kl.de int border = r_len / SC_DIGIT_SIZE; 305812027Sjungma@eit.uni-kl.de if( i < border ) { 305912027Sjungma@eit.uni-kl.de return r.get_word( i ); 306012027Sjungma@eit.uni-kl.de } 306112027Sjungma@eit.uni-kl.de // border <= i < size() 306212027Sjungma@eit.uni-kl.de X& l = m_left; 306312027Sjungma@eit.uni-kl.de int shift = r_len % SC_DIGIT_SIZE; 306412027Sjungma@eit.uni-kl.de int j = i - border; 306512027Sjungma@eit.uni-kl.de if( shift == 0 ) { 306612027Sjungma@eit.uni-kl.de return l.get_word( j ); 306712027Sjungma@eit.uni-kl.de } 306812027Sjungma@eit.uni-kl.de // border <= i < size() && shift != 0 306912027Sjungma@eit.uni-kl.de int nshift = SC_DIGIT_SIZE - shift; 307012027Sjungma@eit.uni-kl.de if( i == border ) { 307112027Sjungma@eit.uni-kl.de sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift; 307212027Sjungma@eit.uni-kl.de return ( (r.get_word( i ) & rl_mask) | (l.get_word( 0 ) << shift) ); 307312027Sjungma@eit.uni-kl.de } 307412027Sjungma@eit.uni-kl.de // border < i < size() && shift != 0 307512027Sjungma@eit.uni-kl.de if ( j < l.size() ) 307612027Sjungma@eit.uni-kl.de return ( (l.get_word( j - 1 ) >> nshift) | (l.get_word( j ) << shift) ); 307712027Sjungma@eit.uni-kl.de else 307812027Sjungma@eit.uni-kl.de return (l.get_word( j - 1 ) >> nshift); 307912027Sjungma@eit.uni-kl.de} 308012027Sjungma@eit.uni-kl.de 308112027Sjungma@eit.uni-kl.detemplate <class X, class Y> 308212027Sjungma@eit.uni-kl.deinline 308312027Sjungma@eit.uni-kl.devoid 308412027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::set_word( int i, sc_digit w ) 308512027Sjungma@eit.uni-kl.de{ 308612027Sjungma@eit.uni-kl.de if( i < 0 || i >= size() ) { 308712027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 308812027Sjungma@eit.uni-kl.de } 308912027Sjungma@eit.uni-kl.de // 0 <= i < size() 309012027Sjungma@eit.uni-kl.de Y& r = m_right; 309112027Sjungma@eit.uni-kl.de int r_len = r.length(); 309212027Sjungma@eit.uni-kl.de int border = r_len / SC_DIGIT_SIZE; 309312027Sjungma@eit.uni-kl.de if( i < border ) { 309412027Sjungma@eit.uni-kl.de r.set_word( i, w ); 309512027Sjungma@eit.uni-kl.de return; 309612027Sjungma@eit.uni-kl.de } 309712027Sjungma@eit.uni-kl.de // border <= i < size() 309812027Sjungma@eit.uni-kl.de X& l = m_left; 309912027Sjungma@eit.uni-kl.de int shift = r_len % SC_DIGIT_SIZE; 310012027Sjungma@eit.uni-kl.de int j = i - border; 310112027Sjungma@eit.uni-kl.de if( shift == 0 ) { 310212027Sjungma@eit.uni-kl.de l.set_word( j, w ); 310312027Sjungma@eit.uni-kl.de return; 310412027Sjungma@eit.uni-kl.de } 310512027Sjungma@eit.uni-kl.de // border <= i < size() && shift != 0 310612027Sjungma@eit.uni-kl.de int nshift = SC_DIGIT_SIZE - shift; 310712027Sjungma@eit.uni-kl.de sc_digit lh_mask = ~SC_DIGIT_ZERO << nshift; 310812027Sjungma@eit.uni-kl.de if( i == border ) { 310912027Sjungma@eit.uni-kl.de sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift; 311012027Sjungma@eit.uni-kl.de r.set_word( i, w & rl_mask ); 311112027Sjungma@eit.uni-kl.de l.set_word( 0, (l.get_word( 0 ) & lh_mask) | (w >> shift) ); 311212027Sjungma@eit.uni-kl.de return; 311312027Sjungma@eit.uni-kl.de } 311412027Sjungma@eit.uni-kl.de // border < i < size() && shift != 0 311512027Sjungma@eit.uni-kl.de sc_digit ll_mask = ~SC_DIGIT_ZERO >> shift; 311612027Sjungma@eit.uni-kl.de l.set_word( j - 1, (l.get_word( j - 1 ) & ll_mask) | (w << nshift) ); 311712027Sjungma@eit.uni-kl.de if ( j < l.size() ) 311812027Sjungma@eit.uni-kl.de l.set_word( j, (l.get_word( j ) & lh_mask) | (w >> shift) ); 311912027Sjungma@eit.uni-kl.de} 312012027Sjungma@eit.uni-kl.de 312112027Sjungma@eit.uni-kl.de 312212027Sjungma@eit.uni-kl.detemplate <class X, class Y> 312312027Sjungma@eit.uni-kl.deinline 312412027Sjungma@eit.uni-kl.desc_digit 312512027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::get_cword( int i ) const 312612027Sjungma@eit.uni-kl.de{ 312712027Sjungma@eit.uni-kl.de if( i < 0 || i >= size() ) { 312812027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 312912027Sjungma@eit.uni-kl.de } 313012027Sjungma@eit.uni-kl.de // 0 <= i < size() 313112027Sjungma@eit.uni-kl.de Y& r = m_right; 313212027Sjungma@eit.uni-kl.de int r_len = r.length(); 313312027Sjungma@eit.uni-kl.de int border = r_len / SC_DIGIT_SIZE; 313412027Sjungma@eit.uni-kl.de if( i < border ) { 313512027Sjungma@eit.uni-kl.de return r.get_cword( i ); 313612027Sjungma@eit.uni-kl.de } 313712027Sjungma@eit.uni-kl.de // border <= i < size() 313812027Sjungma@eit.uni-kl.de X& l = m_left; 313912027Sjungma@eit.uni-kl.de int shift = r_len % SC_DIGIT_SIZE; 314012027Sjungma@eit.uni-kl.de int j = i - border; 314112027Sjungma@eit.uni-kl.de if( shift == 0 ) { 314212027Sjungma@eit.uni-kl.de return l.get_cword( j ); 314312027Sjungma@eit.uni-kl.de } 314412027Sjungma@eit.uni-kl.de // border <= i < size() && shift != 0 314512027Sjungma@eit.uni-kl.de int nshift = SC_DIGIT_SIZE - shift; 314612027Sjungma@eit.uni-kl.de if( i == border ) { 314712027Sjungma@eit.uni-kl.de sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift; 314812027Sjungma@eit.uni-kl.de return ( (r.get_cword( i ) & rl_mask) | (l.get_cword( 0 ) << shift) ); 314912027Sjungma@eit.uni-kl.de } 315012027Sjungma@eit.uni-kl.de // border < i < size() && shift != 0 315112027Sjungma@eit.uni-kl.de if ( j < l.size() ) 315212027Sjungma@eit.uni-kl.de return ( (l.get_cword(j - 1) >> nshift) | (l.get_cword(j) << shift) ); 315312027Sjungma@eit.uni-kl.de else 315412027Sjungma@eit.uni-kl.de return (l.get_cword( j - 1 ) >> nshift); 315512027Sjungma@eit.uni-kl.de} 315612027Sjungma@eit.uni-kl.de 315712027Sjungma@eit.uni-kl.detemplate <class X, class Y> 315812027Sjungma@eit.uni-kl.deinline 315912027Sjungma@eit.uni-kl.devoid 316012027Sjungma@eit.uni-kl.desc_concref_r<X,Y>::set_cword( int i, sc_digit w ) 316112027Sjungma@eit.uni-kl.de{ 316212027Sjungma@eit.uni-kl.de if( i < 0 || i >= size() ) { 316312027Sjungma@eit.uni-kl.de SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, 0 ); 316412027Sjungma@eit.uni-kl.de } 316512027Sjungma@eit.uni-kl.de // 0 <= i < size() 316612027Sjungma@eit.uni-kl.de Y& r = m_right; 316712027Sjungma@eit.uni-kl.de int r_len = r.length(); 316812027Sjungma@eit.uni-kl.de int border = r_len / SC_DIGIT_SIZE; 316912027Sjungma@eit.uni-kl.de if( i < border ) { 317012027Sjungma@eit.uni-kl.de r.set_cword( i, w ); 317112027Sjungma@eit.uni-kl.de return; 317212027Sjungma@eit.uni-kl.de } 317312027Sjungma@eit.uni-kl.de // border <= i < size() 317412027Sjungma@eit.uni-kl.de X& l = m_left; 317512027Sjungma@eit.uni-kl.de int shift = r_len % SC_DIGIT_SIZE; 317612027Sjungma@eit.uni-kl.de int j = i - border; 317712027Sjungma@eit.uni-kl.de if( shift == 0 ) { 317812027Sjungma@eit.uni-kl.de l.set_cword( j, w ); 317912027Sjungma@eit.uni-kl.de return; 318012027Sjungma@eit.uni-kl.de } 318112027Sjungma@eit.uni-kl.de // border <= i < size() && shift != 0 318212027Sjungma@eit.uni-kl.de int nshift = SC_DIGIT_SIZE - shift; 318312027Sjungma@eit.uni-kl.de sc_digit lh_mask = ~SC_DIGIT_ZERO << nshift; 318412027Sjungma@eit.uni-kl.de if( i == border ) { 318512027Sjungma@eit.uni-kl.de sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift; 318612027Sjungma@eit.uni-kl.de r.set_cword( i, w & rl_mask ); 318712027Sjungma@eit.uni-kl.de l.set_cword( 0, (l.get_cword( 0 ) & lh_mask) | (w >> shift) ); 318812027Sjungma@eit.uni-kl.de return; 318912027Sjungma@eit.uni-kl.de } 319012027Sjungma@eit.uni-kl.de // border < i < size() && shift != 0 319112027Sjungma@eit.uni-kl.de sc_digit ll_mask = ~SC_DIGIT_ZERO >> shift; 319212027Sjungma@eit.uni-kl.de l.set_cword( j - 1, (l.get_cword( j - 1 ) & ll_mask) | (w << nshift) ); 319312027Sjungma@eit.uni-kl.de if ( j < l.size() ) 319412027Sjungma@eit.uni-kl.de l.set_cword( j, (l.get_cword( j ) & lh_mask) | (w >> shift) ); 319512027Sjungma@eit.uni-kl.de} 319612027Sjungma@eit.uni-kl.de 319712027Sjungma@eit.uni-kl.de 319812027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 319912027Sjungma@eit.uni-kl.de 320012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 320112027Sjungma@eit.uni-kl.deinline 320212027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 320312027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_bitref_r<T3> b ) 320412027Sjungma@eit.uni-kl.de{ 320512027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 320612027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 320712027Sjungma@eit.uni-kl.de} 320812027Sjungma@eit.uni-kl.de 320912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 321012027Sjungma@eit.uni-kl.deinline 321112027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 321212027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_subref_r<T3> b ) 321312027Sjungma@eit.uni-kl.de{ 321412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 321512027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 321612027Sjungma@eit.uni-kl.de} 321712027Sjungma@eit.uni-kl.de 321812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 321912027Sjungma@eit.uni-kl.deinline 322012027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 322112027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_concref_r<T3,T4> b ) 322212027Sjungma@eit.uni-kl.de{ 322312027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 322412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 322512027Sjungma@eit.uni-kl.de} 322612027Sjungma@eit.uni-kl.de 322712027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 322812027Sjungma@eit.uni-kl.deinline 322912027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 323012027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, const sc_proxy<T3>& b ) 323112027Sjungma@eit.uni-kl.de{ 323212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,T3>( 323312027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 323412027Sjungma@eit.uni-kl.de} 323512027Sjungma@eit.uni-kl.de 323612027Sjungma@eit.uni-kl.de 323712027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 323812027Sjungma@eit.uni-kl.deinline 323912027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 324012027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_bitref_r<T3> b ) 324112027Sjungma@eit.uni-kl.de{ 324212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 324312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 324412027Sjungma@eit.uni-kl.de} 324512027Sjungma@eit.uni-kl.de 324612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 324712027Sjungma@eit.uni-kl.deinline 324812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 324912027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_subref_r<T3> b ) 325012027Sjungma@eit.uni-kl.de{ 325112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 325212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 325312027Sjungma@eit.uni-kl.de} 325412027Sjungma@eit.uni-kl.de 325512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 325612027Sjungma@eit.uni-kl.deinline 325712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 325812027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_concref_r<T3,T4> b ) 325912027Sjungma@eit.uni-kl.de{ 326012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 326112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 326212027Sjungma@eit.uni-kl.de} 326312027Sjungma@eit.uni-kl.de 326412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 326512027Sjungma@eit.uni-kl.deinline 326612027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 326712027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, const sc_proxy<T3>& b ) 326812027Sjungma@eit.uni-kl.de{ 326912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,T3>( 327012027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 327112027Sjungma@eit.uni-kl.de} 327212027Sjungma@eit.uni-kl.de 327312027Sjungma@eit.uni-kl.de 327412027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 327512027Sjungma@eit.uni-kl.de 327612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 327712027Sjungma@eit.uni-kl.deinline 327812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 327912027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_bitref<T3> b ) 328012027Sjungma@eit.uni-kl.de{ 328112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 328212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 328312027Sjungma@eit.uni-kl.de} 328412027Sjungma@eit.uni-kl.de 328512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 328612027Sjungma@eit.uni-kl.deinline 328712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 328812027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_bitref_r<T3> b ) 328912027Sjungma@eit.uni-kl.de{ 329012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 329112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 329212027Sjungma@eit.uni-kl.de} 329312027Sjungma@eit.uni-kl.de 329412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 329512027Sjungma@eit.uni-kl.deinline 329612027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 329712027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_subref<T3> b ) 329812027Sjungma@eit.uni-kl.de{ 329912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 330012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 330112027Sjungma@eit.uni-kl.de} 330212027Sjungma@eit.uni-kl.de 330312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 330412027Sjungma@eit.uni-kl.deinline 330512027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 330612027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_subref_r<T3> b ) 330712027Sjungma@eit.uni-kl.de{ 330812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 330912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 331012027Sjungma@eit.uni-kl.de} 331112027Sjungma@eit.uni-kl.de 331212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 331312027Sjungma@eit.uni-kl.deinline 331412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 331512027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_concref<T3,T4> b ) 331612027Sjungma@eit.uni-kl.de{ 331712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 331812027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 331912027Sjungma@eit.uni-kl.de} 332012027Sjungma@eit.uni-kl.de 332112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 332212027Sjungma@eit.uni-kl.deinline 332312027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 332412027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_concref_r<T3,T4> b ) 332512027Sjungma@eit.uni-kl.de{ 332612027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 332712027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 332812027Sjungma@eit.uni-kl.de} 332912027Sjungma@eit.uni-kl.de 333012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 333112027Sjungma@eit.uni-kl.deinline 333212027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 333312027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, const sc_proxy<T3>& b ) 333412027Sjungma@eit.uni-kl.de{ 333512027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,T3>( 333612027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 333712027Sjungma@eit.uni-kl.de} 333812027Sjungma@eit.uni-kl.de 333912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 334012027Sjungma@eit.uni-kl.deinline 334112027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 334212027Sjungma@eit.uni-kl.deoperator , ( sc_concref_r<T1,T2> a, sc_proxy<T3>& b ) 334312027Sjungma@eit.uni-kl.de{ 334412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,T3>( 334512027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 334612027Sjungma@eit.uni-kl.de} 334712027Sjungma@eit.uni-kl.de 334812027Sjungma@eit.uni-kl.de 334912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 335012027Sjungma@eit.uni-kl.deinline 335112027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 335212027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_bitref<T3> b ) 335312027Sjungma@eit.uni-kl.de{ 335412027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 335512027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 335612027Sjungma@eit.uni-kl.de} 335712027Sjungma@eit.uni-kl.de 335812027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 335912027Sjungma@eit.uni-kl.deinline 336012027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> > 336112027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_bitref_r<T3> b ) 336212027Sjungma@eit.uni-kl.de{ 336312027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 336412027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 336512027Sjungma@eit.uni-kl.de} 336612027Sjungma@eit.uni-kl.de 336712027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 336812027Sjungma@eit.uni-kl.deinline 336912027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 337012027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_subref<T3> b ) 337112027Sjungma@eit.uni-kl.de{ 337212027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 337312027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 337412027Sjungma@eit.uni-kl.de} 337512027Sjungma@eit.uni-kl.de 337612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 337712027Sjungma@eit.uni-kl.deinline 337812027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> > 337912027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_subref_r<T3> b ) 338012027Sjungma@eit.uni-kl.de{ 338112027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 338212027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 338312027Sjungma@eit.uni-kl.de} 338412027Sjungma@eit.uni-kl.de 338512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 338612027Sjungma@eit.uni-kl.deinline 338712027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 338812027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_concref<T3,T4> b ) 338912027Sjungma@eit.uni-kl.de{ 339012027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 339112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 339212027Sjungma@eit.uni-kl.de} 339312027Sjungma@eit.uni-kl.de 339412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 339512027Sjungma@eit.uni-kl.deinline 339612027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> > 339712027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_concref_r<T3,T4> b ) 339812027Sjungma@eit.uni-kl.de{ 339912027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 340012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 340112027Sjungma@eit.uni-kl.de} 340212027Sjungma@eit.uni-kl.de 340312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 340412027Sjungma@eit.uni-kl.deinline 340512027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 340612027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, const sc_proxy<T3>& b ) 340712027Sjungma@eit.uni-kl.de{ 340812027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,T3>( 340912027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 341012027Sjungma@eit.uni-kl.de} 341112027Sjungma@eit.uni-kl.de 341212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 341312027Sjungma@eit.uni-kl.deinline 341412027Sjungma@eit.uni-kl.desc_concref_r<sc_concref_r<T1,T2>,T3> 341512027Sjungma@eit.uni-kl.deconcat( sc_concref_r<T1,T2> a, sc_proxy<T3>& b ) 341612027Sjungma@eit.uni-kl.de{ 341712027Sjungma@eit.uni-kl.de return sc_concref_r<sc_concref_r<T1,T2>,T3>( 341812027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 341912027Sjungma@eit.uni-kl.de} 342012027Sjungma@eit.uni-kl.de 342112027Sjungma@eit.uni-kl.de#endif 342212027Sjungma@eit.uni-kl.de 342312027Sjungma@eit.uni-kl.de 342412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 342512027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_concref<X,Y> 342612027Sjungma@eit.uni-kl.de// 342712027Sjungma@eit.uni-kl.de// Proxy class for sc_proxy concatenation (r-value and l-value). 342812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 342912027Sjungma@eit.uni-kl.de 343012027Sjungma@eit.uni-kl.de// other methods 343112027Sjungma@eit.uni-kl.de 343212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 343312027Sjungma@eit.uni-kl.deinline 343412027Sjungma@eit.uni-kl.devoid 343512027Sjungma@eit.uni-kl.desc_concref<T1,T2>::scan( ::std::istream& is ) 343612027Sjungma@eit.uni-kl.de{ 343712027Sjungma@eit.uni-kl.de std::string s; 343812027Sjungma@eit.uni-kl.de is >> s; 343912027Sjungma@eit.uni-kl.de *this = s.c_str(); 344012027Sjungma@eit.uni-kl.de} 344112027Sjungma@eit.uni-kl.de 344212027Sjungma@eit.uni-kl.de 344312027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 344412027Sjungma@eit.uni-kl.de 344512027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 344612027Sjungma@eit.uni-kl.deinline 344712027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_bitref<T3> > 344812027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_bitref<T3> b ) 344912027Sjungma@eit.uni-kl.de{ 345012027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,sc_bitref<T3> >( 345112027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 345212027Sjungma@eit.uni-kl.de} 345312027Sjungma@eit.uni-kl.de 345412027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 345512027Sjungma@eit.uni-kl.deinline 345612027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_subref<T3> > 345712027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_subref<T3> b ) 345812027Sjungma@eit.uni-kl.de{ 345912027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,sc_subref<T3> >( 346012027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 346112027Sjungma@eit.uni-kl.de} 346212027Sjungma@eit.uni-kl.de 346312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 346412027Sjungma@eit.uni-kl.deinline 346512027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> > 346612027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_concref<T3,T4> b ) 346712027Sjungma@eit.uni-kl.de{ 346812027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> >( 346912027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 347012027Sjungma@eit.uni-kl.de} 347112027Sjungma@eit.uni-kl.de 347212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 347312027Sjungma@eit.uni-kl.deinline 347412027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,T3> 347512027Sjungma@eit.uni-kl.deoperator , ( sc_concref<T1,T2> a, sc_proxy<T3>& b ) 347612027Sjungma@eit.uni-kl.de{ 347712027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,T3>( 347812027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 347912027Sjungma@eit.uni-kl.de} 348012027Sjungma@eit.uni-kl.de 348112027Sjungma@eit.uni-kl.de 348212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 348312027Sjungma@eit.uni-kl.deinline 348412027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_bitref<T3> > 348512027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_bitref<T3> b ) 348612027Sjungma@eit.uni-kl.de{ 348712027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,sc_bitref<T3> >( 348812027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 348912027Sjungma@eit.uni-kl.de} 349012027Sjungma@eit.uni-kl.de 349112027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 349212027Sjungma@eit.uni-kl.deinline 349312027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_subref<T3> > 349412027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_subref<T3> b ) 349512027Sjungma@eit.uni-kl.de{ 349612027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,sc_subref<T3> >( 349712027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 349812027Sjungma@eit.uni-kl.de} 349912027Sjungma@eit.uni-kl.de 350012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3, class T4> 350112027Sjungma@eit.uni-kl.deinline 350212027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> > 350312027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_concref<T3,T4> b ) 350412027Sjungma@eit.uni-kl.de{ 350512027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> >( 350612027Sjungma@eit.uni-kl.de *a.clone(), *b.clone(), 3 ); 350712027Sjungma@eit.uni-kl.de} 350812027Sjungma@eit.uni-kl.de 350912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 351012027Sjungma@eit.uni-kl.deinline 351112027Sjungma@eit.uni-kl.desc_concref<sc_concref<T1,T2>,T3> 351212027Sjungma@eit.uni-kl.deconcat( sc_concref<T1,T2> a, sc_proxy<T3>& b ) 351312027Sjungma@eit.uni-kl.de{ 351412027Sjungma@eit.uni-kl.de return sc_concref<sc_concref<T1,T2>,T3>( 351512027Sjungma@eit.uni-kl.de *a.clone(), b.back_cast(), 1 ); 351612027Sjungma@eit.uni-kl.de} 351712027Sjungma@eit.uni-kl.de 351812027Sjungma@eit.uni-kl.de 351912027Sjungma@eit.uni-kl.detemplate <class X, class Y> 352012027Sjungma@eit.uni-kl.deinline 352112027Sjungma@eit.uni-kl.de::std::istream& 352212027Sjungma@eit.uni-kl.deoperator >> ( ::std::istream& is, sc_concref<X,Y> a ) 352312027Sjungma@eit.uni-kl.de{ 352412027Sjungma@eit.uni-kl.de a.scan( is ); 352512027Sjungma@eit.uni-kl.de return is; 352612027Sjungma@eit.uni-kl.de} 352712027Sjungma@eit.uni-kl.de 352812027Sjungma@eit.uni-kl.de 352912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 353012027Sjungma@eit.uni-kl.de// CLASS TEMPLATE : sc_proxy<T> 353112027Sjungma@eit.uni-kl.de// 353212027Sjungma@eit.uni-kl.de// Base class template for bit/logic vector classes. 353312027Sjungma@eit.uni-kl.de// (Barton/Nackmann implementation) 353412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 353512027Sjungma@eit.uni-kl.de 353612027Sjungma@eit.uni-kl.de// r-value concatenation operators and functions 353712027Sjungma@eit.uni-kl.de 353812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 353912027Sjungma@eit.uni-kl.deinline 354012027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 354112027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_bitref_r<T2> b ) 354212027Sjungma@eit.uni-kl.de{ 354312027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_bitref_r<T2> >( 354412027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 354512027Sjungma@eit.uni-kl.de} 354612027Sjungma@eit.uni-kl.de 354712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 354812027Sjungma@eit.uni-kl.deinline 354912027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 355012027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_subref_r<T2> b ) 355112027Sjungma@eit.uni-kl.de{ 355212027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_subref_r<T2> >( 355312027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 355412027Sjungma@eit.uni-kl.de} 355512027Sjungma@eit.uni-kl.de 355612027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 355712027Sjungma@eit.uni-kl.deinline 355812027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 355912027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_concref_r<T2,T3> b ) 356012027Sjungma@eit.uni-kl.de{ 356112027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_concref_r<T2,T3> >( 356212027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 356312027Sjungma@eit.uni-kl.de} 356412027Sjungma@eit.uni-kl.de 356512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 356612027Sjungma@eit.uni-kl.deinline 356712027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 356812027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, const sc_proxy<T2>& b ) 356912027Sjungma@eit.uni-kl.de{ 357012027Sjungma@eit.uni-kl.de return sc_concref_r<T1,T2>( 357112027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 357212027Sjungma@eit.uni-kl.de} 357312027Sjungma@eit.uni-kl.de 357412027Sjungma@eit.uni-kl.de 357512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 357612027Sjungma@eit.uni-kl.deinline 357712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 357812027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_bitref_r<T2> b ) 357912027Sjungma@eit.uni-kl.de{ 358012027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_bitref_r<T2> >( 358112027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 358212027Sjungma@eit.uni-kl.de} 358312027Sjungma@eit.uni-kl.de 358412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 358512027Sjungma@eit.uni-kl.deinline 358612027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 358712027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_subref_r<T2> b ) 358812027Sjungma@eit.uni-kl.de{ 358912027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_subref_r<T2> >( 359012027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 359112027Sjungma@eit.uni-kl.de} 359212027Sjungma@eit.uni-kl.de 359312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 359412027Sjungma@eit.uni-kl.deinline 359512027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 359612027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_concref_r<T2,T3> b ) 359712027Sjungma@eit.uni-kl.de{ 359812027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_concref_r<T2,T3> >( 359912027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 360012027Sjungma@eit.uni-kl.de} 360112027Sjungma@eit.uni-kl.de 360212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 360312027Sjungma@eit.uni-kl.deinline 360412027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 360512027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, const sc_proxy<T2>& b ) 360612027Sjungma@eit.uni-kl.de{ 360712027Sjungma@eit.uni-kl.de return sc_concref_r<T1,T2>( 360812027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 360912027Sjungma@eit.uni-kl.de} 361012027Sjungma@eit.uni-kl.de 361112027Sjungma@eit.uni-kl.de 361212027Sjungma@eit.uni-kl.de#ifdef SC_DT_MIXED_COMMA_OPERATORS 361312027Sjungma@eit.uni-kl.de 361412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 361512027Sjungma@eit.uni-kl.deinline 361612027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 361712027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_bitref<T2> b ) 361812027Sjungma@eit.uni-kl.de{ 361912027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_bitref_r<T2> >( 362012027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 362112027Sjungma@eit.uni-kl.de} 362212027Sjungma@eit.uni-kl.de 362312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 362412027Sjungma@eit.uni-kl.deinline 362512027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 362612027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_bitref_r<T2> b ) 362712027Sjungma@eit.uni-kl.de{ 362812027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_bitref_r<T2> >( 362912027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 363012027Sjungma@eit.uni-kl.de} 363112027Sjungma@eit.uni-kl.de 363212027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 363312027Sjungma@eit.uni-kl.deinline 363412027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 363512027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_subref<T2> b ) 363612027Sjungma@eit.uni-kl.de{ 363712027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_subref_r<T2> >( 363812027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 363912027Sjungma@eit.uni-kl.de} 364012027Sjungma@eit.uni-kl.de 364112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 364212027Sjungma@eit.uni-kl.deinline 364312027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 364412027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_subref_r<T2> b ) 364512027Sjungma@eit.uni-kl.de{ 364612027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_subref_r<T2> >( 364712027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 364812027Sjungma@eit.uni-kl.de} 364912027Sjungma@eit.uni-kl.de 365012027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 365112027Sjungma@eit.uni-kl.deinline 365212027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 365312027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_concref<T2,T3> b ) 365412027Sjungma@eit.uni-kl.de{ 365512027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_concref_r<T2,T3> >( 365612027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 365712027Sjungma@eit.uni-kl.de} 365812027Sjungma@eit.uni-kl.de 365912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 366012027Sjungma@eit.uni-kl.deinline 366112027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 366212027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_concref_r<T2,T3> b ) 366312027Sjungma@eit.uni-kl.de{ 366412027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_concref_r<T2,T3> >( 366512027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 366612027Sjungma@eit.uni-kl.de} 366712027Sjungma@eit.uni-kl.de 366812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 366912027Sjungma@eit.uni-kl.deinline 367012027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 367112027Sjungma@eit.uni-kl.deoperator , ( const sc_proxy<T1>& a, sc_proxy<T2>& b ) 367212027Sjungma@eit.uni-kl.de{ 367312027Sjungma@eit.uni-kl.de return sc_concref_r<T1,T2>( 367412027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 367512027Sjungma@eit.uni-kl.de} 367612027Sjungma@eit.uni-kl.de 367712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 367812027Sjungma@eit.uni-kl.deinline 367912027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 368012027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, const sc_proxy<T2>& b ) 368112027Sjungma@eit.uni-kl.de{ 368212027Sjungma@eit.uni-kl.de return sc_concref_r<T1,T2>( 368312027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 368412027Sjungma@eit.uni-kl.de} 368512027Sjungma@eit.uni-kl.de 368612027Sjungma@eit.uni-kl.de 368712027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 368812027Sjungma@eit.uni-kl.deinline 368912027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 369012027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_bitref<T2> b ) 369112027Sjungma@eit.uni-kl.de{ 369212027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_bitref_r<T2> >( 369312027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 369412027Sjungma@eit.uni-kl.de} 369512027Sjungma@eit.uni-kl.de 369612027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 369712027Sjungma@eit.uni-kl.deinline 369812027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_bitref_r<T2> > 369912027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_bitref_r<T2> b ) 370012027Sjungma@eit.uni-kl.de{ 370112027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_bitref_r<T2> >( 370212027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 370312027Sjungma@eit.uni-kl.de} 370412027Sjungma@eit.uni-kl.de 370512027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 370612027Sjungma@eit.uni-kl.deinline 370712027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 370812027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_subref<T2> b ) 370912027Sjungma@eit.uni-kl.de{ 371012027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_subref_r<T2> >( 371112027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 371212027Sjungma@eit.uni-kl.de} 371312027Sjungma@eit.uni-kl.de 371412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 371512027Sjungma@eit.uni-kl.deinline 371612027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_subref_r<T2> > 371712027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_subref_r<T2> b ) 371812027Sjungma@eit.uni-kl.de{ 371912027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_subref_r<T2> >( 372012027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 372112027Sjungma@eit.uni-kl.de} 372212027Sjungma@eit.uni-kl.de 372312027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 372412027Sjungma@eit.uni-kl.deinline 372512027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 372612027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_concref<T2,T3> b ) 372712027Sjungma@eit.uni-kl.de{ 372812027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_concref_r<T2,T3> >( 372912027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 373012027Sjungma@eit.uni-kl.de} 373112027Sjungma@eit.uni-kl.de 373212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 373312027Sjungma@eit.uni-kl.deinline 373412027Sjungma@eit.uni-kl.desc_concref_r<T1,sc_concref_r<T2,T3> > 373512027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_concref_r<T2,T3> b ) 373612027Sjungma@eit.uni-kl.de{ 373712027Sjungma@eit.uni-kl.de return sc_concref_r<T1,sc_concref_r<T2,T3> >( 373812027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 373912027Sjungma@eit.uni-kl.de} 374012027Sjungma@eit.uni-kl.de 374112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 374212027Sjungma@eit.uni-kl.deinline 374312027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 374412027Sjungma@eit.uni-kl.deconcat( const sc_proxy<T1>& a, sc_proxy<T2>& b ) 374512027Sjungma@eit.uni-kl.de{ 374612027Sjungma@eit.uni-kl.de return sc_concref_r<T1,T2>( 374712027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 374812027Sjungma@eit.uni-kl.de} 374912027Sjungma@eit.uni-kl.de 375012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 375112027Sjungma@eit.uni-kl.deinline 375212027Sjungma@eit.uni-kl.desc_concref_r<T1,T2> 375312027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, const sc_proxy<T2>& b ) 375412027Sjungma@eit.uni-kl.de{ 375512027Sjungma@eit.uni-kl.de return sc_concref_r<T1,T2>( 375612027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 375712027Sjungma@eit.uni-kl.de} 375812027Sjungma@eit.uni-kl.de 375912027Sjungma@eit.uni-kl.de#endif 376012027Sjungma@eit.uni-kl.de 376112027Sjungma@eit.uni-kl.de 376212027Sjungma@eit.uni-kl.de// l-value concatenation operators and functions 376312027Sjungma@eit.uni-kl.de 376412027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 376512027Sjungma@eit.uni-kl.deinline 376612027Sjungma@eit.uni-kl.desc_concref<T1,sc_bitref<T2> > 376712027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_bitref<T2> b ) 376812027Sjungma@eit.uni-kl.de{ 376912027Sjungma@eit.uni-kl.de return sc_concref<T1,sc_bitref<T2> >( 377012027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 377112027Sjungma@eit.uni-kl.de} 377212027Sjungma@eit.uni-kl.de 377312027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 377412027Sjungma@eit.uni-kl.deinline 377512027Sjungma@eit.uni-kl.desc_concref<T1,sc_subref<T2> > 377612027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_subref<T2> b ) 377712027Sjungma@eit.uni-kl.de{ 377812027Sjungma@eit.uni-kl.de return sc_concref<T1,sc_subref<T2> >( 377912027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 378012027Sjungma@eit.uni-kl.de} 378112027Sjungma@eit.uni-kl.de 378212027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 378312027Sjungma@eit.uni-kl.deinline 378412027Sjungma@eit.uni-kl.desc_concref<T1,sc_concref<T2,T3> > 378512027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_concref<T2,T3> b ) 378612027Sjungma@eit.uni-kl.de{ 378712027Sjungma@eit.uni-kl.de return sc_concref<T1,sc_concref<T2,T3> >( 378812027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 378912027Sjungma@eit.uni-kl.de} 379012027Sjungma@eit.uni-kl.de 379112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 379212027Sjungma@eit.uni-kl.deinline 379312027Sjungma@eit.uni-kl.desc_concref<T1,T2> 379412027Sjungma@eit.uni-kl.deoperator , ( sc_proxy<T1>& a, sc_proxy<T2>& b ) 379512027Sjungma@eit.uni-kl.de{ 379612027Sjungma@eit.uni-kl.de return sc_concref<T1,T2>( 379712027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 379812027Sjungma@eit.uni-kl.de} 379912027Sjungma@eit.uni-kl.de 380012027Sjungma@eit.uni-kl.de 380112027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 380212027Sjungma@eit.uni-kl.deinline 380312027Sjungma@eit.uni-kl.desc_concref<T1,sc_bitref<T2> > 380412027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_bitref<T2> b ) 380512027Sjungma@eit.uni-kl.de{ 380612027Sjungma@eit.uni-kl.de return sc_concref<T1,sc_bitref<T2> >( 380712027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 380812027Sjungma@eit.uni-kl.de} 380912027Sjungma@eit.uni-kl.de 381012027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 381112027Sjungma@eit.uni-kl.deinline 381212027Sjungma@eit.uni-kl.desc_concref<T1,sc_subref<T2> > 381312027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_subref<T2> b ) 381412027Sjungma@eit.uni-kl.de{ 381512027Sjungma@eit.uni-kl.de return sc_concref<T1,sc_subref<T2> >( 381612027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 381712027Sjungma@eit.uni-kl.de} 381812027Sjungma@eit.uni-kl.de 381912027Sjungma@eit.uni-kl.detemplate <class T1, class T2, class T3> 382012027Sjungma@eit.uni-kl.deinline 382112027Sjungma@eit.uni-kl.desc_concref<T1,sc_concref<T2,T3> > 382212027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_concref<T2,T3> b ) 382312027Sjungma@eit.uni-kl.de{ 382412027Sjungma@eit.uni-kl.de return sc_concref<T1,sc_concref<T2,T3> >( 382512027Sjungma@eit.uni-kl.de a.back_cast(), *b.clone(), 2 ); 382612027Sjungma@eit.uni-kl.de} 382712027Sjungma@eit.uni-kl.de 382812027Sjungma@eit.uni-kl.detemplate <class T1, class T2> 382912027Sjungma@eit.uni-kl.deinline 383012027Sjungma@eit.uni-kl.desc_concref<T1,T2> 383112027Sjungma@eit.uni-kl.deconcat( sc_proxy<T1>& a, sc_proxy<T2>& b ) 383212027Sjungma@eit.uni-kl.de{ 383312027Sjungma@eit.uni-kl.de return sc_concref<T1,T2>( 383412027Sjungma@eit.uni-kl.de a.back_cast(), b.back_cast() ); 383512027Sjungma@eit.uni-kl.de} 383612027Sjungma@eit.uni-kl.de 383712027Sjungma@eit.uni-kl.de} // namespace sc_dt 383812027Sjungma@eit.uni-kl.de 383912027Sjungma@eit.uni-kl.de// $Log: sc_bit_proxies.h,v $ 384012027Sjungma@eit.uni-kl.de// Revision 1.10 2011/09/05 21:19:53 acg 384112027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: added parentheses to expressions to eliminate 384212027Sjungma@eit.uni-kl.de// compiler warnings. 384312027Sjungma@eit.uni-kl.de// 384412027Sjungma@eit.uni-kl.de// Revision 1.9 2011/09/01 15:03:42 acg 384512027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: add parentheses to eliminate compiler warnings. 384612027Sjungma@eit.uni-kl.de// 384712027Sjungma@eit.uni-kl.de// Revision 1.8 2011/08/29 18:04:32 acg 384812027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: miscellaneous clean ups. 384912027Sjungma@eit.uni-kl.de// 385012027Sjungma@eit.uni-kl.de// Revision 1.7 2011/08/24 22:05:40 acg 385112027Sjungma@eit.uni-kl.de// Torsten Maehne: initialization changes to remove warnings. 385212027Sjungma@eit.uni-kl.de// 385312027Sjungma@eit.uni-kl.de// Revision 1.6 2010/02/22 14:25:43 acg 385412027Sjungma@eit.uni-kl.de// Andy Goodrich: removed 'mutable' directive from references, since it 385512027Sjungma@eit.uni-kl.de// is not a legal C++ construct. 385612027Sjungma@eit.uni-kl.de// 385712027Sjungma@eit.uni-kl.de// Revision 1.5 2009/02/28 00:26:14 acg 385812027Sjungma@eit.uni-kl.de// Andy Goodrich: bug fixes. 385912027Sjungma@eit.uni-kl.de// 386012027Sjungma@eit.uni-kl.de// Revision 1.4 2007/03/14 17:48:37 acg 386112027Sjungma@eit.uni-kl.de// Andy Goodrich: fixed bug. 386212027Sjungma@eit.uni-kl.de// 386312027Sjungma@eit.uni-kl.de// Revision 1.3 2007/01/18 19:29:18 acg 386412027Sjungma@eit.uni-kl.de// Andy Goodrich: fixed bug in concatenations of bit selects on sc_lv and 386512027Sjungma@eit.uni-kl.de// sc_bv types. The offending code was in sc_bitref<X>::set_word and 386612027Sjungma@eit.uni-kl.de// sc_bitref<X>::get_word. These methods were not writing the bit they 386712027Sjungma@eit.uni-kl.de// represented, but rather writing an entire word whose index was the 386812027Sjungma@eit.uni-kl.de// index of the bit they represented. This not only did not write the 386912027Sjungma@eit.uni-kl.de// correct bit, but clobbered a word that might not even be in the 387012027Sjungma@eit.uni-kl.de// variable the reference was for. 387112027Sjungma@eit.uni-kl.de// 387212027Sjungma@eit.uni-kl.de// Revision 1.2 2007/01/17 22:45:08 acg 387312027Sjungma@eit.uni-kl.de// Andy Goodrich: fixed sc_bitref<X>::set_bit(). 387412027Sjungma@eit.uni-kl.de// 387512027Sjungma@eit.uni-kl.de// Revision 1.1.1.1 2006/12/15 20:31:36 acg 387612027Sjungma@eit.uni-kl.de// SystemC 2.2 387712027Sjungma@eit.uni-kl.de// 387812027Sjungma@eit.uni-kl.de// Revision 1.3 2006/01/13 18:53:53 acg 387912027Sjungma@eit.uni-kl.de// Andy Goodrich: added $Log command so that CVS comments are reproduced in 388012027Sjungma@eit.uni-kl.de// the source. 388112027Sjungma@eit.uni-kl.de// 388212027Sjungma@eit.uni-kl.de 388312027Sjungma@eit.uni-kl.de 388412027Sjungma@eit.uni-kl.de#endif 3885