diff options
author | Gabe Black <gabeblack@google.com> | 2018-05-18 02:12:34 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-08-08 10:07:26 +0000 |
commit | 7adb1b250b712920ea5d685f146ad6df55346393 (patch) | |
tree | c431de9f29f2c7d1dc5a6e581cfcf7031bb26a49 /src/systemc/ext/utils/functions.hh | |
parent | 4b2e28307d0a1c2b31e403e8e394261eb363a7a9 (diff) | |
download | gem5-7adb1b250b712920ea5d685f146ad6df55346393.tar.xz |
systemc: Stub out all the standard utilility classes and functions.
Change-Id: I9e9724edb6281e0b0a6bae5546b0ede77d295c12
Reviewed-on: https://gem5-review.googlesource.com/10841
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/ext/utils/functions.hh')
-rw-r--r-- | src/systemc/ext/utils/functions.hh | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/systemc/ext/utils/functions.hh b/src/systemc/ext/utils/functions.hh new file mode 100644 index 000000000..5c259e1b7 --- /dev/null +++ b/src/systemc/ext/utils/functions.hh @@ -0,0 +1,104 @@ +/* + * Copyright 2018 Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Gabe Black + */ + +#ifndef __SYSTEMC_EXT_UTIL_FUNCTIONS_HH__ +#define __SYSTEMC_EXT_UTIL_FUNCTIONS_HH__ + +#include <string> + +namespace sc_dt +{ + +template <class T> +const T +sc_abs(const T &a) +{ + // return ( a >= 0 ? a : -a ); + // the code below is functionaly the same as the code above; the + // difference is that the code below works for all arithmetic + // SystemC datatypes. + T z(a); + z = 0; + if (a >= z) { + return a; + } else { + T c(a); + c = -a; + return c; + } +} + +template <class T> +const T sc_max(const T &a, const T &b) { return ((a >= b) ? a : b); } + +template <class T> +const T sc_min(const T &a, const T &b) { return ((a <= b) ? a : b); } + +} // namespace sc_dt + +namespace sc_core +{ + +#define IEEE_1666_SYSTEMC 201101L + +#define SC_VERSION_MAJOR 0 +#define SC_VERSION_MINOR 1 +#define SC_VERSION_PATCH 0 +#define SC_VERSION_ORIGINATOR "gem5" +#define SC_VERSION_RELEASE_DATE "NA" +#define SC_VERSION_PRERELEASE "beta" +#define SC_IS_PRERELEASE true +#define SC_VERSION "0.1.0_beta-gem5" +#define SC_COPYRIGHT "Copyright 2018 Google, Inc." + +extern const unsigned int sc_version_major; +extern const unsigned int sc_version_minor; +extern const unsigned int sc_version_patch; +extern const std::string sc_version_originator; +extern const std::string sc_version_release_date; +extern const std::string sc_version_prerelease; +extern const bool sc_is_prerelease; +extern const std::string sc_version_string; +extern const std::string sc_copyright_string; + +static inline const char * +sc_release() +{ + return sc_version_string.c_str(); +} +static inline const char * +sc_copyright() +{ + return sc_copyright_string.c_str(); +} +const char *sc_version(); + +} // namespace sc_core + +#endif //__SYSTEMC_EXT_UTIL_FUNCTIONS_HH__ |