zemu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/zemu/config.rb +312 -0
- data/lib/zemu/instance.rb +179 -0
- data/lib/zemu.rb +172 -0
- data/src/debug.c +118 -0
- data/src/debug.h +30 -0
- data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
- data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
- data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
- data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
- data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
- data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
- data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
- data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
- data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
- data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
- data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
- data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
- data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
- data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
- data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
- data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
- data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
- data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
- data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
- data/src/external/Z/API/Z/constants/base.h +35 -0
- data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
- data/src/external/Z/API/Z/constants/numbers.h +963 -0
- data/src/external/Z/API/Z/constants/version.h +15 -0
- data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
- data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
- data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
- data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
- data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
- data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
- data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
- data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
- data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
- data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
- data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
- data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
- data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
- data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
- data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
- data/src/external/Z/API/Z/functions/base/all.h +16 -0
- data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
- data/src/external/Z/API/Z/functions/base/character.h +38 -0
- data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
- data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
- data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
- data/src/external/Z/API/Z/functions/base/value.h +1901 -0
- data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
- data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
- data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
- data/src/external/Z/API/Z/functions/time/date.h +29 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
- data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
- data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
- data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
- data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
- data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
- data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
- data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
- data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
- data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
- data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
- data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
- data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
- data/src/external/Z/API/Z/inspection/C++.h +78 -0
- data/src/external/Z/API/Z/inspection/C.h +79 -0
- data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
- data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
- data/src/external/Z/API/Z/inspection/CPU.h +209 -0
- data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
- data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
- data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
- data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
- data/src/external/Z/API/Z/inspection/OS.h +236 -0
- data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
- data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
- data/src/external/Z/API/Z/inspection/Z.h +19 -0
- data/src/external/Z/API/Z/inspection/build.h +22 -0
- data/src/external/Z/API/Z/inspection/character set.h +66 -0
- data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
- data/src/external/Z/API/Z/inspection/compiler.h +299 -0
- data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
- data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
- data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
- data/src/external/Z/API/Z/inspection/data model.h +362 -0
- data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
- data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
- data/src/external/Z/API/Z/inspection/language.h +163 -0
- data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
- data/src/external/Z/API/Z/inspection/platform.h +29 -0
- data/src/external/Z/API/Z/keys/C++.h +27 -0
- data/src/external/Z/API/Z/keys/C.h +29 -0
- data/src/external/Z/API/Z/keys/CPU.h +80 -0
- data/src/external/Z/API/Z/keys/OS.h +182 -0
- data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
- data/src/external/Z/API/Z/keys/chemistry.h +26 -0
- data/src/external/Z/API/Z/keys/compiler.h +178 -0
- data/src/external/Z/API/Z/keys/data model.h +32 -0
- data/src/external/Z/API/Z/keys/endianness.h +24 -0
- data/src/external/Z/API/Z/keys/language.h +21 -0
- data/src/external/Z/API/Z/keys/layout.h +20 -0
- data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
- data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
- data/src/external/Z/API/Z/keys/order.h +18 -0
- data/src/external/Z/API/Z/keys/platform.h +87 -0
- data/src/external/Z/API/Z/keys/program.h +39 -0
- data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
- data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
- data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
- data/src/external/Z/API/Z/keys/status.h +69 -0
- data/src/external/Z/API/Z/keys/text.h +27 -0
- data/src/external/Z/API/Z/keys/value.h +88 -0
- data/src/external/Z/API/Z/macros/arguments.h +25 -0
- data/src/external/Z/API/Z/macros/casting.h +22 -0
- data/src/external/Z/API/Z/macros/character.h +159 -0
- data/src/external/Z/API/Z/macros/date.h +14 -0
- data/src/external/Z/API/Z/macros/key.h +20 -0
- data/src/external/Z/API/Z/macros/language.h +126 -0
- data/src/external/Z/API/Z/macros/language.hpp +81 -0
- data/src/external/Z/API/Z/macros/members.h +86 -0
- data/src/external/Z/API/Z/macros/pasting.h +308 -0
- data/src/external/Z/API/Z/macros/pointer.h +33 -0
- data/src/external/Z/API/Z/macros/repetition.h +283 -0
- data/src/external/Z/API/Z/macros/structure.h +104 -0
- data/src/external/Z/API/Z/macros/templating.h +407 -0
- data/src/external/Z/API/Z/macros/tokens.h +14 -0
- data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
- data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
- data/src/external/Z/API/Z/macros/value.h +489 -0
- data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
- data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
- data/src/external/Z/API/Z/macros/variadic.h +46 -0
- data/src/external/Z/API/Z/macros/version.h +17 -0
- data/src/external/Z/API/Z/network/3/IP.h +36 -0
- data/src/external/Z/API/Z/network/4/TCP.h +24 -0
- data/src/external/Z/API/Z/network/4/UDP.h +26 -0
- data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
- data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
- data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
- data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
- data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
- data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
- data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
- data/src/external/Z/API/Z/traits/base.hpp +19 -0
- data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
- data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
- data/src/external/Z/API/Z/types/arguments.h +19 -0
- data/src/external/Z/API/Z/types/base.h +1655 -0
- data/src/external/Z/API/Z/types/base.hpp +169 -0
- data/src/external/Z/API/Z/types/buffering.h +27 -0
- data/src/external/Z/API/Z/types/mathematics.h +135 -0
- data/src/external/Z/API/Z/types/time.h +23 -0
- data/src/external/Z/COPYING.LESSER +165 -0
- data/src/external/Z/development/Qt Creator/Z.pro +253 -0
- data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
- data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
- data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
- data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
- data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
- data/src/external/z80/README.md +229 -0
- data/src/external/z80/building/premake4.lua +33 -0
- data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
- data/src/external/z80/sources/Z80.c +1660 -0
- data/src/interrupt.c +6 -0
- data/src/interrupt.h +3 -0
- data/src/io.c.erb +115 -0
- data/src/io.h.erb +18 -0
- data/src/main.c +69 -0
- data/src/memory.c.erb +43 -0
- data/src/memory.h.erb +9 -0
- metadata +329 -0
@@ -0,0 +1,1664 @@
|
|
1
|
+
/* Z Kit - inspection/compiler/modules/Clang.h
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Copyright (C) 2018 Ortega Sosa, Sofía.
|
7
|
+
Released under the terms of the GNU Lesser General Public License v3. */
|
8
|
+
|
9
|
+
#ifndef _Z_inspection_compiler_modules_Clang_H_
|
10
|
+
#define _Z_inspection_compiler_modules_Clang_H_
|
11
|
+
|
12
|
+
/* MARK: - Identification */
|
13
|
+
|
14
|
+
#ifndef Z_COMPILER
|
15
|
+
# include <Z/macros/version.h>
|
16
|
+
|
17
|
+
# define Z_COMPILER Z_COMPILER_CLANG
|
18
|
+
# define Z_COMPILER_STRING Z_COMPILER_STRING_CLANG
|
19
|
+
# define Z_COMPILER_VERSION Z_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
|
20
|
+
# define Z_COMPILER_VERSION_STRING __clang_version__
|
21
|
+
#endif
|
22
|
+
|
23
|
+
/* MARK: - Compatibility with old versions */
|
24
|
+
|
25
|
+
#ifndef __has_attribute
|
26
|
+
# define __has_attribute(which) FALSE
|
27
|
+
#endif
|
28
|
+
|
29
|
+
#ifndef __has_builtin
|
30
|
+
# define __has_builtin(which) FALSE
|
31
|
+
#endif
|
32
|
+
|
33
|
+
#ifndef __has_cpp_attribute /* v3.6 */
|
34
|
+
# define __has_cpp_attribute(which) FALSE
|
35
|
+
#endif
|
36
|
+
|
37
|
+
#ifndef __has_extension /* v3.0 */
|
38
|
+
# define __has_extension __has_feature
|
39
|
+
#endif
|
40
|
+
|
41
|
+
/* MARK: - CPU
|
42
|
+
.-------------------------------------------------.
|
43
|
+
| References: |
|
44
|
+
| [Clang sources]/lib/Basic/Targets.cpp |
|
45
|
+
| [Clang sources]/lib/Basic/Targets/<*> (>= v6.0) |
|
46
|
+
'------------------------------------------------*/
|
47
|
+
|
48
|
+
#if defined(__amd64 ) || \
|
49
|
+
defined(__amd64__ ) || \
|
50
|
+
defined(__x86_64 ) || \
|
51
|
+
defined(__x86_64__) || \
|
52
|
+
defined(_M_AMD64 ) || \
|
53
|
+
defined(_M_X64 )
|
54
|
+
|
55
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_X86_64
|
56
|
+
|
57
|
+
#elif defined(__INTEL__) || \
|
58
|
+
defined(__i386 ) || \
|
59
|
+
defined(__i386__ ) || \
|
60
|
+
defined(__i486 ) || \
|
61
|
+
defined(__i486__ ) || \
|
62
|
+
defined(__i586 ) || \
|
63
|
+
defined(__i586__ ) || \
|
64
|
+
defined(__i686 ) || \
|
65
|
+
defined(__i686__ ) || \
|
66
|
+
defined(_M_IX86 ) || \
|
67
|
+
defined(_X86_ ) || \
|
68
|
+
defined(i386 )
|
69
|
+
|
70
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_X86_32
|
71
|
+
|
72
|
+
#elif defined(__aarch64__) || \
|
73
|
+
defined(__arm64 ) || \
|
74
|
+
defined(__arm64__ )
|
75
|
+
|
76
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_AARCH64
|
77
|
+
|
78
|
+
#elif defined(__arm__ ) || \
|
79
|
+
defined(__arm ) || \
|
80
|
+
defined(__thumb__) || \
|
81
|
+
defined(_ARM_ ) || \
|
82
|
+
defined(_M_ARM ) || \
|
83
|
+
defined(_M_ARM_NT) || \
|
84
|
+
defined(_M_ARMT ) || \
|
85
|
+
defined(_M_THUMB )
|
86
|
+
|
87
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_AARCH32
|
88
|
+
|
89
|
+
#elif defined(__HEXAGON_ARCH__) \
|
90
|
+
defined(__QDSP6_ARCH__ ) \
|
91
|
+
defined(__hexagon__ ) \
|
92
|
+
defined(__qdsp6__ )
|
93
|
+
|
94
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_HEXAGON
|
95
|
+
|
96
|
+
#elif defined(__lanai__)
|
97
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_LANAI
|
98
|
+
|
99
|
+
#elif defined(__mips64 ) || \
|
100
|
+
defined(__mips64__) || \
|
101
|
+
(defined(__mips) && __mips == 64) || \
|
102
|
+
(defined(_MIPS_ISA) && defined(_MIPS_ISA_MIPS64) && _MIPS_ISA == _MIPS_ISA_MIPS64)
|
103
|
+
|
104
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_MIPS64
|
105
|
+
|
106
|
+
#elif defined(__mips ) || \
|
107
|
+
defined(__mips__) || \
|
108
|
+
defined(_mips ) || \
|
109
|
+
defined(mips )
|
110
|
+
|
111
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_MIPS
|
112
|
+
|
113
|
+
#elif defined(__MSP430__) || \
|
114
|
+
defined(MSP430 )
|
115
|
+
|
116
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_MSP430
|
117
|
+
|
118
|
+
#elif defined(__PPC64__ ) || \
|
119
|
+
defined(__powerpc64__) || \
|
120
|
+
defined(__ppc64__ ) || \
|
121
|
+
defined(_ARCH_PPC64 )
|
122
|
+
|
123
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_POWERPC_64BIT
|
124
|
+
|
125
|
+
#elif defined(__POWERPC__) || \
|
126
|
+
defined(__PPC__ ) || \
|
127
|
+
defined(__powerpc__) || \
|
128
|
+
defined(__ppc__ ) || \
|
129
|
+
defined(_ARCH_PPC )
|
130
|
+
|
131
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_POWERPC_32BIT
|
132
|
+
|
133
|
+
#elif defined(__riscv_xlen)
|
134
|
+
|
135
|
+
# if __riscv_xlen == 64
|
136
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_RV64I
|
137
|
+
|
138
|
+
# elif __riscv_xlen == 32
|
139
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_RV32I
|
140
|
+
# endif
|
141
|
+
|
142
|
+
|
143
|
+
#elif defined(__arch64__ ) || \
|
144
|
+
defined(__sparc_v9__) || \
|
145
|
+
defined(__sparc64__ ) || \
|
146
|
+
defined(__sparcv9 ) || \
|
147
|
+
defined(__sparcv9__ )
|
148
|
+
|
149
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_SPARC_V9
|
150
|
+
|
151
|
+
#elif defined(__sparc ) || \
|
152
|
+
defined(__sparc__ ) || \
|
153
|
+
defined(__sparcv8 ) || \
|
154
|
+
defined(__sparcv8__) || \
|
155
|
+
defined(sparc )
|
156
|
+
|
157
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_SPARC
|
158
|
+
|
159
|
+
#elif defined(__s390x__) || \
|
160
|
+
defined(__zarch__)
|
161
|
+
/*----------------------------------------------------------.
|
162
|
+
| __s390__ is omitted in order to avoid conflicts with a |
|
163
|
+
| hypothetical future support for the ESA/390 architecture. |
|
164
|
+
'----------------------------------------------------------*/
|
165
|
+
|
166
|
+
# define Z_COMPILER_CPU_ARCHITECTURE Z_CPU_ARCHITECTURE_Z_ARCHITECTURE
|
167
|
+
|
168
|
+
#endif
|
169
|
+
|
170
|
+
/* MARK: - CPU endianness / bit field order */
|
171
|
+
|
172
|
+
#ifdef __BYTE_ORDER__
|
173
|
+
|
174
|
+
# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
175
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_LITTLE
|
176
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_REVERSED
|
177
|
+
|
178
|
+
# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
179
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_BIG
|
180
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_NORMAL
|
181
|
+
|
182
|
+
# elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__
|
183
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_PDP
|
184
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_NORMAL
|
185
|
+
# endif
|
186
|
+
|
187
|
+
#elif defined(__AARCH64EL__ ) || \
|
188
|
+
defined(__ARMEL__ ) || \
|
189
|
+
defined(__LITTLE_ENDIAN__) || \
|
190
|
+
defined(__MIPSEL ) || \
|
191
|
+
defined(__MIPSEL__ ) || \
|
192
|
+
defined(__THUMBEL__ ) || \
|
193
|
+
defined(_LITTLE_ENDIAN ) || \
|
194
|
+
defined(_MIPSEL )
|
195
|
+
|
196
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_LITTLE
|
197
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_REVERSED
|
198
|
+
|
199
|
+
#elif defined(__AARCH_BIG_ENDIAN) || \
|
200
|
+
defined(__AARCH64EB__ ) || \
|
201
|
+
defined(__ARM_BIG_ENDIAN ) || \
|
202
|
+
defined(__ARMEB__ ) || \
|
203
|
+
defined(__MIPSEB ) || \
|
204
|
+
defined(__MIPSEB__ ) || \
|
205
|
+
defined(_BIG_ENDIAN ) || \
|
206
|
+
defined(_MIPSEB )
|
207
|
+
|
208
|
+
# define Z_COMPILER_CPU_INTEGER_ENDIANNESS Z_ENDIANNESS_BIG
|
209
|
+
# define Z_COMPILER_BIT_FIELD_ORDER Z_ORDER_NORMAL
|
210
|
+
#endif
|
211
|
+
|
212
|
+
/*#define Z_COMPIER_CPU_INTEGER_ENDIANNESS_8BIT*/
|
213
|
+
/*#define Z_COMPIER_CPU_INTEGER_ENDIANNESS_16BIT*/
|
214
|
+
/*#define Z_COMPIER_CPU_INTEGER_ENDIANNESS_32BIT*/
|
215
|
+
/*#define Z_COMPIER_CPU_INTEGER_ENDIANNESS_64BIT*/
|
216
|
+
/*#define Z_COMPIER_CPU_INTEGER_ENDIANNESS_128BIT*/
|
217
|
+
|
218
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_8BIT*/
|
219
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_16BIT*/
|
220
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_32BIT*/
|
221
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_64BIT*/
|
222
|
+
/*#define Z_COMPILER_BIT_FIELD_ORDER_128BIT*/
|
223
|
+
|
224
|
+
/* MARK: - Platform */
|
225
|
+
|
226
|
+
/*#define Z_COMPILER_PLATFORM*/
|
227
|
+
|
228
|
+
/* MARK: - OS
|
229
|
+
.-------------------------------------------------.
|
230
|
+
| References: |
|
231
|
+
| [Clang sources]/lib/Basic/Targets.cpp |
|
232
|
+
| [Clang sources]/lib/Basic/Targets/<*> (>= v6.0) |
|
233
|
+
'------------------------------------------------*/
|
234
|
+
|
235
|
+
#if defined(__ANDROID__)
|
236
|
+
# define Z_COMPILER_OS Z_OS_ANDROID
|
237
|
+
|
238
|
+
#elif defined(__gnu_linux__) || \
|
239
|
+
defined(__linux ) || \
|
240
|
+
defined(__linux__ ) || \
|
241
|
+
defined(linux )
|
242
|
+
|
243
|
+
# define Z_COMPILER_OS Z_OS_LINUX
|
244
|
+
|
245
|
+
#elif defined(__APPLE_CC__) || \
|
246
|
+
(defined(__APPLE__) && defined(__MACH__))
|
247
|
+
|
248
|
+
# if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
|
249
|
+
# define Z_COMPILER_OS Z_OS_MAC_OS_X
|
250
|
+
|
251
|
+
# elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
|
252
|
+
# define Z_COMPILER_OS Z_OS_IOS
|
253
|
+
|
254
|
+
# elif defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__)
|
255
|
+
# define Z_COMPILER_OS Z_OS_TVOS
|
256
|
+
|
257
|
+
# elif defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__)
|
258
|
+
# define Z_COMPILER_OS Z_OS_WATCHOS
|
259
|
+
# endif
|
260
|
+
|
261
|
+
#elif defined(__WIN32 ) || \
|
262
|
+
defined(__WIN32__) || \
|
263
|
+
defined(__WIN64 ) || \
|
264
|
+
defined(__WIN64__) || \
|
265
|
+
defined(__WINNT ) || \
|
266
|
+
defined(__WINNT__) || \
|
267
|
+
defined(_WIN32 ) || \
|
268
|
+
defined(_WIN64 ) || \
|
269
|
+
defined(WIN32 ) || \
|
270
|
+
defined(WIN64 ) || \
|
271
|
+
defined(WINNT )
|
272
|
+
|
273
|
+
# define Z_COMPILER_OS Z_OS_WINDOWS
|
274
|
+
|
275
|
+
#elif defined(__Bitrig__)
|
276
|
+
# define Z_COMPILER_OS Z_OS_BITRIG
|
277
|
+
|
278
|
+
#elif defined(__CELLOS_LV2__)
|
279
|
+
# define Z_COMPILER_OS Z_OS_CELL_OS
|
280
|
+
|
281
|
+
#elif defined(__CYGWIN__ ) || \
|
282
|
+
defined(__CYGWIN32__) || \
|
283
|
+
defined(__CYGWIN64__)
|
284
|
+
|
285
|
+
# define Z_COMPILER_OS Z_OS_CYGWIN
|
286
|
+
|
287
|
+
#elif defined(__DragonFly__)
|
288
|
+
# define Z_COMPILER_OS Z_OS_DRAGONFLY_BSD
|
289
|
+
|
290
|
+
#elif defined(__FreeBSD__ ) || \
|
291
|
+
defined(__FreeBSD_kernel__)
|
292
|
+
|
293
|
+
# define Z_COMPILER_OS Z_OS_FREE_BSD
|
294
|
+
|
295
|
+
#elif defined(__HAIKU__)
|
296
|
+
# define Z_COMPILER_OS Z_OS_HAIKU
|
297
|
+
|
298
|
+
#elif defined(__minix)
|
299
|
+
# define Z_COMPILER_OS Z_OS_MINIX
|
300
|
+
|
301
|
+
#elif defined(__NetBSD__)
|
302
|
+
# define Z_COMPILER_OS Z_OS_NET_BSD
|
303
|
+
|
304
|
+
#elif defined(__OpenBSD__)
|
305
|
+
# define Z_COMPILER_OS Z_OS_OPEN_BSD
|
306
|
+
|
307
|
+
#elif defined(__ORBIS__)
|
308
|
+
# define Z_COMPILER_OS Z_OS_ORBIS_OS
|
309
|
+
|
310
|
+
#elif defined(__psp__) || \
|
311
|
+
defined(_PSP ) || \
|
312
|
+
defined(PSP )
|
313
|
+
|
314
|
+
# define Z_COMPILER_OS Z_OS_PSP_SYSTEM_SOFTWARE
|
315
|
+
|
316
|
+
#elif defined(__rtems__)
|
317
|
+
# define Z_COMPILER_OS Z_OS_RTEMS
|
318
|
+
|
319
|
+
#elif defined(__SVR4 ) || \
|
320
|
+
defined(__sun ) || \
|
321
|
+
defined(__sun__ ) || \
|
322
|
+
defined(__svr4__) || \
|
323
|
+
defined(sun )
|
324
|
+
|
325
|
+
# define Z_COMPILER_OS Z_OS_SOLARIS
|
326
|
+
|
327
|
+
#endif
|
328
|
+
|
329
|
+
/* MARK: - Data model */
|
330
|
+
|
331
|
+
#if defined(__LP64__) || \
|
332
|
+
defined(_LP64 )
|
333
|
+
|
334
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_LP64
|
335
|
+
|
336
|
+
#elif defined(__LP32__)
|
337
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_LP32
|
338
|
+
|
339
|
+
#elif defined(_WIN64)
|
340
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_LLP64
|
341
|
+
|
342
|
+
#elif defined(__ILP32__) || \
|
343
|
+
defined(_ILP32 ) || \
|
344
|
+
defined(_WIN32 )
|
345
|
+
|
346
|
+
# define Z_COMPILER_DATA_MODEL Z_DATA_MODEL_ILP32
|
347
|
+
#endif
|
348
|
+
|
349
|
+
/* MARK: - K&R C support */
|
350
|
+
|
351
|
+
#define Z_COMPILER_C_HAS_OPERATOR_SIZE_OF TRUE
|
352
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_AUTO TRUE
|
353
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_EXTERN TRUE
|
354
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_REGISTER TRUE
|
355
|
+
#define Z_COMPILER_C_HAS_STORAGE_CLASS_STATIC TRUE
|
356
|
+
#define Z_COMPILER_C_HAS_TYPE_FLOAT TRUE
|
357
|
+
#define Z_COMPILER_C_HAS_TYPE_DOUBLE TRUE
|
358
|
+
|
359
|
+
/* MARK: - C89 support */
|
360
|
+
|
361
|
+
#define Z_COMPILER_C_HAS_ENUMERATION TRUE
|
362
|
+
#define Z_COMPILER_C_HAS_VOID_POINTER TRUE
|
363
|
+
#define Z_COMPILER_C_HAS_TYPE_LDOUBLE TRUE
|
364
|
+
#define Z_COMPILER_C_HAS_TYPE_QUALIFIER_CONSTANT TRUE
|
365
|
+
#define Z_COMPILER_C_HAS_TYPE_QUALIFIER_VOLATILE TRUE
|
366
|
+
|
367
|
+
/* MARK: - C90 support */
|
368
|
+
|
369
|
+
/* MARK: - C94 support */
|
370
|
+
|
371
|
+
#define Z_COMPILER_C_HAS_DIGRAPHS TRUE
|
372
|
+
|
373
|
+
/* MARK: - C99 support */
|
374
|
+
|
375
|
+
#define Z_COMPILER_C_HAS_INLINE_FUNCION TRUE
|
376
|
+
#define Z_COMPILER_C_HAS_MAGIC_CONSTANT_FUNCTION_NAME TRUE
|
377
|
+
#define Z_COMPILER_C_HAS_TYPE_QUALIFIER_RESTRICT TRUE
|
378
|
+
|
379
|
+
#if defined(__UINTMAX_MAX__) && 0U - 1U == __UINTMAX_MAX__
|
380
|
+
# define Z_COMPILER_C_HAS_PREPROCESSOR_ARITHMETIC_DONE_IN_MAXIMUM_INTEGRAL TRUE
|
381
|
+
#endif
|
382
|
+
|
383
|
+
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
384
|
+
# define Z_COMPILER_C_HAS_COMPOUND_LITERAL TRUE
|
385
|
+
# define Z_COMPILER_C_HAS_DESIGNATED_INITIALIZER TRUE
|
386
|
+
# define Z_COMPILER_C_HAS_FLEXIBLE_ARRAY_MEMBER TRUE
|
387
|
+
|
388
|
+
# ifndef __STDC_NO_VLA__
|
389
|
+
# define Z_COMPILER_C_HAS_VLA TRUE
|
390
|
+
# endif
|
391
|
+
#endif
|
392
|
+
|
393
|
+
#if defined(__cplusplus) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
|
394
|
+
# define Z_COMPILER_C_HAS_CPP_STYLE_COMMENT TRUE
|
395
|
+
# define Z_COMPILER_C_HAS_MIXED_DECLARATIONS_AND_CODE TRUE
|
396
|
+
# define Z_COMPILER_C_HAS_NON_CONSTANT_AGGREGATE_INITIALIZER TRUE
|
397
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_INLINE TRUE
|
398
|
+
#endif
|
399
|
+
|
400
|
+
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
|
401
|
+
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
|
402
|
+
|
403
|
+
# define Z_COMPILER_C_HAS_PREPROCESSOR_ARITHMETIC_DONE_IN_MAXIMUM_INTEGRAL TRUE
|
404
|
+
# define Z_COMPILER_C_HAS_VARIADIC_MACRO TRUE
|
405
|
+
# define Z_COMPILER_C_HAS_TYPE_LLONG TRUE
|
406
|
+
#endif
|
407
|
+
|
408
|
+
/*-----------------------------------------------------------.
|
409
|
+
| It seems that Clang always recognizes _Bool, except in C++ |
|
410
|
+
| (until C++ supports C99, of course). |
|
411
|
+
'-----------------------------------------------------------*/
|
412
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined(__cplusplus)
|
413
|
+
# define Z_COMPILER_C_HAS_TYPE_BOOLEAN TRUE
|
414
|
+
#endif
|
415
|
+
|
416
|
+
/* MARK: - C11 support */
|
417
|
+
|
418
|
+
#if Z_COMPILER_VERSION >= Z_VERSION(3, 1, 0)
|
419
|
+
|
420
|
+
# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
421
|
+
# define Z_COMPILER_C_HAS_ANONYMOUS_STRUCTURE TRUE
|
422
|
+
# endif
|
423
|
+
|
424
|
+
# if defined(__cplusplus) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
|
425
|
+
# define Z_COMPILER_C_HAS_ANONYMOUS_UNION TRUE
|
426
|
+
# endif
|
427
|
+
|
428
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_NO_RETURN TRUE /* Available in older versions? */
|
429
|
+
|
430
|
+
#endif
|
431
|
+
|
432
|
+
#if __has_feature(c_atomic)
|
433
|
+
# define Z_COMPILER_C_HAS_ATOMIC_OPERATIONS TRUE
|
434
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_ATOMIC TRUE
|
435
|
+
# define Z_COMPILER_C_HAS_TYPE_QUALIFIER_ATOMIC TRUE
|
436
|
+
#endif
|
437
|
+
|
438
|
+
#if __has_feature(c_generic_selections)
|
439
|
+
# define Z_COMPILER_C_HAS_GENERIC_SELECTION TRUE
|
440
|
+
#endif
|
441
|
+
|
442
|
+
#if __has_feature(c_static_assert)
|
443
|
+
# define Z_COMPILER_C_HAS_STATIC_ASSERTION TRUE
|
444
|
+
#endif
|
445
|
+
|
446
|
+
#if __has_feature(c_alignof)
|
447
|
+
# define Z_COMPILER_C_HAS_OPERATOR_ALIGN_OF TRUE
|
448
|
+
#endif
|
449
|
+
|
450
|
+
#if __has_feature(c_alignas)
|
451
|
+
# define Z_COMPILER_C_HAS_SPECIFIER_ALIGN_AS TRUE
|
452
|
+
#endif
|
453
|
+
|
454
|
+
#if __has_feature(c_thread_local)
|
455
|
+
# define Z_COMPILER_C_HAS_STORATE_CLASS_THREAD_LOCAL TRUE
|
456
|
+
#endif
|
457
|
+
|
458
|
+
/* MARK: - C18 support */
|
459
|
+
|
460
|
+
/* MARK: - Apple C extensions support */
|
461
|
+
|
462
|
+
#if __has_extension(blocks)
|
463
|
+
# define Z_COMPILER_C_HAS_CLOSURE TRUE
|
464
|
+
#endif
|
465
|
+
|
466
|
+
#ifdef __cplusplus
|
467
|
+
|
468
|
+
/*---------------------------------------------------.
|
469
|
+
| References: |
|
470
|
+
| https://clang.llvm.org/cxx_status.html |
|
471
|
+
| https://en.cppreference.com/w/cpp/compiler_support |
|
472
|
+
| [Clang sources]/lib/Lex/PPMacroExpansion.cpp |
|
473
|
+
'---------------------------------------------------*/
|
474
|
+
|
475
|
+
/* MARK: - C++98 support */
|
476
|
+
|
477
|
+
# define Z_COMPILER_CPP_HAS_SFINAE TRUE
|
478
|
+
# define Z_COMPILER_CPP_HAS_TYPE_BOOLEAN TRUE
|
479
|
+
# define Z_COMPILER_CPP_HAS_TYPE_WCHAR TRUE
|
480
|
+
|
481
|
+
/* MARK: - C++03 support */
|
482
|
+
|
483
|
+
# define Z_COMPILER_CPP_HAS_VALUE_INITIALIZATION TRUE
|
484
|
+
|
485
|
+
/* MARK: - C++11 support */
|
486
|
+
|
487
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(2, 9, 0)
|
488
|
+
# define Z_COMPILER_CPP_HAS_EXPRESSION_SFINAE TRUE /* v2.9 */
|
489
|
+
# define Z_COMPILER_CPP_HAS_MAGIC_CONSTANT_FUNCTION_NAME TRUE /* v2.9 (Available in older versions?) */
|
490
|
+
|
491
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 1, 0)
|
492
|
+
# define Z_COMPILER_CPP_HAS_CPP11_RULES_ON_UNIVERSAL_CHARACTER_NAME TRUE /* v3.1 */
|
493
|
+
# endif
|
494
|
+
# endif
|
495
|
+
|
496
|
+
# if __cplusplus >= 201103L && Z_COMPILER_VERSION >= Z_VERSION(2, 9, 0)
|
497
|
+
# define Z_COMPILER_CPP_HAS_C99_PREPROCESSOR TRUE /* v2.9 */
|
498
|
+
# define Z_COMPILER_CPP_HAS_CONCURRENT_STATIC_LOCAL_VARIABLE TRUE /* v2.9 (Available in older standards?) */
|
499
|
+
# define Z_COMPILER_CPP_HAS_CONDITIONALLY_SUPPORTED_BEHAVIOR TRUE /* v2.9 */
|
500
|
+
# define Z_COMPILER_CPP_HAS_EXTENDED_FRIEND_DECLARATION TRUE /* v2.9 */
|
501
|
+
# define Z_COMPILER_CPP_HAS_EXTERN_TEMPLATE TRUE /* v2.9 */
|
502
|
+
# define Z_COMPILER_CPP_HAS_INITIALIZATION_OF_CLASS_OBJECT_BY_RVALUE TRUE /* v2.9 */
|
503
|
+
# define Z_COMPILER_CPP_HAS_RIGHT_ANGLE_BRACKETS TRUE /* v2.9 */
|
504
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_CHAR16_CHARACTER TRUE /* v2.9 */
|
505
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_CHAR16_STRING TRUE /* v2.9 */
|
506
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_CHAR32_CHARACTER TRUE /* v2.9 */
|
507
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_CHAR32_STRING TRUE /* v2.9 */
|
508
|
+
# define Z_COMPILER_CPP_HAS_TYPE_CHAR16 TRUE /* v2.9 */
|
509
|
+
# define Z_COMPILER_CPP_HAS_TYPE_CHAR32 TRUE /* v2.9 */
|
510
|
+
# define Z_COMPILER_CPP_HAS_TYPE_LLONG TRUE /* v2.9 */
|
511
|
+
|
512
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0)
|
513
|
+
# define Z_COMPILER_CPP_HAS_STANDARD_LAYOUT TRUE /* v3.0 */
|
514
|
+
|
515
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 1, 0)
|
516
|
+
# define Z_COMPILER_CPP_HAS_FORWARD_DECLARATION_OF_ENUMERATION TRUE /* v3.1 */
|
517
|
+
# define Z_COMPILER_CPP_HAS_OPERATOR_SIZE_OF_NON_STATIC_DATA_MEMBER TRUE /* v3.1 */
|
518
|
+
# endif
|
519
|
+
# endif
|
520
|
+
# endif
|
521
|
+
|
522
|
+
# if __has_feature(cxx_generalized_initializers)
|
523
|
+
# define Z_COMPILER_CPP_HAS_COPY_LIST_INITIALIZATION TRUE /* v3.1 */
|
524
|
+
# define Z_COMPILER_CPP_HAS_DIRECT_LIST_INITIALIZATION TRUE /* v3.1 */
|
525
|
+
# define Z_COMPILER_CPP_HAS_INITIALIZER_LIST TRUE /* v3.1 */
|
526
|
+
# endif
|
527
|
+
|
528
|
+
# if __has_feature(cxx_local_type_template_args) || \
|
529
|
+
(__cplusplus >= 201103L && \
|
530
|
+
Z_COMPILER_VERSION >= Z_VERSION(2, 9, 0) && \
|
531
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 1, 0))
|
532
|
+
|
533
|
+
# define Z_COMPILER_CPP_HAS_LOCAL_TYPE_AS_TEMPLATE_ARGUMENT TRUE /* v2.9 */
|
534
|
+
# define Z_COMPILER_CPP_HAS_UNNAMED_TYPE_AS_TEMPLATE_ARGUMENT TRUE /* v2.9 */
|
535
|
+
# endif
|
536
|
+
|
537
|
+
# if __has_feature(cxx_auto_type)
|
538
|
+
# undef Z_COMPILER_C_HAS_STORAGE_CLASS_AUTO
|
539
|
+
# define Z_COMPILER_CPP_HAS_MULTI_DECLARATOR_AUTO TRUE /* v2.9 */
|
540
|
+
# define Z_COMPILER_CPP_HAS_REMOVAL_OF_AUTO_AS_STORAGE_CLASS TRUE /* v2.9 */
|
541
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_AUTO TRUE /* v2.9 */
|
542
|
+
# endif
|
543
|
+
|
544
|
+
# if __has_feature(cxx_rvalue_references)
|
545
|
+
# define Z_COMPILER_CPP_HAS_RVALUE_REFERENCE TRUE /* v2.9 */
|
546
|
+
|
547
|
+
# if Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0)
|
548
|
+
# define Z_COMPILER_CPP_HAS_MOVE_SPECIAL_MEMBER_FUNCTIONS TRUE /* v3.0 */
|
549
|
+
# endif
|
550
|
+
# endif
|
551
|
+
|
552
|
+
# if __has_feature(cxx_attributes)
|
553
|
+
# define Z_COMPILER_CPP_HAS_STANDARDIZED_ATTRIBUTE_SYNTAX TRUE /* v3.3 */
|
554
|
+
# define Z_COMPILER_CPP_HAS_ATTRIBUTE_CARRIES_DEPENDENCY TRUE /* v3.3 */
|
555
|
+
# define Z_COMPILER_CPP_HAS_ATTRIBUTE_NO_RETURN TRUE /* v3.3 */
|
556
|
+
# endif
|
557
|
+
|
558
|
+
# if __has_feature(cxx_variadic_templates)
|
559
|
+
# define Z_COMPILER_CPP_HAS_VARIADIC_TEMPLATE TRUE /* v2.9 */
|
560
|
+
# define Z_COMPILER_CPP_HAS_VARIADIC_TEMPLATE_EXTENDED_PARAMETERS TRUE /* v2.9 */
|
561
|
+
# define Z_COMPILER_CPP_HAS_OPERATOR_SIZE_OF_PARAMETER_PACK TRUE /* v2.9 */
|
562
|
+
# endif
|
563
|
+
|
564
|
+
# if __has_feature(cxx_nonstatic_member_init)
|
565
|
+
# define Z_COMPILER_CPP_HAS_DEFAULT_MEMBER_INITIALIZER TRUE /* v3.0 */
|
566
|
+
# endif
|
567
|
+
|
568
|
+
# if __has_feature(cxx_default_function_template_args)
|
569
|
+
# define Z_COMPILER_CPP_HAS_DEFAULT_TEMPLATE_ARGUMENTS_FOR_FUNCTION_TEMPLATE TRUE /* v2.9 */
|
570
|
+
# endif
|
571
|
+
|
572
|
+
# if __has_feature(cxx_defaulted_functions) || \
|
573
|
+
(__cplusplus >= 201103L && \
|
574
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0) && \
|
575
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 1, 0))
|
576
|
+
|
577
|
+
# define Z_COMPILER_CPP_HAS_DEFAULTED_FUNCTION TRUE /* v3.0 */
|
578
|
+
# endif
|
579
|
+
|
580
|
+
# if __has_feature(cxx_delegating_constructors)
|
581
|
+
# define Z_COMPILER_CPP_HAS_DELEGATING_CONSTRUCTORS TRUE /* v3.0 */
|
582
|
+
# endif
|
583
|
+
|
584
|
+
# if __has_feature(cxx_deleted_functions)
|
585
|
+
# define Z_COMPILER_CPP_HAS_DELETED_FUNCTION TRUE /* v2.9 */
|
586
|
+
# endif
|
587
|
+
|
588
|
+
# if __has_feature(cxx_explicit_conversions)
|
589
|
+
# define Z_COMPILER_CPP_HAS_EXPLICIT_CONVERSION_FUNCTION TRUE /* v3.0 */
|
590
|
+
# endif
|
591
|
+
|
592
|
+
# if __has_feature(cxx_inheriting_constructors)
|
593
|
+
# define Z_COMPILER_CPP_HAS_INHERITING_CONSTRUCTORS TRUE /* v3.3 */
|
594
|
+
# endif
|
595
|
+
|
596
|
+
# if __has_feature(cxx_inline_namespaces)
|
597
|
+
# define Z_COMPILER_CPP_HAS_INLINE_NAMESPACE TRUE /* v2.9 */
|
598
|
+
# endif
|
599
|
+
|
600
|
+
# if __has_feature(cxx_lambdas)
|
601
|
+
# define Z_COMPILER_CPP_HAS_LAMBDA TRUE /* v3.1 */
|
602
|
+
# endif
|
603
|
+
|
604
|
+
# if __has_feature(cxx_range_for)
|
605
|
+
# define Z_COMPILER_CPP_HAS_RANGE_BASED_FOR TRUE /* v3.0 */
|
606
|
+
# endif
|
607
|
+
|
608
|
+
# if __has_feature(cxx_reference_qualified_functions)
|
609
|
+
# define Z_COMPILER_CPP_HAS_REFERENCE_QUALIFIED_NON_STATIC_MEMBER_FUNCTION TRUE /* v2.9 */
|
610
|
+
# endif
|
611
|
+
|
612
|
+
# if __has_feature(cxx_static_assert)
|
613
|
+
# define Z_COMPILER_CPP_HAS_STATIC_ASSERTION TRUE /* v2.9 */
|
614
|
+
# endif
|
615
|
+
|
616
|
+
# if __has_feature(cxx_strong_enums)
|
617
|
+
# define Z_COMPILER_CPP_HAS_STRONGLY_TYPED_ENUMERATION TRUE /* v2.9 */
|
618
|
+
# endif
|
619
|
+
|
620
|
+
# if __has_feature(cxx_alias_templates)
|
621
|
+
# define Z_COMPILER_CPP_HAS_TEMPLATE_ALIAS TRUE /* v3.0 */
|
622
|
+
# endif
|
623
|
+
|
624
|
+
# if __has_feature(cxx_trailing_return)
|
625
|
+
# define Z_COMPILER_CPP_HAS_TRAILING_RETURN_TYPE TRUE /* v2.9 */
|
626
|
+
# endif
|
627
|
+
|
628
|
+
# if __has_feature(cxx_unrestricted_unions)
|
629
|
+
# define Z_COMPILER_CPP_HAS_UNRESTRICTED_UNION TRUE /* v3.1 */
|
630
|
+
# endif
|
631
|
+
|
632
|
+
# if __has_feature(cxx_nullptr)
|
633
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_NULL_POINTER TRUE /* v3.0 */
|
634
|
+
# endif
|
635
|
+
|
636
|
+
# if __has_feature(cxx_raw_string_literals) || \
|
637
|
+
(__cplusplus >= 201103L && \
|
638
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0) && \
|
639
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 1, 0))
|
640
|
+
|
641
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_RAW_STRING TRUE /* v3.0 */
|
642
|
+
# endif
|
643
|
+
|
644
|
+
# if __has_feature(cxx_unicode_literals) || \
|
645
|
+
(__cplusplus >= 201103L && \
|
646
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 0, 0) && \
|
647
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 1, 0))
|
648
|
+
|
649
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_UNICODE_STRING TRUE /* v3.0 */
|
650
|
+
# endif
|
651
|
+
|
652
|
+
# if __has_feature(cxx_user_literals)
|
653
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_USER_DEFINED TRUE /* v3.1 */
|
654
|
+
# endif
|
655
|
+
|
656
|
+
# if __has_feature(cxx_alignof) || \
|
657
|
+
(__cplusplus >= 201103L && \
|
658
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 3, 0) && \
|
659
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 6, 0))
|
660
|
+
|
661
|
+
# define Z_COMPILER_CPP_HAS_OPERATOR_ALIGN_OF TRUE /* v3.3 */
|
662
|
+
# endif
|
663
|
+
|
664
|
+
# if __has_feature(cxx_noexcept)
|
665
|
+
# define Z_COMPILER_CPP_HAS_OPERATOR_NO_EXCEPTION TRUE /* v3.0 */
|
666
|
+
# endif
|
667
|
+
|
668
|
+
# if __has_feature(cxx_alignas)
|
669
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_ALIGN_AS TRUE /* v3.3 */
|
670
|
+
# endif
|
671
|
+
|
672
|
+
# if __has_feature(cxx_constexpr)
|
673
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_CONSTANT_EXPRESSION TRUE /* v3.1 */
|
674
|
+
# endif
|
675
|
+
|
676
|
+
# if __has_feature(cxx_decltype)
|
677
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_DECLARED_TYPE TRUE /* v2.9 */
|
678
|
+
# endif
|
679
|
+
|
680
|
+
# if __has_feature(cxx_decltype_incomplete_return_types)
|
681
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_DECLARED_TYPE_OF_INCOMPLETE_RETURN TRUE /* v3.1 */
|
682
|
+
# endif
|
683
|
+
|
684
|
+
# if __has_feature(cxx_override_control)
|
685
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_FINAL TRUE /* v3.0 */
|
686
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_OVERRIDE TRUE /* v3.0 */
|
687
|
+
# endif
|
688
|
+
|
689
|
+
# if __has_feature(cxx_noexcept)
|
690
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_NO_EXCEPTION TRUE /* v3.0 */
|
691
|
+
# endif
|
692
|
+
|
693
|
+
/*-----------------------------------------------.
|
694
|
+
| IMPORTANT: STORATE_CLASS_THREAD_LOCAL requires |
|
695
|
+
| a C++ runtime providing __cxa_thread_atexit. |
|
696
|
+
'-----------------------------------------------*/
|
697
|
+
# if __has_feature(cxx_thread_local)
|
698
|
+
# define Z_COMPILER_CPP_HAS_STORATE_CLASS_THREAD_LOCAL TRUE /* v3.3 */
|
699
|
+
# endif
|
700
|
+
|
701
|
+
/* MARK: - C++14 support */
|
702
|
+
|
703
|
+
# if defined(__cpp_digit_separators) || \
|
704
|
+
(__cplusplus >= 201402L && \
|
705
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 4, 0) && \
|
706
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 6, 0))
|
707
|
+
|
708
|
+
# define Z_COMPILER_CPP_HAS_APOSTROPHE_AS_DIGIT_SEPARATOR TRUE /* v3.4 */
|
709
|
+
# endif
|
710
|
+
|
711
|
+
# if __has_feature(cxx_relaxed_constexpr)
|
712
|
+
# define Z_COMPILER_CPP_HAS_CPP14_RULES_ON_CONSTANT_EXPRESSION_FUNCTION TRUE /* v3.4 */
|
713
|
+
# endif
|
714
|
+
|
715
|
+
# if __has_feature(cxx_contextual_conversions)
|
716
|
+
# define Z_COMPILER_CPP_HAS_CPP14_RULES_ON_CONTEXTUAL_CONVERSION TRUE /* v3.4 */
|
717
|
+
# endif
|
718
|
+
|
719
|
+
# if __has_feature(cxx_aggregate_nsdmi)
|
720
|
+
# define Z_COMPILER_CPP_HAS_DEFAULT_MEMBER_INITIALIZER_FOR_AGGREGATE TRUE /* v3.3 */
|
721
|
+
# endif
|
722
|
+
|
723
|
+
# if __has_feature(cxx_generic_lambdas) || \
|
724
|
+
(__cplusplus >= 201402L && \
|
725
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 4, 0) && \
|
726
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 5, 0))
|
727
|
+
|
728
|
+
# define Z_COMPILER_CPP_HAS_GENERIC_LAMBDA TRUE /* v3.4 */
|
729
|
+
# endif
|
730
|
+
|
731
|
+
# if __has_feature(cxx_init_captures)
|
732
|
+
# define Z_COMPILER_CPP_HAS_INITIALIZED_LAMBDA_CAPTURE TRUE /* v3.4 */
|
733
|
+
# endif
|
734
|
+
|
735
|
+
# if __has_feature(cxx_return_type_deduction)
|
736
|
+
# define Z_COMPILER_CPP_HAS_RETURN_TYPE_DEDUCTION_FOR_NORMAL_FUNCTION TRUE /* v3.4 */
|
737
|
+
# endif
|
738
|
+
|
739
|
+
/*-----------------------------------------------------------------------.
|
740
|
+
| IMPORTANT: In Clang v3.7 and later, SIZED_DEALLOCATION is only enabled |
|
741
|
+
| if the user passes the -fsized-deallocation flag. The user must supply |
|
742
|
+
| definitions of the sized deallocation functions, either by providing |
|
743
|
+
| them explicitly or by using a C++ standard library that does. |
|
744
|
+
'-----------------------------------------------------------------------*/
|
745
|
+
# if __cplusplus >= 201402L && \
|
746
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 4, 0) && \
|
747
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 7, 0)
|
748
|
+
|
749
|
+
# define Z_COMPILER_CPP_HAS_SIZED_DEALLOCATION TRUE /* v3.4 */
|
750
|
+
# endif
|
751
|
+
|
752
|
+
# if __has_feature(cxx_variable_templates)
|
753
|
+
# define Z_COMPILER_CPP_HAS_VARIABLE_TEMPLATE TRUE /* v3.4 */
|
754
|
+
# endif
|
755
|
+
|
756
|
+
# if __has_cpp_attribute(deprecated) || \
|
757
|
+
(__cplusplus >= 201402L && \
|
758
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 4, 0) && \
|
759
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 6, 0))
|
760
|
+
|
761
|
+
# define Z_COMPILER_CPP_HAS_ATTRIBUTE_DEPRECATED TRUE /* v3.4 */
|
762
|
+
# endif
|
763
|
+
|
764
|
+
# if __has_feature(cxx_binary_literals) || \
|
765
|
+
(__cplusplus >= 201402L && \
|
766
|
+
Z_COMPILER_VERSION >= Z_VERSION(2, 9, 0) && \
|
767
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 3, 0))
|
768
|
+
|
769
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_BINARY TRUE /* v2.9 */
|
770
|
+
# endif
|
771
|
+
|
772
|
+
# if __has_feature(cxx_decltype_auto) || \
|
773
|
+
(__cplusplus >= 201402L && \
|
774
|
+
Z_COMPILER_VERSION >= Z_VERSION(3, 3, 0) && \
|
775
|
+
Z_COMPILER_VERSION < Z_VERSION(3, 5, 0))
|
776
|
+
|
777
|
+
# define Z_COMPILER_CPP_HAS_SPECIFIER_DECLARED_TYPE_OF_AUTO TRUE /* v3.3 */
|
778
|
+
# endif
|
779
|
+
|
780
|
+
/* MARK: - C++17 support */
|
781
|
+
|
782
|
+
/*#define Z_COMPILER_CPP_HAS_AGGREGATE_WITH_BASE_CLASSES*/
|
783
|
+
/*#define Z_COMPILER_CPP_HAS_ATTRIBUTES_FOR_ENUMERATION*/
|
784
|
+
/*#define Z_COMPILER_CPP_HAS_ATTRIBUTES_FOR_NAMESPACE*/
|
785
|
+
/*#define Z_COMPILER_CPP_HAS_ATTRIBUTE_USING_PREFIX*/
|
786
|
+
/*#define Z_COMPILER_CPP_HAS_CONSTANT_EXPRESSION_IF*/
|
787
|
+
/*#define Z_COMPILER_CPP_HAS_CONSTANT_EXPRESSION_LAMBDA*/
|
788
|
+
/*#define Z_COMPILER_CPP_HAS_CPP17_RULES_ON_BRACED_INITIALIZATION*/
|
789
|
+
/*#define Z_COMPILER_CPP_HAS_CPP17_RULES_ON_EXPRESSION_EVALUATION_ORDER*/
|
790
|
+
/*#define Z_COMPILER_CPP_HAS_CPP17_RULES_ON_INHERITING_CONSTRUCTORS*/
|
791
|
+
/*#define Z_COMPILER_CPP_HAS_CPP17_RULES_ON_NON_TYPE_TEMPLATE_ARGUMENTS*/
|
792
|
+
/*#define Z_COMPILER_CPP_HAS_CPP17_RULES_ON_TEMPLATE_TEMPLATE_ARGUMENT_MATCHING*/
|
793
|
+
/*#define Z_COMPILER_CPP_HAS_DIFFERING_BEGIN_AND_END_TYPES_IN_RANGE_BASED_FOR*/
|
794
|
+
/*#define Z_COMPILER_CPP_HAS_DIRECT_LIST_INITIALIZATION_OF_ENUMERATION*/
|
795
|
+
/*#define Z_COMPILER_CPP_HAS_EXCEPTION_SPECIFICATION_AS_PART_OF_THE_TYPE*/
|
796
|
+
/*#define Z_COMPILER_CPP_HAS_FOLD_EXPRESSION*/
|
797
|
+
/*#define Z_COMPILER_CPP_HAS_FOLD_EXPRESSION_SAFETY_WITH_EMPTY_PARAMETER_PACK*/
|
798
|
+
/*#define Z_COMPILER_CPP_HAS_GUARANTEED_COPY_ELISION*/
|
799
|
+
/*#define Z_COMPILER_CPP_HAS_IF_WITH_INITIALIZER*/
|
800
|
+
/*#define Z_COMPILER_CPP_HAS_IGNORATION_OF_UNKNOWN_ATTRIBUTES*/
|
801
|
+
/*#define Z_COMPILER_CPP_HAS_INLINE_VARIABLE*/
|
802
|
+
/*#define Z_COMPILER_CPP_HAS_LAMBDA_CAPTURE_OF_THIS_OBJECT_BY_VALUE*/
|
803
|
+
/*#define Z_COMPILER_CPP_HAS_LAUNDER*/
|
804
|
+
/*#define Z_COMPILER_CPP_HAS_NESTED_NAMESPACE_DEFINITION*/
|
805
|
+
/*#define Z_COMPILER_CPP_HAS_NON_TYPE_TEMPLATE_PARAMETER_WITH_AUTO_TYPE*/
|
806
|
+
/*#define Z_COMPILER_CPP_HAS_OVER_ALIGNED_DYNAMIC_ALLOCATION*/
|
807
|
+
/*#define Z_COMPILER_CPP_HAS_REMOVAL_OF_DYNAMIC_EXCEPTION_SPECIFICATION*/
|
808
|
+
/*#define Z_COMPILER_CPP_HAS_REMOVAL_OF_INCREMENT_BOOLEAN_OPERATOR*/
|
809
|
+
/*#define Z_COMPILER_CPP_HAS_REMOVAL_OF_REGISTER_AS_STORAGE_CLASS*/
|
810
|
+
/*#define Z_COMPILER_CPP_HAS_REMOVAL_OF_TRIGRAPHS*/
|
811
|
+
/*#define Z_COMPILER_CPP_HAS_STATIC_ASSERTION_WITH_NO_MESSAGE*/
|
812
|
+
/*#define Z_COMPILER_CPP_HAS_STRUCTURED_BINDING*/
|
813
|
+
/*#define Z_COMPILER_CPP_HAS_SWITCH_WITH_INITIALIZER*/
|
814
|
+
/*#define Z_COMPILER_CPP_HAS_TEMPLATE_ARGUMENTS_DEDUCTION_FOR_CLASS_TEMPLATE*/
|
815
|
+
/*#define Z_COMPILER_CPP_HAS_TYPENAME_IN_TEMPLATE_TEMPLATE_PARAMETER*/
|
816
|
+
/*#define Z_COMPILER_CPP_HAS_VARIADIC_USING*/
|
817
|
+
/*#define Z_COMPILER_CPP_HAS_ATTRIBUTE_FALL_THROUGH*/
|
818
|
+
/*#define Z_COMPILER_CPP_HAS_ATTRIBUTE_MAYBE_UNUSED*/
|
819
|
+
/*#define Z_COMPILER_CPP_HAS_ATTRIBUTE_NO_DISCARD*/
|
820
|
+
|
821
|
+
#if __cplusplus >= 201703L
|
822
|
+
# define Z_COMPILER_CPP_HAS_LITERAL_HEXADECIMAL_FLOATING_POINT TRUE /* All versions */
|
823
|
+
# endif
|
824
|
+
|
825
|
+
/*#define Z_COMPILER_CPP_HAS_LITERAL_UTF8_CHARACTER*/
|
826
|
+
|
827
|
+
# define Z_COMPILER_CPP_HAS_PREPROCESSOR_OPERATOR_HAS_INCLUDE TRUE /* All versions */
|
828
|
+
|
829
|
+
#endif
|
830
|
+
|
831
|
+
/* MARK: - Attributes */
|
832
|
+
|
833
|
+
#if __has_attribute(alias)
|
834
|
+
# define Z_COMPILER_ATTRIBUTE_ALIAS(name) __attribute__((alias(name)))
|
835
|
+
#endif
|
836
|
+
|
837
|
+
#if __has_attribute(dllimport)
|
838
|
+
# define Z_COMPILER_ATTRIBUTE_API __declspec(dllimport)
|
839
|
+
#endif
|
840
|
+
|
841
|
+
#if __has_attribute(dllexport)
|
842
|
+
# define Z_COMPILER_ATTRIBUTE_API_EXPORT __declspec(dllexport)
|
843
|
+
#endif
|
844
|
+
|
845
|
+
/*#define Z_COMPILER_ATTRIBUTE_API_ALIAS*/
|
846
|
+
/*#define Z_COMPILER_ATTRIBUTE_API_EXPORT_ALIAS*/
|
847
|
+
/*#define Z_COMPILER_ATTRIBUTE_API_WEAK_EXPORT*/
|
848
|
+
/*#define Z_COMPILER_ATTRIBUTE_EBCO*/
|
849
|
+
|
850
|
+
#if __has_attribute(always_inline)
|
851
|
+
# define Z_COMPILER_ATTRIBUTE_INLINE __inline__ __attribute__((always_inline))
|
852
|
+
#else
|
853
|
+
# define Z_COMPILER_ATTRIBUTE_INLINE __inline__
|
854
|
+
#endif
|
855
|
+
|
856
|
+
#if __has_attribute(noreturn)
|
857
|
+
# define Z_COMPILER_ATTRIBUTE_NO_RETURN __attribute__((noreturn))
|
858
|
+
#endif
|
859
|
+
|
860
|
+
#if __has_attribute(sentinel)
|
861
|
+
# define Z_COMPILER_ATTRIBUTE_NULL_TERMINATED __attribute__((sentinel))
|
862
|
+
#endif
|
863
|
+
|
864
|
+
#if __has_attribute(visibility)
|
865
|
+
# define Z_COMPILER_ATTRIBUTE_PRIVATE __attribute__((visibility("hidden")))
|
866
|
+
# define Z_COMPILER_ATTRIBUTE_PUBLIC __attribute__((visibility("default")))
|
867
|
+
#endif
|
868
|
+
|
869
|
+
#if __has_attribute(packed)
|
870
|
+
# define Z_COMPILER_ATTRIBUTE_STRICT_SIZE_BEGIN
|
871
|
+
# define Z_COMPILER_ATTRIBUTE_STRICT_SIZE_END __attribute__((packed))
|
872
|
+
#endif
|
873
|
+
|
874
|
+
#if __has_extension(tls)
|
875
|
+
# define Z_COMPILER_ATTRIBUTE_THREAD_LOCAL __thread
|
876
|
+
#endif
|
877
|
+
|
878
|
+
#if __has_attribute(weak)
|
879
|
+
# define Z_COMPILER_ATTRIBUTE_WEAK __attribute__((weak))
|
880
|
+
#endif
|
881
|
+
|
882
|
+
/* MARK: - Built-in constants */
|
883
|
+
|
884
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT16_INFINITY*/
|
885
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT16_NAN*/
|
886
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT32_INFINITY*/
|
887
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT32_NAN*/
|
888
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT64_INFINITY*/
|
889
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT64_NAN*/
|
890
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT128_INFINITY*/
|
891
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT128_NAN*/
|
892
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT80_X87_INFINITY*/
|
893
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT80_X87_NAN*/
|
894
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT96_X87_INFINITY*/
|
895
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT96_X87_NAN*/
|
896
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT128_X87_INFINITY*/
|
897
|
+
/*#define Z_COMPILER_CONSTANT_FLOAT128_X87_NAN*/
|
898
|
+
|
899
|
+
#ifdef __CHAR_BIT__
|
900
|
+
# define Z_COMPILER_CONSTANT_UCHAR_BITS __CHAR_BIT__
|
901
|
+
# define Z_COMPILER_CONSTANT_SCHAR_BITS __CHAR_BIT__
|
902
|
+
#endif
|
903
|
+
|
904
|
+
#ifdef __SCHAR_MAX__
|
905
|
+
# define Z_COMPILER_CONSTANT_SCHAR_MAXIMUM __SCHAR_MAX__
|
906
|
+
#endif
|
907
|
+
|
908
|
+
#ifdef __SIZEOF_SHORT__
|
909
|
+
# define Z_COMPILER_CONSTANT_USHORT_SIZE __SIZEOF_SHORT__
|
910
|
+
# define Z_COMPILER_CONSTANT_SSHORT_SIZE __SIZEOF_SHORT__
|
911
|
+
#endif
|
912
|
+
|
913
|
+
#ifdef __SHRT_MAX__
|
914
|
+
# define Z_COMPILER_CONSTANT_SHORT_MAXIMUM __SHRT_MAX__
|
915
|
+
#endif
|
916
|
+
|
917
|
+
#ifdef __SIZEOF_INT__
|
918
|
+
# define Z_COMPILER_CONSTANT_UINT_SIZE __SIZEOF_INT__
|
919
|
+
# define Z_COMPILER_CONSTANT_SINT_SIZE __SIZEOF_INT__
|
920
|
+
#endif
|
921
|
+
|
922
|
+
#ifdef _MIPS_SZINT
|
923
|
+
# define Z_COMPILER_CONSTANT_UINT_BITS _MIPS_SZINT
|
924
|
+
# define Z_COMPILER_CONSTANT_SINT_BITS _MIPS_SZINT
|
925
|
+
#endif
|
926
|
+
|
927
|
+
#ifdef __INT_MAX__
|
928
|
+
# define Z_COMPILER_CONSTANT_SINT_MAXIMUM __INT_MAX__
|
929
|
+
#endif
|
930
|
+
|
931
|
+
#ifdef __SIZEOF_LONG__
|
932
|
+
# define Z_COMPILER_CONSTANT_ULONG_SIZE __SIZEOF_LONG__
|
933
|
+
# define Z_COMPILER_CONSTANT_SLONG_SIZE __SIZEOF_LONG__
|
934
|
+
#endif
|
935
|
+
|
936
|
+
#ifdef _MIPS_SZLONG
|
937
|
+
# define Z_COMPILER_CONSTANT_ULONG_BITS _MIPS_SZLONG
|
938
|
+
# define Z_COMPILER_CONSTANT_SLONG_BITS _MIPS_SZLONG
|
939
|
+
#endif
|
940
|
+
|
941
|
+
/*#define Z_COMPILER_CONSTANT_ULONG_MAXIMUM*/
|
942
|
+
|
943
|
+
#ifdef __LONG_MAX__
|
944
|
+
# define Z_COMPILER_CONSTANT_SLONG_MAXIMUM __LONG_MAX__
|
945
|
+
#endif
|
946
|
+
|
947
|
+
#ifdef __SIZEOF_LONG_LONG__
|
948
|
+
# define Z_COMPILER_CONSTANT_ULLONG_SIZE __SIZEOF_LONG_LONG__
|
949
|
+
# define Z_COMPILER_CONSTANT_SLLONG_SIZE __SIZEOF_LONG_LONG__
|
950
|
+
#endif
|
951
|
+
|
952
|
+
/*#define Z_COMPILER_CONSTANT_ULLONG_MAXIMUM*/
|
953
|
+
|
954
|
+
#ifdef __LONG_LONG_MAX__
|
955
|
+
# define Z_COMPILER_CONSTANT_SLLONG_MAXIMUM __LONG_LONG_MAX__
|
956
|
+
#endif
|
957
|
+
|
958
|
+
#ifdef __SIZEOF_FLOAT__
|
959
|
+
# define Z_COMPILER_CONSTANT_FLOAT_SIZE __SIZEOF_FLOAT__
|
960
|
+
#endif
|
961
|
+
|
962
|
+
#if __has_builtin(__builtin_huge_valf)
|
963
|
+
# define Z_COMPILER_CONSTANT_FLOAT_INFINITY __builtin_huge_valf()
|
964
|
+
#elif __has_builtin(__builtin_inff)
|
965
|
+
# define Z_COMPILER_CONSTANT_FLOAT_INFINITY __builtin_inff()
|
966
|
+
#endif
|
967
|
+
|
968
|
+
#if __has_builtin(__builtin_nanf)
|
969
|
+
# define Z_COMPILER_CONSTANT_FLOAT_NAN __builtin_nanf("")
|
970
|
+
#endif
|
971
|
+
|
972
|
+
#ifdef __SIZEOF_DOUBLE__
|
973
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_SIZE __SIZEOF_DOUBLE__
|
974
|
+
#endif
|
975
|
+
|
976
|
+
#if __has_builtin(__builtin_huge_val)
|
977
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_INFINITY __builtin_huge_val()
|
978
|
+
#elif __has_builtin(__builtin_inf)
|
979
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_INFINITY __builtin_inf()
|
980
|
+
#endif
|
981
|
+
|
982
|
+
#if __has_builtin(__builtin_nan)
|
983
|
+
# define Z_COMPILER_CONSTANT_DOUBLE_NAN __builtin_nan("")
|
984
|
+
#endif
|
985
|
+
|
986
|
+
#if defined(__LONG_DOUBLE_128__) || defined(__LONGDOUBLE128)
|
987
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_PRECISION_BITS 128 /* TODO */
|
988
|
+
#endif
|
989
|
+
|
990
|
+
#ifdef __SIZEOF_LONG_DOUBLE__
|
991
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_SIZE __SIZEOF_LONG_DOUBLE__
|
992
|
+
#endif
|
993
|
+
|
994
|
+
#if __has_builtin(__builtin_huge_vall)
|
995
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_INFINITY __builtin_huge_vall()
|
996
|
+
#elif __has_builtin(__builtin_infl)
|
997
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_INFINITY __builtin_infl()
|
998
|
+
#endif
|
999
|
+
|
1000
|
+
#if __has_builtin(__builtin_nanl)
|
1001
|
+
# define Z_COMPILER_CONSTANT_LDOUBLE_NAN __builtin_nanl("")
|
1002
|
+
#endif
|
1003
|
+
|
1004
|
+
#if defined(__SIZEOF_SIZE_T__)
|
1005
|
+
# define Z_COMPILER_CONSTANT_SIZE_SIZE __SIZEOF_SIZE_T__
|
1006
|
+
# define Z_COMPILER_CONSTANT_SSIZE_SIZE __SIZEOF_SIZE_T__
|
1007
|
+
#elif defined(__SIZE_WIDTH__)
|
1008
|
+
# define Z_COMPILER_CONSTANT_SIZE_BITS __SIZE_WIDTH__
|
1009
|
+
# define Z_COMPILER_CONSTANT_SSIZE_BITS __SIZE_WIDTH__
|
1010
|
+
#endif
|
1011
|
+
|
1012
|
+
#if defined(__SIZEOF_POINTER__)
|
1013
|
+
# define Z_COMPILER_CONSTANT_POINTER_SIZE __SIZEOF_POINTER__
|
1014
|
+
#elif defined(__UINTPTR_WIDTH__)
|
1015
|
+
# define Z_COMPILER_CONSTANT_POINTER_BITS __UINTPTR_WIDTH__
|
1016
|
+
#elif defined(__INTPTR_WIDTH__)
|
1017
|
+
# define Z_COMPILER_CONSTANT_POINTER_BITS __INTPTR_WIDTH__
|
1018
|
+
#elif define(_MIPS_SZPTR)
|
1019
|
+
# define Z_COMPILER_CONSTANT_POINTER_BITS _MIPS_SZPTR
|
1020
|
+
#endif
|
1021
|
+
|
1022
|
+
/* MARK: - Built-in magic constants */
|
1023
|
+
|
1024
|
+
#define Z_COMPILER_MAGIC_CONSTANT_MANGLED_FUNCTION_NAME __PRETTY_FUNCTION__
|
1025
|
+
|
1026
|
+
/* MARK: - Built-in macros: Struture */
|
1027
|
+
|
1028
|
+
#pragma clang diagnostic ignored "-Wextended-offsetof"
|
1029
|
+
#define Z_COMPILER_MACRO_OFFSET_OF __builtin_offsetof
|
1030
|
+
|
1031
|
+
/* MARK: - Built-in macros: VAL
|
1032
|
+
.-----------------------------------------------------------------.
|
1033
|
+
| Please, read the comments for this section in the GCC's header. |
|
1034
|
+
'----------------------------------------------------------------*/
|
1035
|
+
|
1036
|
+
#define Z_COMPILER_MACRO_VAL_INITIALIZE __builtin_va_start
|
1037
|
+
#define Z_COMPILER_MACRO_VAL_FINALIZE __builtin_va_end
|
1038
|
+
#define Z_COMPILER_MACRO_VAL_READ __builtin_va_arg
|
1039
|
+
|
1040
|
+
#if __has_builtin(__builtin_va_copy)
|
1041
|
+
# define Z_COMPILER_MACRO_VAL_COPY(object, output) __builtin_va_copy(output, object)
|
1042
|
+
#endif
|
1043
|
+
|
1044
|
+
/* MARK: - Built-in types */
|
1045
|
+
|
1046
|
+
/*#define Z_COMPILER_TYPE_UINT8*/
|
1047
|
+
/*#define Z_COMPILER_TYPE_UINT16*/
|
1048
|
+
/*#define Z_COMPILER_TYPE_UINT32*/
|
1049
|
+
/*#define Z_COMPILER_TYPE_UINT64*/
|
1050
|
+
/*#define Z_COMPILER_TYPE_SINT8*/
|
1051
|
+
/*#define Z_COMPILER_TYPE_SINT16*/
|
1052
|
+
/*#define Z_COMPILER_TYPE_SINT32*/
|
1053
|
+
/*#define Z_COMPILER_TYPE_SINT64*/
|
1054
|
+
|
1055
|
+
#ifdef __SIZEOF_INT128__
|
1056
|
+
# define Z_COMPILER_TYPE_UINT128 __uint128_t
|
1057
|
+
# define Z_COMPILER_TYPE_SINT128 __int128_t
|
1058
|
+
#endif
|
1059
|
+
|
1060
|
+
/*#define Z_COMPILER_TYPE_FLOAT16*/
|
1061
|
+
/*#define Z_COMPILER_TYPE_FLOAT32*/
|
1062
|
+
/*#define Z_COMPILER_TYPE_FLOAT64*/
|
1063
|
+
/*#define Z_COMPILER_TYPE_FLOAT128*/
|
1064
|
+
/*#define Z_COMPILER_TYPE_FLOAT80_X87*/
|
1065
|
+
/*#define Z_COMPILER_TYPE_FLOAT96_X87*/
|
1066
|
+
/*#define Z_COMPILER_TYPE_FLOAT128_X87*/
|
1067
|
+
|
1068
|
+
#ifdef __FLOAT128__
|
1069
|
+
# define Z_COMPILER_TYPE_FLOAT128 __float128
|
1070
|
+
#endif
|
1071
|
+
|
1072
|
+
#define Z_COMPILER_TYPE_VAL __builtin_va_list
|
1073
|
+
|
1074
|
+
/* MARK: - Suffix macros for built-in types */
|
1075
|
+
|
1076
|
+
/*#define Z_COMPILER_LITERAL_UINT8*/
|
1077
|
+
/*#define Z_COMPILER_LITERAL_UINT16*/
|
1078
|
+
/*#define Z_COMPILER_LITERAL_UINT32*/
|
1079
|
+
/*#define Z_COMPILER_LITERAL_UINT64*/
|
1080
|
+
/*#define Z_COMPILER_LITERAL_UINT128*/
|
1081
|
+
/*#define Z_COMPILER_LITERAL_SINT8*/
|
1082
|
+
/*#define Z_COMPILER_LITERAL_SINT16*/
|
1083
|
+
/*#define Z_COMPILER_LITERAL_SINT32*/
|
1084
|
+
/*#define Z_COMPILER_LITERAL_SINT64*/
|
1085
|
+
/*#define Z_COMPILER_LITERAL_SINT128*/
|
1086
|
+
/*#define Z_COMPILER_LITERAL_FLOAT16*/
|
1087
|
+
/*#define Z_COMPILER_LITERAL_FLOAT32*/
|
1088
|
+
/*#define Z_COMPILER_LITERAL_FLOAT64*/
|
1089
|
+
/*#define Z_COMPILER_LITERAL_FLOAT128*/
|
1090
|
+
/*#define Z_COMPILER_LITERAL_FLOAT80_X87*/
|
1091
|
+
/*#define Z_COMPILER_LITERAL_FLOAT96_X87*/
|
1092
|
+
/*#define Z_COMPILER_LITERAL_FLOAT128_X87*/
|
1093
|
+
|
1094
|
+
/* MARK: - Built-in functions: Atomic operations */
|
1095
|
+
|
1096
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
|
1097
|
+
|
1098
|
+
# if __has_builtin(__sync_add_and_fetch)
|
1099
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1100
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1101
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1102
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1103
|
+
# endif
|
1104
|
+
|
1105
|
+
# if __has_builtin(__sync_and_and_fetch)
|
1106
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1107
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1108
|
+
# endif
|
1109
|
+
|
1110
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
1111
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1112
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1113
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1114
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1115
|
+
# endif
|
1116
|
+
|
1117
|
+
# if __has_builtin(__sync_fetch_and_add)
|
1118
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1119
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1120
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1121
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1122
|
+
# endif
|
1123
|
+
|
1124
|
+
# if __has_builtin(__sync_fetch_and_and)
|
1125
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1126
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1127
|
+
# endif
|
1128
|
+
|
1129
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
1130
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1131
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1132
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1133
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1134
|
+
# endif
|
1135
|
+
|
1136
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
1137
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1138
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1139
|
+
# endif
|
1140
|
+
|
1141
|
+
/*#define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_NOT*/
|
1142
|
+
/*#define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_NOT*/
|
1143
|
+
|
1144
|
+
# if __has_builtin(__sync_fetch_and_or)
|
1145
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1146
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1147
|
+
# endif
|
1148
|
+
|
1149
|
+
/*#define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_SET*/
|
1150
|
+
/*#define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_SET*/
|
1151
|
+
|
1152
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
1153
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1154
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1155
|
+
# endif
|
1156
|
+
|
1157
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1158
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1159
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1160
|
+
# endif
|
1161
|
+
|
1162
|
+
/*#define Z_COMPILER_FUNCTION_UINT8_ATOMIC_NOT_THEN_GET*/
|
1163
|
+
/*#define Z_COMPILER_FUNCTION_SINT8_ATOMIC_NOT_THEN_GET*/
|
1164
|
+
|
1165
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1166
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1167
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1168
|
+
# endif
|
1169
|
+
|
1170
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
1171
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1172
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1173
|
+
# endif
|
1174
|
+
|
1175
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1176
|
+
# define Z_COMPILER_FUNCTION_UINT8_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1177
|
+
# define Z_COMPILER_FUNCTION_SINT8_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1178
|
+
# endif
|
1179
|
+
|
1180
|
+
#endif
|
1181
|
+
|
1182
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
|
1183
|
+
|
1184
|
+
# if __has_builtin(__sync_add_and_fetch)
|
1185
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1186
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1187
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1188
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1189
|
+
# endif
|
1190
|
+
|
1191
|
+
# if __has_builtin(__sync_and_and_fetch)
|
1192
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1193
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1194
|
+
# endif
|
1195
|
+
|
1196
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
1197
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1198
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1199
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1200
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1201
|
+
# endif
|
1202
|
+
|
1203
|
+
# if __has_builtin(__sync_fetch_and_add)
|
1204
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1205
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1206
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1207
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1208
|
+
# endif
|
1209
|
+
|
1210
|
+
# if __has_builtin(__sync_fetch_and_and)
|
1211
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1212
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1213
|
+
# endif
|
1214
|
+
|
1215
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
1216
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1217
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1218
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1219
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1220
|
+
# endif
|
1221
|
+
|
1222
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
1223
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1224
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1225
|
+
# endif
|
1226
|
+
|
1227
|
+
/*#define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_NOT*/
|
1228
|
+
/*#define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_NOT*/
|
1229
|
+
|
1230
|
+
# if __has_builtin(__sync_fetch_and_or)
|
1231
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1232
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1233
|
+
# endif
|
1234
|
+
|
1235
|
+
/*#define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_SET*/
|
1236
|
+
/*#define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_SET*/
|
1237
|
+
|
1238
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
1239
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1240
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1241
|
+
# endif
|
1242
|
+
|
1243
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1244
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1245
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1246
|
+
# endif
|
1247
|
+
|
1248
|
+
/*#define Z_COMPILER_FUNCTION_UINT16_ATOMIC_NOT_THEN_GET*/
|
1249
|
+
/*#define Z_COMPILER_FUNCTION_SINT16_ATOMIC_NOT_THEN_GET*/
|
1250
|
+
|
1251
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1252
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1253
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1254
|
+
# endif
|
1255
|
+
|
1256
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
1257
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1258
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1259
|
+
# endif
|
1260
|
+
|
1261
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1262
|
+
# define Z_COMPILER_FUNCTION_UINT16_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1263
|
+
# define Z_COMPILER_FUNCTION_SINT16_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1264
|
+
# endif
|
1265
|
+
|
1266
|
+
#endif
|
1267
|
+
|
1268
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
1269
|
+
|
1270
|
+
# if __has_builtin(__sync_add_and_fetch)
|
1271
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1272
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1273
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1274
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1275
|
+
# endif
|
1276
|
+
|
1277
|
+
# if __has_builtin(__sync_and_and_fetch)
|
1278
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1279
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1280
|
+
# endif
|
1281
|
+
|
1282
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
1283
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1284
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1285
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1286
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1287
|
+
# endif
|
1288
|
+
|
1289
|
+
# if __has_builtin(__sync_fetch_and_add)
|
1290
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1291
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1292
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1293
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1294
|
+
# endif
|
1295
|
+
|
1296
|
+
# if __has_builtin(__sync_fetch_and_and)
|
1297
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1298
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1299
|
+
# endif
|
1300
|
+
|
1301
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
1302
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1303
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1304
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1305
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1306
|
+
# endif
|
1307
|
+
|
1308
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
1309
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1310
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1311
|
+
# endif
|
1312
|
+
|
1313
|
+
/*#define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_NOT*/
|
1314
|
+
/*#define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_NOT*/
|
1315
|
+
|
1316
|
+
# if __has_builtin(__sync_fetch_and_or)
|
1317
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1318
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1319
|
+
# endif
|
1320
|
+
|
1321
|
+
/*#define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_SET*/
|
1322
|
+
/*#define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_SET*/
|
1323
|
+
|
1324
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
1325
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1326
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1327
|
+
# endif
|
1328
|
+
|
1329
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1330
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1331
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1332
|
+
# endif
|
1333
|
+
|
1334
|
+
/*#define Z_COMPILER_FUNCTION_UINT32_ATOMIC_NOT_THEN_GET*/
|
1335
|
+
/*#define Z_COMPILER_FUNCTION_SINT32_ATOMIC_NOT_THEN_GET*/
|
1336
|
+
|
1337
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1338
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1339
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1340
|
+
# endif
|
1341
|
+
|
1342
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
1343
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1344
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1345
|
+
# endif
|
1346
|
+
|
1347
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1348
|
+
# define Z_COMPILER_FUNCTION_UINT32_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1349
|
+
# define Z_COMPILER_FUNCTION_SINT32_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1350
|
+
# endif
|
1351
|
+
|
1352
|
+
#endif
|
1353
|
+
|
1354
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
|
1355
|
+
|
1356
|
+
# if __has_builtin(__sync_add_and_fetch)
|
1357
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1358
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1359
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1360
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1361
|
+
# endif
|
1362
|
+
|
1363
|
+
# if __has_builtin(__sync_and_and_fetch)
|
1364
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1365
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1366
|
+
# endif
|
1367
|
+
|
1368
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
1369
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1370
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1371
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1372
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1373
|
+
# endif
|
1374
|
+
|
1375
|
+
# if __has_builtin(__sync_fetch_and_add)
|
1376
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1377
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1378
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1379
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1380
|
+
# endif
|
1381
|
+
|
1382
|
+
# if __has_builtin(__sync_fetch_and_and)
|
1383
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1384
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1385
|
+
# endif
|
1386
|
+
|
1387
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
1388
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1389
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1390
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1391
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1392
|
+
# endif
|
1393
|
+
|
1394
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
1395
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1396
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1397
|
+
# endif
|
1398
|
+
|
1399
|
+
/*#define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_NOT*/
|
1400
|
+
/*#define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_NOT*/
|
1401
|
+
|
1402
|
+
# if __has_builtin(__sync_fetch_and_or)
|
1403
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1404
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1405
|
+
# endif
|
1406
|
+
|
1407
|
+
/*#define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_SET*/
|
1408
|
+
/*#define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_SET*/
|
1409
|
+
|
1410
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
1411
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1412
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1413
|
+
# endif
|
1414
|
+
|
1415
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1416
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1417
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1418
|
+
# endif
|
1419
|
+
|
1420
|
+
/*#define Z_COMPILER_FUNCTION_UINT64_ATOMIC_NOT_THEN_GET*/
|
1421
|
+
/*#define Z_COMPILER_FUNCTION_SINT64_ATOMIC_NOT_THEN_GET*/
|
1422
|
+
|
1423
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1424
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1425
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1426
|
+
# endif
|
1427
|
+
|
1428
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
1429
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1430
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1431
|
+
# endif
|
1432
|
+
|
1433
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1434
|
+
# define Z_COMPILER_FUNCTION_UINT64_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1435
|
+
# define Z_COMPILER_FUNCTION_SINT64_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1436
|
+
# endif
|
1437
|
+
|
1438
|
+
#endif
|
1439
|
+
|
1440
|
+
#if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
1441
|
+
|
1442
|
+
# if __has_builtin(__sync_add_and_fetch)
|
1443
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1444
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_ADD_THEN_GET __sync_add_and_fetch
|
1445
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1446
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_INCREMENT_THEN_GET(pointer) __sync_add_and_fetch(pointer, 1)
|
1447
|
+
# endif
|
1448
|
+
|
1449
|
+
# if __has_builtin(__sync_and_and_fetch)
|
1450
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1451
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_AND_THEN_GET __sync_and_and_fetch
|
1452
|
+
# endif
|
1453
|
+
|
1454
|
+
# if __has_builtin(__sync_sub_and_fetch)
|
1455
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1456
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_SUBTRACT_THEN_GET __sync_sub_and_fetch
|
1457
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1458
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_DECREMENT_THEN_GET(pointer) __sync_sub_and_fetch(pointer, 1)
|
1459
|
+
# endif
|
1460
|
+
|
1461
|
+
# if __has_builtin(__sync_fetch_and_add)
|
1462
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1463
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_ADD __sync_fetch_and_add
|
1464
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1465
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_INCREMENT(pointer) __sync_fetch_and_add(pointer, 1)
|
1466
|
+
# endif
|
1467
|
+
|
1468
|
+
# if __has_builtin(__sync_fetch_and_and)
|
1469
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1470
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_AND __sync_fetch_and_and
|
1471
|
+
# endif
|
1472
|
+
|
1473
|
+
# if __has_builtin(__sync_fetch_and_sub)
|
1474
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1475
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_SUBTRACT __sync_fetch_and_sub
|
1476
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1477
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_DECREMENT(pointer) __sync_fetch_and_sub(pointer, 1)
|
1478
|
+
# endif
|
1479
|
+
|
1480
|
+
# if __has_builtin(__sync_fetch_and_nand)
|
1481
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1482
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_NAND __sync_fetch_and_nand
|
1483
|
+
# endif
|
1484
|
+
|
1485
|
+
/*#define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_NOT*/
|
1486
|
+
/*#define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_NOT*/
|
1487
|
+
|
1488
|
+
# if __has_builtin(__sync_fetch_and_or)
|
1489
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1490
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_OR __sync_fetch_and_or
|
1491
|
+
# endif
|
1492
|
+
|
1493
|
+
/*#define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_SET*/
|
1494
|
+
/*#define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_SET*/
|
1495
|
+
|
1496
|
+
# if __has_builtin(__sync_fetch_and_xor)
|
1497
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1498
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_THEN_XOR __sync_fetch_and_xor
|
1499
|
+
# endif
|
1500
|
+
|
1501
|
+
# if __has_builtin(__sync_nand_and_fetch)
|
1502
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1503
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_NAND_THEN_GET __sync_nand_and_fetch
|
1504
|
+
# endif
|
1505
|
+
|
1506
|
+
/*#define Z_COMPILER_FUNCTION_UINT128_ATOMIC_NOT_THEN_GET*/
|
1507
|
+
/*#define Z_COMPILER_FUNCTION_SINT128_ATOMIC_NOT_THEN_GET*/
|
1508
|
+
|
1509
|
+
# if __has_builtin(__sync_or_and_fetch)
|
1510
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1511
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_OR_THEN_GET __sync_or_and_fetch
|
1512
|
+
# endif
|
1513
|
+
|
1514
|
+
# if __has_builtin(__sync_bool_compare_and_swap)
|
1515
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1516
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_SET_IF_EQUAL __sync_bool_compare_and_swap
|
1517
|
+
# endif
|
1518
|
+
|
1519
|
+
# if __has_builtin(__sync_xor_and_fetch)
|
1520
|
+
# define Z_COMPILER_FUNCTION_UINT128_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1521
|
+
# define Z_COMPILER_FUNCTION_SINT128_ATOMIC_XOR_THEN_GET __sync_xor_and_fetch
|
1522
|
+
# endif
|
1523
|
+
|
1524
|
+
#endif
|
1525
|
+
|
1526
|
+
/* MARK: - Built-in traits */
|
1527
|
+
|
1528
|
+
#if __has_extension(has_virtual_destructor)
|
1529
|
+
# define Z_COMPILER_TRAIT_TYPE_HAS_VIRTUAL_DESTRUCTOR __has_virtual_destructor
|
1530
|
+
#endif
|
1531
|
+
|
1532
|
+
#if __has_extension(is_abstract)
|
1533
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_ABSTRACT __is_abstract
|
1534
|
+
#endif
|
1535
|
+
|
1536
|
+
#if __has_extension(is_aggregate)
|
1537
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_AGGREGATE __is_aggregate
|
1538
|
+
#endif
|
1539
|
+
|
1540
|
+
#if __has_extension(is_assignable)
|
1541
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_ASSIGNABLE __is_assignable
|
1542
|
+
#endif
|
1543
|
+
|
1544
|
+
#if __has_extension(is_base_of)
|
1545
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_BASE __is_base_of
|
1546
|
+
#endif
|
1547
|
+
|
1548
|
+
#if __has_extension(is_class)
|
1549
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_CLASS __is_class
|
1550
|
+
#endif
|
1551
|
+
|
1552
|
+
#if __has_extension(is_constructible)
|
1553
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_CONSTRUCTIBLE __is_constructible
|
1554
|
+
#endif
|
1555
|
+
|
1556
|
+
#if __has_extension(is_convertible_to)
|
1557
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_CONVERTIBLE __is_convertible_to
|
1558
|
+
#endif
|
1559
|
+
|
1560
|
+
#if __has_extension(is_empty)
|
1561
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_EMPTY __is_empty
|
1562
|
+
#endif
|
1563
|
+
|
1564
|
+
#if __has_extension(is_enum)
|
1565
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_ENUMERATION __is_enum
|
1566
|
+
#endif
|
1567
|
+
|
1568
|
+
#if __has_extension(is_final)
|
1569
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_FINAL __is_final
|
1570
|
+
#endif
|
1571
|
+
|
1572
|
+
#if __has_extension(is_interface_class)
|
1573
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_INTERFACE_CLASS __is_interface_class
|
1574
|
+
#endif
|
1575
|
+
|
1576
|
+
#if __has_extension(is_literal_type)
|
1577
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_LITERAL __is_literal_type
|
1578
|
+
#elif __has_extension(is_literal)
|
1579
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_LITERAL __is_literal
|
1580
|
+
#endif
|
1581
|
+
|
1582
|
+
#if __has_extension(is_nothrow_assignable)
|
1583
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_ASSIGNABLE __is_nothrow_assignable
|
1584
|
+
#endif
|
1585
|
+
|
1586
|
+
#if __has_extension(is_nothrow_constructible)
|
1587
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_CONSTRUCTIBLE __is_nothrow_constructible
|
1588
|
+
#endif
|
1589
|
+
|
1590
|
+
#if __has_extension(has_nothrow_assign)
|
1591
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_COPY_ASSIGNABLE __has_nothrow_assign
|
1592
|
+
#endif
|
1593
|
+
|
1594
|
+
#if __has_extension(has_nothrow_copy)
|
1595
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_COPY_CONSTRUCTIBLE __has_nothrow_copy
|
1596
|
+
#endif
|
1597
|
+
|
1598
|
+
#if __has_extension(has_nothrow_constructor)
|
1599
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE __has_nothrow_constructor
|
1600
|
+
#endif
|
1601
|
+
|
1602
|
+
#if __has_extension(is_pod)
|
1603
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_POD __is_pod
|
1604
|
+
#endif
|
1605
|
+
|
1606
|
+
#if __has_extension(is_polymorphic)
|
1607
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_POLYMORPHIC __is_polymorphic
|
1608
|
+
#endif
|
1609
|
+
|
1610
|
+
#if __has_extension(is_standard_layout)
|
1611
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_STANDARD_LAYOUT __is_standard_layout
|
1612
|
+
#endif
|
1613
|
+
|
1614
|
+
#if __has_extension(is_trivial)
|
1615
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIAL __is_trivial
|
1616
|
+
#endif
|
1617
|
+
|
1618
|
+
#if __has_extension(is_trivially_assignable)
|
1619
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_ASSIGNABLE __is_trivially_assignable
|
1620
|
+
#endif
|
1621
|
+
|
1622
|
+
#if __has_extension(is_trivially_constructible)
|
1623
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_CONSTRUCTIBLE __is_trivially_constructible
|
1624
|
+
#endif
|
1625
|
+
|
1626
|
+
#if __has_extension(has_trivial_assign)
|
1627
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_COPY_ASSIGNABLE __has_trivial_assign
|
1628
|
+
#endif
|
1629
|
+
|
1630
|
+
#if __has_extension(has_trivial_copy)
|
1631
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE __has_trivial_copy
|
1632
|
+
#endif
|
1633
|
+
|
1634
|
+
#if __has_extension(is_trivially_copyable)
|
1635
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_COPYABLE __is_trivially_copyable
|
1636
|
+
#endif
|
1637
|
+
|
1638
|
+
#if __has_extension(has_trivial_constructor)
|
1639
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE __has_trivial_constructor
|
1640
|
+
#endif
|
1641
|
+
|
1642
|
+
#if __has_extension(has_trivial_destructor)
|
1643
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_DESTRUCTIBLE __has_trivial_destructor
|
1644
|
+
#endif
|
1645
|
+
|
1646
|
+
#if __has_extension(is_union)
|
1647
|
+
# define Z_COMPILER_TRAIT_TYPE_IS_UNION __is_union
|
1648
|
+
#endif
|
1649
|
+
|
1650
|
+
#if __has_extension(underlying_type)
|
1651
|
+
# define Z_COMPILER_TRAIT_TYPE_UNDERLYING_TYPE __underlying_type
|
1652
|
+
#endif
|
1653
|
+
|
1654
|
+
/*
|
1655
|
+
#if __has_extension()
|
1656
|
+
# define Z_COMPILER_TRAIT_TYPE
|
1657
|
+
#endif
|
1658
|
+
|
1659
|
+
__is_destructible
|
1660
|
+
__is_nothrow_destructible
|
1661
|
+
__reference_binds_to_temporary
|
1662
|
+
*/
|
1663
|
+
|
1664
|
+
#endif /* _Z_inspection_compiler_modules_Clang_H_ */
|