8#ifndef INCLUDED_BSLS_PLATFORM
9#define INCLUDED_BSLS_PLATFORM
267struct bsls_Platform_Assert;
281 #define BSLS_PLATFORM_COMPILER_ERROR \
282 char die[sizeof(::BloombergLP::bsls_Platform_Assert)]
284 #define BSLS_PLATFORM_COMPILER_ERROR char die[sizeof(bsls_Platform_Assert)]
305 #define BSLS_PLATFORM_CMP_MSVC 1
306 #define BSLS_PLATFORM_CMP_VERSION _MSC_VER
312 #if defined(_WIN64) || defined(_WIN32)
313 #define BSLS_PLATFORM_OS_WINDOWS 1
314 #elif defined(_WIN16)
315 #error "16-bit Windows platform not supported."
318 #error "Microsoft OS is running on an unknown platform."
325 #if _WIN32_WINNT >= 0x0A00
326 #define BSLS_PLATFORM_OS_WIN10 1
327 #elif _WIN32_WINNT >= 0x0603
328 #define BSLS_PLATFORM_OS_WINBLUE 1
329 #elif _WIN32_WINNT >= 0x0602
330 #define BSLS_PLATFORM_OS_WIN8 1
331 #elif _WIN32_WINNT >= 0x0601
332 #define BSLS_PLATFORM_OS_WIN7 1
333 #elif _WIN32_WINNT >= 0x0600
334 #define BSLS_PLATFORM_OS_WINVISTA 1
335 #elif _WIN32_WINNT >= 0x0502
336 #define BSLS_PLATFORM_OS_WINS03 1
337 #elif _WIN32_WINNT >= 0x0501
338 #define BSLS_PLATFORM_OS_WINXP 1
339 #elif _WIN32_WINNT >= 0x0500
340 #define BSLS_PLATFORM_OS_WIN2K 1
341 #elif _WIN32_WINNT >= 0x0410
342 #define BSLS_PLATFORM_OS_WIN9X 1
343 #elif _WIN32_WINNT >= 0x0400
344 #define BSLS_PLATFORM_OS_WINNT 1
345 #elif defined(WINVER) && WINVER >= 0x0400 \
346 || defined(_WIN32_WINDOWS) && _WIN32_WINDOWS >= 0x401
347 #define BSLS_PLATFORM_OS_WIN9X 1
349 #define BSLS_PLATFORM_OS_WINVISTA 1
353 #if defined(BSLS_PLATFORM_OS_WINVISTA) && !defined(BSLS_PLATFORM_OS_WINS08)
354 #define BSLS_PLATFORM_OS_WINS08 1
357 #if !defined(BSLS_PLATFORM_OS_WINVISTA) && defined(BSLS_PLATFORM_OS_WINS08)
358 #define BSLS_PLATFORM_OS_WINVISTA 1
363 #if defined(_WIN32_WINNT)
364 #define BSLS_PLATFORM_OS_VER_MAJOR _WIN32_WINNT / 0x100
365 #define BSLS_PLATFORM_OS_VER_MINOR _WIN32_WINNT % 0x100
366 #elif defined(WINVER)
367 #define BSLS_PLATFORM_OS_VER_MAJOR WINVER / 0x100
368 #define BSLS_PLATFORM_OS_VER_MINOR WINVER % 0x100
369 #elif defined(_WIN32_WINDOWS)
370 #define BSLS_PLATFORM_OS_VER_MAJOR _WIN32_WINDOWS / 0x100
371 #define BSLS_PLATFORM_OS_VER_MINOR _WIN32_WINDOWS % 0x100
373 #define BSLS_PLATFORM_OS_VER_MAJOR 4
374 #define BSLS_PLATFORM_OS_VER_MINOR 0
379 #if defined(_M_ALPHA)
380 #define BSLS_PLATFORM_CPU_ALPHA 1
381 #elif defined(_M_IX86)
382 #define BSLS_PLATFORM_CPU_X86 1
383 #define BSLS_PLATFORM_CPU_32_BIT 1
384 #define BSLS_PLATFORM_CPU_VER_MAJOR _M_IX86
385 #elif defined(_M_IA64)
387 #define BSLS_PLATFORM_CPU_IA64 1
388 #define BSLS_PLATFORM_CPU_64_BIT 1
390 #define BSLS_PLATFORM_CPU_X86 1
391 #define BSLS_PLATFORM_CPU_32_BIT 1
393 #define BSLS_PLATFORM_CPU_VER_MAJOR _M_IA64
394 #elif defined(_M_AMD64)
396 #define BSLS_PLATFORM_CPU_X86_64 1
397 #define BSLS_PLATFORM_CPU_64_BIT 1
399 #define BSLS_PLATFORM_CPU_X86 1
400 #define BSLS_PLATFORM_CPU_32_BIT 1
402 #define BSLS_PLATFORM_CPU_VER_MAJOR _M_AMD64
403 #elif defined(_M_PPC)
404 #define BSLS_PLATFORM_CPU_POWERPC 1
405 #define BSLS_PLATFORM_CPU_VER_MAJOR _M_PPC
406 #elif defined(_M_MRX000)
407 #define BSLS_PLATFORM_CPU_MIPS 1
408 #define BSLS_PLATFORM_CPU_VER_MAJOR _M_MRX000
409 #elif defined(_M_ARM)
410 #define BSLS_PLATFORM_CPU_ARM 1
411 #define BSLS_PLATFORM_CPU_32_BIT 1
415 #define BSLS_PLATFORM_CPU_ARM_V7 1
416 #elif defined(_M_ARM64)
417 #define BSLS_PLATFORM_CPU_ARM 1
418 #define BSLS_PLATFORM_CPU_64_BIT 1
422 #define BSLS_PLATFORM_CPU_ARM_V7 1
424 #error "Unable to identify CPU on which the MSVC compiler is running."
429#elif defined(__clang__) || defined(__GNUC__) || defined(__EDG__)
431 #if defined(__clang__)
455 #define BSLS_PLATFORM_CMP_CLANG 1
456 #define BSLS_PLATFORM_CMP_VERSION ( __clang_major__ * 10000 \
457 + __clang_minor__ * 100 \
458 + __clang_patchlevel__ )
459 #elif defined (__GNUC__)
460 #define BSLS_PLATFORM_CMP_GNU 1
461 #if defined(__GNUC_PATCHLEVEL__)
462 #define BSLS_PLATFORM_CMP_VERSION (__GNUC__ * 10000 \
463 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
465 #define BSLS_PLATFORM_CMP_VERSION (__GNUC__ * 10000 \
466 + __GNUC_MINOR__ * 100)
469 #define BSLS_PLATFORM_CMP_EDG 1
470 #define BSLS_PLATFORM_CMP_VERSION __EDG_VERSION__
474 #if defined(__CYGWIN__) || defined(cygwin) || defined(__cygwin)
475 #define BSLS_PLATFORM_OS_CYGWIN 1
476 #elif defined(linux) || defined(__linux)
477 #define BSLS_PLATFORM_OS_LINUX 1
478 #elif defined(__FreeBSD__)
479 #define BSLS_PLATFORM_OS_FREEBSD 1
480 #elif defined(sun) || defined(__sun)
481 #if defined(__SVR4) || defined(__svr4__)
482 #define BSLS_PLATFORM_OS_SOLARIS 1
484 #elif defined(_WIN32) || defined(__WIN32__) && \
485 !(defined(cygwin) || defined(__cygwin))
486 #define BSLS_PLATFORM_OS_WINDOWS 1
487 #elif defined(__APPLE__)
488 #define BSLS_PLATFORM_OS_DARWIN 1
490 #if defined(__GNUC__)
491 #error "Unable to determine on which OS the compiler is running."
493 #error "Unable to determine on which OS EDG compiler is running."
498 #if !defined(BSLS_PLATFORM_OS_WINDOWS)
499 #define BSLS_PLATFORM_OS_UNIX 1
503 #if defined(__alpha__)
504 #define BSLS_PLATFORM_CPU_ALPHA 1
505 #elif defined(__x86_64) || defined(__x86_64__)
506 #define BSLS_PLATFORM_CPU_X86_64 1
507 #define BSLS_PLATFORM_CPU_64_BIT 1
508 #elif defined(__i386) || defined(__i386__) \
509 || defined(__ix86) || defined(__ix86__)
510 #define BSLS_PLATFORM_CPU_X86 1
511 #define BSLS_PLATFORM_CPU_32_BIT 1
512 #elif defined(__ia64) || defined(__ia64__) || defined(_IA64) \
514 #define BSLS_PLATFORM_CPU_IA64 1
515 #if defined(_LP64) || defined(__LP64__)
516 #define BSLS_PLATFORM_CPU_64_BIT 1
518 #define BSLS_PLATFORM_CPU_32_BIT 1
520 #elif defined(__mips__)
521 #define BSLS_PLATFORM_CPU_MIPS 1
522 #elif defined(__hppa__) || defined(__hppa)
523 #define BSLS_PLATFORM_CPU_HPPA 1
524 #elif defined(__powerpc) || defined(__powerpc__) \
525 || defined(__POWERPC__) || defined(__ppc__) || defined(_POWER)
526 #define BSLS_PLATFORM_CPU_POWERPC 1
527 #if defined(__64BIT__) || defined(_LP64) || defined(__LP64__)
528 #define BSLS_PLATFORM_CPU_64_BIT 1
530 #define BSLS_PLATFORM_CPU_32_BIT 1
532 #elif defined(__sparc__) || defined(__sparc_v9__) || defined(__sparcv9)
533 #define BSLS_PLATFORM_CPU_SPARC 1
534 #if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
535 #define BSLS_PLATFORM_CPU_SPARC_V9 1
536 #define BSLS_PLATFORM_CPU_64_BIT 1
538 #define BSLS_PLATFORM_CPU_SPARC_32 1
540 #elif defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
541 #define BSLS_PLATFORM_CPU_ARM 1
542 #if defined(__arm64__) || defined(__aarch64__)
543 #define BSLS_PLATFORM_CPU_64_BIT 1
545 #if defined(__ARM_ARCH)
547 #define BSLS_PLATFORM_CPU_ARM_V6 1
548 #elif __ARM_ARCH == 7
549 #define BSLS_PLATFORM_CPU_ARM_V7 1
550 #elif __ARM_ARCH == 8
551 #define BSLS_PLATFORM_CPU_ARM_V8 1
553 #elif defined(__ARM_ARCH_5T__) \
554 || defined(__ARM_ARCH_5TE__) \
555 || defined(__ARM_ARCH_5TEJ__)
556 #define BSLS_PLATFORM_CPU_ARM_V5
557 #elif defined(__ARM_ARCH_6__) || defined (__ARM_ARCH_6ZK__)
558 #define BSLS_PLATFORM_CPU_ARM_V6
559 #elif defined(__ARM_ARCH_7__) \
560 || defined(__ARM_ARCH_7A__) \
561 || defined(__ARM_ARCH_7M__) \
562 || defined(__ARM_ARCH_7R__)
563 #define BSLS_PLATFORM_CPU_ARM_V7
564 #elif defined(__ARM64_ARCH_8__) \
565 || defined(__ARM_ARCH_8_3__) \
566 || defined(__ARM_ARCH_8_4__) \
567 || defined(__ARM_ARCH_8_5__)
568 #define BSLS_PLATFORM_CPU_ARM_V8
570 #error "Unsupported ARM platform."
573 #if defined(__GNUC__)
574 #error "Unable to determine on which CPU the compiler is running."
576 #error "Unable to determine on which CPU EDG compiler is running."
581 #if !defined(BSLS_PLATFORM_CPU_64_BIT)
582 #define BSLS_PLATFORM_CPU_32_BIT 1
585#elif defined(__SUNPRO_CC) || defined(__SUNPRO_C)
587 #define BSLS_PLATFORM_CMP_SUN 1
588 #if defined(__cplusplus)
589 #define BSLS_PLATFORM_CMP_VERSION __SUNPRO_CC
591 #define BSLS_PLATFORM_CMP_VERSION __SUNPRO_C
595 #define BSLS_PLATFORM_OS_UNIX 1
596 #if defined(sun) || defined(__sun)
597 #define BSLS_PLATFORM_OS_SOLARIS 1
598 #if defined(__SVR4) || defined(__svr4__)
599 #if defined(__SunOS_5_10)
600 #define BSLS_PLATFORM_OS_VER_MAJOR 10
601 #define BSLS_PLATFORM_OS_VER_MINOR 0
602 #elif defined(__SunOS_5_11)
603 #define BSLS_PLATFORM_OS_VER_MAJOR 11
604 #define BSLS_PLATFORM_OS_VER_MINOR 0
606 #define BSLS_PLATFORM_OS_VER_MAJOR 1
607 #define BSLS_PLATFORM_OS_VER_MINOR 0
610 #error "Unable to determine Solaris OS version."
614 #error "Unable to determine SUN OS version."
619 #if defined(__x86_64) || defined(__x86_64__)
620 #define BSLS_PLATFORM_CPU_X86_64 1
621 #define BSLS_PLATFORM_CPU_64_BIT 1
622 #elif defined(i386) || defined(__i386)
623 #define BSLS_PLATFORM_CPU_X86 1
624 #define BSLS_PLATFORM_CPU_32_BIT 1
625 #elif defined(__sparc64) || defined(__sparcv9)
626 #define BSLS_PLATFORM_CPU_SPARC 1
627 #define BSLS_PLATFORM_CPU_SPARC_V9 1
628 #define BSLS_PLATFORM_CPU_64_BIT 1
629 #elif defined(sparc) || defined(__sparc)
630 #define BSLS_PLATFORM_CPU_SPARC 1
631 #define BSLS_PLATFORM_CPU_SPARC_32 1
632 #define BSLS_PLATFORM_CPU_32_BIT 1
634 #error "Cannot determine CPU on which the SUN compiler is running."
639 #error "Could not identify the compiler."
647#if defined(BSLS_PLATFORM_OS_LINUX) || defined(BSLS_PLATFORM_OS_CYGWIN) \
648 || defined(__GLIBC__)
651 #if (__BYTE_ORDER == __LITTLE_ENDIAN)
652 #define BSLS_PLATFORM_IS_LITTLE_ENDIAN 1
653 #elif (__BYTE_ORDER == __BIG_ENDIAN)
654 #define BSLS_PLATFORM_IS_BIG_ENDIAN 1
658#elif defined(BSLS_PLATFORM_OS_SOLARIS)
659 #include <sys/isa_defs.h>
660 #if defined(_LITTLE_ENDIAN)
661 #define BSLS_PLATFORM_IS_LITTLE_ENDIAN 1
662 #elif defined(_BIG_ENDIAN)
663 #define BSLS_PLATFORM_IS_BIG_ENDIAN 1
667#elif defined(BSLS_PLATFORM_OS_DARWIN)
668 #include <machine/endian.h>
669 #if BYTE_ORDER == LITTLE_ENDIAN
670 #define BSLS_PLATFORM_IS_LITTLE_ENDIAN 1
671 #elif BYTE_ORDER == BIG_ENDIAN
672 #define BSLS_PLATFORM_IS_BIG_ENDIAN 1
676#elif defined(BSLS_PLATFORM_OS_WINDOWS)
677 #define BSLS_PLATFORM_IS_LITTLE_ENDIAN 1
686#if !defined(BDE_DISABLE_COMPILER_VERSION_CHECK)
688#if defined(BSLS_PLATFORM_CMP_CLANG)
690#elif defined(BSLS_PLATFORM_CMP_EDG)
692#elif defined(BSLS_PLATFORM_CMP_SUN)
693 #if BSLS_PLATFORM_CMP_VERSION < 0x5120
694 #error This early compiler is not supported by BDE
696#elif defined(BSLS_PLATFORM_CMP_GNU)
698 #if BSLS_PLATFORM_CMP_VERSION < 40102
699 #error This early compiler is not supported by BDE
701#elif defined(BSLS_PLATFORM_CMP_MSVC)
704 #if BSLS_PLATFORM_CMP_VERSION < 1800
705 #error This early compiler is not supported by BDE
708 #error This compiler is not recognized by BDE
713#ifdef BSLS_PLATFORM_CMP_VERSION
715 #define BSLS_PLATFORM_CMP_VER_MAJOR BSLS_PLATFORM_CMP_VERSION
721#if defined(BSLS_PLATFORM_CMP_GNU) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
722 #define BSLS_PLATFORM_NO_64_BIT_LITERALS 1
725#if (defined(BSLS_PLATFORM_CMP_GNU) && BSLS_PLATFORM_CMP_VERSION >= 40600) \
726 || defined(BSLS_PLATFORM_CMP_CLANG)
727 #define BSLS_PLATFORM_HAS_PRAGMA_GCC_DIAGNOSTIC 1
728 #if defined(BSLS_PLATFORM_CMP_CLANG)
729 #define BSLS_PLATFORM_PRAGMA_GCC_DIAGNOSTIC_CLANG 1
731 #define BSLS_PLATFORM_PRAGMA_GCC_DIAGNOSTIC_GCC 1
735#if !defined(BSLS_PLATFORM_CMP_SUN) \
736 || defined(BDE_BUILD_TARGET_AGGRESSIVE_INLINE)
737 #define BSLS_PLATFORM_AGGRESSIVE_INLINE inline
739 #define BSLS_PLATFORM_AGGRESSIVE_INLINE
742#if defined(BSLS_PLATFORM_CMP_GNU) && BSLS_PLATFORM_CMP_VERSION >= 40406 || \
743 defined(BSLS_PLATFORM_CMP_CLANG) || defined(BSLS_PLATFORM_CMP_MSVC)
749 #define BSLS_PLATFORM_HAS_MACRO_PUSH_POP 1
771 #if !defined(BSLS_PLATFORM_CPU_ARM)
772 #define BSLS_PLATFORM_CPU_SSE 1
773 #define BSLS_PLATFORM_CPU_SSE2 1
774 #define BSLS_PLATFORM_CPU_SSE3 1
776#elif defined(__clang__) || defined(__GNUC__) || defined(__EDG__)
778 #define BSLS_PLATFORM_CPU_SSE 1
780 #if defined(__SSE2__)
781 #define BSLS_PLATFORM_CPU_SSE2 1
783 #if defined(__SSE3__)
784 #define BSLS_PLATFORM_CPU_SSE3 1
786 #if defined(__SSE4_1__)
787 #define BSLS_PLATFORM_CPU_SSE4_1 1
789 #if defined(__SSE4_2__)
790 #define BSLS_PLATFORM_CPU_SSE4_2 1
793 #define BSLS_PLATFORM_CPU_AVX 1
795 #if defined(__AVX2__)
796 #define BSLS_PLATFORM_CPU_AVX2 1
805#if defined(BSLS_PLATFORM_OS_UNIX) && !defined(BSLS_PLATFORM_OS_DARWIN)
806 #if !defined(unix) && !defined(__unix__) && !defined(__unix)
807 #error "Unix platform assumed, but unix flag not set by compiler"
813#if BSLS_PLATFORM_CMP_CLANG \
814 + BSLS_PLATFORM_CMP_EDG \
815 + BSLS_PLATFORM_CMP_GNU \
816 + BSLS_PLATFORM_CMP_MSVC \
817 + BSLS_PLATFORM_CMP_SUN != 1
818 #error "Exactly one compiler must be set."
823#if BSLS_PLATFORM_OS_UNIX \
824 + BSLS_PLATFORM_OS_WINDOWS != 1
825 #error "Exactly one operating system must be set."
830#define BSLS_PLATFORM_OS_SUBTYPE_COUNT \
831 BSLS_PLATFORM_OS_CYGWIN \
832 + BSLS_PLATFORM_OS_DARWIN \
833 + BSLS_PLATFORM_OS_FREEBSD \
834 + BSLS_PLATFORM_OS_LINUX \
835 + BSLS_PLATFORM_OS_SOLARIS \
836 + BSLS_PLATFORM_OS_WIN9X \
837 + BSLS_PLATFORM_OS_WINNT \
838 + BSLS_PLATFORM_OS_WIN2K \
839 + BSLS_PLATFORM_OS_WINXP \
840 + BSLS_PLATFORM_OS_WINS03 \
841 + BSLS_PLATFORM_OS_WINVISTA \
842 + BSLS_PLATFORM_OS_WIN7 \
843 + BSLS_PLATFORM_OS_WIN8 \
844 + BSLS_PLATFORM_OS_WINBLUE \
845 + BSLS_PLATFORM_OS_WIN10
846#if BSLS_PLATFORM_OS_SUBTYPE_COUNT > 1
847 #error "At most one operating system subtype must be set."
852#if defined(BSLS_PLATFORM_OS_WINVISTA) != defined(BSLS_PLATFORM_OS_WINS08)
853 #error "Windows Vista and Server 2008 are the same API."
858#if BSLS_PLATFORM_CPU_ALPHA \
859 + BSLS_PLATFORM_CPU_HPPA \
860 + BSLS_PLATFORM_CPU_IA64 \
861 + BSLS_PLATFORM_CPU_X86 \
862 + BSLS_PLATFORM_CPU_X86_64 \
863 + BSLS_PLATFORM_CPU_MIPS \
864 + BSLS_PLATFORM_CPU_POWERPC \
865 + BSLS_PLATFORM_CPU_SPARC \
866 + BSLS_PLATFORM_CPU_ARM != 1
867 #error "Exactly one processor must be set."
872#if BSLS_PLATFORM_IS_BIG_ENDIAN \
873 + BSLS_PLATFORM_IS_LITTLE_ENDIAN != 1
874 #error "Exactly one kind of endian-ness must be set."
878#if defined(BSLS_PLATFORM_OS_VER_MAJOR) && BSLS_PLATFORM_OS_SUBTYPE_COUNT != 1
880 #error "Operating system major version but not subtype defined."
884#undef BSLS_PLATFORM_OS_SUBTYPE_COUNT
886#if defined(BSLS_PLATFORM_OS_VER_MINOR) && !defined(BSLS_PLATFORM_OS_VER_MAJOR)
887 #error "Operating System minor but not major version defined."
910 struct OsUnix : OsAny {};
911 struct OsWindows : OsAny {};
913 struct OsAix : OsUnix {};
914 struct OsCygwin : OsUnix {};
915 struct OsDarwin : OsUnix {};
916 struct OsFreeBsd : OsUnix {};
917 struct OsHpux : OsUnix {};
918 struct OsLinux : OsUnix {};
919 struct OsSolaris : OsUnix {};
921 struct OsAix_V5 : OsAix {};
923 struct OsSolaris_V8 : OsSolaris {};
924 struct OsSolaris_V9 : OsSolaris {};
925 struct OsSolaris_V10 : OsSolaris {};
927 struct OsWinNT : OsWindows {};
933 struct Cpu88000 : CpuAny {};
934 struct CpuAlpha : CpuAny {};
935 struct CpuHppa : CpuAny {};
936 struct CpuX86 : CpuAny {};
937 struct CpuIa64 : CpuAny {};
938 struct CpuX86_64 : CpuAny {};
939 struct CpuMips : CpuAny {};
941 struct CpuPowerpc : CpuAny {};
943 struct CpuSparc : CpuAny {};
944 struct CpuSparc_32 : CpuSparc {};
945 struct CpuSparc_V9 : CpuSparc {};
947 typedef CpuPowerpc CPU_POWERPC;
948 typedef CpuSparc CPU_SPARC;
949 typedef CpuSparc_32 CPU_SPARC_32;
950 typedef CpuSparc_V9 CPU_SPARC_V9;
952 struct CpuPowerpc_601 : CpuPowerpc {};
953 struct CpuArch_Pwr : CpuPowerpc {};
954 struct CpuArch_Pwr2 : CpuPowerpc {};
955 struct CpuArch_Pwr2s : CpuPowerpc {};
957 struct CpuArm : CpuAny {};
958 struct CpuArmv5 : CpuArm {};
959 struct CpuArmv6 : CpuArm {};
960 struct CpuArmv7 : CpuArm {};
961 struct CpuArmv8 : CpuArm {};
968 #if defined(BSLS_PLATFORM_OS_CYGWIN)
971 #if defined(BSLS_PLATFORM_OS_DARWIN)
974 #if defined(BSLS_PLATFORM_OS_FREEBSD)
975 typedef OsFreeBsd Os;
977 #if defined(BSLS_PLATFORM_OS_LINUX)
980 #if defined BSLS_PLATFORM_OS_SOLARIS
981 #if (BSLS_PLATFORM_OS_VER_MAJOR == 9)
982 typedef OsSolaris_V9 Os;
983 #elif (BSLS_PLATFORM_OS_VER_MAJOR == 10)
984 typedef OsSolaris_V10 Os;
986 typedef OsSolaris_V8 Os;
989 #if defined(BSLS_PLATFORM_OS_WINDOWS)
996 #if defined(BSLS_PLATFORM_CPU_X86)
999 #if defined(BSLS_PLATFORM_CPU_IA64)
1000 typedef CpuIa64 Cpu;
1002 #if defined(BSLS_PLATFORM_CPU_X86_64)
1003 typedef CpuX86_64 Cpu;
1005 #if defined(BSLS_PLATFORM_CPU_POWERPC)
1006 typedef CpuPowerpc Cpu;
1008 #if defined(BSLS_PLATFORM_CPU_SPARC_32)
1009 typedef CpuSparc_32 Cpu;
1011 #if defined(BSLS_PLATFORM_CPU_SPARC_V9)
1012 typedef CpuSparc_V9 Cpu;
1014 #if defined(BSLS_PLATFORM_CPU_ARM_V5)
1015 typedef CpuArmv5 Cpu;
1017 #if defined(BSLS_PLATFORM_CPU_ARM_V6)
1018 typedef CpuArmv6 Cpu;
1020 #if defined(BSLS_PLATFORM_CPU_ARM_V7)
1021 typedef CpuArmv7 Cpu;
1023 #if defined(BSLS_PLATFORM_CPU_ARM_V8)
1024 typedef CpuArmv8 Cpu;
1031#ifndef BDE_OPENSOURCE_PUBLICATION
1032#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1040typedef bsls::Platform bdes_Platform;
1047typedef bsls::Platform bsls_Platform;
1056#if !defined(BSL_DOUBLE_UNDERSCORE_XLAT) || 1 == BSL_DOUBLE_UNDERSCORE_XLAT
1060#ifdef BSLS_PLATFORM_CMP_GNU
1061# define BDES_PLATFORM__CMP_GNU BSLS_PLATFORM_CMP_GNU
1063#ifdef BSLS_PLATFORM_CMP_MSVC
1064# define BDES_PLATFORM__CMP_MSVC BSLS_PLATFORM_CMP_MSVC
1066#ifdef BSLS_PLATFORM_CMP_SUN
1067# define BDES_PLATFORM__CMP_SUN BSLS_PLATFORM_CMP_SUN
1069#ifdef BSLS_PLATFORM_CMP_VER_MAJOR
1070# define BDES_PLATFORM__CMP_VER_MAJOR BSLS_PLATFORM_CMP_VER_MAJOR
1072#ifdef BSLS_PLATFORM_CPU_64_BIT
1073# define BDES_PLATFORM__CPU_64_BIT BSLS_PLATFORM_CPU_64_BIT
1075#ifdef BSLS_PLATFORM_OS_CYGWIN
1076# define BDES_PLATFORM__OS_CYGWIN BSLS_PLATFORM_OS_CYGWIN
1078#ifdef BSLS_PLATFORM_OS_DARWIN
1079# define BDES_PLATFORM__OS_DARWIN BSLS_PLATFORM_OS_DARWIN
1081#ifdef BSLS_PLATFORM_OS_FREEBSD
1082# define BDES_PLATFORM__OS_FREEBSD BSLS_PLATFORM_OS_FREEBSD
1084#ifdef BSLS_PLATFORM_OS_LINUX
1085# define BDES_PLATFORM__OS_LINUX BSLS_PLATFORM_OS_LINUX
1087#ifdef BSLS_PLATFORM_OS_SOLARIS
1088# define BDES_PLATFORM__OS_SOLARIS BSLS_PLATFORM_OS_SOLARIS
1090#ifdef BSLS_PLATFORM_OS_UNIX
1091# define BDES_PLATFORM__OS_UNIX BSLS_PLATFORM_OS_UNIX
1093#ifdef BSLS_PLATFORM_OS_VER_MAJOR
1094# define BDES_PLATFORM__OS_VER_MAJOR BSLS_PLATFORM_OS_VER_MAJOR
1096#ifdef BSLS_PLATFORM_OS_VER_MINOR
1097# define BDES_PLATFORM__OS_VER_MINOR BSLS_PLATFORM_OS_VER_MINOR
1099#ifdef BSLS_PLATFORM_OS_WIN2K
1100# define BDES_PLATFORM__OS_WIN2K BSLS_PLATFORM_OS_WIN2K
1102#ifdef BSLS_PLATFORM_OS_WIN9X
1103# define BDES_PLATFORM__OS_WIN9X BSLS_PLATFORM_OS_WIN9X
1105#ifdef BSLS_PLATFORM_OS_WINDOWS
1106# define BDES_PLATFORM__OS_WINDOWS BSLS_PLATFORM_OS_WINDOWS
1108#ifdef BSLS_PLATFORM_OS_WINNT
1109# define BDES_PLATFORM__OS_WINNT BSLS_PLATFORM_OS_WINNT
1111#ifdef BSLS_PLATFORM_OS_WINXP
1112# define BDES_PLATFORM__OS_WINXP BSLS_PLATFORM_OS_WINXP
1117#ifdef BSLS_PLATFORM_CMP_CLANG
1118# define BSLS_PLATFORM__CMP_CLANG BSLS_PLATFORM_CMP_CLANG
1120#ifdef BSLS_PLATFORM_CMP_EDG
1121# define BSLS_PLATFORM__CMP_EDG BSLS_PLATFORM_CMP_EDG
1123#ifdef BSLS_PLATFORM_CMP_GNU
1124# define BSLS_PLATFORM__CMP_GNU BSLS_PLATFORM_CMP_GNU
1126#ifdef BSLS_PLATFORM_CMP_MSVC
1127# define BSLS_PLATFORM__CMP_MSVC BSLS_PLATFORM_CMP_MSVC
1129#ifdef BSLS_PLATFORM_CMP_SUN
1130# define BSLS_PLATFORM__CMP_SUN BSLS_PLATFORM_CMP_SUN
1132#ifdef BSLS_PLATFORM_CMP_VERSION
1133# define BSLS_PLATFORM__CMP_VERSION BSLS_PLATFORM_CMP_VERSION
1135#ifdef BSLS_PLATFORM_CMP_VER_MAJOR
1136# define BSLS_PLATFORM__CMP_VER_MAJOR BSLS_PLATFORM_CMP_VER_MAJOR
1138#ifdef BSLS_PLATFORM_CPU_32_BIT
1139# define BSLS_PLATFORM__CPU_32_BIT BSLS_PLATFORM_CPU_32_BIT
1141#ifdef BSLS_PLATFORM_CPU_64_BIT
1142# define BSLS_PLATFORM__CPU_64_BIT BSLS_PLATFORM_CPU_64_BIT
1144#ifdef BSLS_PLATFORM_CPU_POWERPC
1145# define BSLS_PLATFORM__CPU_POWERPC BSLS_PLATFORM_CPU_POWERPC
1147#ifdef BSLS_PLATFORM_CPU_X86
1148# define BSLS_PLATFORM__CPU_X86 BSLS_PLATFORM_CPU_X86
1150#ifdef BSLS_PLATFORM_CPU_X86_64
1151# define BSLS_PLATFORM__CPU_X86_64 BSLS_PLATFORM_CPU_X86_64
1153#ifdef BSLS_PLATFORM_IS_BIG_ENDIAN
1154# define BSLS_PLATFORM__IS_BIG_ENDIAN BSLS_PLATFORM_IS_BIG_ENDIAN
1156#ifdef BSLS_PLATFORM_IS_LITTLE_ENDIAN
1157# define BSLS_PLATFORM__IS_LITTLE_ENDIAN BSLS_PLATFORM_IS_LITTLE_ENDIAN
1159#ifdef BSLS_PLATFORM_OS_CYGWIN
1160# define BSLS_PLATFORM__OS_CYGWIN BSLS_PLATFORM_OS_CYGWIN
1162#ifdef BSLS_PLATFORM_OS_DARWIN
1163# define BSLS_PLATFORM__OS_DARWIN BSLS_PLATFORM_OS_DARWIN
1165#ifdef BSLS_PLATFORM_OS_LINUX
1166# define BSLS_PLATFORM__OS_LINUX BSLS_PLATFORM_OS_LINUX
1168#ifdef BSLS_PLATFORM_OS_SOLARIS
1169# define BSLS_PLATFORM__OS_SOLARIS BSLS_PLATFORM_OS_SOLARIS
1171#ifdef BSLS_PLATFORM_OS_UNIX
1172# define BSLS_PLATFORM__OS_UNIX BSLS_PLATFORM_OS_UNIX
1174#ifdef BSLS_PLATFORM_OS_WINDOWS
1175# define BSLS_PLATFORM__OS_WINDOWS BSLS_PLATFORM_OS_WINDOWS
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlt_iso8601util.h:707