| /***************************************************************************** |
| |
| Licensed to Accellera Systems Initiative Inc. (Accellera) under one or |
| more contributor license agreements. See the NOTICE file distributed |
| with this work for additional information regarding copyright ownership. |
| Accellera licenses this file to you under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with the |
| License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
| implied. See the License for the specific language governing |
| permissions and limitations under the License. |
| |
| *****************************************************************************/ |
| |
| /***************************************************************************** |
| |
| systemc.h - Top-level include file for the SystemC library with usings. |
| |
| Original Author: Stan Y. Liao, Synopsys, Inc. |
| |
| *****************************************************************************/ |
| |
| /***************************************************************************** |
| |
| MODIFICATION LOG - modifiers, enter your name, affiliation, date and |
| changes you are making here. |
| |
| Name, Affiliation, Date: Andy Goodrich, Forte Design Systems, 31 Mar 2005 |
| Description of Modification: Changes for namespace support. |
| |
| *****************************************************************************/ |
| |
| #ifndef SYSTEMC_H |
| #define SYSTEMC_H |
| |
| // INCLUDE SYSTEM (std) DEFINITIONS: |
| |
| #include <cassert> |
| #include <climits> |
| #include <cmath> // math.h? |
| #include <cstddef> |
| #include <cstdio> |
| #include <cstdlib> |
| #include <cstring> |
| #include <exception> |
| #include <fstream> |
| #include <iostream> |
| #include <memory> |
| #include <string> |
| #if defined(__sun) || defined(__sun__) |
| # include <inttypes.h> |
| #elif !defined(WIN32) && !defined(_WIN32) |
| # include <stdint.h> |
| #endif |
| #include <typeinfo> |
| #include <utility> |
| #include <vector> |
| |
| // USINGS FOR I/O STREAM SUPPORT: |
| |
| using std::ios; |
| using std::streambuf; |
| using std::streampos; |
| using std::streamsize; |
| using std::iostream; |
| using std::istream; |
| using std::ostream; |
| using std::cin; |
| using std::cout; |
| using std::cerr; |
| using std::endl; |
| using std::flush; |
| using std::dec; |
| using std::hex; |
| using std::oct; |
| using std::noshowbase; |
| using std::showbase; |
| |
| using std::fstream; |
| using std::ifstream; |
| using std::ofstream; |
| |
| // from <cstdio>: |
| |
| using std::size_t; |
| using std::FILE; |
| using std::fpos_t; |
| using std::fclose; |
| using std::clearerr; |
| |
| using std::remove; |
| using std::rename; |
| using std::tmpfile; |
| using std::tmpnam; |
| using std::fflush; |
| using std::fopen; |
| using std::freopen; |
| using std::setbuf; |
| using std::setvbuf; |
| using std::fprintf; |
| using std::fscanf; |
| using std::printf; |
| using std::scanf; |
| using std::sprintf; |
| using std::sscanf; |
| using std::vfprintf; |
| using std::vprintf; |
| using std::vsprintf; |
| using std::fgetc; |
| using std::fgets; |
| using std::fputc; |
| using std::fputs; |
| using std::getc; |
| using std::getchar; |
| //using std::gets; |
| using std::putc; |
| using std::putchar; |
| using std::puts; |
| using std::ungetc; |
| using std::fread; |
| using std::fwrite; |
| using std::fgetpos; |
| using std::fseek; |
| using std::fsetpos; |
| using std::ftell; |
| using std::rewind; |
| using std::feof; |
| using std::ferror; |
| using std::perror; |
| |
| // from <cstdlib>: |
| |
| using std::div_t; |
| using std::ldiv_t; |
| |
| using std::atof; |
| using std::atoi; |
| using std::atol; |
| using std::strtod; |
| using std::strtol; |
| using std::strtoul; |
| using std::rand; |
| using std::srand; |
| using std::calloc; |
| using std::free; |
| using std::malloc; |
| using std::realloc; |
| using std::abort; |
| using std::atexit; |
| using std::exit; |
| using std::getenv; |
| using std::system; |
| using std::bsearch; |
| using std::qsort; |
| using std::abs; |
| using std::div; |
| using std::labs; |
| using std::ldiv; |
| using std::mblen; |
| using std::mbtowc; |
| using std::mbstowcs; |
| #if !defined(__CYGWIN__) && !defined(__CYGWIN32) |
| using std::wctomb; |
| using std::wcstombs; |
| #endif |
| |
| // from <cstring>: |
| |
| using std::memcpy; |
| using std::memmove; |
| using std::strcpy; |
| using std::strncpy; |
| using std::strcat; |
| using std::strncat; |
| using std::memcmp; |
| using std::strcmp; |
| using std::strcoll; |
| using std::strncmp; |
| using std::strxfrm; |
| using std::memchr; |
| using std::strchr; |
| using std::strcspn; |
| using std::strpbrk; |
| using std::strrchr; |
| using std::strspn; |
| using std::strstr; |
| using std::strtok; |
| using std::memset; |
| using std::strerror; |
| using std::strlen; |
| |
| // deprecated strstream support |
| #if defined( SC_INCLUDE_STRSTREAM ) |
| #include <strstream> |
| |
| using std::strstream; |
| using std::strstreambuf; |
| using std::istrstream; |
| using std::ostrstream; |
| |
| #endif // SC_INCLUDE_STRSTREAM |
| |
| // INCLUDE SYSTEMC DEFINITIONS for sc_dt AND sc_core NAMESPACES: |
| |
| #include "systemc" |
| |
| // USINGS FOR THE sc_dt NAMESPACE: |
| |
| using sc_dt::SC_BIN; |
| using sc_dt::SC_BIN_SM; |
| using sc_dt::SC_BIN_US; |
| using sc_dt::SC_CSD; |
| using sc_dt::SC_DEC; |
| using sc_dt::SC_HEX; |
| using sc_dt::SC_HEX_SM; |
| using sc_dt::SC_HEX_US; |
| using sc_dt::SC_LOGIC_0; |
| using sc_dt::SC_LOGIC_1; |
| using sc_dt::SC_LOGIC_X; |
| using sc_dt::SC_LOGIC_Z; |
| using sc_dt::SC_NOBASE; |
| using sc_dt::SC_OCT; |
| using sc_dt::SC_OCT_SM; |
| using sc_dt::SC_OCT_US; |
| using sc_dt::int64; |
| using sc_dt::sc_abs; |
| using sc_dt::sc_bigint; |
| using sc_dt::sc_biguint; |
| using sc_dt::sc_bit; |
| using sc_dt::sc_bv; |
| using sc_dt::sc_bv_base; |
| using sc_dt::sc_digit; |
| using sc_dt::sc_int; |
| using sc_dt::sc_int_base; |
| using sc_dt::sc_io_show_base; |
| using sc_dt::sc_length_context; |
| using sc_dt::sc_length_param; |
| using sc_dt::sc_logic; |
| using sc_dt::sc_lv; |
| using sc_dt::sc_lv_base; |
| using sc_dt::sc_max; |
| using sc_dt::sc_min; |
| using sc_dt::sc_numrep; |
| using sc_dt::sc_signed; |
| using sc_dt::sc_uint; |
| using sc_dt::sc_uint_base; |
| using sc_dt::sc_unsigned; |
| using sc_dt::uint64; |
| // #ifdef SC_DT_DEPRECATED |
| using sc_dt::sc_logic_0; |
| using sc_dt::sc_logic_1; |
| using sc_dt::sc_logic_Z; |
| using sc_dt::sc_logic_X; |
| // #endif |
| |
| #ifdef SC_INCLUDE_FX |
| using sc_dt::sc_fxnum; |
| using sc_dt::sc_fxnum_bitref; |
| using sc_dt::sc_fxnum_fast; |
| using sc_dt::sc_fix; |
| using sc_dt::sc_fix_fast; |
| using sc_dt::sc_ufix; |
| using sc_dt::sc_ufix_fast; |
| using sc_dt::sc_fixed; |
| using sc_dt::sc_fixed_fast; |
| using sc_dt::sc_ufixed; |
| using sc_dt::sc_ufixed_fast; |
| using sc_dt::sc_fxval; |
| using sc_dt::sc_fxval_fast; |
| using sc_dt::sc_fxcast_switch; |
| using sc_dt::sc_fxcast_context; |
| using sc_dt::sc_fxtype_params; |
| using sc_dt::sc_fxtype_context; |
| using sc_dt::sc_q_mode; |
| using sc_dt::SC_RND; |
| using sc_dt::SC_RND_ZERO; |
| using sc_dt::SC_RND_MIN_INF; |
| using sc_dt::SC_RND_INF; |
| using sc_dt::SC_RND_CONV; |
| using sc_dt::SC_TRN; |
| using sc_dt::SC_TRN_ZERO; |
| using sc_dt::sc_o_mode; |
| using sc_dt::SC_SAT; |
| using sc_dt::SC_SAT_ZERO; |
| using sc_dt::SC_SAT_SYM; |
| using sc_dt::SC_WRAP; |
| using sc_dt::SC_WRAP_SM; |
| using sc_dt::sc_switch; |
| using sc_dt::SC_OFF; |
| using sc_dt::SC_ON; |
| using sc_dt::sc_fmt; |
| using sc_dt::SC_F; |
| using sc_dt::SC_E; |
| using sc_dt::sc_context_begin; |
| using sc_dt::SC_NOW; |
| using sc_dt::SC_LATER; |
| #endif // SC_INCLUDE_FX |
| |
| #if 0 // defined( _MSC_VER ) // supported versions of MSVC should support ADL |
| |
| using sc_dt::equal; |
| using sc_dt::not_equal; |
| using sc_dt::b_not; |
| using sc_dt::b_and; |
| using sc_dt::b_or; |
| using sc_dt::b_xor; |
| using sc_dt::lrotate; |
| using sc_dt::rrotate; |
| using sc_dt::reverse; |
| using sc_dt::concat; |
| using sc_dt::and_reduce; |
| using sc_dt::or_reduce; |
| using sc_dt::xor_reduce; |
| using sc_dt::nand_reduce; |
| using sc_dt::nor_reduce; |
| using sc_dt::xnor_reduce; |
| |
| #endif // defined( _MSC_VER ) |
| |
| |
| // USINGS FOR sc_core: |
| // |
| // The explicit using for ::sc_core::wait is to remove an ambiguity with |
| // the constructor for the system's union wait on Unix and Linux. This |
| // causes problems with aCC, so users of aCC should explicitly select |
| // the SystemC wait functions using ::sc_core::wait(...). This is actually |
| // a good idea for SystemC programmers in general. |
| |
| using namespace sc_core; |
| |
| #if !defined( __HP_aCC ) |
| using ::sc_core::wait; |
| #endif // !defined( __HP_aCC ) |
| |
| #ifdef SC_USE_SC_STRING_OLD |
| using sc_dt::sc_string_old; |
| typedef sc_dt::sc_string_old sc_string; |
| #endif |
| #ifdef SC_USE_STD_STRING |
| typedef ::std::string sc_string; |
| #endif |
| |
| #endif |