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,1081 @@
1
+ /* Z Kit - functions/mathematics/geometry/euclidean/ZAABR.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3. */
7
+
8
+ #ifndef _Z_functions_mathematics_geometry_euclidean_ZAABR_H_
9
+ #define _Z_functions_mathematics_geometry_euclidean_ZAABR_H_
10
+
11
+ #include <Z/functions/mathematics/geometry/euclidean/Z2DLine.h>
12
+
13
+
14
+ /* MARK: - Common implementation */
15
+
16
+
17
+ #define Z_IMPLEMENTATION_COMMON(Type, type) \
18
+ \
19
+ static Z_INLINE \
20
+ ZAABR##Type z_aabr_##type##_align_in_bottom_center(ZAABR##Type object, Z2D##Type size) \
21
+ { \
22
+ object.b.x = (object.a.x += (object.b.x - object.a.x - size.x) / (z##type)2) + size.x; \
23
+ object.b.y = object.a.y + size.y; \
24
+ return object; \
25
+ } \
26
+ \
27
+ \
28
+ static Z_INLINE \
29
+ ZAABR##Type z_aabr_##type##_align_in_bottom_left(ZAABR##Type object, Z2D##Type size) \
30
+ { \
31
+ object.b.x = object.a.x + size.x; \
32
+ object.b.y = object.a.y + size.y; \
33
+ return object; \
34
+ } \
35
+ \
36
+ \
37
+ static Z_INLINE \
38
+ ZAABR##Type z_aabr_##type##_align_in_bottom_right(ZAABR##Type object, Z2D##Type size) \
39
+ { \
40
+ object.a.x = object.b.x - size.x; \
41
+ object.b.y = object.b.y + size.x; \
42
+ return object; \
43
+ } \
44
+ \
45
+ \
46
+ static Z_INLINE \
47
+ ZAABR##Type z_aabr_##type##_align_in_center(ZAABR##Type object, Z2D##Type size) \
48
+ { \
49
+ object.b.x = (object.a.x += (object.b.x - object.a.x - size.x) / (z##type)2) + size.x; \
50
+ object.b.y = (object.a.y += (object.b.y - object.a.y - size.y) / (z##type)2) + size.y; \
51
+ return object; \
52
+ } \
53
+ \
54
+ \
55
+ static Z_INLINE \
56
+ ZAABR##Type z_aabr_##type##_align_in_center_left(ZAABR##Type object, Z2D##Type size) \
57
+ { \
58
+ object.b.x = object.a.x + size.x; \
59
+ object.b.y = (object.a.y += (object.b.y - object.a.y - size.y) / (z##type)2) + size.y; \
60
+ return object; \
61
+ } \
62
+ \
63
+ \
64
+ static Z_INLINE \
65
+ ZAABR##Type z_aabr_##type##_align_in_center_right(ZAABR##Type object, Z2D##Type size) \
66
+ { \
67
+ object.a.x = object.b.x - size.x; \
68
+ object.b.y = (object.a.y += (object.b.y - object.a.y - size.y) / (z##type)2) + size.y; \
69
+ return object; \
70
+ } \
71
+ \
72
+ \
73
+ static Z_INLINE \
74
+ ZAABR##Type z_aabr_##type##_align_in_top_center(ZAABR##Type object, Z2D##Type size) \
75
+ { \
76
+ object.a.y = object.b.y - size.y; \
77
+ object.b.x = (object.a.x += (object.b.x - object.a.x - size.x) / (z##type)2) + size.x; \
78
+ return object; \
79
+ } \
80
+ \
81
+ \
82
+ static Z_INLINE \
83
+ ZAABR##Type z_aabr_##type##_align_in_top_left(ZAABR##Type object, Z2D##Type size) \
84
+ { \
85
+ object.a.y = object.b.y - size.y; \
86
+ object.b.x = object.a.x + size.x; \
87
+ return object; \
88
+ } \
89
+ \
90
+ \
91
+ static Z_INLINE \
92
+ ZAABR##Type z_aabr_##type##_align_in_top_right(ZAABR##Type object, Z2D##Type size) \
93
+ { \
94
+ object.a.x = object.b.x - size.x; \
95
+ object.a.y = object.b.y - size.y; \
96
+ return object; \
97
+ } \
98
+ \
99
+ \
100
+ static Z_INLINE \
101
+ z##type z_aabr_##type##_area(ZAABR##Type object) \
102
+ {return z_2d_##type##_inner_product(z_2d_##type##_subtract(object.b, object.a));} \
103
+ \
104
+ \
105
+ static Z_INLINE \
106
+ Z2D##Type z_aabr_##type##_bottom_center(ZAABR##Type object) \
107
+ {return z_2d_##type((object.a.x + object.b.x) / (z##type)2, object.a.y);} \
108
+ \
109
+ \
110
+ static Z_INLINE \
111
+ ZAABR##Type z_aabr_##type##_bottom_half(ZAABR##Type object) \
112
+ { \
113
+ object.b.y = (object.a.y + object.b.y) / (z##type)2; \
114
+ return object; \
115
+ } \
116
+ \
117
+ \
118
+ static Z_INLINE \
119
+ Z2D##Type z_aabr_##type##_bottom_left(ZAABR##Type object) \
120
+ {return object.a;} \
121
+ \
122
+ \
123
+ static Z_INLINE \
124
+ ZAABR##Type z_aabr_##type##_bottom_left_quarter(ZAABR##Type object) \
125
+ { \
126
+ object.b.x = (object.a.x + object.b.x) / (z##type)2; \
127
+ object.b.y = (object.a.y + object.b.y) / (z##type)2; \
128
+ return object; \
129
+ } \
130
+ \
131
+ \
132
+ static Z_INLINE \
133
+ Z2D##Type z_aabr_##type##_bottom_right(ZAABR##Type object) \
134
+ {return z_2d_##type(object.b.x, object.a.y);} \
135
+ \
136
+ \
137
+ static Z_INLINE \
138
+ ZAABR##Type z_aabr_##type##_bottom_right_quarter(ZAABR##Type object) \
139
+ { \
140
+ object.a.x = (object.a.x + object.b.x) / (z##type)2; \
141
+ object.b.y = (object.a.y + object.b.y) / (z##type)2; \
142
+ return object; \
143
+ } \
144
+ \
145
+ \
146
+ static Z_INLINE \
147
+ Z2D##Type z_aabr_##type##_center_left(ZAABR##Type object) \
148
+ {return z_2d_##type(object.a.x, (object.a.y + object.b.y) / (z##type)2);} \
149
+ \
150
+ \
151
+ static Z_INLINE \
152
+ Z2D##Type z_aabr_##type##_center_right(ZAABR##Type object) \
153
+ {return z_2d_##type(object.b.x, (object.a.y + object.b.y) / (z##type)2);} \
154
+ \
155
+ \
156
+ static Z_INLINE \
157
+ zboolean z_aabr_##type##_contains(ZAABR##Type object, ZAABR##Type other) \
158
+ { \
159
+ return other.a.x != other.b.x && other.a.y != other.b.y && \
160
+ other.a.x >= object.a.x && other.a.y >= object.a.y && \
161
+ other.b.x <= object.b.x && other.b.y <= object.b.y; \
162
+ } \
163
+ \
164
+ \
165
+ static Z_INLINE \
166
+ zboolean z_aabr_##type##_contains_point(ZAABR##Type object, Z2D##Type point) \
167
+ { \
168
+ return point.x >= object.a.x && point.y >= object.a.y && \
169
+ point.x < object.b.x && point.y < object.b.y; \
170
+ } \
171
+ \
172
+ \
173
+ static Z_INLINE \
174
+ zboolean z_aabr_##type##_contains_rectangle(ZAABR##Type object, ZRectangle##Type rectangle) \
175
+ { \
176
+ return rectangle.size.x != (z##type)0 && \
177
+ rectangle.size.y != (z##type)0 && \
178
+ rectangle.point.x >= object.a.x && \
179
+ rectangle.point.y >= object.a.y && \
180
+ rectangle.point.x + rectangle.size.x <= object.b.x && \
181
+ rectangle.point.y + rectangle.size.y <= object.b.y; \
182
+ } \
183
+ \
184
+ \
185
+ static Z_INLINE \
186
+ Z2D##Type z_aabr_##type##_size(ZAABR##Type object) \
187
+ {return z_2d_##type##_subtract(object.b, object.a);} \
188
+ \
189
+ \
190
+ static Z_INLINE \
191
+ ZAABR##Type z_aabr_##type##_fit_in_bottom_center(ZAABR##Type object, Z2D##Type size) \
192
+ { \
193
+ Z2D##Type old_size = z_aabr_##type##_size(object); \
194
+ \
195
+ object.b.y = object.a.y + (size = z_2d_##type##_fit(size, old_size)).y; \
196
+ object.b.x = (object.a.x += (old_size.x - size.x) / (z##type)2) + size.x; \
197
+ return object; \
198
+ } \
199
+ \
200
+ \
201
+ static Z_INLINE \
202
+ ZAABR##Type z_aabr_##type##_fit_in_bottom_left(ZAABR##Type object, Z2D##Type size) \
203
+ { \
204
+ object.b = z_2d_##type##_add \
205
+ (object.a, z_2d_##type##_fit(size, z_aabr_##type##_size(object))); \
206
+ \
207
+ return object; \
208
+ } \
209
+ \
210
+ \
211
+ static Z_INLINE \
212
+ ZAABR##Type z_aabr_##type##_fit_in_bottom_right(ZAABR##Type object, Z2D##Type size) \
213
+ { \
214
+ size = z_2d_##type##_fit(size, z_aabr_##type##_size(object)); \
215
+ return z_aabr_##type(object.b.x - size.x, object.a.y, object.b.x, object.a.y + size.y); \
216
+ } \
217
+ \
218
+ \
219
+ static Z_INLINE \
220
+ ZAABR##Type z_aabr_##type##_fit_in_center(ZAABR##Type object, Z2D##Type size) \
221
+ { \
222
+ Z2D##Type old_size = z_aabr_##type##_size(object); \
223
+ \
224
+ size = z_2d_##type##_fit(size, old_size); \
225
+ object.b.x = (object.a.x += (old_size.x - size.x) / (z##type)2) + size.x; \
226
+ object.b.y = (object.a.y += (old_size.y - size.y) / (z##type)2) + size.y; \
227
+ return object; \
228
+ } \
229
+ \
230
+ \
231
+ static Z_INLINE \
232
+ ZAABR##Type z_aabr_##type##_fit_in_center_left(ZAABR##Type object, Z2D##Type size) \
233
+ { \
234
+ Z2D##Type old_size = z_aabr_##type##_size(object); \
235
+ \
236
+ object.b.x = object.a.x + (size = z_2d_##type##_fit(size, old_size)).x; \
237
+ object.b.y = (object.a.y += (old_size.y - size.y) / (z##type)2) + size.y; \
238
+ return object; \
239
+ } \
240
+ \
241
+ \
242
+ static Z_INLINE \
243
+ ZAABR##Type z_aabr_##type##_fit_in_center_right(ZAABR##Type object, Z2D##Type size) \
244
+ { \
245
+ Z2D##Type old_size = z_aabr_##type##_size(object); \
246
+ \
247
+ object.a.x = object.b.x - (size = z_2d_##type##_fit(size, old_size)).x; \
248
+ object.b.y = (object.a.y += (old_size.y - size.y) / (z##type)2) + size.y; \
249
+ return object; \
250
+ } \
251
+ \
252
+ \
253
+ static Z_INLINE \
254
+ ZAABR##Type z_aabr_##type##_fit_in_top_center(ZAABR##Type object, Z2D##Type size) \
255
+ { \
256
+ Z2D##Type old_size = z_aabr_##type##_size(object); \
257
+ \
258
+ object.a.y = object.b.y - (size = z_2d_##type##_fit(size, old_size)).y; \
259
+ object.b.x = (object.a.x += (old_size.x - size.x) / (z##type)2) + size.x; \
260
+ return object; \
261
+ } \
262
+ \
263
+ \
264
+ static Z_INLINE \
265
+ ZAABR##Type z_aabr_##type##_fit_in_top_left(ZAABR##Type object, Z2D##Type size) \
266
+ { \
267
+ size = z_2d_##type##_fit(size, z_aabr_##type##_size(object)); \
268
+ \
269
+ object.a.y = object.b.y - size.y; \
270
+ object.b.x = object.a.x + size.x; \
271
+ return object; \
272
+ } \
273
+ \
274
+ \
275
+ static Z_INLINE \
276
+ ZAABR##Type z_aabr_##type##_fit_in_top_right(ZAABR##Type object, Z2D##Type size) \
277
+ { \
278
+ object.a = z_2d_##type##_subtract \
279
+ (object.b, z_2d_##type##_fit(size, z_aabr_##type##_size(object))); \
280
+ \
281
+ return object; \
282
+ } \
283
+ \
284
+ \
285
+ static Z_INLINE \
286
+ ZAABR##Type z_aabr_##type##_from_vertices(Z2D##Type a, Z2D##Type b) \
287
+ { \
288
+ ZAABR##Type result; \
289
+ \
290
+ result.a = z_2d_##type##_minimum(a, b); \
291
+ result.b = z_2d_##type##_maximum(a, b); \
292
+ return result; \
293
+ } \
294
+ \
295
+ \
296
+ static Z_INLINE \
297
+ ZAABR##Type z_aabr_##type##_grow_from_bottom_center(ZAABR##Type object, Z2D##Type delta) \
298
+ { \
299
+ z##type size_x = object.b.x - object.a.x; \
300
+ \
301
+ object.b.x = (object.a.x -= delta.x / (z##type)2) + size_x + delta.x; \
302
+ object.b.y += delta.y; \
303
+ return object; \
304
+ } \
305
+ \
306
+ \
307
+ static Z_INLINE \
308
+ ZAABR##Type z_aabr_##type##_grow_from_bottom_left(ZAABR##Type object, Z2D##Type delta) \
309
+ { \
310
+ object.b.x += delta.x; \
311
+ object.b.y += delta.y; \
312
+ return object; \
313
+ } \
314
+ \
315
+ \
316
+ static Z_INLINE \
317
+ ZAABR##Type z_aabr_##type##_grow_from_bottom_right(ZAABR##Type object, Z2D##Type delta) \
318
+ { \
319
+ object.a.x -= delta.x; \
320
+ object.b.y += delta.y; \
321
+ return object; \
322
+ } \
323
+ \
324
+ \
325
+ static Z_INLINE \
326
+ ZAABR##Type z_aabr_##type##_grow_from_center(ZAABR##Type object, Z2D##Type delta) \
327
+ { \
328
+ z##type size_x = object.b.x - object.a.x; \
329
+ z##type size_y = object.b.y - object.a.y; \
330
+ \
331
+ object.b.x = (object.a.x -= delta.x / (z##type)2) + size_x + delta.x; \
332
+ object.b.y = (object.a.y -= delta.y / (z##type)2) + size_y + delta.y; \
333
+ return object; \
334
+ } \
335
+ \
336
+ \
337
+ static Z_INLINE \
338
+ ZAABR##Type z_aabr_##type##_grow_from_center_left(ZAABR##Type object, Z2D##Type delta) \
339
+ { \
340
+ z##type size_y = object.b.y - object.a.y; \
341
+ \
342
+ object.b.x += delta.x; \
343
+ object.b.y = (object.a.y -= delta.y / (z##type)2) + size_y + delta.y; \
344
+ return object; \
345
+ } \
346
+ \
347
+ \
348
+ static Z_INLINE \
349
+ ZAABR##Type z_aabr_##type##_grow_from_center_right(ZAABR##Type object, Z2D##Type delta) \
350
+ { \
351
+ z##type size_y = object.b.y - object.a.y; \
352
+ \
353
+ object.a.x -= delta.x; \
354
+ object.b.y = (object.a.y -= delta.y / (z##type)2) + size_y + delta.y; \
355
+ return object; \
356
+ } \
357
+ \
358
+ \
359
+ static Z_INLINE \
360
+ ZAABR##Type z_aabr_##type##_grow_from_top_center(ZAABR##Type object, Z2D##Type delta) \
361
+ { \
362
+ z##type size_x = object.b.x - object.a.x; \
363
+ \
364
+ object.b.x = (object.a.x -= delta.x / (z##type)2) + size_x + delta.x; \
365
+ object.a.y -= delta.y; \
366
+ return object; \
367
+ } \
368
+ \
369
+ \
370
+ static Z_INLINE \
371
+ ZAABR##Type z_aabr_##type##_grow_from_top_left(ZAABR##Type object, Z2D##Type delta) \
372
+ { \
373
+ object.b.x += delta.x; \
374
+ object.a.y -= delta.y; \
375
+ return object; \
376
+ } \
377
+ \
378
+ \
379
+ static Z_INLINE \
380
+ ZAABR##Type z_aabr_##type##_grow_from_top_right(ZAABR##Type object, Z2D##Type delta) \
381
+ { \
382
+ object.a.x -= delta.x; \
383
+ object.a.y -= delta.y; \
384
+ return object; \
385
+ } \
386
+ \
387
+ \
388
+ static Z_INLINE \
389
+ ZAABR##Type z_aabr_##type##_grow_in_x_from_center(ZAABR##Type object, z##type delta) \
390
+ { \
391
+ z##type size_x = object.b.x - object.a.x; \
392
+ \
393
+ object.b.x = (object.a.x -= delta / (z##type)2) + size_x + delta; \
394
+ return object; \
395
+ } \
396
+ \
397
+ \
398
+ static Z_INLINE \
399
+ ZAABR##Type z_aabr_##type##_grow_in_x_from_left(ZAABR##Type object, z##type delta) \
400
+ { \
401
+ object.b.x += delta; \
402
+ return object; \
403
+ } \
404
+ \
405
+ \
406
+ static Z_INLINE \
407
+ ZAABR##Type z_aabr_##type##_grow_in_x_from_right(ZAABR##Type object, z##type delta) \
408
+ { \
409
+ object.a.x -= delta; \
410
+ return object; \
411
+ } \
412
+ \
413
+ \
414
+ static Z_INLINE \
415
+ ZAABR##Type z_aabr_##type##_grow_in_y_from_bottom(ZAABR##Type object, z##type delta) \
416
+ { \
417
+ object.b.y += delta; \
418
+ return object; \
419
+ } \
420
+ \
421
+ \
422
+ static Z_INLINE \
423
+ ZAABR##Type z_aabr_##type##_grow_in_y_from_center(ZAABR##Type object, z##type delta) \
424
+ { \
425
+ z##type size_y = object.b.y - object.a.y; \
426
+ \
427
+ object.b.y = (object.a.y -= delta / (z##type)2) + size_y + delta; \
428
+ return object; \
429
+ } \
430
+ \
431
+ \
432
+ static Z_INLINE \
433
+ ZAABR##Type z_aabr_##type##_grow_in_y_from_top(ZAABR##Type object, z##type delta) \
434
+ { \
435
+ object.a.y -= delta; \
436
+ return object; \
437
+ } \
438
+ \
439
+ \
440
+ static Z_INLINE \
441
+ zboolean z_aabr_##type##_intersect(ZAABR##Type a, ZAABR##Type b) \
442
+ { \
443
+ return a.a.x != a.b.x && a.a.y != a.b.y && b.a.x != b.b.x && b.a.y != b.b.y && \
444
+ b.b.x > a.a.x && b.b.y > a.a.y && b.a.x < a.b.x && b.a.y < a.b.y; \
445
+ } \
446
+ \
447
+ \
448
+ static Z_INLINE \
449
+ ZAABR##Type z_aabr_##type##_intersection(ZAABR##Type a, ZAABR##Type b) \
450
+ { \
451
+ z##type x1, x2, y1, y2; \
452
+ \
453
+ return (x1 = z_##type##_maximum(a.a.x, b.a.x)) < \
454
+ (x2 = z_##type##_minimum(a.b.x, b.b.x)) && \
455
+ (y1 = z_##type##_maximum(a.a.y, b.a.y)) < \
456
+ (y2 = z_##type##_minimum(a.b.y, b.b.y)) \
457
+ \
458
+ ? z_aabr_##type(x1, y1, x2, y2) \
459
+ : z_aabr_##type##_zero; \
460
+ } \
461
+ \
462
+ \
463
+ static Z_INLINE \
464
+ ZAABR##Type z_aabr_##type##_left_half(ZAABR##Type object) \
465
+ { \
466
+ object.b.x = (object.a.x + object.b.x) / (z##type)2; \
467
+ return object; \
468
+ } \
469
+ \
470
+ \
471
+ static Z_INLINE \
472
+ z##type z_aabr_##type##_maximum_x(ZAABR##Type object) \
473
+ {return object.b.x;} \
474
+ \
475
+ \
476
+ static Z_INLINE \
477
+ z##type z_aabr_##type##_maximum_y(ZAABR##Type object) \
478
+ {return object.b.y;} \
479
+ \
480
+ \
481
+ static Z_INLINE \
482
+ z##type z_aabr_##type##_middle_x(ZAABR##Type object) \
483
+ {return (object.a.x + object.b.x) / (z##type)2;} \
484
+ \
485
+ \
486
+ static Z_INLINE \
487
+ z##type z_aabr_##type##_middle_y(ZAABR##Type object) \
488
+ {return (object.a.y + object.b.y) / (z##type)2;} \
489
+ \
490
+ \
491
+ static Z_INLINE \
492
+ z##type z_aabr_##type##_minimum_x(ZAABR##Type object) \
493
+ {return object.a.x;} \
494
+ \
495
+ \
496
+ static Z_INLINE \
497
+ z##type z_aabr_##type##_minimum_y(ZAABR##Type object) \
498
+ {return object.a.y;} \
499
+ \
500
+ \
501
+ static Z_INLINE \
502
+ ZRectangle##Type z_aabr_##type##_rectangle(ZAABR##Type object) \
503
+ { \
504
+ return z_rectangle_##type \
505
+ (object.a.x, object.a.y, object.b.x - object.a.x, object.b.y - object.a.y); \
506
+ } \
507
+ \
508
+ \
509
+ static Z_INLINE \
510
+ ZAABR##Type z_aabr_##type##_right_half(ZAABR##Type object) \
511
+ { \
512
+ object.a.x = (object.a.x + object.b.x) / (z##type)2; \
513
+ return object; \
514
+ } \
515
+ \
516
+ \
517
+ static Z_INLINE \
518
+ ZAABR##Type z_aabr_##type##_shrink_from_bottom_center(ZAABR##Type object, Z2D##Type delta) \
519
+ { \
520
+ z##type size_x = object.b.x - object.a.x; \
521
+ \
522
+ object.b.x = (object.a.x += delta.x / (z##type)2) + size_x - delta.x; \
523
+ object.b.y -= delta.y; \
524
+ return object; \
525
+ } \
526
+ \
527
+ \
528
+ static Z_INLINE \
529
+ ZAABR##Type z_aabr_##type##_shrink_from_bottom_left(ZAABR##Type object, Z2D##Type delta) \
530
+ { \
531
+ object.b.x -= delta.x; \
532
+ object.b.y -= delta.y; \
533
+ return object; \
534
+ } \
535
+ \
536
+ \
537
+ static Z_INLINE \
538
+ ZAABR##Type z_aabr_##type##_shrink_from_bottom_right(ZAABR##Type object,Z2D##Type delta) \
539
+ { \
540
+ object.a.x += delta.x; \
541
+ object.b.y -= delta.y; \
542
+ return object; \
543
+ } \
544
+ \
545
+ \
546
+ static Z_INLINE \
547
+ ZAABR##Type z_aabr_##type##_shrink_from_center(ZAABR##Type object, Z2D##Type delta) \
548
+ { \
549
+ z##type size_x = object.b.x - object.a.x; \
550
+ z##type size_y = object.b.y - object.a.y; \
551
+ \
552
+ object.b.x = (object.a.x += delta.x / (z##type)2) + size_x - delta.x; \
553
+ object.b.y = (object.a.y += delta.y / (z##type)2) + size_y - delta.y; \
554
+ return object; \
555
+ } \
556
+ \
557
+ \
558
+ static Z_INLINE \
559
+ ZAABR##Type z_aabr_##type##_shrink_from_center_left(ZAABR##Type object, Z2D##Type delta) \
560
+ { \
561
+ z##type size_y = object.b.y - object.a.y; \
562
+ \
563
+ object.b.x -= delta.x; \
564
+ object.b.y = (object.a.y += delta.y / (z##type)2) + size_y - delta.y; \
565
+ return object; \
566
+ } \
567
+ \
568
+ \
569
+ static Z_INLINE \
570
+ ZAABR##Type z_aabr_##type##_shrink_from_center_right(ZAABR##Type object, Z2D##Type delta) \
571
+ { \
572
+ z##type size_y = object.b.y - object.a.y; \
573
+ \
574
+ object.a.x += delta.x; \
575
+ object.b.y = (object.a.y += delta.y / (z##type)2) + size_y - delta.y; \
576
+ return object; \
577
+ } \
578
+ \
579
+ \
580
+ static Z_INLINE \
581
+ ZAABR##Type z_aabr_##type##_shrink_from_top_center(ZAABR##Type object, Z2D##Type delta) \
582
+ { \
583
+ z##type size_x = object.b.x - object.a.x; \
584
+ \
585
+ object.b.x = (object.a.x += delta.x / (z##type)2) + size_x - delta.x; \
586
+ object.a.y += delta.y; \
587
+ return object; \
588
+ } \
589
+ \
590
+ \
591
+ static Z_INLINE \
592
+ ZAABR##Type z_aabr_##type##_shrink_from_top_left(ZAABR##Type object, Z2D##Type delta) \
593
+ { \
594
+ object.b.x -= delta.x; \
595
+ object.a.y += delta.y; \
596
+ return object; \
597
+ } \
598
+ \
599
+ \
600
+ static Z_INLINE \
601
+ ZAABR##Type z_aabr_##type##_shrink_from_top_right(ZAABR##Type object, Z2D##Type delta) \
602
+ { \
603
+ object.a.x += delta.x; \
604
+ object.a.y += delta.y; \
605
+ return object; \
606
+ } \
607
+ \
608
+ \
609
+ static Z_INLINE \
610
+ ZAABR##Type z_aabr_##type##_shrink_in_x_from_center(ZAABR##Type object, z##type delta) \
611
+ { \
612
+ z##type size_x = object.b.x - object.a.x; \
613
+ \
614
+ object.b.x = (object.a.x += delta / (z##type)2) + size_x - delta; \
615
+ return object; \
616
+ } \
617
+ \
618
+ \
619
+ static Z_INLINE \
620
+ ZAABR##Type z_aabr_##type##_shrink_in_x_from_left(ZAABR##Type object, z##type delta) \
621
+ { \
622
+ object.b.x -= delta; \
623
+ return object; \
624
+ } \
625
+ \
626
+ \
627
+ static Z_INLINE \
628
+ ZAABR##Type z_aabr_##type##_shrink_in_x_from_right(ZAABR##Type object, z##type delta) \
629
+ { \
630
+ object.a.x += delta; \
631
+ return object; \
632
+ } \
633
+ \
634
+ \
635
+ static Z_INLINE \
636
+ ZAABR##Type z_aabr_##type##_shrink_in_y_from_bottom(ZAABR##Type object, z##type delta) \
637
+ { \
638
+ object.b.y -= delta; \
639
+ return object; \
640
+ } \
641
+ \
642
+ \
643
+ static Z_INLINE \
644
+ ZAABR##Type z_aabr_##type##_shrink_in_y_from_center(ZAABR##Type object, z##type delta) \
645
+ { \
646
+ z##type size_y = object.b.y - object.a.y; \
647
+ \
648
+ object.b.y = (object.a.y += delta / (z##type)2) + size_y - delta; \
649
+ return object; \
650
+ } \
651
+ \
652
+ \
653
+ static Z_INLINE \
654
+ ZAABR##Type z_aabr_##type##_shrink_in_y_from_top(ZAABR##Type object, z##type delta) \
655
+ { \
656
+ object.a.y += delta; \
657
+ return object; \
658
+ } \
659
+ \
660
+ \
661
+ static Z_INLINE \
662
+ Z2D##Type z_aabr_##type##_top_center(ZAABR##Type object) \
663
+ {return z_2d_##type((object.a.x + object.b.x) / (z##type)2, object.b.y);} \
664
+ \
665
+ \
666
+ static Z_INLINE \
667
+ ZAABR##Type z_aabr_##type##_top_half(ZAABR##Type object) \
668
+ { \
669
+ object.a.y = (object.a.y + object.b.y) / (z##type)2; \
670
+ return object; \
671
+ } \
672
+ \
673
+ \
674
+ static Z_INLINE \
675
+ Z2D##Type z_aabr_##type##_top_left(ZAABR##Type object) \
676
+ {return z_2d_##type(object.a.x, object.b.y);} \
677
+ \
678
+ \
679
+ static Z_INLINE \
680
+ ZAABR##Type z_aabr_##type##_top_left_quarter(ZAABR##Type object) \
681
+ { \
682
+ object.b.x = (object.a.x + object.b.x) / (z##type)2; \
683
+ object.a.y = (object.a.y + object.b.y) / (z##type)2; \
684
+ return object; \
685
+ } \
686
+ \
687
+ \
688
+ static Z_INLINE \
689
+ Z2D##Type z_aabr_##type##_top_right(ZAABR##Type object) \
690
+ {return object.b;} \
691
+ \
692
+ \
693
+ static Z_INLINE \
694
+ ZAABR##Type z_aabr_##type##_top_right_quarter(ZAABR##Type object) \
695
+ { \
696
+ object.a.x = (object.a.x + object.b.x) / (z##type)2; \
697
+ object.a.y = (object.a.y + object.b.y) / (z##type)2; \
698
+ return object; \
699
+ } \
700
+ \
701
+ \
702
+ static Z_INLINE \
703
+ ZAABR##Type z_aabr_##type##_union(ZAABR##Type a, ZAABR##Type b) \
704
+ { \
705
+ ZAABR##Type result; \
706
+ \
707
+ result.a = z_2d_##type##_minimum(a.a, b.a); \
708
+ result.b = z_2d_##type##_maximum(a.b, b.b); \
709
+ return result; \
710
+ }
711
+
712
+
713
+ #define z_aabr_type_align_in_bottom_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_bottom_center )
714
+ #define z_aabr_type_align_in_bottom_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_bottom_left )
715
+ #define z_aabr_type_align_in_bottom_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_bottom_right )
716
+ #define z_aabr_type_align_in_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_center )
717
+ #define z_aabr_type_align_in_center_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_center_left )
718
+ #define z_aabr_type_align_in_center_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_center_right )
719
+ #define z_aabr_type_align_in_top_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_top_center )
720
+ #define z_aabr_type_align_in_top_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_top_left )
721
+ #define z_aabr_type_align_in_top_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _align_in_top_right )
722
+ #define z_aabr_type_area( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _area )
723
+ #define z_aabr_type_bottom_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _bottom_center )
724
+ #define z_aabr_type_bottom_half( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _bottom_half )
725
+ #define z_aabr_type_bottom_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _bottom_left )
726
+ #define z_aabr_type_bottom_left_quarter( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _bottom_left_quarter )
727
+ #define z_aabr_type_bottom_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _bottom_right )
728
+ #define z_aabr_type_bottom_right_quarter( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _bottom_right_quarter )
729
+ #define z_aabr_type_center_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _center_left )
730
+ #define z_aabr_type_center_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _center_right )
731
+ #define z_aabr_type_contains( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _contains )
732
+ #define z_aabr_type_contains_point( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _contains_point )
733
+ #define z_aabr_type_contains_rectangle( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _contains_rectangle )
734
+ #define z_aabr_type_fit_in_bottom_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_bottom_center )
735
+ #define z_aabr_type_fit_in_bottom_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_bottom_left )
736
+ #define z_aabr_type_fit_in_bottom_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_bottom_right )
737
+ #define z_aabr_type_fit_in_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_center )
738
+ #define z_aabr_type_fit_in_center_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_center_left )
739
+ #define z_aabr_type_fit_in_center_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_center_right )
740
+ #define z_aabr_type_fit_in_top_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_top_center )
741
+ #define z_aabr_type_fit_in_top_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_top_left )
742
+ #define z_aabr_type_fit_in_top_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _fit_in_top_right )
743
+ #define z_aabr_type_from_vertices( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _from_vertices )
744
+ #define z_aabr_type_grow_from_bottom_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_bottom_center )
745
+ #define z_aabr_type_grow_from_bottom_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_bottom_left )
746
+ #define z_aabr_type_grow_from_bottom_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_bottom_right )
747
+ #define z_aabr_type_grow_from_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_center )
748
+ #define z_aabr_type_grow_from_center_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_center_left )
749
+ #define z_aabr_type_grow_from_center_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_center_right )
750
+ #define z_aabr_type_grow_from_top_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_top_center )
751
+ #define z_aabr_type_grow_from_top_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_top_left )
752
+ #define z_aabr_type_grow_from_top_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_from_top_right )
753
+ #define z_aabr_type_grow_in_x_from_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_in_x_from_center )
754
+ #define z_aabr_type_grow_in_x_from_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_in_x_from_left )
755
+ #define z_aabr_type_grow_in_x_from_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_in_x_from_right )
756
+ #define z_aabr_type_grow_in_y_from_bottom( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_in_y_from_bottom )
757
+ #define z_aabr_type_grow_in_y_from_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_in_y_from_center )
758
+ #define z_aabr_type_grow_in_y_from_top( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _grow_in_y_from_top )
759
+ #define z_aabr_type_intersect( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _intersect )
760
+ #define z_aabr_type_intersection( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _intersection )
761
+ #define z_aabr_type_left_half( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _left_half )
762
+ #define z_aabr_type_maximum_x( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _maximum_x )
763
+ #define z_aabr_type_maximum_y( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _maximum_y )
764
+ #define z_aabr_type_middle_x( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _middle_x )
765
+ #define z_aabr_type_middle_y( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _middle_y )
766
+ #define z_aabr_type_minimum_x( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _minimum_x )
767
+ #define z_aabr_type_minimum_y( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _minimum_y )
768
+ #define z_aabr_type_rectangle( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _rectangle )
769
+ #define z_aabr_type_right_half( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _right_half )
770
+ #define z_aabr_type_size( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _size )
771
+ #define z_abbr_type_shrink_from_bottom_center(TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_bottom_center)
772
+ #define z_abbr_type_shrink_from_bottom_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_bottom_left )
773
+ #define z_abbr_type_shrink_from_bottom_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_bottom_right )
774
+ #define z_abbr_type_shrink_from_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_center )
775
+ #define z_abbr_type_shrink_from_center_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_center_left )
776
+ #define z_abbr_type_shrink_from_center_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_center_right )
777
+ #define z_abbr_type_shrink_from_top_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_top_center )
778
+ #define z_abbr_type_shrink_from_top_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_top_left )
779
+ #define z_abbr_type_shrink_from_top_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_from_top_right )
780
+ #define z_abbr_type_shrink_in_x_from_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_in_x_from_center )
781
+ #define z_abbr_type_shrink_in_x_from_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_in_x_from_left )
782
+ #define z_abbr_type_shrink_in_x_from_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_in_x_from_right )
783
+ #define z_abbr_type_shrink_in_y_from_bottom( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_in_y_from_bottom )
784
+ #define z_abbr_type_shrink_in_y_from_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_in_y_from_center )
785
+ #define z_abbr_type_shrink_in_y_from_top( TYPE) Z_INSERT_##TYPE##_fixed_type(z_abbr_, _shrink_in_y_from_top )
786
+ #define z_aabr_type_top_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _top_center )
787
+ #define z_aabr_type_top_half( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _top_half )
788
+ #define z_aabr_type_top_left( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _top_left )
789
+ #define z_aabr_type_top_left_quarter( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _top_left_quarter )
790
+ #define z_aabr_type_top_right( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _top_right )
791
+ #define z_aabr_type_top_right_quarter( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _top_right_quarter )
792
+ #define z_aabr_type_union( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _union )
793
+
794
+
795
+ /* MARK: - Partial implementation for real types */
796
+
797
+
798
+ #define Z_IMPLEMENTATION_REAL(Type, type) \
799
+ \
800
+ static Z_INLINE \
801
+ Z2D##Type z_aabr_##type##_absolute_point_to_unit(ZAABR##Type object, Z2D##Type point) \
802
+ { \
803
+ return z_2d_##type \
804
+ ((point.x - object.a.x) / (object.b.x - object.a.x), \
805
+ (point.y - object.a.y) / (object.b.y - object.a.y)); \
806
+ } \
807
+ \
808
+ \
809
+ static Z_INLINE \
810
+ zboolean z_aabr_##type##_contains_circle(ZAABR##Type object, ZCircle##Type circle) \
811
+ { \
812
+ return circle.point.x - circle.radius >= object.a.x && \
813
+ circle.point.y - circle.radius >= object.a.y && \
814
+ circle.point.x + circle.radius <= object.b.x && \
815
+ circle.point.y + circle.radius <= object.b.y; \
816
+ } \
817
+ \
818
+ \
819
+ static Z_INLINE \
820
+ ZCircle##Type z_aabr_##type##_inner_circle(ZAABR##Type object) \
821
+ { \
822
+ ZCircle##Type result; \
823
+ \
824
+ result.point = z_aabr_##type##_center(object); \
825
+ \
826
+ result.radius = \
827
+ z_2d_##type##_inner_minimum(z_2d_##type##_subtract(object.b, object.a)) / (z##type)2; \
828
+ \
829
+ return result; \
830
+ } \
831
+ \
832
+ \
833
+ static Z_INLINE \
834
+ Z2D##Type z_aabr_##type##_unit_point_to_absolute(ZAABR##Type object, Z2D##Type point) \
835
+ { \
836
+ return z_2d_##type \
837
+ (point.x * (object.b.x - object.a.x) + object.a.x, \
838
+ point.y * (object.b.y - object.a.y) + object.a.y); \
839
+ }
840
+
841
+
842
+ #define z_aabr_type_absolute_point_to_unit(TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _absolute_point_to_unit)
843
+ #define z_aabr_type_contains_circle( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _contains_circle )
844
+ #define z_aabr_type_inner_circle( TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _inner_circle )
845
+ #define z_aabr_type_unit_point_to_absolute(TYPE) Z_INSERT_##TYPE##_fixed_type(z_aabr_, _unit_point_to_absolute)
846
+
847
+
848
+ /* MARK: - Implementation expansions */
849
+
850
+
851
+ #define z_aabr_sint8_are_equal z_2d_line_sint8_are_equal
852
+ #define z_aabr_sint8_center z_2d_line_segment_sint8_center
853
+ #define z_aabr_sint8_is_zero z_2d_line_sint8_is_zero
854
+ #define z_aabr_sint8_swap z_2d_line_sint8_swap
855
+
856
+ Z_IMPLEMENTATION_COMMON(SInt8, sint8)
857
+
858
+ #define z_aabr_sint16_are_equal z_2d_line_sint16_are_equal
859
+ #define z_aabr_sint16_center z_2d_line_segment_sint16_center
860
+ #define z_aabr_sint16_is_zero z_2d_line_sint16_is_zero
861
+ #define z_aabr_sint16_swap z_2d_line_sint16_swap
862
+
863
+ Z_IMPLEMENTATION_COMMON(SInt16, sint16)
864
+
865
+ #define z_aabr_sint32_are_equal z_2d_line_sint32_are_equal
866
+ #define z_aabr_sint32_center z_2d_line_segment_sint32_center
867
+ #define z_aabr_sint32_is_zero z_2d_line_sint32_is_zero
868
+ #define z_aabr_sint32_swap z_2d_line_sint32_swap
869
+
870
+ Z_IMPLEMENTATION_COMMON(SInt32, sint32)
871
+
872
+ #ifdef Z_SINT64
873
+
874
+ # define z_aabr_sint64_are_equal z_2d_line_sint64_are_equal
875
+ # define z_aabr_sint64_center z_2d_line_segment_sint64_center
876
+ # define z_aabr_sint64_is_zero z_2d_line_sint64_is_zero
877
+ # define z_aabr_sint64_swap z_2d_line_sint64_swap
878
+
879
+ Z_IMPLEMENTATION_COMMON(SInt64, sint64)
880
+
881
+ #endif
882
+
883
+ #ifdef Z_SINT128
884
+
885
+ # define z_aabr_sint128_are_equal z_2d_line_sint128_are_equal
886
+ # define z_aabr_sint128_center z_2d_line_segment_sint128_center
887
+ # define z_aabr_sint128_is_zero z_2d_line_sint128_is_zero
888
+ # define z_aabr_sint128_swap z_2d_line_sint128_swap
889
+
890
+ Z_IMPLEMENTATION_COMMON(SInt128, sint128)
891
+
892
+ #endif
893
+
894
+ #ifdef Z_FLOAT16
895
+
896
+ # define z_aabr_float16_are_equal z_2d_line_float16_are_equal
897
+ # define z_aabr_float16_center z_2d_line_segment_float16_center
898
+ # define z_aabr_float16_is_zero z_2d_line_float16_is_zero
899
+ # define z_aabr_float16_swap z_2d_line_float16_swap
900
+
901
+ Z_IMPLEMENTATION_COMMON(Float16, float16)
902
+ Z_IMPLEMENTATION_REAL (Float16, float16)
903
+
904
+ #endif
905
+
906
+ #ifdef Z_FLOAT32
907
+
908
+ # define z_aabr_float32_are_equal z_2d_line_float32_are_equal
909
+ # define z_aabr_float32_center z_2d_line_segment_float32_center
910
+ # define z_aabr_float32_is_zero z_2d_line_float32_is_zero
911
+ # define z_aabr_float32_swap z_2d_line_float32_swap
912
+
913
+ Z_IMPLEMENTATION_COMMON(Float32, float32)
914
+ Z_IMPLEMENTATION_REAL (Float32, float32)
915
+
916
+ #endif
917
+
918
+ #ifdef Z_FLOAT64
919
+
920
+ # define z_aabr_float64_are_equal z_2d_line_float64_are_equal
921
+ # define z_aabr_float64_center z_2d_line_segment_float64_center
922
+ # define z_aabr_float64_is_zero z_2d_line_float64_is_zero
923
+ # define z_aabr_float64_swap z_2d_line_float64_swap
924
+
925
+ Z_IMPLEMENTATION_COMMON(Float64, float64)
926
+ Z_IMPLEMENTATION_REAL (Float64, float64)
927
+
928
+ #endif
929
+
930
+ #ifdef Z_FLOAT128
931
+
932
+ # define z_aabr_float128_are_equal z_2d_line_float128_are_equal
933
+ # define z_aabr_float128_center z_2d_line_segment_float128_center
934
+ # define z_aabr_float128_is_zero z_2d_line_float128_is_zero
935
+ # define z_aabr_float128_swap z_2d_line_float128_swap
936
+
937
+ Z_IMPLEMENTATION_COMMON(Float128, float128)
938
+ Z_IMPLEMENTATION_REAL (Float128, float128)
939
+
940
+ #endif
941
+
942
+ #ifdef Z_FLOAT80_X87
943
+
944
+ # define z_aabr_float80_x87_are_equal z_2d_line_float80_x87_are_equal
945
+ # define z_aabr_float80_x87_center z_2d_line_segment_float80_x87_center
946
+ # define z_aabr_float80_x87_is_zero z_2d_line_float80_x87_is_zero
947
+ # define z_aabr_float80_x87_swap z_2d_line_float80_x87_swap
948
+
949
+ Z_IMPLEMENTATION_COMMON(Float80_x87, float80_x87)
950
+ Z_IMPLEMENTATION_REAL (Float80_x87, float80_x87)
951
+
952
+ #endif
953
+
954
+ #ifdef Z_FLOAT96_X87
955
+
956
+ # define z_aabr_float96_x87_are_equal z_2d_line_float96_x87_are_equal
957
+ # define z_aabr_float96_x87_center z_2d_line_segment_float96_x87_center
958
+ # define z_aabr_float96_x87_is_zero z_2d_line_float96_x87_is_zero
959
+ # define z_aabr_float96_x87_swap z_2d_line_float96_x87_swap
960
+
961
+ Z_IMPLEMENTATION_COMMON(Float96_x87, float96_x87)
962
+ Z_IMPLEMENTATION_REAL (Float96_x87, float96_x87)
963
+
964
+ #endif
965
+
966
+ #ifdef Z_FLOAT128_X87
967
+
968
+ # define z_aabr_float128_x87_are_equal z_2d_line_float128_x87_are_equal
969
+ # define z_aabr_float128_x87_center z_2d_line_segment_float128_x87_center
970
+ # define z_aabr_float128_x87_is_zero z_2d_line_float128_x87_is_zero
971
+ # define z_aabr_float128_x87_swap z_2d_line_float128_x87_swap
972
+
973
+ Z_IMPLEMENTATION_COMMON(Float128_x87, float128_x87)
974
+ Z_IMPLEMENTATION_REAL (Float128_x87, float128_x87)
975
+
976
+ #endif
977
+
978
+
979
+ /* MARK: - Cleanup */
980
+
981
+
982
+ #undef Z_IMPLEMENTATION_COMMON
983
+ #undef Z_IMPLEMENTATION_REAL
984
+
985
+
986
+ /* MARK: - Default real type definitions */
987
+
988
+
989
+ #ifdef Z_REAL
990
+ # define z_aabr_absolute_point_to_unit z_aabr_type_absolute_point_to_unit (REAL)
991
+ # define z_aabr_align_in_bottom_center z_aabr_type_align_in_bottom_center (REAL)
992
+ # define z_aabr_align_in_bottom_left z_aabr_type_align_in_bottom_left (REAL)
993
+ # define z_aabr_align_in_bottom_right z_aabr_type_align_in_bottom_right (REAL)
994
+ # define z_aabr_align_in_center z_aabr_type_align_in_center (REAL)
995
+ # define z_aabr_align_in_center_left z_aabr_type_align_in_center_left (REAL)
996
+ # define z_aabr_align_in_center_right z_aabr_type_align_in_center_right (REAL)
997
+ # define z_aabr_align_in_top_center z_aabr_type_align_in_top_center (REAL)
998
+ # define z_aabr_align_in_top_left z_aabr_type_align_in_top_left (REAL)
999
+ # define z_aabr_align_in_top_right z_aabr_type_align_in_top_right (REAL)
1000
+ # define z_aabr_are_equal z_2d_line_are_equal
1001
+ # define z_aabr_area z_aabr_type_area (REAL)
1002
+ # define z_aabr_bottom_center z_aabr_type_bottom_center (REAL)
1003
+ # define z_aabr_bottom_half z_aabr_type_bottom_half (REAL)
1004
+ # define z_aabr_bottom_left z_aabr_type_bottom_left (REAL)
1005
+ # define z_aabr_bottom_left_quarter z_aabr_type_bottom_left_quarter (REAL)
1006
+ # define z_aabr_bottom_right z_aabr_type_bottom_right (REAL)
1007
+ # define z_aabr_bottom_right_quarter z_aabr_type_bottom_right_quarter (REAL)
1008
+ # define z_aabr_center z_2d_line_segment_center
1009
+ # define z_aabr_center_left z_aabr_type_center_left (REAL)
1010
+ # define z_aabr_center_right z_aabr_type_center_right (REAL)
1011
+ # define z_aabr_contains z_aabr_type_contains (REAL)
1012
+ # define z_aabr_contains_circle z_aabr_type_contains_circle (REAL)
1013
+ # define z_aabr_contains_point z_aabr_type_contains_point (REAL)
1014
+ # define z_aabr_contains_rectangle z_aabr_type_contains_rectangle (REAL)
1015
+ # define z_aabr_fit_in_bottom_center z_aabr_type_fit_in_bottom_center (REAL)
1016
+ # define z_aabr_fit_in_bottom_left z_aabr_type_fit_in_bottom_left (REAL)
1017
+ # define z_aabr_fit_in_bottom_right z_aabr_type_fit_in_bottom_right (REAL)
1018
+ # define z_aabr_fit_in_center z_aabr_type_fit_in_center (REAL)
1019
+ # define z_aabr_fit_in_center_left z_aabr_type_fit_in_center_left (REAL)
1020
+ # define z_aabr_fit_in_center_right z_aabr_type_fit_in_center_right (REAL)
1021
+ # define z_aabr_fit_in_top_center z_aabr_type_fit_in_top_center (REAL)
1022
+ # define z_aabr_fit_in_top_left z_aabr_type_fit_in_top_left (REAL)
1023
+ # define z_aabr_fit_in_top_right z_aabr_type_fit_in_top_right (REAL)
1024
+ # define z_aabr_from_vertices z_aabr_type_from_vertices (REAL)
1025
+ # define z_aabr_grow_from_bottom_center z_aabr_type_grow_from_bottom_center (REAL)
1026
+ # define z_aabr_grow_from_bottom_left z_aabr_type_grow_from_bottom_left (REAL)
1027
+ # define z_aabr_grow_from_bottom_right z_aabr_type_grow_from_bottom_right (REAL)
1028
+ # define z_aabr_grow_from_center z_aabr_type_grow_from_center (REAL)
1029
+ # define z_aabr_grow_from_center_left z_aabr_type_grow_from_center_left (REAL)
1030
+ # define z_aabr_grow_from_center_right z_aabr_type_grow_from_center_right (REAL)
1031
+ # define z_aabr_grow_from_top_center z_aabr_type_grow_from_top_center (REAL)
1032
+ # define z_aabr_grow_from_top_left z_aabr_type_grow_from_top_left (REAL)
1033
+ # define z_aabr_grow_from_top_right z_aabr_type_grow_from_top_right (REAL)
1034
+ # define z_aabr_grow_in_x_from_center z_aabr_type_grow_in_x_from_center (REAL)
1035
+ # define z_aabr_grow_in_x_from_left z_aabr_type_grow_in_x_from_left (REAL)
1036
+ # define z_aabr_grow_in_x_from_right z_aabr_type_grow_in_x_from_right (REAL)
1037
+ # define z_aabr_grow_in_y_from_bottom z_aabr_type_grow_in_y_from_bottom (REAL)
1038
+ # define z_aabr_grow_in_y_from_center z_aabr_type_grow_in_y_from_center (REAL)
1039
+ # define z_aabr_grow_in_y_from_top z_aabr_type_grow_in_y_from_top (REAL)
1040
+ # define z_aabr_inner_circle z_aabr_type_inner_circle (REAL)
1041
+ # define z_aabr_intersect z_aabr_type_intersect (REAL)
1042
+ # define z_aabr_intersection z_aabr_type_intersection (REAL)
1043
+ # define z_aabr_is_zero z_2d_line_is_zero
1044
+ # define z_aabr_left_half z_aabr_type_left_half (REAL)
1045
+ # define z_aabr_maximum_x z_aabr_type_maximum_x (REAL)
1046
+ # define z_aabr_maximum_y z_aabr_type_maximum_y (REAL)
1047
+ # define z_aabr_middle_x z_aabr_type_middle_x (REAL)
1048
+ # define z_aabr_middle_y z_aabr_type_middle_y (REAL)
1049
+ # define z_aabr_minimum_x z_aabr_type_minimum_x (REAL)
1050
+ # define z_aabr_minimum_y z_aabr_type_minimum_y (REAL)
1051
+ # define z_aabr_rectangle z_aabr_type_rectangle (REAL)
1052
+ # define z_aabr_right_half z_aabr_type_right_half (REAL)
1053
+ # define z_aabr_size z_aabr_type_size (REAL)
1054
+ # define z_abbr_shrink_from_bottom_center z_abbr_type_shrink_from_bottom_center(REAL)
1055
+ # define z_abbr_shrink_from_bottom_left z_abbr_type_shrink_from_bottom_left (REAL)
1056
+ # define z_abbr_shrink_from_bottom_right z_abbr_type_shrink_from_bottom_right (REAL)
1057
+ # define z_abbr_shrink_from_center z_abbr_type_shrink_from_center (REAL)
1058
+ # define z_abbr_shrink_from_center_left z_abbr_type_shrink_from_center_left (REAL)
1059
+ # define z_abbr_shrink_from_center_right z_abbr_type_shrink_from_center_right (REAL)
1060
+ # define z_abbr_shrink_from_top_center z_abbr_type_shrink_from_top_center (REAL)
1061
+ # define z_abbr_shrink_from_top_left z_abbr_type_shrink_from_top_left (REAL)
1062
+ # define z_abbr_shrink_from_top_right z_abbr_type_shrink_from_top_right (REAL)
1063
+ # define z_abbr_shrink_in_x_from_center z_abbr_type_shrink_in_x_from_center (REAL)
1064
+ # define z_abbr_shrink_in_x_from_left z_abbr_type_shrink_in_x_from_left (REAL)
1065
+ # define z_abbr_shrink_in_x_from_right z_abbr_type_shrink_in_x_from_right (REAL)
1066
+ # define z_abbr_shrink_in_y_from_bottom z_abbr_type_shrink_in_y_from_bottom (REAL)
1067
+ # define z_abbr_shrink_in_y_from_center z_abbr_type_shrink_in_y_from_center (REAL)
1068
+ # define z_abbr_shrink_in_y_from_top z_abbr_type_shrink_in_y_from_top (REAL)
1069
+ # define z_aabr_swap z_2d_line_swap
1070
+ # define z_aabr_top_center z_aabr_type_top_center (REAL)
1071
+ # define z_aabr_top_half z_aabr_type_top_half (REAL)
1072
+ # define z_aabr_top_left z_aabr_type_top_left (REAL)
1073
+ # define z_aabr_top_left_quarter z_aabr_type_top_left_quarter (REAL)
1074
+ # define z_aabr_top_right z_aabr_type_top_right (REAL)
1075
+ # define z_aabr_top_right_quarter z_aabr_type_top_right_quarter (REAL)
1076
+ # define z_aabr_union z_aabr_type_union (REAL)
1077
+ # define z_aabr_unit_point_to_absolute z_aabr_type_unit_point_to_absolute (REAL)
1078
+ #endif
1079
+
1080
+
1081
+ #endif /* _Z_functions_mathematics_geometry_euclidean_ZAABR_H_ */