19 #ifndef PERSPECTIVE_SYS_H 20 #define PERSPECTIVE_SYS_H 26 #error Compilateur C++ requis ! 30 #if defined(linux) || defined(__linux) || defined(__linux__) 35 #if defined(WIN32) || defined(_WIN32) || defined(__WINDOWS__) || defined(__TOS_WIN__) || defined(PREDEF_COMPILER_VISUALC) || defined(__MINGW32__) || defined(__CYGWIN__) 53 #if defined(__ANDROID__) 55 #include <android/api-level.h> 74 #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) 75 #include <sys/param.h> 78 #if defined(__FreeBSD__) 80 #elif defined(__OpenBSD__) 82 #elif defined(__NetBSD__) 84 #elif defined(__DragonFly__) 85 #define PSYS_DRAGONFLY_BSD 91 #if defined(__sun) && defined(__SVR4) 95 #if (defined(__APPLE__) && defined(__MACH__)) 100 #include <TargetConditionals.h> 101 #if TARGET_IPHONE_SIMULATOR == 1 103 #elif TARGET_OS_IPHONE == 1 105 #elif TARGET_OS_MAC == 1 108 #endif // TARGET_IPHONE_SIMULATOR 112 #if defined(_MSC_VER) 113 #define PSYS_CXX_MSVC 115 #elif defined(__IBMC__) || defined(__IBMCPP__) 116 #define PSYS_CXX_IBM_XL 119 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) 120 #define PSYS_CXX_SOLARIS_STUDIO 121 #elif defined(__CC_ARM) 122 #define PSYS_CXX_ARM_COMPILER 123 #elif defined(__BORLANDC__) || defined(__CODEGEARC__) 124 #define PSYS_CXX_CPPBUILDER 125 #elif defined(__DMC__) 127 #elif defined(__OPEN64__) || defined(__OPENCC__) 128 #define PSYS_CXX_OPEN64 129 #elif defined(__ICC) || defined(__INTEL_COMPILER) 131 #elif defined(__clang__) 132 #define PSYS_CXX_CLANG 133 #include <features.h> 134 #elif defined(__GNUC__) 137 #include <features.h> 142 #if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) 144 #endif // __GNU_LIBRARY__ 147 #if defined(i386) || defined(__i386) || defined(__i386__) || \ 148 defined(__i486__) || defined(__i586__) || defined(__i686__) || \ 149 defined(__X86__) || defined(_X86_) || defined(__I86__) || \ 150 defined(__IA32__) || defined (_M_IX86) || defined(__THW_INTEL__) || defined(__INTEL__) 155 #if defined(__amd64) || defined(__amd64__) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) 160 #if defined(__arm__) || defined(__arm) || defined(_M_ARM) || defined(_ARM) || defined(__TARGET_ARCH_ARM) 165 #if defined(__thumb__) || defined(_M_ARMT) || defined(__TARGET_ARCH_THUMB) 166 #define PARCH_ARM_THUMB 170 #if defined(__ia64) || defined(__itanium__) || defined(_M_IA64) 175 #if defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) 176 #define PARCH_POWERPC 177 #if defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__64BIT__) || defined(_LP64) || defined(__LP64__) 178 #define PARCH_POWERPC_64 180 #define PARCH_POWERPC_32 181 #endif // __powerpc64__ 182 #endif // __powerpc__ 190 #if !defined(PSYS_LINUX) && !defined(PSYS_WINDOWS) && !defined(PSYS_MACOSX) 191 #error Plateforme non supportée. 192 #endif // PSYS_LINUX ... 195 #if defined(PARCH_X86) || defined(PARCH_X86_64) 196 #define PARCH_X86_X64 198 #error Architecture non supportée. 201 #if (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \ 202 defined(PARCH_X86_X64) || defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || defined(__MIPSEL__) 203 #define PARCH_LITTLE_ENDIAN 204 #elif (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)) || \ 205 defined(__BIG_ENDIAN__) || defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || defined(__MIPSEB__) 206 #define PARCH_BIG_ENDIAN 207 #endif // __BYTE_ORDER__ 209 #if defined(PARCH_LITTLE_ENDIAN) && defined(PARCH_BIG_ENDIAN) 210 #error "PARCH_LITTLE_ENDIAN && PARCH_BIG_ENDIAN ???" 211 #endif // PARCH_LITTLE_ENDIAN && PARCH_BIG_ENDIAN 214 #if !defined(PARCH_LITTLE_ENDIAN) && !defined(PARCH_BIG_ENDIAN) 215 #error "!PARCH_LITTLE_ENDIAN && !PARCH_BIG_ENDIAN ???" 216 #endif // !PARCH_LITTLE_ENDIAN && !PARCH_BIG_ENDIAN 219 #if defined (PSYS_ANDROID) 220 #if __ANDROID_API__ == 1 221 #define PSYS_ANDROID_VERSION_STR "1.0" 222 #elif __ANDROID_API__ == 2 223 #define PSYS_ANDROID_VERSION_STR "1.1" 224 #elif __ANDROID_API__ == 3 225 #define PSYS_ANDROID_VERSION_STR "1.5" 226 #elif __ANDROID_API__ == 4 227 #define PSYS_ANDROID_VERSION_STR "1.6" 228 #elif __ANDROID_API__ == 5 229 #define PSYS_ANDROID_VERSION_STR "2.0" 230 #elif __ANDROID_API__ == 6 231 #define PSYS_ANDROID_VERSION_STR "2.0.1" 232 #elif __ANDROID_API__ == 7 233 #define PSYS_ANDROID_VERSION_STR "2.1" 234 #elif __ANDROID_API__ == 8 235 #define PSYS_ANDROID_VERSION_STR "2.2" 236 #elif __ANDROID_API__ == 9 237 #define PSYS_ANDROID_VERSION_STR "2.3" 238 #elif __ANDROID_API__ == 10 239 #define PSYS_ANDROID_VERSION_STR "2.3.3" 240 #elif __ANDROID_API__ == 11 241 #define PSYS_ANDROID_VERSION_STR "3.0" 242 #elif __ANDROID_API__ == 12 243 #define PSYS_ANDROID_VERSION_STR "3.1" 244 #elif __ANDROID_API__ == 13 245 #define PSYS_ANDROID_VERSION_STR "3.2" 246 #elif __ANDROID_API__ == 14 247 #define PSYS_ANDROID_VERSION_STR "4.0" 248 #elif __ANDROID_API__ == 15 249 #define PSYS_ANDROID_VERSION_STR "4.0.3" 250 #elif __ANDROID_API__ == 16 251 #define PSYS_ANDROID_VERSION_STR "4.1" 252 #elif __ANDROID_API__ == 17 253 #define PSYS_ANDROID_VERSION_STR "4.2" 254 #elif __ANDROID_API__ == 18 255 #define PSYS_ANDROID_VERSION_STR "4.3" 256 #elif __ANDROID_API__ == 19 257 #define PSYS_ANDROID_VERSION_STR "4.4" 258 #elif __ANDROID_API__ == 20 259 #define PSYS_ANDROID_VERSION_STR "4.4W" 260 #elif __ANDROID_API__ == 21 261 #define PSYS_ANDROID_VERSION_STR "5.0" 262 #elif __ANDROID_API__ == 22 263 #define PSYS_ANDROID_VERSION_STR "5.1" 264 #elif __ANDROID_API__ == 23 265 #define PSYS_ANDROID_VERSION_STR "6.0" 266 #elif __ANDROID_API__ == 24 267 #define PSYS_ANDROID_VERSION_STR "7.0" 268 #elif __ANDROID_API__ == 25 269 #define PSYS_ANDROID_VERSION_STR "7.1" 271 #define PSYS_ANDROID_VERSION_STR "> 7.1" 272 #endif // __ANDROID_API__ 273 #define PSYS_PLATEFORME_STR "Android " PSYS_ANDROID_VERSION_STR 274 #elif defined(PSYS_LINUX) 276 #define PSYS_PLATEFORME_STR "GNU/Linux" 278 #define PSYS_PLATEFORME_STR "Linux" 280 #elif defined(PSYS_WINDOWS) 281 #define PSYS_PLATEFORME_STR "Windows" 282 #elif defined(PSYS_MACOSX) 283 #define PSYS_PLATEFORME_STR "Mac OS X" 284 #elif defined PSYS_IOS 285 #define PSYS_PLATEFORME_STR "iOS" 286 #elif defined(PSYS_FREEBSD) 287 #define PSYS_PLATEFORME_STR "FreeBSD" 288 #elif defined(PSYS_OPENBSD) 289 #define PSYS_PLATEFORME_STR "OpenBSD" 290 #elif defined(PSYS_NETBSD) 291 #define PSYS_PLATEFORME_STR "NetBSD" 292 #elif defined(PSYS_DRAGONFLY_BSD) 293 #define PSYS_PLATEFORME_STR "DragonFly BSD" 294 #elif defined(PSYS_BEOS) 295 #define PSYS_PLATEFORME_STR "BeOS" 296 #elif defined(PSYS_SOLARIS) 297 #define PSYS_PLATEFORME_STR "Solaris" 298 #elif defined(PSYS_HP_UX) 299 #define PSYS_PLATEFORME_STR "HP-UX" 300 #elif defined(PSYS_AIX) 301 #define PSYS_PLATEFORME_STR "IBM AIX" 306 #define PSYS_PLATEFORME_STR "~" 307 #endif // PSYS_ANDROID 309 #if defined(PARCH_X86) 310 #define PSYS_ARCH_STR "x86" 311 #elif defined(PARCH_X86_64) 312 #define PSYS_ARCH_STR "x86_64" 313 #elif defined(PARCH_IA64) 314 #define PSYS_ARCH_STR "IA64" 315 #elif defined(PARCH_POWERPC) 316 #define PSYS_ARCH_STR "PPC" 317 #elif defined(PARCH_SPARC) 318 #define PSYS_ARCH_STR "SPARC" 319 #elif defined (PARCH_ARM) 320 #define PSYS_ARCH_STR "ARM" 321 #elif defined(PARCH_ARM_THUMB) 322 #define PSYS_ARCH_STR "ARM Thumb" 327 #define PSYS_ARCH_STR "~" 330 #if defined(PSYS_CXX_GCC) 331 #define PSYS_COMPILATEUR_STR "GCC" 332 #elif defined(PSYS_CXX_CLANG) 333 #define PSYS_COMPILATEUR_STR "Clang" 334 #elif defined(PSYS_CXX_ICC) 335 #define PSYS_COMPILATEUR_STR "Intel C++" 336 #elif defined(PSYS_CXX_MSVC) 337 #define PSYS_COMPILATEUR_STR "Microsoft Visual C++" 338 #elif defined(PSYS_CXX_PGC) 339 #define PSYS_COMPILATEUR_STR "PGC/PGC++" 340 #elif defined(PSYS_CXX_IBM_XL) 341 #define PSYS_COMPILATEUR_STR "IBM XL" 342 #elif defined(PSYS_CXX_SOLARIS_STUDIO) 343 #define PSYS_COMPILATEUR_STR "Solaris Studio" 344 #elif defined(PSYS_CXX_ARM_COMPILER) 345 #define PSYS_COMPILATEUR_STR "ARM Compiler" 346 #elif defined(PSYS_CXX_CPPBUILDER) 347 #define PSYS_COMPILATEUR_STR "Borland C++" 348 #elif defined(PSYS_CXX_DMD) 349 #define PSYS_COMPILATEUR_STR "Digital Mars C++" 350 #elif defined (PSYS_CXX_OPEN64) 351 #define PSYS_COMPILATEUR_STR "Open64" 356 #define PSYS_COMPILATEUR_STR "~" 357 #endif // PSYS_CXX_GCC 359 #define PSYS_CPP_VERSION __cplusplus 361 #if (PSYS_CPP_VERSION >= 201703L) 363 #endif // PSYS_CPP_VERSION 364 #if (PSYS_CPP_VERSION >= 201402L) 366 #endif // PSYS_CPP_VERSION 367 #if (PSYS_CPP_VERSION >= 201103L) 369 #endif // PSYS_CPP_VERSION 370 #if (PSYS_CPP_VERSION >= 199711L) 372 #endif // PSYS_CPP_VERSION 374 #if !defined(PSYS_CPP11) 375 #define nullptr ((void*) 0) 381 #if !defined(PSYS_CPP11) && !defined(thread_local) 382 #if (defined(PSYS_CXX_GCC) && defined(_GLIBCXX_HAVE_TLS)) || defined(PSYS_CXX_CLANG) 383 #define PSYS_TLS __thread 384 #elif defined(PSYS_CXX_MSVC) 385 #define PSYS_TLS __declspec(thread) 389 #define PSYS_TLS __thread 390 #elif defined(PSYS_WINDOWS) 391 #define PSYS_TLS __declspec(thread) 397 #endif // PSYS_CXX_ICC 398 #endif // PSYS_CXX_GCC 400 #define PSYS_TLS thread_local 406 #if (defined(PSYS_CXX_GCC) || defined(PSYS_CXX_CLANG)) && !defined(PSYS_MINGW) // MinGW a quelques problèmes pour le moment avec __restrict__ ... 407 #define __restrict__ PSYS_restrict 408 #elif defined(PSYS_CXX_MSVC) 409 #define __restrict PSYS_restrict 411 #define PSYS_restrict 412 #endif // PSYS_CXX_GCC ... 421 #define F_DEOPTIM __attribute__((optimize("O0"))) 427 #endif // PSYS_CXX_GCC 429 #if defined(PSYS_CXX_GCC) 430 #define F_INLINE static inline __attribute__ ((always_inline)) 431 #define M_INLINE inline __attribute__ ((always_inline)) 432 #define F_CONST __attribute__ ((const)) 433 #define F_PURE __attribute__ ((pure)) 434 #define likely(x) __builtin_expect(!!(x), 1) 435 #define unlikely(x) __builtin_expect(!!(x), 0) 436 #elif defined(PSYS_CXX_CLANG) 437 #define F_INLINE static inline __attribute__ ((always_inline)) 438 #define M_INLINE inline __attribute__ ((always_inline)) 439 #define F_CONST __attribute__ ((const)) 441 #define likely(x) __builtin_expect(!!(x), 1) 442 #define unlikely(x) __builtin_expect(!!(x), 0) 443 #elif defined(PSYS_CXX_MSVC) 444 #define F_INLINE static inline 445 #define M_INLINE __forceinline 454 #define F_INLINE inline 459 #define M_INLINE inline 470 #endif // PSYS_CXX_GCC 475 #define P_UNUSED(X) ((void)(X)) 477 #if !defined(DLL_IMPORT) || !defined(DLL_EXPORT) || !defined(DLL_LOCAL) || !defined(DLL_INTERNAL) 483 #ifdef PSYS_WINDOWS // Windows, MinGW ou Cygwin 484 #define DLL_IMPORT __declspec(dllimport) 485 #define DLL_EXPORT __declspec(dllexport) 487 #define DLL_INTERNAL DLL_LOCAL 490 #define DLL_IMPORT __attribute__ ((visibility ("default"))) 491 #define DLL_EXPORT __attribute__ ((visibility ("default"))) 492 #define DLL_LOCAL __attribute__ ((visibility ("hidden"))) 493 #define DLL_INTERNAL __attribute__ ((visibility ("internal"))) 500 #endif // PSYS_WINDOWS 501 #endif // !DLL_IMPORT || !DLL_EXPORT || !DLL_LOCAL || !DLL_INTERNAL 503 #if defined(PSYS_CXX_GCC) && defined(PARCH_X86_X64) 504 #define FAST_CALL __attribute__ ((fastcall)) 505 #elif defined(PSYS_CXX_MSVC) && defined(PARCH_X86_X64) 506 #define FAST_CALL __fastcall 512 #endif // PSYS_CXX_GCC && PARCH_X86_X64 518 #if INTERNE_PERSPECTIVE3D 519 #define DLL_API DLL_EXPORT 524 #define DLL_API DLL_IMPORT 525 #endif // INTERNE_PERSPECTIVE3D 527 #if defined(PSYS_CPP11) 531 #define P_INTERDIT_COPIE(CLASSE) CLASSE(const CLASSE &) = delete;\ 532 CLASSE &operator=(const CLASSE &) = delete; 534 #define P_INTERDIT_COPIE_TEMPLATE(CLASSE, T) CLASSE(const CLASSE<T> &) = delete;\ 535 CLASSE &operator=(const CLASSE<T> &) = delete; 537 #define P_INTERDIT_COPIE_TEMPLATE2(CLASSE, T1, T2) CLASSE(const CLASSE<T1, T2> &) = delete;\ 538 CLASSE &operator=(const CLASSE<T1, T2> &) = delete; 540 #define P_INTERDIT_COPIE_TEMPLATE3(CLASSE, T1, T2, T3) CLASSE(const CLASSE<T1, T2, T3> &) = delete;\ 541 CLASSE &operator=(const CLASSE<T1, T2, T3> &) = delete; 543 #define P_INTERDIT_COPIE_TEMPLATE_N(CLASSE, ...) CLASSE(const CLASSE<__VA_ARGS__> &) = delete;\ 544 CLASSE &operator=(const CLASSE<__VA_ARGS__> &) = delete; 551 #define EXPLICIT_FALLTHROUGH [[fallthrough]] 552 #elif defined(PSYS_CPP14) || defined(PSYS_CPP11) 553 #if defined(PSYS_CXX_GCC) 554 #define EXPLICIT_FALLTHROUGH [[gnu::fallthrough]] 555 #elif defined(PSYS_CXX_CLANG) 556 #define EXPLICIT_FALLTHROUGH [[clang::fallthrough]] 558 #define EXPLICIT_FALLTHROUGH 559 #endif // PSYS_CXX_GCC 562 #if defined(PSYS_CXX_GCC) 563 #define EXPLICIT_FALLTHROUGH __attribute__ ((fallthrough)) 565 #elif defined(PSYS_CXX_CLANG) 566 #define EXPLICIT_FALLTHROUGH 567 #pragma clang diagnostic ignored "-Wimplicit-fallthrough" 572 #define EXPLICIT_FALLTHROUGH 573 #endif // PSYS_CXX_GCC 582 #define DL_LOAD(name) LoadLibraryA(name) 583 #define DL_LOAD_GLOBAL(name) LoadLibraryA(name) 584 #define DL_UNLOAD(handle) FreeLibrary((HMODULE) handle) 585 #define DL_GETPROC(handle, name) GetProcAddress((HMODULE) handle, name) 586 #define DL_HANDLE_T (HMODULE) 587 #define DL_PROC_ATTR __stdcall 588 #elif defined(PSYS_POSIX) 590 #define DL_LOAD(name) dlopen(name, RTLD_LAZY | RTLD_LOCAL) 591 #define DL_LOAD_GLOBAL(name) dlopen(name, RTLD_LAZY | RTLD_GLOBAL) 592 #define DL_UNLOAD(handle) (dlclose(handle) == 0) 593 #define DL_GETPROC(handle, name) dlsym(handle, name) 594 #define DL_HANDLE_T (void *) 597 #define DL_LOAD(name) (nullptr) 598 #define DL_LOAD_GLOBAL(name) (nullptr) 599 #define DL_UNLOAD(name) (0) 600 #define DL_GETPROC(handle, name) (nullptr) 601 #define DL_HANDLE_T (void *) 603 #endif // PSYS_WINDOWS 604 #define DL_DECLARE(PROTO_RETURN, PROTO_ARGUMENTS, VAR_NAME, DL, FUNC_NAME) PROTO_RETURN (DL_PROC_ATTR *VAR_NAME) PROTO_ARGUMENTS = (PROTO_RETURN (*) PROTO_ARGUMENTS) DL_GETPROC(DL, #FUNC_NAME) 619 typedef __int8
pint8;
620 typedef unsigned __int8
puint8;
622 typedef unsigned __int16
puint16;
624 typedef unsigned __int32
puint32;
626 typedef unsigned __int64
puint64;
636 #endif // PSYS_WIN_MSVC 638 #define Ptest_ptr(PTR) ((PTR) != nullptr) 657 template<
typename T>
static inline void swap(T& a, T& b)
662 template<
typename T>
static inline void swap(T& a, T& b)
670 template<
typename T>
static inline void swap_xor(T& a, T& b)
683 #if defined(PARCH_LITTLE_ENDIAN) 685 #elif defined(PARCH_BIG_ENDIAN) 688 static const pint test_b = 1;
689 return ((*reinterpret_cast<const char *>(&test_b)) == 1);
690 #endif // PARCH_LITTLE_ENDIAN 696 template<
typename T>
static inline T InverseOctsInt(
const T* v)
709 return (((ret >> 8) & 0xFFU) | ((ret & 0xFFU) << 8));
714 return (((ret & 0xFF000000U) >> 24) | ((ret & 0x00FF0000U) >> 8) | ((ret & 0x0000FF00U) << 8) | ((ret & 0x000000FFU) << 24));
719 return (((ret & 0xFF00000000000000ULL) >> 56) | ((ret & 0x00FF000000000000ULL) >> 40) |
720 ((ret & 0x0000FF0000000000ULL) >> 24) | ((ret & 0x000000FF00000000ULL) >> 8) |
721 ((ret & 0x00000000FF000000ULL) << 8) | ((ret & 0x0000000000FF0000ULL) << 24) |
722 ((ret & 0x000000000000FF00ULL) << 40) | ((ret & 0x00000000000000FFULL) << 56));
731 char * dest =
reinterpret_cast<char *
>(&ret);
732 char const * source = ((
char const *) v) +
sizeof(T) - 1;
733 for(
unsigned long iter =
sizeof(T); iter>0; --iter)
743 template<
typename T>
static inline T InverseOcts(
const T* v)
747 char * dest = ((
char *) &ret);
757 PerspectiveSys::swap(dest[0], dest[1]);
763 PerspectiveSys::swap(dest[0], dest[3]);
764 PerspectiveSys::swap(dest[1], dest[2]);
770 PerspectiveSys::swap(dest[0], dest[7]);
771 PerspectiveSys::swap(dest[1], dest[6]);
772 PerspectiveSys::swap(dest[2], dest[5]);
773 PerspectiveSys::swap(dest[3], dest[4]);
781 #else // Beaucoup de casts. C'est moins beau, mais plus rapide (particulièrement avec gcc -O2, qui utilise l'instruction bswap à la place des opérations bits à bits. C'est dans ce cas 4x plus rapide)... 791 ret = (((ret >> 8) & 0xFFU) | ((ret & 0xFFU) << 8));
792 const T *r =
reinterpret_cast<T*
>(&ret);
798 ret = (((ret & 0xFF000000U) >> 24) | ((ret & 0x00FF0000U) >> 8) | ((ret & 0x0000FF00U) << 8) | ((ret & 0x000000FFU) << 24));
799 const T *r =
reinterpret_cast<T*
>(&ret);
805 ret = (((ret & 0xFF00000000000000ULL) >> 56) | ((ret & 0x00FF000000000000ULL) >> 40) |
806 ((ret & 0x0000FF0000000000ULL) >> 24) | ((ret & 0x000000FF00000000ULL) >> 8) |
807 ((ret & 0x00000000FF000000ULL) << 8) | ((ret & 0x0000000000FF0000ULL) << 24) |
808 ((ret & 0x000000000000FF00ULL) << 40) | ((ret & 0x00000000000000FFULL) << 56));
809 const T *r =
reinterpret_cast<T*
>(&ret);
818 char * dest =
reinterpret_cast<char *
>(&ret);
821 char const * source = ((
char const *) v) +
sizeof(T) - 1;
822 for(
unsigned long iter =
sizeof(T); iter>0; --iter)
832 template<
typename T>
static inline T Conv_PetitBoutisme(
const T* v)
839 return InverseOcts<T>(v);
842 template<
typename T>
static inline T Conv_PetitBoutisme(T v)
844 return Conv_PetitBoutisme<T>(&v);
850 template<
typename T>
static inline T Conv_GrandBoutisme(
const T* v)
856 return InverseOcts<T>(v);
859 template<
typename T>
static inline T Conv_GrandBoutisme(T v)
861 return Conv_GrandBoutisme<T>(&v);
867 template<
typename T>
static inline T Conv_PetitBoutismeInt(
const T* v)
874 return InverseOctsInt<T>(v);
877 template<
typename T>
static inline T Conv_PetitBoutismeInt(T v)
879 return Conv_PetitBoutismeInt<T>(&v);
885 template<
typename T>
static inline T Conv_GrandBoutismeInt(
const T* v)
891 return InverseOctsInt<T>(v);
894 template<
typename T>
static inline T Conv_GrandBoutismeInt(T v)
896 return Conv_GrandBoutismeInt<T>(&v);
901 #define Pmemset std::memset 902 #define Pmemcpy std::memcpy 903 #define Pmemmove std::memmove 905 #endif // PERSPECTIVE_SYS_H int8_t pint8
Definition: perspective_sys.h:628
signed short pshort
Definition: perspective_sys.h:613
#define F_CONST
Attribut de fonction fonction const (GCC ou Clang).
Definition: perspective_sys.h:464
uint16_t puint16
Definition: perspective_sys.h:631
signed int pint
Types entiers.
Definition: perspective_sys.h:611
unsigned long long pulong
Definition: perspective_sys.h:616
uint64_t puint64
Definition: perspective_sys.h:635
Espace de nommage des fonctions dépendantes de l'architecture.
Definition: perspective_sys.h:647
#define M_INLINE
Attribut de méthode force inline (GCC ou Clang)).
Definition: perspective_sys.h:459
int32_t pint32
Definition: perspective_sys.h:632
unsigned short pushort
Definition: perspective_sys.h:614
int16_t pint16
Definition: perspective_sys.h:630
unsigned int puint
Definition: perspective_sys.h:612
int64_t pint64
Definition: perspective_sys.h:634
M_INLINE bool PetitBoutisme() F_CONST
Contrôle l'ordre des octets sur l'architecture actuelle (evalué à l'exécution).
Definition: perspective_sys.h:681
uint32_t puint32
Definition: perspective_sys.h:633
uint8_t puint8
Definition: perspective_sys.h:629
signed long long plong
Definition: perspective_sys.h:615