| #ifndef _RAR_TYPES_ |
| #define _RAR_TYPES_ |
| |
| #include <stdint.h> |
| |
| typedef uint8_t byte; // Unsigned 8 bits. |
| typedef uint16_t ushort; // Preferably 16 bits, but can be more. |
| typedef unsigned int uint; // 32 bits or more. |
| typedef uint32_t uint32; // 32 bits exactly. |
| typedef int32_t int32; // Signed 32 bits exactly. |
| typedef uint64_t uint64; // 64 bits exactly. |
| typedef int64_t int64; // Signed 64 bits exactly. |
| typedef wchar_t wchar; // Unicode character |
| |
| // Get lowest 16 bits. |
| #define GET_SHORT16(x) (sizeof(ushort)==2 ? (ushort)(x):((x)&0xffff)) |
| |
| // Make 64 bit integer from two 32 bit. |
| #define INT32TO64(high,low) ((((uint64)(high))<<32)+((uint64)low)) |
| |
| // Maximum int64 value. |
| #define MAX_INT64 int64(INT32TO64(0x7fffffff,0xffffffff)) |
| |
| // Special int64 value, large enough to never be found in real life. |
| // We use it in situations, when we need to indicate that parameter |
| // is not defined and probably should be calculated inside of function. |
| // Lower part is intentionally 0x7fffffff, not 0xffffffff, to make it |
| // compatible with 32 bit int64. |
| #define INT64NDF INT32TO64(0x7fffffff,0x7fffffff) |
| |
| // Maximum uint64 value. |
| #define MAX_UINT64 INT32TO64(0xffffffff,0xffffffff) |
| #define UINT64NDF MAX_UINT64 |
| |
| #endif |