// =====================================================================================================================
//  fennec, a free and open source game engine
//  Copyright © 2025 - 2026  Medusa Slockbower
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <https://www.gnu.org/licenses/>.
// =====================================================================================================================

///
/// \file fennec/lang/integer.h
/// \brief metaprogramming integer type info
///
///
/// \details This file is automatically generated for the current build environment.
///
/// Environment for this build: Clang Linux x86_64
///
/// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
///
///

#ifndef FENNEC_LANG_INTEGER_H
#define FENNEC_LANG_INTEGER_H

#undef CHAR_MIN
#undef CHAR_MAX
#undef WCHAR_MIN
#undef WCHAR_MAX
#undef SCHAR_MIN
#undef SCHAR_MAX
#undef UCHAR_MIN
#undef UCHAR_MAX
#undef INT_MIN
#undef INT_MAX
#undef UINT_MIN
#undef UINT_MAX
#undef LONG_MIN
#undef LONG_MAX
#undef ULONG_MIN
#undef ULONG_MAX
#undef LLONG_MIN
#undef LLONG_MAX
#undef ULLONG_MIN
#undef ULLONG_MAX

/// \brief Is \emph{char} signed?
#define CHAR_IS_SIGNED true
/// \brief Rounding style of type \emph{char}.
#define CHAR_ROUNDS 0
/// \brief Number of radix digits represented by \emph{char}.
#define CHAR_RADIX_DIG 0x7
/// \brief Number of decimal digits represented by \emph{char}.
#define CHAR_DIG 0x2
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{char}.
#define CHAR_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent a \emph{char}.
#define CHAR_RADIX 0x2
/// \brief Do arithmetics operations with \emph{char} trap?
#define CHAR_TRAPS true
/// \brief Smallest finite value of \emph{char}.
#define CHAR_MIN -0x80
/// \brief Largest finite value of \emph{char}.
#define CHAR_MAX 0x7f

/// \brief Is \emph{wchar_t} signed?
#define WCHAR_IS_SIGNED true
/// \brief Rounding style of type \emph{wchar_t}.
#define WCHAR_ROUNDS 0
/// \brief Number of radix digits represented by \emph{wchar_t}.
#define WCHAR_RADIX_DIG 0x1f
/// \brief Number of decimal digits represented by \emph{wchar_t}.
#define WCHAR_DIG 0x9
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{wchar_t}.
#define WCHAR_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent a \emph{wchar_t}.
#define WCHAR_RADIX 0x2
/// \brief Do arithmetics operations with \emph{wchar_t} trap?
#define WCHAR_TRAPS true
/// \brief Smallest finite value of \emph{wchar_t}.
#define WCHAR_MIN - 0x0
/// \brief Largest finite value of \emph{wchar_t}.
#define WCHAR_MAX 0xffff

/// \brief Rounding style of type \emph{signed char}.
#define SCHAR_ROUNDS 0
/// \brief Number of radix digits represented by \emph{signed char}.
#define SCHAR_RADIX_DIG 0x7
/// \brief Number of decimal digits represented by \emph{signed char}.
#define SCHAR_DIG 0x2
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{signed char}.
#define SCHAR_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent a \emph{signed char}.
#define SCHAR_RADIX 0x2
/// \brief Do arithmetics operations with \emph{signed char} trap?
#define SCHAR_TRAPS true
/// \brief Smallest finite value of \emph{signed char}.
#define SCHAR_MIN -0x80
/// \brief Largest finite value of \emph{signed char}.
#define SCHAR_MAX 0x7f

/// \brief Rounding style of type \emph{unsigned char}.
#define UCHAR_ROUNDS 0
/// \brief Number of radix digits represented by \emph{unsigned char}.
#define UCHAR_RADIX_DIG 0x8
/// \brief Number of decimal digits represented by \emph{unsigned char}.
#define UCHAR_DIG 0x2
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{unsigned char}.
#define UCHAR_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent an \emph{unsigned char}.
#define UCHAR_RADIX 0x2
/// \brief Do arithmetics operations with \emph{unsigned char} trap?
#define UCHAR_TRAPS true
/// \brief Smallest finite value of \emph{unsigned char}.
#define UCHAR_MIN 0x0
/// \brief Largest finite value of \emph{unsigned char}.
#define UCHAR_MAX 0xff

/// \brief Rounding style of type \emph{short}.
#define SHORT_ROUNDS 0
/// \brief Number of radix digits represented by \emph{short}.
#define SHORT_RADIX_DIG 0xf
/// \brief Number of decimal digits represented by \emph{short}.
#define SHORT_DIG 0x4
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{short}.
#define SHORT_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent a \emph{short}.
#define SHORT_RADIX 0x2
/// \brief Do arithmetics operations with \emph{short} trap?
#define SHORT_TRAPS true
/// \brief Smallest finite value of \emph{short}.
#define SHORT_MIN 0x8000
/// \brief Largest finite value of \emph{short}.
#define SHORT_MAX 0x7fff

