hl2_src-leak-2017/src/thirdparty/telemetry/include/radtypes.h

694 lines
18 KiB
C

/// ========================================================================
// (C) Copyright 1994- 2014 RAD Game Tools, Inc. Global types header file
// ========================================================================
#if !defined(__RADTYPESH__) && !defined(__RADRR_COREH__)
#define __RADTYPESH__
#define __RADRR_COREH__ // block old rr_core
#define RADCOPYRIGHT "Copyright (C) 1994-2014, RAD Game Tools, Inc."
#if !defined(__RADRES__) // don't include anything for resource compiles
// __RAD32__ means at least 32 bit code (always defined)
// __RAD64__ means 64 bit code (64-bit OSes only)
// __RADNT__ means Win32 and Win64 desktop
// __RADWINRT__ means Windows Store/Phone App (x86, x64, arm)
// __RADWIN__ means win32, win64, windows store/phone, xenon, durango
// __RADWINRTAPI__ means Windows RT API (Win Store, Win Phone, Durango)
// __RADMAC__ means MacOS (32 or 64-bit)
// __RADXENON__ means the Xbox360 console
// __RADXBOXONE__ means Xbox One
// __RADWIIU__ means the Nintendo Wii U
// __RAD3DS__ means the Nintendo 3DS
// __RADPS3__ means the Sony PlayStation 3
// __RADPS4__ means the Sony PlayStation 4
// __RADANDROID__ means Android NDK
// __RADNACL__ means Native Client SDK
// __RADLINUX__ means Linux (32 or 64-bit)
// __RADPSP2__ means PS Vita
// __RADQNX__ means QNX
// __RADIPHONE__ means iphone
// __RADARM__ means arm
// __RADPPC__ means powerpc
// __RADX86__ means x86 or x64
// __RADX64__ means x64
// __RADX64__ means x64
// __RADNOVARARGMACROS__ means #defines can't use ...
// RADDEFSTART is "extern "C" {" on C++, nothing on C
// RADDEFEND is "}" on C++, nothing on C
// RADEXPFUNC and RADEXPLINK are used on both the declaration
// and definition of exported functions.
// RADEXPFUNC int RADEXPLINK exported_func()
// RADDEFFUNC and RADLINK are used on both the declaration
// and definition of public functions (but not exported).
// RADDEFFUNC int RADLINK public_c_func()
// RADRESTRICT is for non-aliasing pointers/
// RADSTRUCT is defined as "struct" on msvc, and
// "struct __attribute__((__packed__))" on gcc/clang
// Used to sort of address generic structure packing
// (we still require #pragma packs to fix the
// packing on windows, though)
// ========================================================
// First off, we detect your platform
#if defined(ANDROID)
#define __RADANDROID__ 1
#define __RADDETECTED__ __RADANDROID__
#endif
#if defined(__QNX__)
#define __RADQNX__ 2
#define __RADDETECTED__ __RADQNX__
#endif
#if defined(__linux__) && !defined(ANDROID)
#define __RADLINUX__ 3
#define __RADDETECTED__ __RADLINUX__
#endif
#if defined(__native_client__)
#define __RADNACL__ 4
#define __RADDETECTED__ __RADNACL__
#endif
#if defined(_DURANGO) || defined(_SEKRIT) || defined(_SEKRIT1) || defined(_XBOX_ONE)
#define __RADXBOXONE__ 5
#define __RADDETECTED__ __RADXBOXONE__
#endif
#if defined(__ORBIS__)
#define __RADPS4__ 6
#define __RADDETECTED__ __RADPS4__
#endif
#if defined(CAFE)
#define __RADWIIU__ 7
#define __RADDETECTED__ __RADWIIU__
#endif
#if defined(NN_PLATFORM_CTR)
#define __RAD3DS__ 8
#define __RADDETECTED__ __RAD3DS__
#endif
#if defined(__psp2__)
#define __RADPSP2__ 9
#define __RADDETECTED__ __RADPSP2__
#endif
#if defined(__CELLOS_LV2__)
#ifdef __SPU__
#define __RADSPU__ 10
#define __RADDETECTED__ __RADSPU__
#else
#define __RADPS3__ 11
#define __RADDETECTED__ __RADPS3__
#endif
#endif
#if defined(_XENON) || ( defined(_XBOX_VER) && (_XBOX_VER == 200) )
#define __RADXENON__ 12
#define __RADDETECTED__ __RADXENON__
#endif
#if !defined(__RADXENON__) && !defined(__RADXBOXONE__) &&( defined(_Windows) || defined(WIN32) || defined(__WINDOWS__) || defined(_WIN32) || defined(_WIN64) || defined(WINAPI_FAMILY) )
#ifdef WINAPI_FAMILY
// If this is #defined, we might be in a Windows Store App. But
// VC++ by default #defines this to a symbolic name, not an integer
// value, and those names are defined in "winapifamily.h". So if
// WINAPI_FAMILY is #defined, #include the header so we can parse it.
#include <winapifamily.h>
#define RAD_WINAPI_IS_APP (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP))
#if RAD_WINAPI_IS_APP
#define __RADWINRTAPI__
#define __RADWINRT__ 13
#define __RADDETECTED__ __RADWINRT__
#endif
#else
#define RAD_WINAPI_IS_APP 0
#endif
#ifndef __RADWINRT__
// if we aren't WinRT, then we are plain old NT
#define __RADNT__ 14
#define __RADDETECTED__ __RADNT__
#endif
#endif
#if defined(__APPLE__)
#include "TargetConditionals.h"
#if defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR
#define __RADIPHONE__ 15
#define __RADIPHONESIM__ 16
#define __RADDETECTED__ __RADIPHONESIM__
#elif defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
#define __RADIPHONE__ 15
#define __RADDETECTED__ __RADIPHONE__
#else
#define __RADMAC__ 17
#define __RADDETECTED__ __RADMAC__
#endif
#endif
#if !defined(__RADDETECTED__)
#error "radtypes.h did not detect your platform."
#endif
// ========================================================
// Now detect some architexture stuff
#define __RAD32__ // we have no non-at-least-32-bit cpus any more
#if defined(__arm__) || defined( _M_ARM )
#define __RADARM__ 1
#define __RADDETECTEDPROC__ __RADARM__
#define __RADLITTLEENDIAN__
#endif
#if defined(__i386) || defined( __i386__ ) || defined( _M_IX86 ) || defined( _X86_ )
#define __RADX86__ 2
#if !defined __RADIPHONESIM__
// only use mmx on PC, Win, Linux - not iphone sim!
#define __RADMMX__
#endif
#define __RADDETECTEDPROC__ __RADX86__
#define __RADLITTLEENDIAN__
#endif
#if defined(_x86_64) || defined( __x86_64__ ) || defined( _M_X64 ) || defined( _M_AMD64 )
#define __RADX86__ 2
#define __RADX64__ 3
#define __RADMMX__
#define __RADDETECTEDPROC__ __RADX64__
#define __RADLITTLEENDIAN__
#endif
#if defined(__powerpc) || defined( _M_PPC ) || defined( CAFE ) || defined( _XENON ) || (defined( __CELLOS_LV2__ ) && !defined( __SPU__ ))
#define __RADPPC__ 4
#if !defined( CAFE )
#define __RADALTIVEC__
#endif
#define __RADDETECTEDPROC__ __RADPPC__
#define __RADBIGENDIAN__
#endif
#if defined( __CELLOS_LV2__ ) && defined( __SPU__ )
#define __RADCELLSPU__ 5
#define __RADDETECTEDPROC__ __RADCELLSPU__
#define __RADBIGENDIAN__
#endif
#if !defined(__RADDETECTEDPROC__)
#error "radtypes.h did not detect your processor type."
#endif
#if defined(__ppc64__) || defined(__aarch64__) || defined(_M_X64) || defined(__x86_64__) || defined(__x86_64)
#define __RAD64__
#define __RAD64REGS__ // need to set this for platforms that aren't 64-bit, but have 64-bit regs (xenon, ps3)
#endif
// ========================================================
// C++ name demangaling nonsense
#ifdef __cplusplus
#define RADDEFFUNC extern "C"
#define RADDEFSTART extern "C" {
#define RADDEFEND }
#define RADDEFAULT( val ) =val
#else
#define RADDEFFUNC
#define RADDEFSTART
#define RADDEFEND
#define RADDEFAULT( val )
#endif
// ========================================================
// handle exported function declarations:
// in anything with __RADNOEXPORTS__, RADEXPFUNC == nothing (turn off exports with this flag)
// in DLL, RADEXPFUNC == DLL export
// in EXE, RADEXPFUNC == DLL import
// in EXE with RADNOEXEEXPORTS, RADEXPFUNC == nothing (turn off imports in EXE with this flag)
// in static lib, RADEXPFUNC == nothing
#if ( defined(__RADINSTATICLIB__) || defined(__RADNOEXPORTS__ ) || ( defined(__RADNOEXEEXPORTS__) && ( !defined(__RADINDLL__) ) && ( !defined(__RADINSTATICLIB__) ) ) )
// if we are in a static lib, or exports are off, or if we are in an EXE we asked for no exe exports (or imports)
// then EXPFUNC is just a normal function
#define RADEXPFUNC RADDEFFUNC
#else
// otherwise, we use imprt or export base on the build flag __RADINDLL__
#if defined(__RADINDLL__)
#define RADEXPFUNC RADDEFFUNC RADDLLEXPORTDLL
#else
#define RADEXPFUNC RADDEFFUNC RADDLLIMPORTDLL
#endif
#endif
#if defined(__RADANDROID__)
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADQNX__)
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK RADLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADLINUX__)
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#if defined(__RADX86__) && !defined(__RADX64__)
#define RADLINK __attribute__((cdecl))
#define RADEXPLINK __attribute__((cdecl))
#else
#define RADLINK
#define RADEXPLINK
#endif
// for linux, we assume you are building with hidden visibility,
// so for RADEXPFUNC, we turn the vis back on...
#define RADDLLEXPORTDLL __attribute__((visibility("default")))
#define RADDLLIMPORTDLL
#endif
#if defined(__RADNACL__)
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADXBOXONE__)
#define __RADDURANGO__
#define __RADWIN__
#define __RADSEKRIT__
#define __RADWIN__
#define RADRESTRICT __restrict
#define RADSTRUCT struct
#define __RADWINRTAPI__
#define RADLINK __stdcall
#define RADEXPLINK __stdcall
#define RADDLLEXPORTDLL // we don't use dlls on xbox
#define RADDLLIMPORTDLL
#endif
#if defined(__RADPS4__)
#define __RADSEKRIT2__
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADNT__)
#define __RADWIN__
#if _MSC_VER >= 1400
#define RADRESTRICT __restrict
#else
// vc6 and older
#define RADRESTRICT
#define __RADNOVARARGMACROS__
#endif
#define RADSTRUCT struct
#define RADLINK __stdcall
#define RADEXPLINK __stdcall
#define RADDLLEXPORTDLL __declspec(dllexport)
#ifdef __RADX32__
// on weird NT DLLs built to run on Linux and Mac, no imports
#define RADDLLIMPORTDLL
#else
// normal win32 dll import
#define RADDLLIMPORTDLL __declspec(dllimport)
#endif
#endif
#if defined(__RADWINRT__)
#define __RADWIN__
#define RADRESTRICT __restrict
#define RADSTRUCT struct
#define RADLINK __stdcall
#define RADEXPLINK __stdcall
#define RADDLLEXPORTDLL __declspec(dllexport)
#define RADDLLIMPORTDLL __declspec(dllimport)
#endif
#if defined(__RADWIIU__)
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RAD3DS__)
#define RADRESTRICT
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADPSP2__)
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADPS3__)
#define __RAD64REGS__
#define __RADCELL__
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADSPU__)
#define __RADCELL__
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADIPHONE__)
#define __RADMACAPI__
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
#define RADDLLEXPORTDLL
#define RADDLLIMPORTDLL
#endif
#if defined(__RADMAC__)
#define __RADMACH__
#define __RADMACAPI__
#define RADRESTRICT __restrict
#define RADSTRUCT struct __attribute__((__packed__))
#define RADLINK
#define RADEXPLINK
// for mac, we assume you are building with hidden visibility,
// so for RADEXPFUNC, we turn the vis back on...
#define RADDLLEXPORTDLL __attribute__((visibility("default")))
#define RADDLLIMPORTDLL
#ifdef TARGET_API_MAC_CARBON
#if TARGET_API_MAC_CARBON
#ifndef __RADCARBON__
#define __RADCARBON__
#endif
#endif
#endif
#endif
#if defined(__RADXENON__)
#define __RAD64REGS__
#define __RADWIN__
#define RADRESTRICT __restrict
#define RADSTRUCT struct
#define RADLINK __stdcall
#define RADEXPLINK __stdcall
#define RADDLLEXPORTDLL // we don't use dlls on xbox
#define RADDLLIMPORTDLL
#endif
#ifndef RADLINK
#error RADLINK was not defined.
#endif
#ifdef _MSC_VER
#define RADINLINE __inline
#else
#define RADINLINE inline
#endif
//===========================================================================
// RR_STRING_JOIN joins strings in the preprocessor and works with LINESTRING
#define RR_STRING_JOIN(arg1, arg2) RR_STRING_JOIN_DELAY(arg1, arg2)
#define RR_STRING_JOIN_DELAY(arg1, arg2) RR_STRING_JOIN_IMMEDIATE(arg1, arg2)
#define RR_STRING_JOIN_IMMEDIATE(arg1, arg2) arg1 ## arg2
//===========================================================================
// RR_NUMBERNAME is a macro to make a name unique, so that you can use it to declare
// variable names and they won't conflict with each other
// using __LINE__ is broken in MSVC with /ZI , but __COUNTER__ is an MSVC extension that works
#ifdef _MSC_VER
#define RR_NUMBERNAME(name) RR_STRING_JOIN(name,__COUNTER__)
#else
#define RR_NUMBERNAME(name) RR_STRING_JOIN(name,__LINE__)
#endif
//===================================================================
// simple compiler assert
// this happens at declaration time, so if it's inside a function in a C file, drop {} around it
#ifndef RR_COMPILER_ASSERT
#define RR_COMPILER_ASSERT(exp) typedef char RR_NUMBERNAME(_dummy_array) [ (exp) ? 1 : -1 ]
#endif
//===========================================
// first, we set defines for each of the types
#define RAD_S8 signed char
#define RAD_U8 unsigned char
#define RAD_U16 unsigned short
#define RAD_S16 signed short
#if defined(__RAD64__)
#define RAD_U32 unsigned int
#define RAD_S32 signed int
// pointers are 64 bits.
#if (_MSC_VER >= 1300 && defined(_Wp64) && _Wp64 )
#define RAD_SINTa __w64 signed __int64
#define RAD_UINTa __w64 unsigned __int64
#else
// non-vc.net compiler or /Wp64 turned off
#define RAD_UINTa unsigned long long
#define RAD_SINTa signed long long
#endif
#endif
#if defined(__RAD32__) && !defined(__RAD64__)
#define RAD_U32 unsigned int
#define RAD_S32 signed int
#if ( ( defined(_MSC_VER) && (_MSC_VER >= 1300 ) ) && ( defined(_Wp64) && ( _Wp64 ) ) )
#define RAD_SINTa __w64 signed long
#define RAD_UINTa __w64 unsigned long
#else
// non-vc.net compiler or /Wp64 turned off
#ifdef _Wp64
#define RAD_SINTa signed long
#define RAD_UINTa unsigned long
#else
#define RAD_SINTa signed int
#define RAD_UINTa unsigned int
#endif
#endif
#endif
#define RAD_F32 float
#define RAD_F64 double
#if defined(_MSC_VER)
#define RAD_U64 unsigned __int64
#define RAD_S64 signed __int64
#else
#define RAD_U64 unsigned long long
#define RAD_S64 signed long long
#endif
//================================================================
// Then, we either typedef or define them based on switch settings
#if !defined(RADNOTYPEDEFS) // this define will turn off typedefs
#ifndef S8_DEFINED
#define S8_DEFINED
typedef RAD_S8 S8;
#endif
#ifndef U8_DEFINED
#define U8_DEFINED
typedef RAD_U8 U8;
#endif
#ifndef S16_DEFINED
#define S16_DEFINED
typedef RAD_S16 S16;
#endif
#ifndef U16_DEFINED
#define U16_DEFINED
typedef RAD_U16 U16;
#endif
#ifndef S32_DEFINED
#define S32_DEFINED
typedef RAD_S32 S32;
#endif
#ifndef U32_DEFINED
#define U32_DEFINED
typedef RAD_U32 U32;
#endif
#ifndef S64_DEFINED
#define S64_DEFINED
typedef RAD_S64 S64;
#endif
#ifndef U64_DEFINED
#define U64_DEFINED
typedef RAD_U64 U64;
#endif
#ifndef F32_DEFINED
#define F32_DEFINED
typedef RAD_F32 F32;
#endif
#ifndef F64_DEFINED
#define F64_DEFINED
typedef RAD_F64 F64;
#endif
#ifndef SINTa_DEFINED
#define SINTa_DEFINED
typedef RAD_SINTa SINTa;
#endif
#ifndef UINTa_DEFINED
#define UINTa_DEFINED
typedef RAD_UINTa UINTa;
#endif
#ifndef RRBOOL_DEFINED
#define RRBOOL_DEFINED
typedef S32 rrbool;
typedef S32 RRBOOL;
#endif
#elif !defined(RADNOTYPEDEFINES) // this define will turn off type defines
#ifndef S8_DEFINED
#define S8_DEFINED
#define S8 RAD_S8
#endif
#ifndef U8_DEFINED
#define U8_DEFINED
#define U8 RAD_U8
#endif
#ifndef S16_DEFINED
#define S16_DEFINED
#define S16 RAD_S16
#endif
#ifndef U16_DEFINED
#define U16_DEFINED
#define U16 RAD_U16
#endif
#ifndef S32_DEFINED
#define S32_DEFINED
#define S32 RAD_S32
#endif
#ifndef U32_DEFINED
#define U32_DEFINED
#define U32 RAD_U32
#endif
#ifndef S64_DEFINED
#define S64_DEFINED
#define S64 RAD_S64
#endif
#ifndef U64_DEFINED
#define U64_DEFINED
#define U64 RAD_U64
#endif
#ifndef F32_DEFINED
#define F32_DEFINED
#define F32 RAD_F32
#endif
#ifndef F64_DEFINED
#define F64_DEFINED
#define F64 RAD_F64
#endif
#ifndef SINTa_DEFINED
#define SINTa_DEFINED
#define SINTa RAD_SINTa
#endif
#ifndef UINTa_DEFINED
#define UINTa_DEFINED
#define UINTa RAD_UINTa
#endif
#ifndef RRBOOL_DEFINED
#define RRBOOL_DEFINED
#define rrbool S32
#define RRBOOL S32
#endif
#endif
#endif // __RADRES__
#endif // __RADTYPESH__