zemu 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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_ */