/// \brief Rounding style of type \emph{unsigned short}.
#define USHORT_ROUNDS 0
/// \brief Number of radix digits represented by \emph{unsigned short}.
#define USHORT_RADIX_DIG 0x10
/// \brief Number of decimal digits represented by \emph{unsigned short}.
#define USHORT_DIG 0x4
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{unsigned short}.
#define USHORT_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent an \emph{unsigned short}.
#define USHORT_RADIX 0x2
/// \brief Do arithmetics operations with \emph{unsigned short} trap?
#define USHORT_TRAPS true
/// \brief Smallest finite value of \emph{unsigned short}.
#define USHORT_MIN 0
/// \brief Largest finite value of \emph{unsigned short}.
#define USHORT_MAX 0xffff

/// \brief Rounding style of type \emph{int}.
#define INT_ROUNDS 0
/// \brief Number of radix digits represented by \emph{int}.
#define INT_RADIX_DIG 0x1f
/// \brief Number of decimal digits represented by \emph{int}.
#define INT_DIG 0x9
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{int}.
#define INT_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent an \emph{int}.
#define INT_RADIX 0x2
/// \brief Do arithmetics operations with \emph{int} trap?
#define INT_TRAPS true
/// \brief Smallest finite value of \emph{int}.
#define INT_MIN 0x80000000
/// \brief Largest finite value of \emph{int}.
#define INT_MAX 0x7fffffff

/// \brief Rounding style of type \emph{unsigned int}.
#define UINT_ROUNDS 0
/// \brief Number of radix digits represented by \emph{unsigned int}.
#define UINT_RADIX_DIG 0x20
/// \brief Number of decimal digits represented by \emph{unsigned int}.
#define UINT_DIG 0x9
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{unsigned int}.
#define UINT_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent an \emph{unsigned int}.
#define UINT_RADIX 0x2
/// \brief Do arithmetics operations with \emph{unsigned int} trap?
#define UINT_TRAPS true
/// \brief Smallest finite value of \emph{unsigned int}.
#define UINT_MIN 0
/// \brief Largest finite value of \emph{unsigned int}.
#define UINT_MAX 0xffffffff

/// \brief Rounding style of type \emph{long int}.
#define LONG_ROUNDS 0
/// \brief Number of radix digits represented by \emph{long int}.
#define LONG_RADIX_DIG 0x3f
/// \brief Number of decimal digits represented by \emph{long int}.
#define LONG_DIG 0x12
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{long int}.
#define LONG_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent a \emph{long int}.
#define LONG_RADIX 0x2
/// \brief Do arithmetics operations with \emph{long int} trap?
#define LONG_TRAPS true
/// \brief Smallest finite value of \emph{long int}.
#define LONG_MIN 0x8000000000000000
/// \brief Largest finite value of \emph{long int}.
#define LONG_MAX 0x7fffffffffffffff

/// \brief Rounding style of type \emph{unsigned long int}.
#define ULONG_ROUNDS 0
/// \brief Number of radix digits represented by \emph{unsigned long int}.
#define ULONG_RADIX_DIG 0x40
/// \brief Number of decimal digits represented by \emph{unsigned long int}.
#define ULONG_DIG 0x13
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{unsigned long int}.
#define ULONG_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent an \emph{unsigned long int}.
#define ULONG_RADIX 0x2
/// \brief Do arithmetics operations with \emph{unsigned long int} trap?
#define ULONG_TRAPS true
/// \brief Smallest finite value of \emph{unsigned long int}.
#define ULONG_MIN 0
/// \brief Largest finite value of \emph{unsigned long int}.
#define ULONG_MAX 0xffffffffffffffff

/// \brief Rounding style of type \emph{long long}.
#define LLONG_ROUNDS 0
/// \brief Number of radix digits represented by \emph{long long}.
#define LLONG_RADIX_DIG 0x3f
/// \brief Number of decimal digits represented by \emph{long long}.
#define LLONG_DIG 0x12
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{long long}.
#define LLONG_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent a \emph{long long}.
#define LLONG_RADIX 0x2
/// \brief Do arithmetics operations with \emph{long long} trap?
#define LLONG_TRAPS true
/// \brief Smallest finite value of \emph{long long}.
#define LLONG_MIN 0x8000000000000000
/// \brief Largest finite value of \emph{long long}.
#define LLONG_MAX 0x7fffffffffffffff

/// \brief Rounding style of type \emph{unsigned long long}.
#define ULLONG_ROUNDS 0
/// \brief Number of radix digits represented by \emph{unsigned long long}.
#define ULLONG_RADIX_DIG 0x40
/// \brief Number of decimal digits represented by \emph{unsigned long long}.
#define ULLONG_DIG 0x13
/// \brief Number of decimal digits necessary to differentiate all values of type \emph{unsigned long long}.
#define ULLONG_DECIMAL_DIG 0
/// \brief The radix, or integer base, used to represent an \emph{unsigned long long}.
#define ULLONG_RADIX 0x2
/// \brief Do arithmetics operations with \emph{unsigned long long} trap?
#define ULLONG_TRAPS true
/// \brief Smallest finite value of \emph{unsigned long long}.
#define ULLONG_MIN 0
/// \brief Largest finite value of \emph{unsigned long long}.
#define ULLONG_MAX 0xffffffffffffffff

#endif // FENNEC_LANG_INTEGER_H
