X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcore%2Futil%2Fdefines.hpp;h=7e56b7d1f7958b2733d40d4ddcb79ffe3a36d77b;hb=706c5ba5c35199816446453e6e144200cf79265b;hp=506a9fda8515cf8738d60dfa85ceb430a0c05fd8;hpb=24ef34af54c4a42fcbd65a0ef065bddaaf1bd096;p=anna.git diff --git a/include/anna/core/util/defines.hpp b/include/anna/core/util/defines.hpp index 506a9fd..7e56b7d 100644 --- a/include/anna/core/util/defines.hpp +++ b/include/anna/core/util/defines.hpp @@ -16,6 +16,9 @@ #include +#include +// For cstd0x compatibility we will use stdint.h types instead of std:: ones on cstdint: +//#include when C++11 available // Decoding helpers @@ -30,78 +33,52 @@ namespace anna { -// type bits (bytes) % Diameter Data typedef -// ----------------------------------------------------------------------- -// unsigned short int 16 (2) hu U16 -// short int 16 (2) hd S16 -// unsigned int 32 (4) u Unsigned32 (*) U32 -// int 32 (4) d Integer32 (*) S32 -// -// Integer. Its length traditionally depends on the length of the system's Word type, thus in MSDOS -// it is 16 bits long, whereas in 32 bit systems (like Windows 9x/2000/NT and systems that work under -// protected mode in x86 systems) it is 32 bits long (4 bytes) -// -// Como está previsto que en algunas máquinas la palabra sea de 16 bits, los enteros serían -// de 16 y por ello C contempla: int (serían 16 bits), long int (32), long long int (64). Sin embargo -// en la práctica, 'int = long int = 32' y 'long long int = 64'. -// -// (*) Por un mal hábito, representamos enteros de 32 bits con el tipo 'int'/'unsigned int' de -// toda la vida, sin darnos cuenta de que en alguna máquina antigua, no tendría 32 bits. -// Corregir lo anterior sería tan sencillo como poner S32 = long int (no int), -// y U32 = unsigned long int (no unsigned int). Pero no lo vamos a hacer. -// -// El tipo 'long' tiene un tamaño que corresponde con el ancho de palabra del S.O. -// En Solaris (palabra de 64) tenemos long = 64 = long long -// En linux (palabra de 32) tenemos long = 32, long long = 64 -// En linux64 (palabra de 64) tenemos long = 64 = long long -// +#ifndef __x86_64__ +#undef __anna64__ +#else +#define __anna64__ +#endif + +// TYPE BITS (bytes) Format +// ----------------------- ------------------ --------------------------- // unsigned long int 32/64 (4/8) lu // long int 32/64 (4/8) ld // -// unsigned long long int 64 (8) llu Unsigned64 U64 -// long long int 64 (8) lld Integer64 S64 +// unsigned long long int 64 (8) llu +// long long int 64 (8) lld // // float 32 (4) f // double 64 (8) lf // long double 80 (10) Lf +// +// pointer = S.O. word 32/64 p -/** Alias for unsigned char: unsigned integer with 8 bits */ +/** Alias for unsigned integer with 8 bits */ +//typedef uint8_t U8; typedef unsigned char U8; -/** Alias for char: signed integer with 8 bits */ +/** Alias for signed integer with 8 bits */ +//typedef int8_t S8; typedef char S8; -/** Alias for unsigned short int: unsigned integer with 16 bits */ -typedef unsigned short int U16; +/** Alias for unsigned integer with 16 bits */ +typedef uint16_t U16; -/** Alias for short int: signed integer with 16 bits */ -typedef short int S16; +/** Alias for signed integer with 16 bits */ +typedef int16_t S16; -/** Alias for unsigned int: unsigned integer with 32 bits */ -typedef unsigned int U32; +/** Alias for unsigned integer with 32 bits */ +typedef uint32_t U32; -/** Alias for int: signed integer with 32 bits */ -typedef int S32; +/** Alias for signed integer with 32 bits */ +typedef int32_t S32; -///** Alias for unsigned long long: unsigned integer with 64 bits */ -//typedef unsigned long long int U64; -// -///** Alias for long long: signed integer with 64 bits */ -//typedef long long int S64; -#ifndef __x86_64__ -#undef __anna64__ -/** Alias for long long: signed integer with 64 bits */ -typedef int64_t S64 -/** Alias for unsigned long long: unsigned integer with 64 bits */ -typedef u_int64_t U64; -#else -#define __anna64__ -/** Alias for long long: signed integer with 64 bits */ -typedef long long int S64; -/** Alias for unsigned long long: unsigned integer with 64 bits */ -typedef unsigned long long int U64; -#endif +/** Alias for unsigned integer with 64 bits */ +typedef uint64_t U64; + +/** Alias for signed integer with 64 bits */ +typedef int64_t S64; /** Alias for float: floating number with 32 bits (1-8-23) */ typedef float F32; @@ -109,7 +86,10 @@ typedef float F32; /** Alias for double: floating number with 64 bits (1-11-52) */ typedef double F64; -/** Alias for unsigned int: unsigned integer with 32 bits used to contain 24 bits */ +/** Alias for long double: floating number with 80 bits (1-15-64) */ +typedef long double F80; + +/** Alias for unsigned integer with 32 bits used to contain 24 bits */ typedef U32 U24;