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,112 @@
1
+ /* Z Kit - functions/base/value.hpp
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_base_value_HPP_
9
+ #define _Z_functions_base_value_HPP_
10
+
11
+ #include <Z/traits/Type.hpp>
12
+
13
+ namespace Zeta {
14
+
15
+
16
+ // MARK: - Functions for any type
17
+
18
+
19
+ template <class T> static Z_INLINE void swap(void *a, void *b)
20
+ {
21
+ T t = *(T *)a;
22
+ *(T *)a = *(T *)b;
23
+ *(T *)b = t;
24
+ }
25
+
26
+
27
+ // MARK: - Functions for comparable types
28
+
29
+
30
+ template <class T> static Z_CT(CPP11) T maximum(T a, T b) {return a > b ? a : b;}
31
+ template <class T> static Z_CT(CPP11) T minimum(T a, T b) {return a < b ? a : b;}
32
+
33
+
34
+ template <class T> static Z_CT(CPP11) T clamp(T value, T minimum, T maximum)
35
+ {return Zeta::minimum(Zeta::maximum(value, minimum), maximum);}
36
+
37
+
38
+ // MARK: - Functions for signed types
39
+
40
+
41
+ template <class T> static Z_CT(CPP11) T absolute(T value)
42
+ {return value < T(0) ? -value : value;}
43
+
44
+
45
+ template <class T> static Z_CT(CPP11) T sign(T value)
46
+ {return value >= T(0) ? T(1) : -T(1);}
47
+
48
+
49
+ // MARK: - Functions for real types
50
+
51
+
52
+ template <class T> static Z_CT(CPP11) Boolean are_almost_equal(T a, T b)
53
+ {return absolute(a - b) <= Type<T>::epsilon();}
54
+
55
+
56
+ template <class T> static Z_CT(CPP11) T clamp_01(T value)
57
+ {return minimum<T>(maximum<T>(value, T(0.0)), T(1.0));}
58
+
59
+
60
+ template <class T> static Z_CT(CPP11) T inverse_lerp(T a, T b, T t)
61
+ {return (t - a) / (b - a);}
62
+
63
+
64
+ template <class T> static Z_CT(CPP11) Boolean is_almost_zero(T value)
65
+ {return absolute<T>(value) <= Type<T>::epsilon();}
66
+
67
+
68
+ template <class T> static Z_CT(CPP11) Boolean is_finite(T value)
69
+ {return value == value && value != Type<T>::infinity() && value != -Type<T>::infinity();}
70
+
71
+
72
+ template <class T> static Z_CT(CPP11) Boolean is_infinity(T value)
73
+ {return value == Type<T>::infinity() || value == -Type<T>::infinity();}
74
+
75
+
76
+ template <class T> static Z_CT(CPP11) Boolean is_nan(T value)
77
+ {return !(value == value);}
78
+
79
+
80
+ template <class T> static Z_CT(CPP11) T lerp(T a, T b, T t)
81
+ {return a + t * (b - a);}
82
+
83
+
84
+ template <class T> static Z_CT(CPP11) T sign_or_zero(T value)
85
+ {
86
+ return absolute<T>(value) <= Type<T>::epsilon()
87
+ ? T(0.0)
88
+ : sign<T>(value);
89
+ }
90
+
91
+
92
+ template <class T> static Z_CT(CPP14) T smootherstep(T a, T b, T t)
93
+ {
94
+ if (t <= a) return T(0.0);
95
+ if (t >= b) return T(1.0);
96
+ t = (t - a) / (b - a);
97
+ return t * t * t * (t * (t * T(6.0) - T(15.0)) + T(10.0));
98
+ }
99
+
100
+
101
+ template <class T> static Z_CT(CPP14) T smoothstep(T a, T b, T t)
102
+ {
103
+ if (t <= a) return T(0.0);
104
+ if (t >= b) return T(1.0);
105
+ t = (t - a) / (b - a);
106
+ return t * t * (T(3.0) - T(2.0) * t);
107
+ }
108
+
109
+
110
+ }
111
+
112
+ #endif // _Z_functions_base_value_HPP_
@@ -0,0 +1,85 @@
1
+ /* Z Kit - functioms/buffering/ZRingBuffer.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_buffering_ZRingBuffer_H_
9
+ #define _Z_functions_buffering_ZRingBuffer_H_
10
+
11
+ #include <Z/types/buffering.h>
12
+ #include <Z/functions/base/value.h>
13
+
14
+ #define z_cpu_relax() asm volatile("pause\n": : :"memory")
15
+
16
+
17
+ static Z_INLINE void z_ring_buffer_initialize(
18
+ ZRingBuffer* object,
19
+ void const* buffers,
20
+ zusize buffer_size,
21
+ zusize buffer_count
22
+ )
23
+ {
24
+ object->buffers = (void *)buffers;
25
+ object->buffer_size = buffer_size;
26
+ object->buffer_count = buffer_count;
27
+ object->production_index = 0;
28
+ object->consumption_index = 0;
29
+ object->fill_count = 0;
30
+ }
31
+
32
+
33
+ static Z_INLINE void *z_ring_buffer_production_buffer(ZRingBuffer const *object)
34
+ {
35
+ return object->buffer_count - object->fill_count
36
+ ? (zuint8 *)object->buffers + object->production_index * object->buffer_size
37
+ : NULL;
38
+ }
39
+
40
+
41
+ static Z_INLINE void *z_ring_buffer_consumption_buffer(ZRingBuffer const *object)
42
+ {
43
+ return object->fill_count
44
+ ? (zuint8 *)object->buffers + object->consumption_index * object->buffer_size
45
+ : NULL;
46
+ }
47
+
48
+
49
+ static Z_INLINE void *z_ring_buffer_try_produce(ZRingBuffer *object)
50
+ {
51
+ if (object->buffer_count == object->fill_count) return NULL;
52
+ object->production_index = (object->production_index + 1) % object->buffer_count;
53
+ z_type_atomic_increment_then_get(USIZE)(&object->fill_count);
54
+ return (zuint8 *)object->buffers + object->production_index * object->buffer_size;
55
+ }
56
+
57
+
58
+ static Z_INLINE void *z_ring_buffer_try_consume(ZRingBuffer *object)
59
+ {
60
+ if (!object->fill_count) return NULL;
61
+ object->consumption_index = (object->consumption_index + 1) % object->buffer_count;
62
+ z_type_atomic_decrement_then_get(USIZE)(&object->fill_count);
63
+ return (zuint8 *)object->buffers + object->consumption_index * object->buffer_size;
64
+ }
65
+
66
+
67
+ static Z_INLINE void *z_ring_buffer_produce(ZRingBuffer *object)
68
+ {
69
+ while (object->buffer_count == object->fill_count) z_cpu_relax();
70
+ object->production_index = (object->production_index + 1) % object->buffer_count;
71
+ z_type_atomic_increment_then_get(USIZE)(&object->fill_count);
72
+ return (zuint8 *)object->buffers + object->production_index * object->buffer_size;
73
+ }
74
+
75
+
76
+ static Z_INLINE void *z_ring_buffer_consume(ZRingBuffer *object)
77
+ {
78
+ while (!object->fill_count) z_cpu_relax();
79
+ object->consumption_index = (object->consumption_index + 1) % object->buffer_count;
80
+ z_type_atomic_decrement_then_get(USIZE)(&object->fill_count);
81
+ return (zuint8 *)object->buffers + object->consumption_index * object->buffer_size;
82
+ }
83
+
84
+
85
+ #endif /* _Z_functions_buffering_ZRingBuffer_H_ */
@@ -0,0 +1,65 @@
1
+ /* Z Kit - functioms/buffering/ZTripleBuffer.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2012 Remis.
6
+ Copyright (C) 2014 Manuel Sainz de Baranda y Goñi.
7
+ Released under the terms of the GNU Lesser General Public License v3. */
8
+
9
+ #ifndef _Z_functions_buffering_ZTripleBuffer_H_
10
+ #define _Z_functions_buffering_ZTripleBuffer_H_
11
+
12
+ #include <Z/types/buffering.h>
13
+ #include <Z/functions/base/value.h>
14
+
15
+
16
+ static Z_INLINE void z_triple_buffer_initialize(
17
+ ZTripleBuffer* object,
18
+ void const* buffers,
19
+ zusize buffer_size
20
+ )
21
+ {
22
+ object->buffers[0] = (zuint8 *)buffers;
23
+ object->buffers[1] = (zuint8 *)buffers + buffer_size;
24
+ object->buffers[2] = (zuint8 *)buffers + buffer_size * 2;
25
+ object->flags = 6;
26
+ }
27
+
28
+
29
+ static Z_INLINE void *z_triple_buffer_production_buffer(ZTripleBuffer const *object)
30
+ {return object->buffers[(object->flags & 48) >> 4];}
31
+
32
+
33
+ static Z_INLINE void *z_triple_buffer_consumption_buffer(ZTripleBuffer const *object)
34
+ {return object->buffers[object->flags & 3];}
35
+
36
+
37
+ static Z_INLINE void *z_triple_buffer_produce(ZTripleBuffer *object)
38
+ {
39
+ zuint8 flags, new_flags;
40
+
41
+ do {
42
+ flags = object->flags;
43
+ new_flags = 64 | ((flags & 12) << 2) | ((flags & 48) >> 2) | (flags & 3);
44
+ }
45
+ while (!z_uint8_atomic_set_if_equal(&object->flags, flags, new_flags));
46
+
47
+ return object->buffers[(new_flags & 48) >> 4];
48
+ }
49
+
50
+
51
+ static Z_INLINE void *z_triple_buffer_consume(ZTripleBuffer *object)
52
+ {
53
+ zuint8 flags, new_flags;
54
+
55
+ do {
56
+ if (!((flags = object->flags) & 64)) return NULL;
57
+ new_flags = (flags & 48) | ((flags & 3) << 2) | ((flags & 12) >> 2);
58
+ }
59
+ while (!z_uint8_atomic_set_if_equal(&object->flags, flags, new_flags));
60
+
61
+ return object->buffers[new_flags & 3];;
62
+ }
63
+
64
+
65
+ #endif /* _Z_functions_buffering_ZTripleBuffer_H_ */
@@ -0,0 +1,179 @@
1
+ /* Z Kit - functions/mathematics/geometry/euclidean/Z2DLine.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_Z2DLine_H_
9
+ #define _Z_functions_mathematics_geometry_euclidean_Z2DLine_H_
10
+
11
+ #include <Z/functions/mathematics/geometry/euclidean/constructors.h>
12
+ #include <Z/functions/base/Z2D.h>
13
+
14
+
15
+ /* MARK: - Common implementation */
16
+
17
+
18
+ #define Z_IMPLEMENTATION_COMMON(Type, type) \
19
+ \
20
+ static Z_INLINE \
21
+ zboolean z_2d_line_##type##_are_equal(Z2DLine##Type a, Z2DLine##Type b) \
22
+ {return z_2d_##type##_are_equal(a.a, b.a) && z_2d_##type##_are_equal(a.b, b.b);} \
23
+ \
24
+ \
25
+ static Z_INLINE \
26
+ zboolean z_2d_line_##type##_are_perpendicular(Z2DLine##Type a, Z2DLine##Type b) \
27
+ { \
28
+ return z_2d_##type##_are_perpendicular \
29
+ (z_2d_##type##_subtract(a.b, a.a), z_2d_##type##_subtract(b.b, b.a)); \
30
+ } \
31
+ \
32
+ \
33
+ static Z_INLINE \
34
+ zboolean z_2d_line_##type##_is_zero(Z2DLine##Type object) \
35
+ {return z_2d_##type##_is_zero(object.a) && z_2d_##type##_is_zero(object.b);} \
36
+ \
37
+ \
38
+ static Z_INLINE \
39
+ Z2DLine##Type z_2d_line_##type##_reverse(Z2DLine##Type object) \
40
+ {return z_2d_line_##type(object.b.x, object.b.y, object.a.x, object.a.y);} \
41
+ \
42
+ \
43
+ static Z_INLINE \
44
+ void z_2d_line_##type##_swap(Z2DLine##Type *a, Z2DLine##Type *b) \
45
+ { \
46
+ Z2DLine##Type t = *a; \
47
+ \
48
+ *a = *b; *b = t; \
49
+ } \
50
+ \
51
+ \
52
+ static Z_INLINE \
53
+ ZAABR##Type z_2d_line_segment_##type##_aabr(Z2DLine##Type object) \
54
+ { \
55
+ return z_aabr_##type \
56
+ (z_##type##_minimum(object.a.x, object.b.x), \
57
+ z_##type##_minimum(object.a.y, object.b.y), \
58
+ z_##type##_maximum(object.a.x, object.b.x), \
59
+ z_##type##_maximum(object.a.y, object.b.y)); \
60
+ } \
61
+ \
62
+ \
63
+ static Z_INLINE \
64
+ Z2D##Type z_2d_line_segment_##type##_center(Z2DLine##Type object) \
65
+ {return z_2d_##type##_middle(object.a, object.b);}
66
+
67
+
68
+ #define z_2d_line_type_are_equal( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_, _are_equal )
69
+ #define z_2d_line_type_are_perpendicular(TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_, _are_perpendicular)
70
+ #define z_2d_line_type_is_zero( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_, _is_zero )
71
+ #define z_2d_line_type_reverse( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_, _reverse )
72
+ #define z_2d_line_type_swap( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_, _swap )
73
+ #define z_2d_line_segment_aabr( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_segment_, _aabr )
74
+ #define z_2d_line_segment_type_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_segment_, _center )
75
+
76
+
77
+ /* MARK: - Partial implementation for real types */
78
+
79
+
80
+ #define Z_IMPLEMENTATION_REAL(Type, type) \
81
+ \
82
+ static Z_INLINE \
83
+ zboolean z_2d_line_segment_##type##_intersect(Z2DLine##Type a, Z2DLine##Type b) \
84
+ { \
85
+ Z2D##Type d = z_2d_##type##_subtract(b.a, a.a); \
86
+ Z2D##Type va = z_2d_##type##_subtract(a.b, a.a); \
87
+ Z2D##Type vb = z_2d_##type##_subtract(b.b, b.a); \
88
+ z##type c = z_2d_##type##_cross_product(va, vb); \
89
+ z##type t = z_2d_##type##_cross_product(d, vb) / c; \
90
+ z##type u = z_2d_##type##_cross_product(d, va) / c; \
91
+ \
92
+ return !(t < (z##type)0 || t > (z##type)1 || u < (z##type)0 || u > (z##type)1); \
93
+ } \
94
+ \
95
+ \
96
+ static Z_INLINE \
97
+ Z2D##Type z_2d_line_segment_##type##_lerp(Z2DLine##Type object, z##type alpha) \
98
+ {return z_2d_##type##_lerp(object.a, object.b, alpha);}
99
+
100
+
101
+ #define z_2d_line_segment_type_intersect(TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_segment_, _intersect)
102
+ #define z_2d_line_segment_type_lerp( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_segment_, _lerp )
103
+
104
+
105
+ /* MARK: - Implementation expansions */
106
+
107
+
108
+ Z_IMPLEMENTATION_COMMON(SInt8, sint8 )
109
+ Z_IMPLEMENTATION_COMMON(SInt16, sint16)
110
+ Z_IMPLEMENTATION_COMMON(SInt32, sint32)
111
+
112
+ #ifdef Z_SINT64
113
+ Z_IMPLEMENTATION_COMMON(SInt64, sint64)
114
+ #endif
115
+
116
+ #ifdef Z_SINT128
117
+ Z_IMPLEMENTATION_COMMON(SInt128, sint128)
118
+ #endif
119
+
120
+ #ifdef Z_FLOAT16
121
+ Z_IMPLEMENTATION_COMMON(Float16, float16)
122
+ Z_IMPLEMENTATION_REAL (Float16, float16)
123
+ #endif
124
+
125
+ #ifdef Z_FLOAT32
126
+ Z_IMPLEMENTATION_COMMON(Float32, float32)
127
+ Z_IMPLEMENTATION_REAL (Float32, float32)
128
+ #endif
129
+
130
+ #ifdef Z_FLOAT64
131
+ Z_IMPLEMENTATION_COMMON(Float64, float64)
132
+ Z_IMPLEMENTATION_REAL (Float64, float64)
133
+ #endif
134
+
135
+ #ifdef Z_FLOAT128
136
+ Z_IMPLEMENTATION_COMMON(Float128, float128)
137
+ Z_IMPLEMENTATION_REAL (Float128, float128)
138
+ #endif
139
+
140
+ #ifdef Z_FLOAT80_X87
141
+ Z_IMPLEMENTATION_COMMON(Float80_x87, float80_x87)
142
+ Z_IMPLEMENTATION_REAL (Float80_x87, float80_x87)
143
+ #endif
144
+
145
+ #ifdef Z_FLOAT96_X87
146
+ Z_IMPLEMENTATION_COMMON(Float96_x87, float96_x87)
147
+ Z_IMPLEMENTATION_REAL (Float96_x87, float96_x87)
148
+ #endif
149
+
150
+ #ifdef Z_FLOAT128_X87
151
+ Z_IMPLEMENTATION_COMMON(Float128_x87, float128_x87)
152
+ Z_IMPLEMENTATION_REAL (Float128_x87, float128_x87)
153
+ #endif
154
+
155
+
156
+ /* MARK: - Cleanup */
157
+
158
+
159
+ #undef Z_IMPLEMENTATION_COMMON
160
+ #undef Z_IMPLEMENTATION_REAL
161
+
162
+
163
+ /* MARK: - Default real type definitions */
164
+
165
+
166
+ #ifdef Z_REAL
167
+ # define z_2d_line_are_equal z_2d_line_type_are_equal (REAL)
168
+ # define z_2d_line_are_perpendicular z_2d_line_type_are_perpendicular(REAL)
169
+ # define z_2d_line_is_zero z_2d_line_type_is_zero (REAL)
170
+ # define z_2d_line_reverse z_2d_line_type_reverse (REAL)
171
+ # define z_2d_line_swap z_2d_line_type_swap (REAL)
172
+ # define z_2d_line_segment_aabr z_2d_line_segment_type_aabr (REAL)
173
+ # define z_2d_line_segment_center z_2d_line_segment_type_center (REAL)
174
+ # define z_2d_line_segment_intersect z_2d_line_segment_type_intersect(REAL)
175
+ # define z_2d_line_segment_lerp z_2d_line_segment_type_lerp (REAL)
176
+ #endif
177
+
178
+
179
+ #endif /* _Z_functions_mathematics_geometry_euclidean_Z2DLine_H_ */
@@ -0,0 +1,168 @@
1
+ /* Z Kit - functions/mathematics/geometry/euclidean/Z3DLine.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_Z3DLine_H_
9
+ #define _Z_functions_mathematics_geometry_euclidean_Z3DLine_H_
10
+
11
+ #include <Z/functions/mathematics/geometry/euclidean/constructors.h>
12
+ #include <Z/functions/base/Z3D.h>
13
+
14
+
15
+ /* MARK: - Common implementation */
16
+
17
+
18
+ #define Z_IMPLEMENTATION_COMMON(Type, type) \
19
+ \
20
+ static Z_INLINE \
21
+ zboolean z_3d_line_##type##_are_equal(Z3DLine##Type a, Z3DLine##Type b) \
22
+ {return z_3d_##type##_are_equal(a.a, b.a) && z_3d_##type##_are_equal(a.b, b.b);} \
23
+ \
24
+ \
25
+ static Z_INLINE \
26
+ zboolean z_3d_line_##type##_are_perpendicular(Z3DLine##Type a, Z3DLine##Type b) \
27
+ { \
28
+ return z_3d_##type##_are_perpendicular \
29
+ (z_3d_##type##_subtract(a.b, a.a), z_3d_##type##_subtract(b.b, b.a)); \
30
+ } \
31
+ \
32
+ \
33
+ static Z_INLINE \
34
+ zboolean z_3d_line_##type##_is_zero(Z3DLine##Type object) \
35
+ {return z_3d_##type##_is_zero(object.a) && z_3d_##type##_is_zero(object.b);} \
36
+ \
37
+ \
38
+ static Z_INLINE \
39
+ Z3DLine##Type z_3d_line_##type##_reverse(Z3DLine##Type object) \
40
+ { \
41
+ return z_3d_line_##type \
42
+ (object.b.x, object.b.y, object.b.z, object.a.x, object.a.y, object.a.z); \
43
+ } \
44
+ \
45
+ \
46
+ static Z_INLINE \
47
+ void z_3d_line_##type##_swap(Z3DLine##Type *a, Z3DLine##Type *b) \
48
+ { \
49
+ Z3DLine##Type t = *a; \
50
+ \
51
+ *a = *b; *b = t; \
52
+ } \
53
+ \
54
+ \
55
+ static Z_INLINE \
56
+ ZAABB##Type z_3d_line_segment_##type##_aabb(Z3DLine##Type object) \
57
+ { \
58
+ return z_aabb_##type \
59
+ (z_##type##_minimum(object.a.x, object.b.x), \
60
+ z_##type##_minimum(object.a.y, object.b.y), \
61
+ z_##type##_minimum(object.a.z, object.b.z), \
62
+ z_##type##_maximum(object.a.x, object.b.x), \
63
+ z_##type##_maximum(object.a.y, object.b.y), \
64
+ z_##type##_maximum(object.a.z, object.b.z)); \
65
+ } \
66
+ \
67
+ \
68
+ static Z_INLINE \
69
+ Z3D##Type z_3d_line_segment_##type##_center(Z3DLine##Type object) \
70
+ {return z_3d_##type##_middle(object.a, object.b);}
71
+
72
+
73
+ #define z_3d_line_type_are_equal( TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_, _are_equal )
74
+ #define z_3d_line_type_are_perpendicular(TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_, _are_perpendicular)
75
+ #define z_3d_line_type_is_zero( TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_, _is_zero )
76
+ #define z_3d_line_type_reverse( TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_, _reverse )
77
+ #define z_3d_line_type_swap( TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_, _swap )
78
+ #define z_2d_line_segment_aabb( TYPE) Z_INSERT_##TYPE##_fixed_type(z_2d_line_segment_, _aabb )
79
+ #define z_3d_line_segment_type_center( TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_segment_, _center )
80
+
81
+
82
+ /* MARK: - Partial implementation for real types */
83
+
84
+
85
+ #define Z_IMPLEMENTATION_REAL(Type, type) \
86
+ \
87
+ static Z_INLINE \
88
+ Z3D##Type z_3d_line_segment_##type##_lerp(Z3DLine##Type object, z##type alpha) \
89
+ {return z_3d_##type##_lerp(object.a, object.b, alpha);}
90
+
91
+
92
+ #define z_3d_line_segment_type_lerp(TYPE) Z_INSERT_##TYPE##_fixed_type(z_3d_line_segment_, _lerp)
93
+
94
+
95
+ /* MARK: - Implementation expansions */
96
+
97
+
98
+ Z_IMPLEMENTATION_COMMON(SInt8, sint8 )
99
+ Z_IMPLEMENTATION_COMMON(SInt16, sint16)
100
+ Z_IMPLEMENTATION_COMMON(SInt32, sint32)
101
+
102
+ #ifdef Z_SINT64
103
+ Z_IMPLEMENTATION_COMMON(SInt64, sint64)
104
+ #endif
105
+
106
+ #ifdef Z_SINT128
107
+ Z_IMPLEMENTATION_COMMON(SInt128, sint128)
108
+ #endif
109
+
110
+ #ifdef Z_FLOAT16
111
+ Z_IMPLEMENTATION_COMMON(Float16, float16)
112
+ Z_IMPLEMENTATION_REAL (Float16, float16)
113
+ #endif
114
+
115
+ #ifdef Z_FLOAT32
116
+ Z_IMPLEMENTATION_COMMON(Float32, float32)
117
+ Z_IMPLEMENTATION_REAL (Float32, float32)
118
+ #endif
119
+
120
+ #ifdef Z_FLOAT64
121
+ Z_IMPLEMENTATION_COMMON(Float64, float64)
122
+ Z_IMPLEMENTATION_REAL (Float64, float64)
123
+ #endif
124
+
125
+ #ifdef Z_FLOAT128
126
+ Z_IMPLEMENTATION_COMMON(Float128, float128)
127
+ Z_IMPLEMENTATION_REAL (Float128, float128)
128
+ #endif
129
+
130
+ #ifdef Z_FLOAT80_X87
131
+ Z_IMPLEMENTATION_COMMON(Float80_x87, float80_x87)
132
+ Z_IMPLEMENTATION_REAL (Float80_x87, float80_x87)
133
+ #endif
134
+
135
+ #ifdef Z_FLOAT96_X87
136
+ Z_IMPLEMENTATION_COMMON(Float96_x87, float96_x87)
137
+ Z_IMPLEMENTATION_REAL (Float96_x87, float96_x87)
138
+ #endif
139
+
140
+ #ifdef Z_FLOAT128_X87
141
+ Z_IMPLEMENTATION_COMMON(Float128_x87, float128_x87)
142
+ Z_IMPLEMENTATION_REAL (Float128_x87, float128_x87)
143
+ #endif
144
+
145
+
146
+ /* MARK: - Cleanup */
147
+
148
+
149
+ #undef Z_IMPLEMENTATION_COMMON
150
+ #undef Z_IMPLEMENTATION_REAL
151
+
152
+
153
+ /* MARK: - Default real type definitions */
154
+
155
+
156
+ #ifdef Z_REAL
157
+ # define z_3d_line_are_equal z_3d_line_type_are_equal (REAL)
158
+ # define z_3d_line_are_perpendicular z_3d_line_type_are_perpendicular(REAL)
159
+ # define z_3d_line_is_zero z_3d_line_type_is_zero (REAL)
160
+ # define z_3d_line_reverse z_3d_line_type_reverse (REAL)
161
+ # define z_3d_line_swap z_3d_line_type_swap (REAL)
162
+ # define z_2d_line_segment_aabb z_2d_line_segment_type_aabb (REAL)
163
+ # define z_3d_line_segment_center z_3d_line_segment_type_center (REAL)
164
+ # define z_3d_line_segment_lerp z_3d_line_segment_type_lerp (REAL)
165
+ #endif
166
+
167
+
168
+ #endif /* _Z_functions_mathematics_geometry_euclidean_Z3DLine_H_ */