zemu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/zemu/config.rb +312 -0
- data/lib/zemu/instance.rb +179 -0
- data/lib/zemu.rb +172 -0
- data/src/debug.c +118 -0
- data/src/debug.h +30 -0
- data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
- data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
- data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
- data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
- data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
- data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
- data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
- data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
- data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
- data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
- data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
- data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
- data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
- data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
- data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
- data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
- data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
- data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
- data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
- data/src/external/Z/API/Z/constants/base.h +35 -0
- data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
- data/src/external/Z/API/Z/constants/numbers.h +963 -0
- data/src/external/Z/API/Z/constants/version.h +15 -0
- data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
- data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
- data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
- data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
- data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
- data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
- data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
- data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
- data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
- data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
- data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
- data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
- data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
- data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
- data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
- data/src/external/Z/API/Z/functions/base/all.h +16 -0
- data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
- data/src/external/Z/API/Z/functions/base/character.h +38 -0
- data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
- data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
- data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
- data/src/external/Z/API/Z/functions/base/value.h +1901 -0
- data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
- data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
- data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
- data/src/external/Z/API/Z/functions/time/date.h +29 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
- data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
- data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
- data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
- data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
- data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
- data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
- data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
- data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
- data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
- data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
- data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
- data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
- data/src/external/Z/API/Z/inspection/C++.h +78 -0
- data/src/external/Z/API/Z/inspection/C.h +79 -0
- data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
- data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
- data/src/external/Z/API/Z/inspection/CPU.h +209 -0
- data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
- data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
- data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
- data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
- data/src/external/Z/API/Z/inspection/OS.h +236 -0
- data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
- data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
- data/src/external/Z/API/Z/inspection/Z.h +19 -0
- data/src/external/Z/API/Z/inspection/build.h +22 -0
- data/src/external/Z/API/Z/inspection/character set.h +66 -0
- data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
- data/src/external/Z/API/Z/inspection/compiler.h +299 -0
- data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
- data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
- data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
- data/src/external/Z/API/Z/inspection/data model.h +362 -0
- data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
- data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
- data/src/external/Z/API/Z/inspection/language.h +163 -0
- data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
- data/src/external/Z/API/Z/inspection/platform.h +29 -0
- data/src/external/Z/API/Z/keys/C++.h +27 -0
- data/src/external/Z/API/Z/keys/C.h +29 -0
- data/src/external/Z/API/Z/keys/CPU.h +80 -0
- data/src/external/Z/API/Z/keys/OS.h +182 -0
- data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
- data/src/external/Z/API/Z/keys/chemistry.h +26 -0
- data/src/external/Z/API/Z/keys/compiler.h +178 -0
- data/src/external/Z/API/Z/keys/data model.h +32 -0
- data/src/external/Z/API/Z/keys/endianness.h +24 -0
- data/src/external/Z/API/Z/keys/language.h +21 -0
- data/src/external/Z/API/Z/keys/layout.h +20 -0
- data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
- data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
- data/src/external/Z/API/Z/keys/order.h +18 -0
- data/src/external/Z/API/Z/keys/platform.h +87 -0
- data/src/external/Z/API/Z/keys/program.h +39 -0
- data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
- data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
- data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
- data/src/external/Z/API/Z/keys/status.h +69 -0
- data/src/external/Z/API/Z/keys/text.h +27 -0
- data/src/external/Z/API/Z/keys/value.h +88 -0
- data/src/external/Z/API/Z/macros/arguments.h +25 -0
- data/src/external/Z/API/Z/macros/casting.h +22 -0
- data/src/external/Z/API/Z/macros/character.h +159 -0
- data/src/external/Z/API/Z/macros/date.h +14 -0
- data/src/external/Z/API/Z/macros/key.h +20 -0
- data/src/external/Z/API/Z/macros/language.h +126 -0
- data/src/external/Z/API/Z/macros/language.hpp +81 -0
- data/src/external/Z/API/Z/macros/members.h +86 -0
- data/src/external/Z/API/Z/macros/pasting.h +308 -0
- data/src/external/Z/API/Z/macros/pointer.h +33 -0
- data/src/external/Z/API/Z/macros/repetition.h +283 -0
- data/src/external/Z/API/Z/macros/structure.h +104 -0
- data/src/external/Z/API/Z/macros/templating.h +407 -0
- data/src/external/Z/API/Z/macros/tokens.h +14 -0
- data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
- data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
- data/src/external/Z/API/Z/macros/value.h +489 -0
- data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
- data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
- data/src/external/Z/API/Z/macros/variadic.h +46 -0
- data/src/external/Z/API/Z/macros/version.h +17 -0
- data/src/external/Z/API/Z/network/3/IP.h +36 -0
- data/src/external/Z/API/Z/network/4/TCP.h +24 -0
- data/src/external/Z/API/Z/network/4/UDP.h +26 -0
- data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
- data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
- data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
- data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
- data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
- data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
- data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
- data/src/external/Z/API/Z/traits/base.hpp +19 -0
- data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
- data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
- data/src/external/Z/API/Z/types/arguments.h +19 -0
- data/src/external/Z/API/Z/types/base.h +1655 -0
- data/src/external/Z/API/Z/types/base.hpp +169 -0
- data/src/external/Z/API/Z/types/buffering.h +27 -0
- data/src/external/Z/API/Z/types/mathematics.h +135 -0
- data/src/external/Z/API/Z/types/time.h +23 -0
- data/src/external/Z/COPYING.LESSER +165 -0
- data/src/external/Z/development/Qt Creator/Z.pro +253 -0
- data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
- data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
- data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
- data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
- data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
- data/src/external/z80/README.md +229 -0
- data/src/external/z80/building/premake4.lua +33 -0
- data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
- data/src/external/z80/sources/Z80.c +1660 -0
- data/src/interrupt.c +6 -0
- data/src/interrupt.h +3 -0
- data/src/io.c.erb +115 -0
- data/src/io.h.erb +18 -0
- data/src/main.c +69 -0
- data/src/memory.c.erb +43 -0
- data/src/memory.h.erb +9 -0
- metadata +329 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
/* Z Kit - traits/TypeCount.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_traits_TypeCount_HPP_
|
9
|
+
#define _Z_traits_TypeCount_HPP_
|
10
|
+
|
11
|
+
#include <Z/inspection/language.h>
|
12
|
+
|
13
|
+
#if Z_LANGUAGE_HAS(CPP, VARIADIC_TEMPLATE) && \
|
14
|
+
Z_LANGUAGE_HAS_OPERATOR(CPP, SIZE_OF_PARAMETER_PACK)
|
15
|
+
|
16
|
+
namespace Zeta {template <class... T> struct TypeCount {
|
17
|
+
enum {value = sizeof...(T)};
|
18
|
+
};}
|
19
|
+
|
20
|
+
#else
|
21
|
+
|
22
|
+
# include <Z/types/base.hpp>
|
23
|
+
# include <Z/macros/repetition.h>
|
24
|
+
# include <Z/macros/tokens.h>
|
25
|
+
|
26
|
+
namespace Zeta {
|
27
|
+
|
28
|
+
template <
|
29
|
+
class T00 = NaT, class T01 = NaT, class T02 = NaT, class T03 = NaT,
|
30
|
+
class T04 = NaT, class T05 = NaT, class T06 = NaT, class T07 = NaT,
|
31
|
+
class T08 = NaT, class T09 = NaT, class T10 = NaT, class T11 = NaT,
|
32
|
+
class T12 = NaT, class T13 = NaT, class T14 = NaT, class T15 = NaT,
|
33
|
+
class T16 = NaT, class T17 = NaT, class T18 = NaT, class T19 = NaT,
|
34
|
+
class T20 = NaT, class T21 = NaT, class T22 = NaT, class T23 = NaT,
|
35
|
+
class T24 = NaT, class T25 = NaT, class T26 = NaT, class T27 = NaT,
|
36
|
+
class T28 = NaT, class T29 = NaT, class T30 = NaT, class T31 = NaT
|
37
|
+
> struct TypeCount {};
|
38
|
+
|
39
|
+
# define Z_TEMPLATE_SPECIALIZATION(parameter_count) \
|
40
|
+
template <Z_FOR_##parameter_count##_APPEND_INDEX(class T, Z_COMMA)> \
|
41
|
+
struct TypeCount<Z_FOR_##parameter_count##_APPEND_INDEX(T, Z_COMMA)> { \
|
42
|
+
enum {value = parameter_count}; \
|
43
|
+
};
|
44
|
+
|
45
|
+
Z_FOR_32_CALL_WITH_INDEX(Z_TEMPLATE_SPECIALIZATION, Z_EMPTY)
|
46
|
+
# undef Z_TEMPLATE_SPECIALIZATION
|
47
|
+
|
48
|
+
}
|
49
|
+
|
50
|
+
#endif
|
51
|
+
|
52
|
+
#endif // _Z_traits_TypeCount_HPP_
|
@@ -0,0 +1,376 @@
|
|
1
|
+
/* Z Kit - traits/TypeList.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_traits_TypeList_HPP_
|
9
|
+
#define _Z_traits_TypeList_HPP_
|
10
|
+
|
11
|
+
#include <Z/inspection/language.h>
|
12
|
+
|
13
|
+
#if Z_LANGUAGE_HAS(CPP, VARIADIC_TEMPLATE_EXTENDED_PARAMETERS)
|
14
|
+
# define Z_HAS_TRAIT_TypeList TRUE
|
15
|
+
# define Z_HAS_TRAIT_TypeListSize TRUE
|
16
|
+
# define Z_HAS_TRAIT_TypeListAppend TRUE
|
17
|
+
# define Z_HAS_TRAIT_TypeListFirst TRUE
|
18
|
+
# define Z_HAS_TRAIT_TypeListGet TRUE
|
19
|
+
# define Z_HAS_TRAIT_TypeListJoin TRUE
|
20
|
+
# define Z_HAS_TRAIT_TypeListLast TRUE
|
21
|
+
# define Z_HAS_TRAIT_TypeListPrepend TRUE
|
22
|
+
# define Z_HAS_TRAIT_TypeListRename TRUE
|
23
|
+
# define Z_HAS_TRAIT_TypeListRemove TRUE
|
24
|
+
# define Z_HAS_TRAIT_TypeListRemoveFirst TRUE
|
25
|
+
# define Z_HAS_TRAIT_TypeListRemoveHead TRUE
|
26
|
+
# define Z_HAS_TRAIT_TypeListRemoveLast TRUE
|
27
|
+
# define Z_HAS_TRAIT_TypeListRemoveTail TRUE
|
28
|
+
# define Z_HAS_TRAIT_TypeListReverse TRUE
|
29
|
+
# define Z_HAS_TRAIT_TypeListRotateLeft TRUE
|
30
|
+
# define Z_HAS_TRAIT_TypeListRotateRight TRUE
|
31
|
+
# define Z_HAS_TRAIT_TypeListToFunction TRUE
|
32
|
+
# define Z_HAS_TRAIT_TypeListTransform TRUE
|
33
|
+
#else
|
34
|
+
# define Z_HAS_TRAIT_TypeList FALSE
|
35
|
+
# define Z_HAS_TRAIT_TypeListSize FALSE
|
36
|
+
# define Z_HAS_TRAIT_TypeListAppend FALSE
|
37
|
+
# define Z_HAS_TRAIT_TypeListFirst FALSE
|
38
|
+
# define Z_HAS_TRAIT_TypeListGet FALSE
|
39
|
+
# define Z_HAS_TRAIT_TypeListJoin FALSE
|
40
|
+
# define Z_HAS_TRAIT_TypeListLast FALSE
|
41
|
+
# define Z_HAS_TRAIT_TypeListPrepend FALSE
|
42
|
+
# define Z_HAS_TRAIT_TypeListRename FALSE
|
43
|
+
# define Z_HAS_TRAIT_TypeListRemove FALSE
|
44
|
+
# define Z_HAS_TRAIT_TypeListRemoveFirst FALSE
|
45
|
+
# define Z_HAS_TRAIT_TypeListRemoveHead FALSE
|
46
|
+
# define Z_HAS_TRAIT_TypeListRemoveLast FALSE
|
47
|
+
# define Z_HAS_TRAIT_TypeListRemoveTail FALSE
|
48
|
+
# define Z_HAS_TRAIT_TypeListReverse FALSE
|
49
|
+
# define Z_HAS_TRAIT_TypeListRotateLeft FALSE
|
50
|
+
# define Z_HAS_TRAIT_TypeListRotateRight FALSE
|
51
|
+
# define Z_HAS_TRAIT_TypeListToFunction FALSE
|
52
|
+
# define Z_HAS_TRAIT_TypeListTransform FALSE
|
53
|
+
#endif
|
54
|
+
|
55
|
+
#if Z_LANGUAGE_HAS(CPP, VARIADIC_TEMPLATE_EXTENDED_PARAMETERS) && \
|
56
|
+
Z_LANGUAGE_HAS(CPP, TEMPLATE_ALIAS)
|
57
|
+
|
58
|
+
# define Z_TRAIT_TypeList_HAS_append TRUE
|
59
|
+
# define Z_TRAIT_TypeList_HAS_get TRUE
|
60
|
+
# define Z_TRAIT_TypeList_HAS_prepend TRUE
|
61
|
+
# define Z_TRAIT_TypeList_HAS_remove TRUE
|
62
|
+
# define Z_TRAIT_TypeList_HAS_remove_head TRUE
|
63
|
+
# define Z_TRAIT_TypeList_HAS_remove_tail TRUE
|
64
|
+
# define Z_TRAIT_TypeList_HAS_rename TRUE
|
65
|
+
# define Z_TRAIT_TypeList_HAS_rotate_left TRUE
|
66
|
+
# define Z_TRAIT_TypeList_HAS_rotate_right TRUE
|
67
|
+
# define Z_TRAIT_TypeList_HAS_to_function TRUE
|
68
|
+
# define Z_TRAIT_TypeList_HAS_transform TRUE
|
69
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_append TRUE
|
70
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_first TRUE
|
71
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_get TRUE
|
72
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_last TRUE
|
73
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_prepend TRUE
|
74
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove TRUE
|
75
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_first TRUE
|
76
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_head TRUE
|
77
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_last TRUE
|
78
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_tail TRUE
|
79
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_rename TRUE
|
80
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_reverse TRUE
|
81
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_rotate_left TRUE
|
82
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_rotate_right TRUE
|
83
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_to_function TRUE
|
84
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_transform TRUE
|
85
|
+
#else
|
86
|
+
# define Z_TRAIT_TypeList_HAS_append FALSE
|
87
|
+
# define Z_TRAIT_TypeList_HAS_get FALSE
|
88
|
+
# define Z_TRAIT_TypeList_HAS_prepend FALSE
|
89
|
+
# define Z_TRAIT_TypeList_HAS_remove FALSE
|
90
|
+
# define Z_TRAIT_TypeList_HAS_remove_head FALSE
|
91
|
+
# define Z_TRAIT_TypeList_HAS_remove_tail FALSE
|
92
|
+
# define Z_TRAIT_TypeList_HAS_rename FALSE
|
93
|
+
# define Z_TRAIT_TypeList_HAS_rotate_left FALSE
|
94
|
+
# define Z_TRAIT_TypeList_HAS_rotate_right FALSE
|
95
|
+
# define Z_TRAIT_TypeList_HAS_to_function FALSE
|
96
|
+
# define Z_TRAIT_TypeList_HAS_transform FALSE
|
97
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_append FALSE
|
98
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_first FALSE
|
99
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_get FALSE
|
100
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_last FALSE
|
101
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_prepend FALSE
|
102
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove FALSE
|
103
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_first FALSE
|
104
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_head FALSE
|
105
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_last FALSE
|
106
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_remove_tail FALSE
|
107
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_rename FALSE
|
108
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_reverse FALSE
|
109
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_rotate_left FALSE
|
110
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_rotate_right FALSE
|
111
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_to_function FALSE
|
112
|
+
# define Z_HAS_TRAIT_ALIAS_type_list_transform FALSE
|
113
|
+
#endif
|
114
|
+
|
115
|
+
#if Z_LANGUAGE_HAS(CPP, VARIADIC_TEMPLATE_EXTENDED_PARAMETERS)
|
116
|
+
|
117
|
+
# include <Z/traits/SelectType.hpp>
|
118
|
+
# include <Z/traits/TypeCount.hpp>
|
119
|
+
|
120
|
+
namespace Zeta {
|
121
|
+
|
122
|
+
template <class L> struct TypeListSize;
|
123
|
+
|
124
|
+
template <template <class...> class L, class... A> struct TypeListSize<L<A...> > {
|
125
|
+
enum {value = TypeCount<A...>::value};
|
126
|
+
};
|
127
|
+
|
128
|
+
template <class L, class... types> struct TypeListAppend;
|
129
|
+
|
130
|
+
template <template <class...> class L, class... A, class... T>
|
131
|
+
struct TypeListAppend<L<A...>, T...> {
|
132
|
+
typedef L<A..., T...> type;
|
133
|
+
};
|
134
|
+
|
135
|
+
template <class L> struct TypeListFirst;
|
136
|
+
|
137
|
+
template <template <class...> class L, class A>
|
138
|
+
struct TypeListFirst<L<A> > {
|
139
|
+
typedef A type;
|
140
|
+
};
|
141
|
+
|
142
|
+
template <template <class...> class L, class A0, class... A>
|
143
|
+
struct TypeListFirst<L<A0, A...> > {
|
144
|
+
typedef A0 type;
|
145
|
+
};
|
146
|
+
|
147
|
+
template <class L, UInt index> struct TypeListGet;
|
148
|
+
|
149
|
+
template <template <class...> class L, class... A, UInt I>
|
150
|
+
struct TypeListGet<L<A...>, I> {
|
151
|
+
typedef typename SelectType<I, A...>::type type;
|
152
|
+
};
|
153
|
+
|
154
|
+
template <class L0, class... L> struct TypeListJoin;
|
155
|
+
|
156
|
+
template <class L>
|
157
|
+
struct TypeListJoin<L> {
|
158
|
+
typedef L type;
|
159
|
+
};
|
160
|
+
|
161
|
+
template <class L0, template <class...> class L1, class... A1, class... L>
|
162
|
+
struct TypeListJoin<L0, L1<A1...>, L...> {
|
163
|
+
typedef typename TypeListJoin<typename TypeListAppend<L0, A1...>::type, L...>::type type;
|
164
|
+
};
|
165
|
+
|
166
|
+
template <class L> struct TypeListLast;
|
167
|
+
|
168
|
+
template <template <class...> class L, class A>
|
169
|
+
struct TypeListLast<L<A> > {
|
170
|
+
typedef A type;
|
171
|
+
};
|
172
|
+
|
173
|
+
template <template <class...> class L, class... A>
|
174
|
+
struct TypeListLast<L<A...> > {
|
175
|
+
typedef typename SelectType<TypeCount<A...>::value
|
176
|
+
? TypeCount<A...>::value - 1
|
177
|
+
: 0, A...
|
178
|
+
>::type type;
|
179
|
+
};
|
180
|
+
|
181
|
+
template <class L, class... types> struct TypeListPrepend;
|
182
|
+
|
183
|
+
template <template <class...> class L, class... A, class... T>
|
184
|
+
struct TypeListPrepend<L<A...>, T...> {
|
185
|
+
typedef L<T..., A...> type;
|
186
|
+
};
|
187
|
+
|
188
|
+
template <class L, template <class...> class to> struct TypeListRename;
|
189
|
+
|
190
|
+
template <template <class...> class L, class... A, template <class...> class to>
|
191
|
+
struct TypeListRename<L<A...>, to> {
|
192
|
+
typedef to<A...> type;
|
193
|
+
};
|
194
|
+
|
195
|
+
template <class L, UInt index> struct TypeListRemove;
|
196
|
+
|
197
|
+
template <template <class...> class L, class A0, class... A>
|
198
|
+
struct TypeListRemove<L<A0, A...>, 0> {
|
199
|
+
typedef L<A...> type;
|
200
|
+
};
|
201
|
+
|
202
|
+
template <template <class...> class L, class A0, class... A, UInt I>
|
203
|
+
struct TypeListRemove<L<A0, A...>, I> {
|
204
|
+
typedef typename TypeListPrepend<typename TypeListRemove<L<A...>, I - 1>::type, A0>::type type;
|
205
|
+
};
|
206
|
+
|
207
|
+
template <class L> struct TypeListRemoveFirst;
|
208
|
+
|
209
|
+
template <template <class...> class L>
|
210
|
+
struct TypeListRemoveFirst<L<> > {
|
211
|
+
typedef L<> type;
|
212
|
+
};
|
213
|
+
|
214
|
+
template <template <class...> class L, class A0, class... A>
|
215
|
+
struct TypeListRemoveFirst<L<A0, A...> > {
|
216
|
+
typedef L<A...> type;
|
217
|
+
};
|
218
|
+
|
219
|
+
template <class L, UInt head_size> struct TypeListRemoveHead;
|
220
|
+
|
221
|
+
template <template <class...> class L, class... A>
|
222
|
+
struct TypeListRemoveHead<L<A...>, 0> {
|
223
|
+
typedef L<A...> type;
|
224
|
+
};
|
225
|
+
|
226
|
+
template <template <class...> class L, class... A, UInt S>
|
227
|
+
struct TypeListRemoveHead<L<A...>, S> {
|
228
|
+
typedef typename TypeListRemoveHead<typename TypeListRemoveFirst<L<A...> >::type, S - 1>::type type;
|
229
|
+
};
|
230
|
+
|
231
|
+
template <class L> struct TypeListRemoveLast;
|
232
|
+
|
233
|
+
template <template <class...> class L>
|
234
|
+
struct TypeListRemoveLast<L<> > {
|
235
|
+
typedef L<> type;
|
236
|
+
};
|
237
|
+
|
238
|
+
template <template <class...> class L, class... A>
|
239
|
+
struct TypeListRemoveLast<L<A...> > {
|
240
|
+
typedef typename TypeListRemove<L<A...>, TypeCount<A...>::value - 1>::type type;
|
241
|
+
};
|
242
|
+
|
243
|
+
template <class L, UInt tail_size> struct TypeListRemoveTail;
|
244
|
+
|
245
|
+
template <template <class...> class L, class... A>
|
246
|
+
struct TypeListRemoveTail<L<A...>, 0> {
|
247
|
+
typedef L<A...> type;
|
248
|
+
};
|
249
|
+
|
250
|
+
template <template <class...> class L, class... A, UInt S>
|
251
|
+
struct TypeListRemoveTail<L<A...>, S> {
|
252
|
+
typedef typename TypeListRemoveTail<typename TypeListRemoveLast<L<A...> >::type, S - 1>::type type;
|
253
|
+
};
|
254
|
+
|
255
|
+
template <class L> struct TypeListReverse;
|
256
|
+
|
257
|
+
template <template <class...> class L>
|
258
|
+
struct TypeListReverse<L<> > {
|
259
|
+
typedef L<> type;
|
260
|
+
};
|
261
|
+
|
262
|
+
template <template <class...> class L, class A0, class... A>
|
263
|
+
struct TypeListReverse<L<A0, A...> > {
|
264
|
+
typedef typename TypeListAppend<typename TypeListReverse<L<A...> >::type, A0>::type type;
|
265
|
+
};
|
266
|
+
|
267
|
+
template <class L, UInt rotation> struct TypeListRotateLeft;
|
268
|
+
|
269
|
+
template <template <class...> class L, UInt R>
|
270
|
+
struct TypeListRotateLeft<L<>, R> {
|
271
|
+
typedef L<> type;
|
272
|
+
};
|
273
|
+
|
274
|
+
template <template <class...> class L, class... A, UInt R>
|
275
|
+
struct TypeListRotateLeft<L<A...>, R> {
|
276
|
+
typedef typename TypeListJoin<
|
277
|
+
typename TypeListRemoveHead<L<A...>, R % TypeCount<A...>::value>::type,
|
278
|
+
typename TypeListRemoveTail<L<A...>, TypeCount<A...>::value - (R % TypeCount<A...>::value)>::type
|
279
|
+
>::type type;
|
280
|
+
};
|
281
|
+
|
282
|
+
template <class L, UInt rotation> struct TypeListRotateRight;
|
283
|
+
|
284
|
+
template <template <class...> class L, UInt R>
|
285
|
+
struct TypeListRotateRight<L<>, R> {
|
286
|
+
typedef L<> type;
|
287
|
+
};
|
288
|
+
|
289
|
+
template <template <class...> class L, class... A, UInt R>
|
290
|
+
struct TypeListRotateRight<L<A...>, R> {
|
291
|
+
typedef typename TypeListJoin<
|
292
|
+
typename TypeListRemoveHead<L<A...>, TypeCount<A...>::value - (R % TypeCount<A...>::value)>::type,
|
293
|
+
typename TypeListRemoveTail<L<A...>, R % TypeCount<A...>::value>::type
|
294
|
+
>::type type;
|
295
|
+
};
|
296
|
+
|
297
|
+
template <class L, class function_model> struct TypeListToFunction;
|
298
|
+
|
299
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) > {typedef R type(A...) ;};
|
300
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) const > {typedef R type(A...) const ;};
|
301
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) const volatile> {typedef R type(A...) const volatile;};
|
302
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) volatile> {typedef R type(A...) volatile;};
|
303
|
+
|
304
|
+
# if Z_LANGUAGE_HAS(CPP, REFERENCE_QUALIFIED_NON_STATIC_MEMBER_FUNCTION)
|
305
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) & > {typedef R type(A...) & ;};
|
306
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) &&> {typedef R type(A...) &&;};
|
307
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) const & > {typedef R type(A...) const & ;};
|
308
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) const &&> {typedef R type(A...) const &&;};
|
309
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) const volatile & > {typedef R type(A...) const volatile & ;};
|
310
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) const volatile &&> {typedef R type(A...) const volatile &&;};
|
311
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) volatile & > {typedef R type(A...) volatile & ;};
|
312
|
+
template <template <class...> class L, class... A, class R, class... P> struct TypeListToFunction<L<A...>, R(P...) volatile &&> {typedef R type(A...) volatile &&;};
|
313
|
+
# endif
|
314
|
+
|
315
|
+
template <class L, template <class...> class metafunction> struct TypeListTransform;
|
316
|
+
|
317
|
+
template <template <class...> class L, template <class...> class M>
|
318
|
+
struct TypeListTransform<L<>, M> {
|
319
|
+
typedef L<> type;
|
320
|
+
};
|
321
|
+
|
322
|
+
template <template <class...> class L, class A0, class... A, template <class...> class M>
|
323
|
+
struct TypeListTransform<L<A0, A...>, M> {
|
324
|
+
typedef typename TypeListPrepend<
|
325
|
+
typename TypeListTransform<L<A...>, M>::type,
|
326
|
+
typename M<A0>::type
|
327
|
+
>::type type;
|
328
|
+
};
|
329
|
+
|
330
|
+
template <class... A> struct TypeList {
|
331
|
+
enum {size = TypeCount<A...>::value};
|
332
|
+
|
333
|
+
typedef typename TypeListFirst <TypeList>::type first;
|
334
|
+
typedef typename TypeListLast <TypeList>::type last;
|
335
|
+
typedef typename TypeListRemoveFirst<TypeList>::type remove_first;
|
336
|
+
typedef typename TypeListRemoveLast <TypeList>::type remove_last;
|
337
|
+
typedef typename TypeListReverse <TypeList>::type reverse;
|
338
|
+
|
339
|
+
# if Z_LANGUAGE_HAS(CPP, TEMPLATE_ALIAS)
|
340
|
+
template <class... types > using append = TypeList<A..., types...>;
|
341
|
+
template <UInt index > using get = typename SelectType<index, A...>::type;
|
342
|
+
template <class... types > using prepend = TypeList<types..., A...>;
|
343
|
+
template <UInt index > using remove = typename TypeListRemove <TypeList, index >::type;
|
344
|
+
template <UInt head_size > using remove_head = typename TypeListRemoveHead <TypeList, head_size >::type;
|
345
|
+
template <UInt tail_size > using remove_tail = typename TypeListRemoveTail <TypeList, tail_size >::type;
|
346
|
+
template <template <class...> class to > using rename = typename TypeListRename <TypeList, to >::type;
|
347
|
+
template <UInt rotation > using rotate_left = typename TypeListRotateLeft <TypeList, rotation >::type;
|
348
|
+
template <UInt rotation > using rotate_right = typename TypeListRotateRight<TypeList, rotation >::type;
|
349
|
+
template <class function_model> using to_function = typename TypeListToFunction <TypeList, function_model>::type;
|
350
|
+
template <template <class...> class metafunction > using transform = typename TypeListTransform <TypeList, metafunction >::type;
|
351
|
+
# endif
|
352
|
+
};
|
353
|
+
|
354
|
+
# if Z_LANGUAGE_HAS(CPP, TEMPLATE_ALIAS)
|
355
|
+
template <class L, class... types > using type_list_append = typename TypeListAppend <L, types... >::type;
|
356
|
+
template <class L > using type_list_first = typename TypeListFirst <L >::type;
|
357
|
+
template <class L, UInt index > using type_list_get = typename TypeListGet <L, index >::type;
|
358
|
+
template <class L > using type_list_last = typename TypeListLast <L >::type;
|
359
|
+
template <class L, class... types > using type_list_prepend = typename TypeListPrepend <L, types... >::type;
|
360
|
+
template <class L, UInt index > using type_list_remove = typename TypeListRemove <L, index >::type;
|
361
|
+
template <class L > using type_list_remove_first = typename TypeListRemoveFirst<L >::type;
|
362
|
+
template <class L, UInt head_size > using type_list_remove_head = typename TypeListRemoveHead <L, head_size >::type;
|
363
|
+
template <class L > using type_list_remove_last = typename TypeListRemoveLast <L >::type;
|
364
|
+
template <class L, UInt head_size > using type_list_remove_tail = typename TypeListRemoveTail <L, head_size >::type;
|
365
|
+
template <class L, template <class...> class to > using type_list_rename = typename TypeListRename <L, to >::type;
|
366
|
+
template <class L > using type_list_reverse = typename TypeListReverse <L >::type;
|
367
|
+
template <class L, UInt rotation > using type_list_rotate_left = typename TypeListRotateLeft <L, rotation >::type;
|
368
|
+
template <class L, UInt rotation > using type_list_rotate_right = typename TypeListRotateRight<L, rotation >::type;
|
369
|
+
template <class L, class function_model> using type_list_to_function = typename TypeListToFunction <L, function_model>::type;
|
370
|
+
template <class L, template <class...> class metafunction > using type_list_transform = typename TypeListTransform <L, metafunction >::type;
|
371
|
+
# endif
|
372
|
+
}
|
373
|
+
|
374
|
+
#endif
|
375
|
+
|
376
|
+
#endif // _Z_traits_TypeList_HPP_
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/* Z Kit - traits/base.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_traits_base_HPP_
|
9
|
+
#define _Z_traits_base_HPP_
|
10
|
+
|
11
|
+
#include <Z/macros/language.hpp>
|
12
|
+
|
13
|
+
namespace Zeta {
|
14
|
+
struct Empty {};
|
15
|
+
struct True {enum {value = true };};
|
16
|
+
struct False {enum {value = false};};
|
17
|
+
}
|
18
|
+
|
19
|
+
#endif // _Z_traits_base_HPP_
|
@@ -0,0 +1,30 @@
|
|
1
|
+
/* Z Kit - traits/filtering.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_traits_filtering_HPP_
|
9
|
+
#define _Z_traits_filtering_HPP_
|
10
|
+
|
11
|
+
#include <Z/types/base.hpp>
|
12
|
+
|
13
|
+
#if Z_LANGUAGE_HAS(CPP, SFINAE)
|
14
|
+
|
15
|
+
namespace Zeta {
|
16
|
+
template <Boolean B, class T> struct EnableIf {};
|
17
|
+
template <Boolean B, class T> struct DisableIf {};
|
18
|
+
|
19
|
+
template <class T> struct EnableIf <true, T> {typedef T type;};
|
20
|
+
template <class T> struct DisableIf<false, T> {typedef T type;};
|
21
|
+
}
|
22
|
+
|
23
|
+
# define Z_HAS_TRAIT_ENABLE_IF TRUE
|
24
|
+
# define Z_HAS_TRAIT_DISABLE_IF TRUE
|
25
|
+
#else
|
26
|
+
# define Z_HAS_TRAIT_ENABLE_IF FALSE
|
27
|
+
# define Z_HAS_TRAIT_DISABLE_IF FALSE
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#endif // _Z_traits_filtering_HPP_
|
@@ -0,0 +1,48 @@
|
|
1
|
+
/* Z Kit - traits/mathematics.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_traits_mathematics_HPP_
|
9
|
+
#define _Z_traits_mathematics_HPP_
|
10
|
+
|
11
|
+
#include <Z/types/base.hpp>
|
12
|
+
|
13
|
+
namespace Zeta {
|
14
|
+
|
15
|
+
template <UIntMax N> struct Factorial {
|
16
|
+
enum {value = N * Factorial<N - 1>::value};
|
17
|
+
};
|
18
|
+
|
19
|
+
template <> struct Factorial<0> {enum {value = 1};};
|
20
|
+
|
21
|
+
template <UIntMax N> struct TriangularNumber {
|
22
|
+
enum {value = N + TriangularNumber<N - 1>::value};
|
23
|
+
};
|
24
|
+
|
25
|
+
template <> struct TriangularNumber<0> {enum {value = 0};};
|
26
|
+
|
27
|
+
template <UIntMax base, UIntMax exponent> struct NaturalPower {
|
28
|
+
enum {value = base * NaturalPower<base, exponent - 1>::value};
|
29
|
+
};
|
30
|
+
|
31
|
+
template <UIntMax base> struct NaturalPower<base, 0> {enum {value = 1};};
|
32
|
+
|
33
|
+
template <SIntMax base, UIntMax exponent> struct IntegerPower {
|
34
|
+
enum {value = base * IntegerPower<base, exponent - 1>::value};
|
35
|
+
};
|
36
|
+
|
37
|
+
template <SIntMax base> struct IntegerPower<base, 0> {enum {value = 1};};
|
38
|
+
|
39
|
+
|
40
|
+
template <UIntMax N> struct Logarithm2 {
|
41
|
+
enum {value = Logarithm2<N / 2>::value + 1};
|
42
|
+
};
|
43
|
+
|
44
|
+
template <> struct Logarithm2<1> {enum {value = 0};};
|
45
|
+
template <> struct Logarithm2<0> {enum {value = 0};};
|
46
|
+
}
|
47
|
+
|
48
|
+
#endif // _Z_traits_mathematics_HPP_
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/* Z Kit - types/arguments.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_types_arguments_H_
|
9
|
+
#define _Z_types_arguments_H_
|
10
|
+
|
11
|
+
#include <Z/inspection/compiler.h>
|
12
|
+
|
13
|
+
#if Z_COMPILER_HAS_TYPE(VAL)
|
14
|
+
typedef Z_COMPILER_TYPE(VAL) ZVAL;
|
15
|
+
#else
|
16
|
+
typedef void* ZVAL;
|
17
|
+
#endif
|
18
|
+
|
19
|
+
#endif /* _Z_types_arguments_H_ */
|