From 07638ea7b3145902cd9ed99c0c358ecab2fe29fe Mon Sep 17 00:00:00 2001 From: Isuru Samarathunga Date: Sun, 12 Oct 2025 12:52:02 +0530 Subject: [PATCH] Numeric Limits --- Src/IACore/inc/hpp/IACore/Types.hpp | 207 +++++++++++++++------------- 1 file changed, 109 insertions(+), 98 deletions(-) diff --git a/Src/IACore/inc/hpp/IACore/Types.hpp b/Src/IACore/inc/hpp/IACore/Types.hpp index e6010a1..d6012df 100644 --- a/Src/IACore/inc/hpp/IACore/Types.hpp +++ b/Src/IACore/inc/hpp/IACore/Types.hpp @@ -1,16 +1,16 @@ -// IACore-OSS; The Core Library for All IA Open Source Projects +// IACore-OSS; The Core Library for All IA Open Source Projects // Copyright (C) 2024 IAS (ias@iasoft.dev) -// +// // 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 . @@ -22,119 +22,130 @@ namespace ia { - template - using initializer_list = std::initializer_list<_value_type>; + template using initializer_list = std::initializer_list<_value_type>; #undef VOID - typedef void VOID; - typedef bool BOOL; - typedef char CHAR; - typedef uint16_t CHAR16; + typedef void VOID; + typedef bool BOOL; + typedef char CHAR; + typedef uint16_t CHAR16; - typedef int8_t INT8; - typedef int16_t INT16; - typedef int32_t INT32; - typedef int64_t INT64; + typedef int8_t INT8; + typedef int16_t INT16; + typedef int32_t INT32; + typedef int64_t INT64; - typedef uint8_t UINT8; - typedef uint16_t UINT16; - typedef uint32_t UINT32; - typedef uint64_t UINT64; + typedef uint8_t UINT8; + typedef uint16_t UINT16; + typedef uint32_t UINT32; + typedef uint64_t UINT64; - typedef float FLOAT32; - typedef double FLOAT64; + typedef float FLOAT32; + typedef double FLOAT64; - typedef INT32 INT; - typedef UINT32 UINT; - typedef size_t SIZE_T; - typedef std::make_signed_t SSIZE_T; + typedef INT32 INT; + typedef UINT32 UINT; + typedef size_t SIZE_T; + typedef std::make_signed_t SSIZE_T; - typedef std::align_val_t ALIGN_T; + typedef std::align_val_t ALIGN_T; - // pointer types - typedef VOID* PVOID; - typedef BOOL* PBOOL; - typedef CHAR* PCHAR; - typedef CHAR16* PCHAR16; + // pointer types + typedef VOID *PVOID; + typedef BOOL *PBOOL; + typedef CHAR *PCHAR; + typedef CHAR16 *PCHAR16; - typedef INT8* PINT8; - typedef INT16* PINT16; - typedef INT32* PINT32; - typedef INT64* PINT64; + typedef INT8 *PINT8; + typedef INT16 *PINT16; + typedef INT32 *PINT32; + typedef INT64 *PINT64; - typedef UINT8* PUINT8; - typedef UINT16* PUINT16; - typedef UINT32* PUINT32; - typedef UINT64* PUINT64; + typedef UINT8 *PUINT8; + typedef UINT16 *PUINT16; + typedef UINT32 *PUINT32; + typedef UINT64 *PUINT64; - typedef INT* PINT; - typedef UINT* PUINT; - typedef SIZE_T* PSIZE; - typedef SSIZE_T* PSSIZE; + typedef INT *PINT; + typedef UINT *PUINT; + typedef SIZE_T *PSIZE; + typedef SSIZE_T *PSSIZE; - typedef FLOAT32 PFLOAT32; - typedef FLOAT64 PFLOAT64; + typedef FLOAT32 PFLOAT32; + typedef FLOAT64 PFLOAT64; - // const pointer types - typedef CONST VOID* PCVOID; - typedef CONST BOOL* PCBOOL; - typedef CONST CHAR* PCCHAR; - typedef CONST CHAR16* PCCHAR16; + // const pointer types + typedef CONST VOID *PCVOID; + typedef CONST BOOL *PCBOOL; + typedef CONST CHAR *PCCHAR; + typedef CONST CHAR16 *PCCHAR16; - typedef CONST INT8* PCINT8; - typedef CONST INT16* PCINT16; - typedef CONST INT32* PCINT32; - typedef CONST INT64* PCINT64; + typedef CONST INT8 *PCINT8; + typedef CONST INT16 *PCINT16; + typedef CONST INT32 *PCINT32; + typedef CONST INT64 *PCINT64; - typedef CONST UINT8* PCUINT8; - typedef CONST UINT16* PCUINT16; - typedef CONST UINT32* PCUINT32; - typedef CONST UINT64* PCUINT64; + typedef CONST UINT8 *PCUINT8; + typedef CONST UINT16 *PCUINT16; + typedef CONST UINT32 *PCUINT32; + typedef CONST UINT64 *PCUINT64; - typedef CONST INT* PCINT; - typedef CONST UINT* PCUINT; - typedef CONST SIZE_T* PCSIZE; - typedef CONST SSIZE_T* PCSSIZE; + typedef CONST INT *PCINT; + typedef CONST UINT *PCUINT; + typedef CONST SIZE_T *PCSIZE; + typedef CONST SSIZE_T *PCSSIZE; - typedef CONST FLOAT32 PCFLOAT32; - typedef CONST FLOAT64 PCFLOAT64; + typedef CONST FLOAT32 PCFLOAT32; + typedef CONST FLOAT64 PCFLOAT64; - /* Uses the UEFI standard GUID structure definition */ - typedef struct _IA_GUID - { - UINT32 Data1; - UINT16 Data2; - UINT16 Data3; - UINT8 Data4[8]; - - bool operator==(const _IA_GUID& other) + /* Uses the UEFI standard GUID structure definition */ + typedef struct _IA_GUID { - UINT64* myData = (UINT64*)(&Data1); - UINT64* otherData = (UINT64*)(&(other.Data1)); - return ((myData[0] == otherData[0]) && (myData[1] == otherData[1])); - } - } GUID; + UINT32 Data1; + UINT16 Data2; + UINT16 Data3; + UINT8 Data4[8]; - STATIC CONSTEXPR FLOAT32 FLOAT32_EPSILON = std::numeric_limits::epsilon(); -STATIC CONSTEXPR FLOAT32 FLOAT64_EPSILON = std::numeric_limits::epsilon(); + bool operator==(const _IA_GUID &other) + { + UINT64 *myData = (UINT64 *) (&Data1); + UINT64 *otherData = (UINT64 *) (&(other.Data1)); + return ((myData[0] == otherData[0]) && (myData[1] == otherData[1])); + } + } GUID; - namespace types - { - static BOOL __internal_validate_types() + STATIC CONSTEXPR FLOAT32 FLOAT32_EPSILON = std::numeric_limits::epsilon(); + STATIC CONSTEXPR FLOAT32 FLOAT64_EPSILON = std::numeric_limits::epsilon(); + + namespace types { - if(sizeof(CHAR) != static_cast(1)) return false; - if(sizeof(INT8) != static_cast(1)) return false; - if(sizeof(INT16) != static_cast(2)) return false; - if(sizeof(INT32) != static_cast(4)) return false; - if(sizeof(INT64) != static_cast(8)) return false; - if(sizeof(UINT8) != static_cast(1)) return false; - if(sizeof(UINT16) != static_cast(2)) return false; - if(sizeof(UINT32) != static_cast(4)) return false; - if(sizeof(UINT64) != static_cast(8)) return false; - if(sizeof(FLOAT32) != static_cast(4)) return false; - if(sizeof(FLOAT64) != static_cast(8)) return false; - if(sizeof(PVOID) < static_cast(4)) return false; - return true; - } - } -} + static BOOL __internal_validate_types() + { + if (sizeof(CHAR) != static_cast(1)) + return false; + if (sizeof(INT8) != static_cast(1)) + return false; + if (sizeof(INT16) != static_cast(2)) + return false; + if (sizeof(INT32) != static_cast(4)) + return false; + if (sizeof(INT64) != static_cast(8)) + return false; + if (sizeof(UINT8) != static_cast(1)) + return false; + if (sizeof(UINT16) != static_cast(2)) + return false; + if (sizeof(UINT32) != static_cast(4)) + return false; + if (sizeof(UINT64) != static_cast(8)) + return false; + if (sizeof(FLOAT32) != static_cast(4)) + return false; + if (sizeof(FLOAT64) != static_cast(8)) + return false; + if (sizeof(PVOID) < static_cast(4)) + return false; + return true; + } + } // namespace types +} // namespace ia