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.
Files changed (285) hide show
  1. checksums.yaml +7 -0
  2. data/lib/zemu/config.rb +312 -0
  3. data/lib/zemu/instance.rb +179 -0
  4. data/lib/zemu.rb +172 -0
  5. data/src/debug.c +118 -0
  6. data/src/debug.h +30 -0
  7. data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
  8. data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
  9. data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
  10. data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
  11. data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
  12. data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
  13. data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
  14. data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
  15. data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
  16. data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
  17. data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
  18. data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
  19. data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
  20. data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
  21. data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
  22. data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
  23. data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
  24. data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
  25. data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
  26. data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
  27. data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
  28. data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
  29. data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
  30. data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
  31. data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
  32. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
  33. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
  34. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
  35. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
  36. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
  37. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
  38. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
  39. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
  40. data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
  41. data/src/external/Z/API/Z/constants/base.h +35 -0
  42. data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
  43. data/src/external/Z/API/Z/constants/numbers.h +963 -0
  44. data/src/external/Z/API/Z/constants/version.h +15 -0
  45. data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
  46. data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
  47. data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
  48. data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
  49. data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
  50. data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
  51. data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
  52. data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
  53. data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
  54. data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
  55. data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
  56. data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
  57. data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
  58. data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
  59. data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
  60. data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
  61. data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
  62. data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
  63. data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
  64. data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
  65. data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
  66. data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
  67. data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
  68. data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
  69. data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
  70. data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
  71. data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
  72. data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
  73. data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
  74. data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
  75. data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
  76. data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
  77. data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
  78. data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
  79. data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
  80. data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
  81. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
  82. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
  83. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
  84. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
  85. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
  86. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
  87. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
  88. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
  89. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
  90. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
  91. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
  92. data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
  93. data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
  94. data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
  95. data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
  96. data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
  97. data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
  98. data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
  99. data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
  100. data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
  101. data/src/external/Z/API/Z/functions/base/all.h +16 -0
  102. data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
  103. data/src/external/Z/API/Z/functions/base/character.h +38 -0
  104. data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
  105. data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
  106. data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
  107. data/src/external/Z/API/Z/functions/base/value.h +1901 -0
  108. data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
  109. data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
  110. data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
  111. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
  112. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
  113. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
  114. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
  115. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
  116. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
  117. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
  118. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
  119. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
  120. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
  121. data/src/external/Z/API/Z/functions/time/date.h +29 -0
  122. data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
  123. data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
  124. data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
  125. data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
  126. data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
  127. data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
  128. data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
  129. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
  130. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
  131. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
  132. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
  133. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
  134. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
  135. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
  136. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
  137. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
  138. data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
  139. data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
  140. data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
  141. data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
  142. data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
  143. data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
  144. data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
  145. data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
  146. data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
  147. data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
  148. data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
  149. data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
  150. data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
  151. data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
  152. data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
  153. data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
  154. data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
  155. data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
  156. data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
  157. data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
  158. data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
  159. data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
  160. data/src/external/Z/API/Z/inspection/C++.h +78 -0
  161. data/src/external/Z/API/Z/inspection/C.h +79 -0
  162. data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
  163. data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
  164. data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
  165. data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
  166. data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
  167. data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
  168. data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
  169. data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
  170. data/src/external/Z/API/Z/inspection/CPU.h +209 -0
  171. data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
  172. data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
  173. data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
  174. data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
  175. data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
  176. data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
  177. data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
  178. data/src/external/Z/API/Z/inspection/OS.h +236 -0
  179. data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
  180. data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
  181. data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
  182. data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
  183. data/src/external/Z/API/Z/inspection/Z.h +19 -0
  184. data/src/external/Z/API/Z/inspection/build.h +22 -0
  185. data/src/external/Z/API/Z/inspection/character set.h +66 -0
  186. data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
  187. data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
  188. data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
  189. data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
  190. data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
  191. data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
  192. data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
  193. data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
  194. data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
  195. data/src/external/Z/API/Z/inspection/compiler.h +299 -0
  196. data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
  197. data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
  198. data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
  199. data/src/external/Z/API/Z/inspection/data model.h +362 -0
  200. data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
  201. data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
  202. data/src/external/Z/API/Z/inspection/language.h +163 -0
  203. data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
  204. data/src/external/Z/API/Z/inspection/platform.h +29 -0
  205. data/src/external/Z/API/Z/keys/C++.h +27 -0
  206. data/src/external/Z/API/Z/keys/C.h +29 -0
  207. data/src/external/Z/API/Z/keys/CPU.h +80 -0
  208. data/src/external/Z/API/Z/keys/OS.h +182 -0
  209. data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
  210. data/src/external/Z/API/Z/keys/chemistry.h +26 -0
  211. data/src/external/Z/API/Z/keys/compiler.h +178 -0
  212. data/src/external/Z/API/Z/keys/data model.h +32 -0
  213. data/src/external/Z/API/Z/keys/endianness.h +24 -0
  214. data/src/external/Z/API/Z/keys/language.h +21 -0
  215. data/src/external/Z/API/Z/keys/layout.h +20 -0
  216. data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
  217. data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
  218. data/src/external/Z/API/Z/keys/order.h +18 -0
  219. data/src/external/Z/API/Z/keys/platform.h +87 -0
  220. data/src/external/Z/API/Z/keys/program.h +39 -0
  221. data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
  222. data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
  223. data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
  224. data/src/external/Z/API/Z/keys/status.h +69 -0
  225. data/src/external/Z/API/Z/keys/text.h +27 -0
  226. data/src/external/Z/API/Z/keys/value.h +88 -0
  227. data/src/external/Z/API/Z/macros/arguments.h +25 -0
  228. data/src/external/Z/API/Z/macros/casting.h +22 -0
  229. data/src/external/Z/API/Z/macros/character.h +159 -0
  230. data/src/external/Z/API/Z/macros/date.h +14 -0
  231. data/src/external/Z/API/Z/macros/key.h +20 -0
  232. data/src/external/Z/API/Z/macros/language.h +126 -0
  233. data/src/external/Z/API/Z/macros/language.hpp +81 -0
  234. data/src/external/Z/API/Z/macros/members.h +86 -0
  235. data/src/external/Z/API/Z/macros/pasting.h +308 -0
  236. data/src/external/Z/API/Z/macros/pointer.h +33 -0
  237. data/src/external/Z/API/Z/macros/repetition.h +283 -0
  238. data/src/external/Z/API/Z/macros/structure.h +104 -0
  239. data/src/external/Z/API/Z/macros/templating.h +407 -0
  240. data/src/external/Z/API/Z/macros/tokens.h +14 -0
  241. data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
  242. data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
  243. data/src/external/Z/API/Z/macros/value.h +489 -0
  244. data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
  245. data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
  246. data/src/external/Z/API/Z/macros/variadic.h +46 -0
  247. data/src/external/Z/API/Z/macros/version.h +17 -0
  248. data/src/external/Z/API/Z/network/3/IP.h +36 -0
  249. data/src/external/Z/API/Z/network/4/TCP.h +24 -0
  250. data/src/external/Z/API/Z/network/4/UDP.h +26 -0
  251. data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
  252. data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
  253. data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
  254. data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
  255. data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
  256. data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
  257. data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
  258. data/src/external/Z/API/Z/traits/base.hpp +19 -0
  259. data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
  260. data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
  261. data/src/external/Z/API/Z/types/arguments.h +19 -0
  262. data/src/external/Z/API/Z/types/base.h +1655 -0
  263. data/src/external/Z/API/Z/types/base.hpp +169 -0
  264. data/src/external/Z/API/Z/types/buffering.h +27 -0
  265. data/src/external/Z/API/Z/types/mathematics.h +135 -0
  266. data/src/external/Z/API/Z/types/time.h +23 -0
  267. data/src/external/Z/COPYING.LESSER +165 -0
  268. data/src/external/Z/development/Qt Creator/Z.pro +253 -0
  269. data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
  270. data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
  271. data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
  272. data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
  273. data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
  274. data/src/external/z80/README.md +229 -0
  275. data/src/external/z80/building/premake4.lua +33 -0
  276. data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
  277. data/src/external/z80/sources/Z80.c +1660 -0
  278. data/src/interrupt.c +6 -0
  279. data/src/interrupt.h +3 -0
  280. data/src/io.c.erb +115 -0
  281. data/src/io.h.erb +18 -0
  282. data/src/main.c +69 -0
  283. data/src/memory.c.erb +43 -0
  284. data/src/memory.h.erb +9 -0
  285. 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_ */