112853Sgabeblack@google.com/***************************************************************************** 212853Sgabeblack@google.com 312853Sgabeblack@google.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 412853Sgabeblack@google.com more contributor license agreements. See the NOTICE file distributed 512853Sgabeblack@google.com with this work for additional information regarding copyright ownership. 612853Sgabeblack@google.com Accellera licenses this file to you under the Apache License, Version 2.0 712853Sgabeblack@google.com (the "License"); you may not use this file except in compliance with the 812853Sgabeblack@google.com License. You may obtain a copy of the License at 912853Sgabeblack@google.com 1012853Sgabeblack@google.com http://www.apache.org/licenses/LICENSE-2.0 1112853Sgabeblack@google.com 1212853Sgabeblack@google.com Unless required by applicable law or agreed to in writing, software 1312853Sgabeblack@google.com distributed under the License is distributed on an "AS IS" BASIS, 1412853Sgabeblack@google.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1512853Sgabeblack@google.com implied. See the License for the specific language governing 1612853Sgabeblack@google.com permissions and limitations under the License. 1712853Sgabeblack@google.com 1812853Sgabeblack@google.com *****************************************************************************/ 1912853Sgabeblack@google.com 2012853Sgabeblack@google.com/***************************************************************************** 2112853Sgabeblack@google.com 2212853Sgabeblack@google.com sc_fxcast_switch.h - 2312853Sgabeblack@google.com 2412853Sgabeblack@google.com Original Author: Martin Janssen, Synopsys, Inc. 2512853Sgabeblack@google.com 2612853Sgabeblack@google.com *****************************************************************************/ 2712853Sgabeblack@google.com 2812853Sgabeblack@google.com/***************************************************************************** 2912853Sgabeblack@google.com 3012853Sgabeblack@google.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3112853Sgabeblack@google.com changes you are making here. 3212853Sgabeblack@google.com 3312853Sgabeblack@google.com Name, Affiliation, Date: 3412853Sgabeblack@google.com Description of Modification: 3512853Sgabeblack@google.com 3612853Sgabeblack@google.com *****************************************************************************/ 3712853Sgabeblack@google.com 3812853Sgabeblack@google.com// $Log: sc_fxcast_switch.h,v $ 3912853Sgabeblack@google.com// Revision 1.2 2011/08/24 22:05:43 acg 4012853Sgabeblack@google.com// Torsten Maehne: initialization changes to remove warnings. 4112853Sgabeblack@google.com// 4212853Sgabeblack@google.com// Revision 1.1.1.1 2006/12/15 20:20:04 acg 4312853Sgabeblack@google.com// SystemC 2.3 4412853Sgabeblack@google.com// 4512853Sgabeblack@google.com// Revision 1.3 2006/01/13 18:53:57 acg 4612853Sgabeblack@google.com// Andy Goodrich: added $Log command so that CVS comments are reproduced in 4712853Sgabeblack@google.com// the source. 4812853Sgabeblack@google.com// 4912853Sgabeblack@google.com 5012853Sgabeblack@google.com#ifndef __SYSTEMC_EXT_DT_FX_SC_FXCAST_SWITCH_HH__ 5112853Sgabeblack@google.com#define __SYSTEMC_EXT_DT_FX_SC_FXCAST_SWITCH_HH__ 5212853Sgabeblack@google.com 5312853Sgabeblack@google.com#include <iostream> 5412853Sgabeblack@google.com 5512853Sgabeblack@google.com#include "sc_context.hh" 5612853Sgabeblack@google.com#include "sc_fxdefs.hh" 5712853Sgabeblack@google.com 5812853Sgabeblack@google.comnamespace sc_dt 5912853Sgabeblack@google.com{ 6012853Sgabeblack@google.com 6112853Sgabeblack@google.com// classes defined in this module 6212853Sgabeblack@google.comclass sc_fxcast_switch; 6312853Sgabeblack@google.com 6412853Sgabeblack@google.com 6512853Sgabeblack@google.com// ---------------------------------------------------------------------------- 6612853Sgabeblack@google.com// CLASS : sc_fxcast_switch 6712853Sgabeblack@google.com// 6812853Sgabeblack@google.com// Fixed-point cast switch class. 6912853Sgabeblack@google.com// ---------------------------------------------------------------------------- 7012853Sgabeblack@google.com 7112853Sgabeblack@google.comclass sc_fxcast_switch 7212853Sgabeblack@google.com{ 7312853Sgabeblack@google.com public: 7412853Sgabeblack@google.com sc_fxcast_switch(); 7512853Sgabeblack@google.com sc_fxcast_switch(sc_switch); 7612853Sgabeblack@google.com sc_fxcast_switch(const sc_fxcast_switch &); 7712853Sgabeblack@google.com explicit sc_fxcast_switch(sc_without_context); 7812853Sgabeblack@google.com 7912853Sgabeblack@google.com sc_fxcast_switch &operator = (const sc_fxcast_switch &); 8012853Sgabeblack@google.com 8112853Sgabeblack@google.com friend bool operator == (const sc_fxcast_switch &, 8212853Sgabeblack@google.com const sc_fxcast_switch &); 8312853Sgabeblack@google.com friend bool operator != (const sc_fxcast_switch &, 8412853Sgabeblack@google.com const sc_fxcast_switch &); 8512853Sgabeblack@google.com 8612853Sgabeblack@google.com const std::string to_string() const; 8712853Sgabeblack@google.com 8812853Sgabeblack@google.com void print(::std::ostream & =::std::cout) const; 8912853Sgabeblack@google.com void dump(::std::ostream & =::std::cout) const; 9012853Sgabeblack@google.com 9112853Sgabeblack@google.com private: 9212853Sgabeblack@google.com sc_switch m_sw; 9312853Sgabeblack@google.com}; 9412853Sgabeblack@google.com 9512853Sgabeblack@google.com} // namespace sc_dt 9612853Sgabeblack@google.com 9712853Sgabeblack@google.com// ---------------------------------------------------------------------------- 9812853Sgabeblack@google.com// TYPEDEF : sc_fxcast_context 9912853Sgabeblack@google.com// 10012853Sgabeblack@google.com// Context type for the fixed-point cast switch parameter. 10112853Sgabeblack@google.com// ---------------------------------------------------------------------------- 10212853Sgabeblack@google.com 10312853Sgabeblack@google.comnamespace sc_dt 10412853Sgabeblack@google.com{ 10512853Sgabeblack@google.com 10612853Sgabeblack@google.comextern template class sc_global<sc_fxcast_switch>; 10712853Sgabeblack@google.comextern template class sc_context<sc_fxcast_switch>; 10812853Sgabeblack@google.com 10912853Sgabeblack@google.comtypedef sc_context<sc_fxcast_switch> sc_fxcast_context; 11012853Sgabeblack@google.com 11112853Sgabeblack@google.com 11212853Sgabeblack@google.com// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 11312853Sgabeblack@google.com 11412853Sgabeblack@google.cominline sc_fxcast_switch::sc_fxcast_switch() : m_sw() 11512853Sgabeblack@google.com{ 11612853Sgabeblack@google.com *this = sc_fxcast_context::default_value(); 11712853Sgabeblack@google.com} 11812853Sgabeblack@google.com 11912853Sgabeblack@google.cominline sc_fxcast_switch::sc_fxcast_switch(sc_switch sw_) : m_sw( sw_ ) {} 12012853Sgabeblack@google.com 12112853Sgabeblack@google.cominline sc_fxcast_switch::sc_fxcast_switch(const sc_fxcast_switch &a) : 12212853Sgabeblack@google.com m_sw(a.m_sw) 12312853Sgabeblack@google.com{} 12412853Sgabeblack@google.com 12512853Sgabeblack@google.cominline sc_fxcast_switch::sc_fxcast_switch(sc_without_context) : 12612853Sgabeblack@google.com m_sw(SC_DEFAULT_CAST_SWITCH_) 12712853Sgabeblack@google.com{} 12812853Sgabeblack@google.com 12912853Sgabeblack@google.cominline sc_fxcast_switch & 13012853Sgabeblack@google.comsc_fxcast_switch::operator = (const sc_fxcast_switch &a) 13112853Sgabeblack@google.com{ 13212853Sgabeblack@google.com if (&a != this) { 13312853Sgabeblack@google.com m_sw = a.m_sw; 13412853Sgabeblack@google.com } 13512853Sgabeblack@google.com return *this; 13612853Sgabeblack@google.com} 13712853Sgabeblack@google.com 13812853Sgabeblack@google.cominline bool 13912853Sgabeblack@google.comoperator == (const sc_fxcast_switch &a, const sc_fxcast_switch &b) 14012853Sgabeblack@google.com{ 14112853Sgabeblack@google.com return (a.m_sw == b.m_sw); 14212853Sgabeblack@google.com} 14312853Sgabeblack@google.com 14412853Sgabeblack@google.cominline bool 14512853Sgabeblack@google.comoperator != (const sc_fxcast_switch &a, const sc_fxcast_switch &b) 14612853Sgabeblack@google.com{ 14712853Sgabeblack@google.com return (a.m_sw != b.m_sw); 14812853Sgabeblack@google.com} 14912853Sgabeblack@google.com 15012853Sgabeblack@google.cominline ::std::ostream & 15112853Sgabeblack@google.comoperator << (::std::ostream &os, const sc_fxcast_switch &a) 15212853Sgabeblack@google.com{ 15312853Sgabeblack@google.com a.print(os); 15412853Sgabeblack@google.com return os; 15512853Sgabeblack@google.com} 15612853Sgabeblack@google.com 15712853Sgabeblack@google.com} // namespace sc_dt 15812853Sgabeblack@google.com 15912853Sgabeblack@google.com#endif // __SYSTEMC_EXT_DT_FX_SC_FXCAST_SWITCH_HH__ 160