script_core 0.0.6 → 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 +4 -4
- data/.rubocop.yml +7 -1
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/Gemfile +8 -1
- data/{LICENSE → MIT-LICENSE} +0 -0
- data/bootstrap.sh +1 -1
- data/dev.yml +1 -2
- data/ext/enterprise_script_service/Rakefile +7 -1
- data/ext/enterprise_script_service/data.cpp +21 -11
- data/ext/enterprise_script_service/libseccomp/.gitignore +4 -0
- data/ext/enterprise_script_service/libseccomp/.mailmap +10 -0
- data/ext/enterprise_script_service/libseccomp/.travis.yml +71 -0
- data/ext/enterprise_script_service/libseccomp/CHANGELOG +33 -0
- data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +134 -0
- data/ext/enterprise_script_service/libseccomp/CREDITS +16 -1
- data/ext/enterprise_script_service/libseccomp/Makefile.am +32 -1
- data/ext/enterprise_script_service/libseccomp/README.md +113 -0
- data/ext/enterprise_script_service/libseccomp/RELEASE_PROCESS.md +97 -0
- data/ext/enterprise_script_service/libseccomp/configure.ac +8 -1
- data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +3 -1
- data/ext/enterprise_script_service/libseccomp/doc/credits_updater +35 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man1/scmp_sys_resolver.1 +3 -1
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +101 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_set.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +1 -1
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +23 -4
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +2 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +80 -15
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_resolve_name.3 +15 -1
- data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +185 -22
- data/ext/enterprise_script_service/libseccomp/src/Makefile.am +13 -4
- data/ext/enterprise_script_service/libseccomp/src/api.c +87 -8
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +18 -7
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +2 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +17 -6
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +17 -6
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +17 -6
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +17 -6
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +510 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc.c +22 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +38 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +22 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +18 -7
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +18 -7
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +19 -7
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +43 -45
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +2 -3
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +18 -7
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +43 -45
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +2 -3
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-check.c +56 -53
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +23 -18
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +52 -49
- data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +17 -6
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +18 -7
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +41 -45
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +2 -3
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +17 -6
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -1
- data/ext/enterprise_script_service/libseccomp/src/arch.c +48 -83
- data/ext/enterprise_script_service/libseccomp/src/arch.h +4 -21
- data/ext/enterprise_script_service/libseccomp/src/db.c +1184 -541
- data/ext/enterprise_script_service/libseccomp/src/db.h +12 -32
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +43 -24
- data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +20 -7
- data/ext/enterprise_script_service/libseccomp/src/hash.c +65 -649
- data/ext/enterprise_script_service/libseccomp/src/hash.h +3 -13
- data/ext/enterprise_script_service/libseccomp/src/helper.c +49 -0
- data/ext/enterprise_script_service/libseccomp/src/helper.h +27 -0
- data/ext/enterprise_script_service/libseccomp/src/python/Makefile.am +9 -4
- data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +9 -0
- data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +72 -8
- data/ext/enterprise_script_service/libseccomp/src/python/setup.py +0 -0
- data/ext/enterprise_script_service/libseccomp/src/system.c +137 -4
- data/ext/enterprise_script_service/libseccomp/src/system.h +32 -2
- data/ext/enterprise_script_service/libseccomp/tests/.gitignore +17 -0
- data/ext/enterprise_script_service/libseccomp/tests/01-sim-allow.tests +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/05-sim-long_jumps.tests +18 -18
- data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.c +12 -0
- data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.py +4 -0
- data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +13 -8
- data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.c +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.py +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.tests +27 -27
- data/ext/enterprise_script_service/libseccomp/tests/09-sim-syscall_priority_pre.tests +7 -7
- data/ext/enterprise_script_service/libseccomp/tests/10-sim-syscall_priority_post.tests +7 -7
- data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +12 -0
- data/ext/enterprise_script_service/libseccomp/tests/12-sim-basic_masked_ops.tests +29 -29
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +37 -0
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -0
- data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +79 -21
- data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.py +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +44 -0
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +4 -0
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.c +6 -6
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.py +6 -6
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +12 -12
- data/ext/enterprise_script_service/libseccomp/tests/20-live-basic_die.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/20-live-basic_die.tests +4 -4
- data/ext/enterprise_script_service/libseccomp/tests/21-live-basic_allow.py +2 -0
- data/ext/enterprise_script_service/libseccomp/tests/21-live-basic_allow.tests +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/24-live-arg_allow.py +3 -2
- data/ext/enterprise_script_service/libseccomp/tests/24-live-arg_allow.tests +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/25-sim-multilevel_chains_adv.tests +6 -6
- data/ext/enterprise_script_service/libseccomp/tests/26-sim-arch_all_be_basic.c +6 -0
- data/ext/enterprise_script_service/libseccomp/tests/26-sim-arch_all_be_basic.py +2 -0
- data/ext/enterprise_script_service/libseccomp/tests/27-sim-bpf_blk_state.tests +5 -5
- data/ext/enterprise_script_service/libseccomp/tests/28-sim-arch_x86.py +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/29-sim-pseudo_syscall.py +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/32-live-tsync_allow.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/32-live-tsync_allow.tests +2 -2
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.c +74 -0
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.py +45 -0
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.c +73 -0
- data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.py +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.tests +18 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +112 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +56 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +39 -0
- data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.c +109 -0
- data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.py +55 -0
- data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.tests +27 -0
- data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.c +104 -0
- data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.sh +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +67 -0
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +68 -0
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.c +59 -0
- data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.py +47 -0
- data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.tests +21 -0
- data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.c +63 -0
- data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.py +44 -0
- data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.tests +19 -0
- data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.c +198 -0
- data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.py +128 -0
- data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.tests +54 -0
- data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.c +132 -0
- data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.py +62 -0
- data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.tests +55 -0
- data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.c +178 -0
- data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.py +107 -0
- data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.c +108 -0
- data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.py +48 -0
- data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.tests +16 -0
- data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.c +78 -0
- data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.py +47 -0
- data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.tests +16 -0
- data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +102 -0
- data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.py +68 -0
- data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.c +84 -0
- data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.py +50 -0
- data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.tests +38 -0
- data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.c +56 -0
- data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.py +45 -0
- data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.tests +25 -0
- data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +68 -6
- data/ext/enterprise_script_service/libseccomp/tests/miniseq.c +3 -2
- data/ext/enterprise_script_service/libseccomp/tests/regression +102 -10
- data/ext/enterprise_script_service/libseccomp/tests/util.c +4 -0
- data/ext/enterprise_script_service/libseccomp/tests/util.py +2 -2
- data/ext/enterprise_script_service/libseccomp/tools/.gitignore +1 -0
- data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +5 -1
- data/ext/enterprise_script_service/libseccomp/tools/bpf.h +8 -1
- data/ext/enterprise_script_service/libseccomp/tools/scmp_api_level.c +39 -0
- data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +6 -0
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +14 -2
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +12 -2
- data/ext/enterprise_script_service/libseccomp/tools/util.c +4 -0
- data/ext/enterprise_script_service/mruby/.gitignore +15 -8
- data/ext/enterprise_script_service/mruby/.travis.yml +3 -4
- data/ext/enterprise_script_service/mruby/.yardopts +1 -1
- data/ext/enterprise_script_service/mruby/AUTHORS +6 -2
- data/ext/enterprise_script_service/mruby/LEGAL +1 -1
- data/ext/enterprise_script_service/mruby/LICENSE +20 -0
- data/ext/enterprise_script_service/mruby/README.md +2 -2
- data/ext/enterprise_script_service/mruby/Rakefile +28 -12
- data/ext/enterprise_script_service/mruby/TODO +0 -2
- data/ext/enterprise_script_service/mruby/appveyor.yml +11 -7
- data/ext/enterprise_script_service/mruby/benchmark/bm_app_lc_fizzbuzz.rb +1 -2
- data/ext/enterprise_script_service/mruby/build_config.rb +3 -2
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +7 -2
- data/ext/enterprise_script_service/mruby/doc/limitations.md +69 -7
- data/ext/enterprise_script_service/mruby/doc/opcode.md +127 -0
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +2 -2
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +9 -3
- data/ext/enterprise_script_service/mruby/include/mruby.h +45 -34
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +17 -0
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +1 -1
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +12 -4
- data/ext/enterprise_script_service/mruby/include/mruby/class.h +18 -15
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +6 -1
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +6 -5
- data/ext/enterprise_script_service/mruby/include/mruby/data.h +5 -4
- data/ext/enterprise_script_service/mruby/include/mruby/debug.h +5 -5
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +2 -2
- data/ext/enterprise_script_service/mruby/include/mruby/error.h +1 -1
- data/ext/enterprise_script_service/mruby/include/mruby/hash.h +56 -9
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +17 -4
- data/ext/enterprise_script_service/mruby/include/mruby/object.h +5 -6
- data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +47 -139
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +117 -0
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +8 -8
- data/ext/enterprise_script_service/mruby/include/mruby/range.h +29 -5
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +20 -10
- data/ext/enterprise_script_service/mruby/include/mruby/throw.h +4 -4
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +4 -0
- data/ext/enterprise_script_service/mruby/include/mruby/variable.h +7 -4
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +7 -7
- data/ext/enterprise_script_service/mruby/lib/mruby-core-ext.rb +23 -17
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +35 -9
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +5 -5
- data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +5 -3
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +26 -27
- data/ext/enterprise_script_service/mruby/minirake +136 -15
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +54 -50
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +3 -46
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +9 -24
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +23 -0
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-bin-mruby-config → mruby-bin-config}/mruby-config +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-bin-mruby-config → mruby-bin-config}/mruby-config.bat +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +13 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +9 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +7 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +7 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +24 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +8 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +22 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +84 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +9 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +38 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +60 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +1 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/mrblib/module.rb +89 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/test/module.rb +55 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +918 -767
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/node.h +4 -20
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +552 -273
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrbgem.rake +6 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb +60 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/test/enum_chain.rb +76 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +57 -37
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +47 -35
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +22 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +90 -40
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +33 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +15 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +42 -47
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +4 -47
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +0 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +12 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.rb +17 -50
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +11 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +128 -117
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +17 -21
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file_test.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +16 -53
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/mrblib/kernel.rb +2 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +12 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +7 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +31 -51
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +702 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +369 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/kernel.rb +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/method.rb +8 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +27 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +7 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/test/nil.rb +2 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +126 -79
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/test/pack.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +9 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.rb +18 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +7 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +0 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +13 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.gitignore +4 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis.yml +29 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis_build_config.rb +6 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +27 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/Rakefile +29 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/example/sleep.rb +3 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +135 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/test/sleep_test.rb +29 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/const.cstub +6 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/const.def +2 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +48 -20
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/addrinfo.rb +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/socket.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +14 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +6 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +96 -21
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +626 -190
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/test/string.rb +102 -59
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +15 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +16 -15
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/test/struct.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +0 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +13 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +21 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +22 -39
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +22 -23
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/include/mruby/time.h +25 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +26 -22
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrblib/array.rb +70 -40
- data/ext/enterprise_script_service/mruby/mrblib/enum.rb +4 -3
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +17 -46
- data/ext/enterprise_script_service/mruby/mrblib/kernel.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +1 -4
- data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrblib/string.rb +7 -8
- data/ext/enterprise_script_service/mruby/mrblib/symbol.rb +7 -0
- data/ext/enterprise_script_service/mruby/src/array.c +97 -44
- data/ext/enterprise_script_service/mruby/src/backtrace.c +14 -16
- data/ext/enterprise_script_service/mruby/src/class.c +156 -464
- data/ext/enterprise_script_service/mruby/src/codedump.c +436 -364
- data/ext/enterprise_script_service/mruby/src/debug.c +42 -45
- data/ext/enterprise_script_service/mruby/src/dump.c +27 -152
- data/ext/enterprise_script_service/mruby/src/enum.c +18 -2
- data/ext/enterprise_script_service/mruby/src/error.c +5 -4
- data/ext/enterprise_script_service/mruby/src/etc.c +1 -0
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +15 -1
- data/ext/enterprise_script_service/mruby/src/gc.c +76 -30
- data/ext/enterprise_script_service/mruby/src/hash.c +768 -256
- data/ext/enterprise_script_service/mruby/src/kernel.c +24 -446
- data/ext/enterprise_script_service/mruby/src/load.c +35 -35
- data/ext/enterprise_script_service/mruby/src/mruby_core.rake +2 -3
- data/ext/enterprise_script_service/mruby/src/numeric.c +96 -32
- data/ext/enterprise_script_service/mruby/src/object.c +88 -43
- data/ext/enterprise_script_service/mruby/src/proc.c +16 -14
- data/ext/enterprise_script_service/mruby/src/range.c +186 -176
- data/ext/enterprise_script_service/mruby/src/state.c +5 -5
- data/ext/enterprise_script_service/mruby/src/string.c +79 -93
- data/ext/enterprise_script_service/mruby/src/symbol.c +173 -85
- data/ext/enterprise_script_service/mruby/src/variable.c +283 -177
- data/ext/enterprise_script_service/mruby/src/vm.c +711 -688
- data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +4 -3
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +3 -2
- data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +1 -0
- data/ext/enterprise_script_service/mruby/tasks/toolchains/clang.rake +1 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +4 -6
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +0 -2
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +12 -11
- data/ext/enterprise_script_service/mruby/test/assert.rb +114 -121
- data/ext/enterprise_script_service/mruby/test/bintest.rb +10 -1
- data/ext/enterprise_script_service/mruby/test/t/array.rb +11 -11
- data/ext/enterprise_script_service/mruby/test/t/bs_block.rb +32 -31
- data/ext/enterprise_script_service/mruby/test/t/class.rb +11 -23
- data/ext/enterprise_script_service/mruby/test/t/codegen.rb +3 -3
- data/ext/enterprise_script_service/mruby/test/t/enumerable.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/float.rb +41 -2
- data/ext/enterprise_script_service/mruby/test/t/hash.rb +6 -5
- data/ext/enterprise_script_service/mruby/test/t/integer.rb +26 -44
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +7 -119
- data/ext/enterprise_script_service/mruby/test/t/literals.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/module.rb +93 -282
- data/ext/enterprise_script_service/mruby/test/t/numeric.rb +40 -11
- data/ext/enterprise_script_service/mruby/test/t/proc.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/range.rb +19 -2
- data/ext/enterprise_script_service/mruby/test/t/string.rb +17 -24
- data/ext/enterprise_script_service/mruby/test/t/symbol.rb +6 -2
- data/ext/enterprise_script_service/mruby/test/t/syntax.rb +191 -3
- data/ext/enterprise_script_service/mruby/travis_config.rb +1 -1
- data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
- data/ext/enterprise_script_service/mruby_engine.gembox +1 -0
- data/ext/enterprise_script_service/msgpack/.travis.yml +77 -44
- data/ext/enterprise_script_service/msgpack/CHANGELOG.md +75 -0
- data/ext/enterprise_script_service/msgpack/CMakeLists.txt +187 -50
- data/ext/enterprise_script_service/msgpack/Doxyfile +1 -1
- data/ext/enterprise_script_service/msgpack/Files.cmake +87 -0
- data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +3 -3
- data/ext/enterprise_script_service/msgpack/QUICKSTART-CPP.md +1 -1
- data/ext/enterprise_script_service/msgpack/README.md +15 -7
- data/ext/enterprise_script_service/msgpack/appveyor.yml +9 -5
- data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +2 -2
- data/ext/enterprise_script_service/msgpack/ci/build_regression.sh +49 -0
- data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_define_array.hpp.erb +4 -2
- data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_define_map.hpp.erb +2 -1
- data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_msgpack_tuple.hpp.erb +1 -1
- data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone.hpp.erb +25 -18
- data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone_decl.hpp.erb +8 -0
- data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +28 -1
- data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv.cpp +104 -0
- data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv_zlib.cpp +176 -0
- data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +4 -2
- data/ext/enterprise_script_service/msgpack/example/c/speed_test_uint32_array.c +1 -1
- data/ext/enterprise_script_service/msgpack/example/c/speed_test_uint64_array.c +1 -1
- data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +15 -3
- data/ext/enterprise_script_service/msgpack/example/cpp03/class_non_intrusive.cpp +1 -1
- data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +5 -1
- data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +12 -4
- data/ext/enterprise_script_service/msgpack/example/x3/parse.cpp +7 -1
- data/ext/enterprise_script_service/msgpack/example/x3/stream_unpack.cpp +9 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/.gitattributes +96 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/.gitignore +3 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/.project +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/.pydevproject +5 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/.travis.yml +109 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/appveyor.yml +149 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/build.jam +6 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/check/predef.jam +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/.gitignore +1 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/build.jam +100 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/hardware_simd.qbk +89 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/history.qbk +93 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/predef.qbk +734 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/todo.qbk +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/detail/endian.hpp +11 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef.h +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture.h +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/alpha.h +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/arm.h +80 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/blackfin.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/convex.h +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ia64.h +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/m68k.h +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/mips.h +73 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/parisc.h +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ppc.h +72 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ptx.h +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/pyramid.h +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/rs6k.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sparc.h +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/superh.h +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sys370.h +43 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sys390.h +43 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86.h +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86/32.h +87 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86/64.h +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/z.h +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler.h +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/borland.h +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/clang.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/comeau.h +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/compaq.h +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/diab.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/digitalmars.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/dignus.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/edg.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/ekopath.h +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/gcc.h +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/gcc_xml.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/greenhills.h +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/hp_acc.h +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/iar.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/ibm.h +72 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/intel.h +79 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/kai.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/llvm.h +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/metaware.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/metrowerks.h +77 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/microtec.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/mpw.h +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/nvcc.h +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/palm.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/pgi.h +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/sgi_mipspro.h +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/sunpro.h +76 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/tendra.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/visualc.h +105 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/watcom.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/_cassert.h +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/_exception.h +15 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/comp_detected.h +10 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/endian_compat.h +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/os_detected.h +10 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/platform_detected.h +10 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/test.h +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/test_def.h +71 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware.h +16 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd.h +119 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/arm.h +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/arm/versions.h +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/ppc.h +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/ppc/versions.h +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86.h +123 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86/versions.h +129 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86_amd.h +87 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86_amd/versions.h +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language.h +18 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/cuda.h +52 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/objc.h +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/stdc.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/stdcpp.h +121 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library.h +16 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c.h +21 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/_prefix.h +13 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/cloudabi.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/gnu.h +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/uc.h +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/vms.h +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/zos.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std.h +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/_prefix.h +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/cxx.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/dinkumware.h +52 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/libcomo.h +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/modena.h +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/msl.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/roguewave.h +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/sgi.h +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/stdcpp3.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/stlport.h +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/vacpp.h +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/make.h +97 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os.h +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/aix.h +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/amigaos.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/android.h +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/beos.h +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd.h +103 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/bsdi.h +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/dragonfly.h +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/free.h +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/net.h +84 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/open.h +251 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/cygwin.h +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/haiku.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/hpux.h +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/ios.h +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/irix.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/linux.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/macos.h +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/os400.h +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/qnxnto.h +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/solaris.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/unix.h +76 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/vms.h +52 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/windows.h +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other.h +16 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other/endian.h +203 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other/workaround.h +87 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform.h +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/cloudabi.h +43 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/ios.h +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw.h +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw32.h +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw64.h +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_desktop.h +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_phone.h +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_runtime.h +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_server.h +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_store.h +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_system.h +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_uwp.h +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/version.h +15 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/version_number.h +72 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/index.html +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/meta/libraries.json +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/.gitignore +3 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/build.jam +80 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/check_value.cpp +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_c.c +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_cpp.cpp +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_objc.m +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_objcpp.mm +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/macos_endian.c +21 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/macos_vs_bsd.c +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/make.cpp +94 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/platform_windows.cpp +177 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/predef_info.h +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/tested_at.cpp +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/tested_at_outdated.cpp +18 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/version.cpp +83 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/workaround.cpp +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/test/workaround_strict_config.cpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/build.jam +9 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef.jam +202 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check.h +98 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_c.c +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_cpp.cpp +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_objc.m +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_objcpp.mm +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc.h +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_c.c +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_cpp.cpp +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_objc.m +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_objcpp.mm +7 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/build_log.py +428 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/common.py +878 -0
- data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/library_test.py +198 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/.gitattributes +96 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/.travis.yml +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/appveyor.yml +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html +2494 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/acknowledgements.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/bibliography.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/contents.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/arrays.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/lists.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/sequences.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/tuples.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/array_arithmetic.c +196 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/catch_builtin.cpp +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/delay.c +95 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/duffs_device.c +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/is_integral.cpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/linear_fib.c +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers.html +249 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/add.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/dec.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/div.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/inc.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/mod.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/mul.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/sub.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array.html +43 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/data.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/elem.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/enum.html +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/insert.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/pop_back.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/pop_front.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/push_back.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/push_front.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/remove.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/replace.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/reverse.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/size.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_list.html +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_seq.html +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_tuple.html +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/assert_msg.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/cat.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comma.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comma_if.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/equal.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/greater.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/greater_equal.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/less.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/less_equal.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/not_equal.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/config/limits.html +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/config/variadics.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/deduce_d.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/expr_if.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/expr_iif.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/if.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/iif.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/while.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug/assert.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug/line.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/dec.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/empty.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_params.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_shifted.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_shifted_params.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/epwad.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/epwd.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/expand.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/expr_if.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/apply.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/empty.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/expand.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/identity.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/intercept.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/overload.html +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/for.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/identity.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/if.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/inc.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iterate.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/iterate.html +43 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/local.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/self.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/library.html +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/limits.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list.html +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/adt.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/append.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/at.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/cat.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/enum.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/filter.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/first_n.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/fold_left.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/fold_right.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each_i.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each_product.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/rest_n.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/reverse.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/size.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_array.html +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_seq.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_tuple.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/transform.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical.html +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/and.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitand.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitnor.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitor.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitxor.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bool.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/compl.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/nor.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/not.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/or.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/xor.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/max.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/min.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/preprocessor.html +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation.html +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/comma.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/comma_if.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/is_begin_parens.html +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/paren.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/paren_if.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/remove_parens.html +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_2nd.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_3rd.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to_2nd.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to_3rd.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition.html +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/deduce_r.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/deduce_z.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_binary_params.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_params.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_shifted.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_shifted_params.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_trailing.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_trailing_params.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/epwad.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/epwd.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/esbp.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/etbp.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/for.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/repeat.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/repeat_from_to.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection/max.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection/min.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/cat.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/elem.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/enum.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/filter.html +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/first_n.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/fold_left.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/fold_right.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each_i.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each_product.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/insert.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/pop_back.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/pop_front.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/push_back.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/push_front.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/remove.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/replace.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/rest_n.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/reverse.html +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/seq.html +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/size.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/subseq.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_array.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_list.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_tuple.html +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/transform.html +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/variadic_seq_to_seq.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot/counter.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot/slot.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/stringize.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple.html +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/eat.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/elem.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/enum.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/insert.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/pop_back.html +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/pop_front.html +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/push_back.html +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/push_front.html +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/rem.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/remove.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/replace.html +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/reverse.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/size.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_array.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_list.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_seq.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic.html +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/elem.html +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/size.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_array.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_list.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_seq.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_tuple.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/while.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/wstringize.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/index.html +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/miscellanea.html +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref.html +319 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/add.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/add_d.html +90 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/and.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/apply.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_data.html +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_elem.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_enum.html +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_insert.html +71 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_insert_d.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_back.html +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_back_z.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_front.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_front_z.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_push_back.html +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_push_front.html +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_remove.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_remove_d.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_replace.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_replace_d.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_reverse.html +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_size.html +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_list.html +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_seq.html +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_tuple.html +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assert.html +114 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assert_msg.html +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assign_slot.html +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitand.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitnor.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitor.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitxor.html +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bool.html +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/cat.html +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/comma.html +43 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/comma_if.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/compl.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/config_extended_line_info.html +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/counter.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/dec.html +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_d.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_r.html +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_z.html +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/div.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/div_d.html +85 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/empty.html +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum.html +80 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_binary_params.html +76 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_binary_params_z.html +93 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_with_a_default.html +83 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_with_defaults.html +84 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_z.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_params.html +73 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_params_z.html +79 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_z.html +93 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing.html +83 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_params.html +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_params_z.html +81 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_z.html +96 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_z.html +96 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/equal.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/equal_d.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/esbp.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/esbpz.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/etbp.html +83 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/etbpz.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expand.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expr_if.html +70 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expr_iif.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/filename_x.html +52 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for.html +105 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for_r.html +148 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for_r_macros.html +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_finish.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_flags.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_iteration.html +73 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_start.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_d.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_equal.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_equal_d.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/identity.html +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/identity_n.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/if.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iif.html +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/inc.html +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/include_self.html +101 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/indirect_self.html +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/intercept.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_begin_parens.html +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_iterating.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_selfish.html +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iterate.html +83 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_depth.html +73 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_finish.html +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_flags.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_limits.html +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_params_x.html +77 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_start.html +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_d.html +70 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_equal.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_equal_d.html +70 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_dim.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_for.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_iteration.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_iteration_dim.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_mag.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_repeat.html +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_seq.html +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_slot_count.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_slot_sig.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_tuple.html +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_variadic.html +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_while.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/line.html +112 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_append.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_append_d.html +96 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_at.html +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_at_d.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cat.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cat_d.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cons.html +87 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_enum.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_enum_r.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_filter.html +76 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_filter_d.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first_n.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first_n_d.html +71 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left.html +75 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_2nd.html +75 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_2nd_d.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_d.html +81 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_d_old.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right.html +79 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_2nd.html +79 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_2nd_d.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_d.html +81 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_d_old.html +90 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each.html +75 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_i.html +75 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_i_r.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_product.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_product_r.html +118 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_r.html +81 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_is_cons.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_is_nil.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_nil.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest_n.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest_n_d.html +71 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_reverse.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_reverse_d.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_size.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_size_d.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_array.html +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_array_d.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_seq.html +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_seq_r.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_tuple.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_tuple_r.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_transform.html +78 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_transform_d.html +86 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_iterate.html +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_limits.html +80 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_macro.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/lparen.html +52 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/lparen_if.html +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/max.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/max_d.html +70 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/min.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/min_d.html +70 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mod.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mod_d.html +75 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mul.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mul_d.html +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/nil.html +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/nor.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not.html +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not_equal.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not_equal_d.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/or.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/overload.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_finish.html +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_flags.html +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_iteration.html +101 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_start.html +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/remove_parens.html +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat.html +80 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_1st.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_2nd.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_3rd.html +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to.html +102 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_1st.html +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_2nd.html +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_3rd.html +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_d.html +83 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_d_z.html +84 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_z.html +105 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_z.html +92 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_z_macros.html +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/rparen.html +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/rparen_if.html +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_cat.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_cat_s.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_elem.html +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_enum.html +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_filter.html +93 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_filter_s.html +79 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_first_n.html +67 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_left.html +90 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_left_s.html +96 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_right.html +92 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_right_s.html +97 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each.html +90 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_i.html +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_i_r.html +78 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_product.html +100 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_product_r.html +81 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_r.html +77 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_head.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_insert.html +70 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_nil.html +81 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_pop_back.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_pop_front.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_push_back.html +76 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_push_front.html +78 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_remove.html +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_replace.html +71 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_rest_n.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_reverse.html +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_reverse_s.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_size.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_subseq.html +69 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_tail.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_array.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_list.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_tuple.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_transform.html +93 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_transform_s.html +79 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/slot.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/stringize.html +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/sub.html +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/sub_d.html +85 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_eat.html +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_elem.html +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_enum.html +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_insert.html +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_insert_d.html +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_back.html +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_back_z.html +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_front.html +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_front_z.html +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_push_back.html +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_push_front.html +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_rem.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_rem_ctor.html +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_remove.html +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_remove_d.html +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_replace.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_replace_d.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_reverse.html +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_size.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_array.html +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_list.html +60 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_seq.html +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/update_counter.html +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/value.html +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_elem.html +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_seq_to_seq.html +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_size.html +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_array.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_list.html +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_seq.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_tuple.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadics.html +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while.html +116 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while_d.html +117 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while_d_macros.html +89 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/wstringize.html +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/xor.html +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/styles.css +87 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/syntax.html +307 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms.html +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms/evaluated.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms/named_external.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/title.html +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/top.html +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics.html +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/evaluated_slots.html +157 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/file_iteration.html +1044 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/incompatible.html +140 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/local_iteration.html +156 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/motivation.html +119 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/problems.html +135 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/reentrancy.html +298 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/techniques.html +350 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/variadic_macros.html +262 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor.hpp +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic.hpp +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/add.hpp +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/dec.hpp +289 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/div.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/inc.hpp +288 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/mod.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/mul.hpp +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/sub.hpp +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/data.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/detail/get_data.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/elem.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/enum.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/insert.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/pop_back.hpp +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/pop_front.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/push_back.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/push_front.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/remove.hpp +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/replace.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/reverse.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/size.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_list.hpp +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_seq.hpp +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_tuple.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/assert_msg.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/cat.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comma.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comma_if.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison.hpp +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/equal.hpp +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/greater.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/greater_equal.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/less.hpp +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/less_equal.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/not_equal.hpp +814 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/config/config.hpp +106 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/config/limits.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control.hpp +22 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/deduce_d.hpp +22 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/edg/while.hpp +534 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/while.hpp +536 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/expr_if.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/expr_iif.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/if.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/iif.hpp +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/while.hpp +312 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug.hpp +18 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/assert.hpp +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/error.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/line.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/dec.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/auto_rec.hpp +293 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/check.hpp +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_binary.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_nullary.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_unary.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/null.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/split.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/empty.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_shifted.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_shifted_params.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/expand.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/expr_if.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities.hpp +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/apply.hpp +34 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/detail/is_empty.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/empty.hpp +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/expand.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/identity.hpp +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/intercept.hpp +277 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_1.hpp +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty.hpp +56 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty_or_1.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty_variadic.hpp +57 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/overload.hpp +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/for.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/identity.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/if.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/inc.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iterate.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration.hpp +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/finish.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/local.hpp +812 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/self.hpp +21 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/start.hpp +99 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/iterate.hpp +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/local.hpp +26 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/self.hpp +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/library.hpp +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/limits.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list.hpp +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/adt.hpp +73 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/append.hpp +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/at.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/cat.hpp +42 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/fold_left.hpp +279 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/fold_right.hpp +277 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/enum.hpp +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/filter.hpp +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/first_n.hpp +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/fold_left.hpp +303 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/fold_right.hpp +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each_i.hpp +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each_product.hpp +141 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/rest_n.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/reverse.hpp +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/size.hpp +58 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_array.hpp +155 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_seq.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_tuple.hpp +61 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/transform.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/and.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitand.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitnor.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitor.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitxor.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bool.hpp +288 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/compl.hpp +36 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/nor.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/not.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/or.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/xor.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/max.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/min.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation.hpp +22 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/comma.hpp +21 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/comma_if.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/is_begin_parens.hpp +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/paren.hpp +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/paren_if.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/remove_parens.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_2nd.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_3rd.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/deduce_r.hpp +22 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/deduce_z.hpp +22 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/for.hpp +536 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum.hpp +66 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params.hpp +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/for.hpp +324 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/repeat.hpp +825 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection.hpp +18 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection/max.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection/min.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq.hpp +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/cat.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/binary_transform.hpp +47 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/is_empty.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/split.hpp +284 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/elem.hpp +304 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/enum.hpp +288 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/filter.hpp +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/first_n.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/fold_left.hpp +1070 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/fold_right.hpp +288 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each.hpp +107 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each_i.hpp +109 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each_product.hpp +126 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/insert.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/pop_back.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/pop_front.hpp +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/push_back.hpp +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/push_front.hpp +19 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/remove.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/replace.hpp +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/rest_n.hpp +46 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/reverse.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/seq.hpp +44 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/size.hpp +548 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/subseq.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_array.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_list.hpp +41 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_tuple.hpp +27 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/transform.hpp +48 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/counter.hpp +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp +269 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/def.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/shared.hpp +247 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot1.hpp +267 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot2.hpp +267 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot3.hpp +267 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot4.hpp +267 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot5.hpp +267 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/slot.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/stringize.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/detail/is_single_return.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/eat.hpp +115 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/elem.hpp +201 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/enum.hpp +22 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/insert.hpp +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/pop_back.hpp +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/pop_front.hpp +65 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/push_back.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/push_front.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/rem.hpp +149 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/remove.hpp +64 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/replace.hpp +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/reverse.hpp +117 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/size.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_array.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_list.hpp +118 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_seq.hpp +119 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic.hpp +23 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/detail/is_single_return.hpp +28 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/elem.hpp +94 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/size.hpp +30 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_array.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_list.hpp +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_seq.hpp +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_tuple.hpp +24 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/while.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/wstringize.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/index.html +18 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/meta/libraries.json +15 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/Jamfile.v2 +252 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.cxx +82 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.c +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.cpp +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.cxx +192 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.c +13 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.cxx +45 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/config_info.cpp +93 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.cxx +40 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.cxx +21 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.cxx +55 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.cxx +145 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.cxx +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.cxx +25 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/iteration.cpp +33 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/iteration.h +62 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.c +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.cpp +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.cxx +91 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.cxx +59 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.c +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.cpp +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.cxx +54 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/repetition.cpp +50 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.cxx +21 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.c +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.cpp +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.cxx +222 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.cxx +53 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/test.h +37 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.c +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.cpp +14 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.cxx +266 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple_elem_bug_test.cxx +38 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.c +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.cpp +12 -0
- data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.cxx +56 -0
- data/ext/enterprise_script_service/msgpack/fuzz/CMakeLists.txt +43 -0
- data/ext/enterprise_script_service/msgpack/fuzz/regression_runner.cpp +50 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer.cpp +23 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 +0 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 +0 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray +1 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject +1 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting +2 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap +0 -0
- data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground +0 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack.hpp +4 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/adaptor_base.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/array_ref_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/byte.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/optional.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/define_decl.hpp +25 -24
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/ext_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/fixint_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/int_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/map_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/nil_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/raw_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/v4raw_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/cpp_config_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/create_object_visitor.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/create_object_visitor_decl.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/fbuffer_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/iterator_decl.hpp +2 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/meta_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/null_visitor.hpp +17 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/null_visitor_decl.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/object_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/object_fwd.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/object_fwd_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +4 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack_template.h +28 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/parse.hpp +18 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/parse_decl.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/parse_return.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture.h +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/arm.h +11 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/parisc.h +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/ptx.h +44 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler.h +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/intel.h +17 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/nvcc.h +60 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/visualc.h +15 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/hardware/simd/arm.h +3 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h +3 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/language.h +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/language/cuda.h +52 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/library/c.h +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/library/c/cloudabi.h +53 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/make.h +8 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/android.h +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/bsd/free.h +10 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/bsd/open.h +80 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/other/endian.h +1 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/other/workaround.h +87 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform.h +9 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/cloudabi.h +43 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/ios.h +58 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw.h +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw32.h +63 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw64.h +63 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_desktop.h +9 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_phone.h +7 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_runtime.h +13 -5
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_server.h +47 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_store.h +11 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_system.h +47 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_uwp.h +60 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/version.h +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/predef/version_number.h +20 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/cat.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/config/config.hpp +13 -11
- data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp +5 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/to_list.hpp +12 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/sbuffer_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/sysdep.h +31 -26
- data/ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h +58 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/type.hpp +13 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/unpack.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_template.h +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +6 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp +48 -5
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/carray.hpp +5 -5
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp +8 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp +8 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp +215 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp +74 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp +109 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp +90 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp +86 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +119 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/deque.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp +1088 -32
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp +32 -16
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp +32 -32
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp +45 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp +4 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp +4 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/ext.hpp +3 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/fixint.hpp +40 -24
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/int.hpp +55 -33
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/list.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +7 -7
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/pair.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/set.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/string.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +5 -5
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +9 -9
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +9 -9
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/cpp_config.hpp +4 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/cpp_config_decl.hpp +6 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp +41 -34
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp +8 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp +25 -19
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp +8 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object.hpp +768 -404
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_decl.hpp +8 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_fwd.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/unpack.hpp +5 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/vrefbuffer.hpp +15 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor.hpp +14 -7
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/null_visitor.hpp +5 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/null_visitor_decl.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/object_decl.hpp +4 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/object_fwd.hpp +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/pack_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse.hpp +41 -23
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse_decl.hpp +79 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/unpack.hpp +7 -3
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/unpack_decl.hpp +8 -36
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse.hpp +5 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse_decl.hpp +36 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_unpack.hpp +13 -12
- data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_unpack_decl.hpp +71 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp +58 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp +52 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp +36 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp +42 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp +39 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/define_decl.hpp +23 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp +43 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp +59 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp +34 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp +43 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/int_decl.hpp +54 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/map_decl.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp +21 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp +42 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp +34 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/cpp_config_decl.hpp +84 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp +31 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/fbuffer_decl.hpp +32 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/iterator_decl.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/meta_decl.hpp +50 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/null_visitor_decl.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_decl.hpp +53 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_fwd.hpp +70 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_fwd_decl.hpp +75 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/pack_decl.hpp +55 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse.hpp +677 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse_decl.hpp +49 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse_return.hpp +35 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/sbuffer_decl.hpp +33 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +192 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack_decl.hpp +304 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_parse_decl.hpp +34 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_unpack.hpp +97 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_unpack_decl.hpp +65 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/zbuffer_decl.hpp +29 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/zone_decl.hpp +21 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +1 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/versioning.hpp +3 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/vrefbuffer.h +1 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/vrefbuffer_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/x3_parse.hpp +15 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/x3_parse_decl.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/x3_unpack.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/x3_unpack_decl.hpp +16 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/include/msgpack/zone_decl.hpp +1 -0
- data/ext/enterprise_script_service/msgpack/makedist.sh +2 -0
- data/ext/enterprise_script_service/msgpack/msgpack-config.cmake.in +23 -0
- data/ext/enterprise_script_service/msgpack/src/objectc.c +1 -1
- data/ext/enterprise_script_service/msgpack/src/unpack.c +8 -8
- data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +13 -1
- data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +13 -6
- data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +31 -0
- data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +3 -3
- data/ext/enterprise_script_service/msgpack/test/cases.cpp +7 -0
- data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +8 -0
- data/ext/enterprise_script_service/msgpack/test/json.cpp +1 -1
- data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +114 -6
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +188 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +333 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +11 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +9 -3
- data/ext/enterprise_script_service/msgpack/test/object.cpp +11 -2
- data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +72 -8
- data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +96 -0
- data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +1 -1
- data/ext/enterprise_script_service/msgpack/test/user_class.cpp +38 -13
- data/ext/enterprise_script_service/msgpack/test/visitor.cpp +350 -6
- data/ext/enterprise_script_service/msgpack/update_version.sh +17 -0
- data/lib/script_core/version.rb +1 -1
- data/lib/tasks/script_core.rake +5 -2
- data/script_core.gemspec +0 -1
- data/spec/dummy/app/controllers/application_controller.rb +18 -0
- data/spec/dummy/app/controllers/fields/choices_controller.rb +50 -0
- data/spec/dummy/app/controllers/forms/formulas/playgrounds_controller.rb +2 -2
- data/spec/dummy/app/controllers/playgrounds_controller.rb +18 -3
- data/spec/dummy/app/controllers/time_zones_controller.rb +14 -0
- data/spec/dummy/app/helpers/fields_helper.rb +0 -4
- data/spec/dummy/app/lib/script_engine.rb +18 -7
- data/spec/dummy/app/models/choice.rb +10 -0
- data/spec/dummy/app/models/concerns/fields/helper.rb +23 -0
- data/spec/dummy/app/models/concerns/fields/validations/acceptance.rb +1 -1
- data/spec/dummy/app/models/concerns/fields/validations/confirmation.rb +1 -1
- data/spec/dummy/app/models/concerns/fields/validations/exclusion.rb +2 -2
- data/spec/dummy/app/models/concerns/fields/validations/format.rb +5 -7
- data/spec/dummy/app/models/concerns/fields/validations/inclusion.rb +2 -2
- data/spec/dummy/app/models/concerns/fields/validations/length.rb +2 -2
- data/spec/dummy/app/models/concerns/fields/validations/numericality.rb +2 -2
- data/spec/dummy/app/models/concerns/fields/validations/presence.rb +1 -1
- data/spec/dummy/app/models/field.rb +8 -8
- data/spec/dummy/app/models/field_options.rb +16 -8
- data/spec/dummy/app/models/fields.rb +4 -0
- data/spec/dummy/app/models/fields/boolean_field.rb +1 -1
- data/spec/dummy/app/models/fields/date_field.rb +24 -0
- data/spec/dummy/app/models/fields/datetime_field.rb +24 -0
- data/spec/dummy/app/models/fields/multiple_nested_form_field.rb +8 -3
- data/spec/dummy/app/models/fields/multiple_select_field.rb +42 -0
- data/spec/dummy/app/models/fields/nested_form_field.rb +6 -5
- data/spec/dummy/app/models/fields/options/date_field.rb +138 -0
- data/spec/dummy/app/models/fields/options/datetime_field.rb +138 -0
- data/spec/dummy/app/models/fields/options/multiple_select_field.rb +7 -0
- data/spec/dummy/app/models/fields/options/select_field.rb +7 -0
- data/spec/dummy/app/models/fields/select_field.rb +25 -0
- data/spec/dummy/app/models/fields/validations/boolean_field.rb +1 -1
- data/spec/dummy/app/models/fields/validations/date_field.rb +7 -0
- data/spec/dummy/app/models/fields/validations/datetime_field.rb +7 -0
- data/spec/dummy/app/models/fields/validations/decimal_field.rb +2 -2
- data/spec/dummy/app/models/fields/validations/integer_field.rb +2 -2
- data/spec/dummy/app/models/fields/validations/multiple_nested_form_field.rb +2 -2
- data/spec/dummy/app/models/fields/validations/multiple_select_field.rb +8 -0
- data/spec/dummy/app/models/fields/validations/nested_form_field.rb +1 -1
- data/spec/dummy/app/models/fields/validations/select_field.rb +7 -0
- data/spec/dummy/app/models/fields/validations/text_field.rb +3 -3
- data/spec/dummy/app/models/metal_form.rb +4 -0
- data/spec/dummy/app/models/non_configurable.rb +4 -0
- data/spec/dummy/app/models/virtual_model.rb +8 -0
- data/spec/dummy/app/presenters/fields/date_field_presenter.rb +53 -0
- data/spec/dummy/app/presenters/fields/datetime_field_presenter.rb +53 -0
- data/spec/dummy/app/presenters/fields/field_presenter.rb +3 -2
- data/spec/dummy/app/presenters/fields/multiple_select_field_presenter.rb +37 -0
- data/spec/dummy/app/presenters/fields/select_field_presenter.rb +26 -0
- data/spec/dummy/app/views/_form_core/field_options/_date_field.html.erb +97 -0
- data/spec/dummy/app/views/_form_core/field_options/_datetime_field.html.erb +97 -0
- data/spec/dummy/app/views/_form_core/field_options/_multiple_select_field.html.erb +12 -0
- data/spec/dummy/app/views/_form_core/field_options/_select_field.html.erb +12 -0
- data/spec/dummy/app/views/_form_core/fields/_date_field.html.erb +9 -0
- data/spec/dummy/app/views/_form_core/fields/_datetime_field.html.erb +9 -0
- data/spec/dummy/app/views/_form_core/fields/_multiple_select_field.html.erb +18 -0
- data/spec/dummy/app/views/_form_core/fields/_select_field.html.erb +17 -0
- data/spec/dummy/app/views/fields/choices/_form.html.erb +34 -0
- data/spec/dummy/app/views/fields/choices/edit.html.erb +6 -0
- data/spec/dummy/app/views/fields/choices/index.html.erb +27 -0
- data/spec/dummy/app/views/fields/choices/new.html.erb +6 -0
- data/spec/dummy/app/views/forms/fields/index.html.erb +4 -1
- data/spec/dummy/app/views/forms/formulas/playgrounds/create.html.erb +1 -1
- data/spec/dummy/app/views/layouts/_nav.html.erb +22 -0
- data/spec/dummy/app/views/nested_forms/fields/index.html.erb +10 -3
- data/spec/dummy/app/views/playgrounds/_form.html.erb +1 -1
- data/spec/dummy/config/application.rb +2 -1
- data/spec/dummy/config/initializers/validates_timeliness.rb +42 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/db/migrate/20180916202025_create_forms.form_core.rb +1 -0
- data/spec/dummy/db/migrate/20180916202122_create_choices.rb +12 -0
- data/spec/dummy/db/migrate/20180916202123_add_position_to_choices.rb +9 -0
- data/spec/dummy/db/schema.rb +19 -5
- data/spec/dummy/lib/monkey_patches/big_decimal.rb +7 -3
- data/spec/dummy/lib/monkey_patches/date.rb +12 -0
- data/spec/dummy/lib/monkey_patches/time.rb +12 -0
- data/spec/dummy/mruby/engine.gembox +1 -0
- data/spec/dummy/mruby/lib/core_ext.rb +64 -2
- data/spec/dummy/mruby/lib/input.rb +16 -4
- data/spec/dummy/mruby/lib/io.rb +4 -3
- data/spec/dummy/mruby/lib/output.rb +2 -28
- data/spec/dummy/mruby/lib/script_kernel.rb +8 -7
- data/spec/script_core_spec.rb +2 -2
- data/tests/googletest/.clang-format +4 -0
- data/tests/googletest/.gitignore +82 -0
- data/tests/googletest/.travis.yml +68 -29
- data/tests/googletest/BUILD.bazel +179 -0
- data/tests/googletest/CMakeLists.txt +21 -4
- data/tests/googletest/CONTRIBUTING.md +161 -0
- data/tests/googletest/LICENSE +28 -0
- data/tests/googletest/Makefile.am +12 -0
- data/tests/googletest/README.md +28 -41
- data/tests/googletest/WORKSPACE +10 -0
- data/tests/googletest/appveyor.yml +118 -35
- data/tests/googletest/ci/build-linux-autotools.sh +44 -0
- data/tests/googletest/ci/build-linux-bazel.sh +36 -0
- data/tests/googletest/ci/build-platformio.sh +2 -0
- data/tests/googletest/ci/env-linux.sh +41 -0
- data/tests/googletest/ci/env-osx.sh +47 -0
- data/tests/googletest/ci/get-nprocessors.sh +48 -0
- data/tests/googletest/ci/install-linux.sh +49 -0
- data/tests/googletest/ci/install-osx.sh +40 -0
- data/tests/googletest/ci/install-platformio.sh +5 -0
- data/tests/googletest/ci/log-config.sh +51 -0
- data/tests/googletest/ci/travis.sh +44 -0
- data/tests/googletest/configure.ac +16 -0
- data/tests/googletest/googlemock/CMakeLists.txt +78 -55
- data/tests/googletest/googlemock/Makefile.am +6 -8
- data/tests/googletest/googlemock/README.md +33 -73
- data/tests/googletest/googlemock/cmake/gmock.pc.in +11 -0
- data/tests/googletest/googlemock/cmake/gmock_main.pc.in +11 -0
- data/tests/googletest/googlemock/configure.ac +6 -18
- data/tests/googletest/googlemock/docs/CheatSheet.md +126 -99
- data/tests/googletest/googlemock/docs/CookBook.md +271 -286
- data/tests/googletest/googlemock/docs/DesignDoc.md +29 -27
- data/tests/googletest/googlemock/docs/Documentation.md +7 -4
- data/tests/googletest/googlemock/docs/ForDummies.md +41 -33
- data/tests/googletest/googlemock/docs/FrequentlyAskedQuestions.md +28 -29
- data/tests/googletest/googlemock/include/gmock/gmock-actions.h +232 -240
- data/tests/googletest/googlemock/include/gmock/gmock-cardinalities.h +12 -6
- data/tests/googletest/googlemock/include/gmock/gmock-function-mocker.h +218 -0
- data/tests/googletest/googlemock/include/gmock/gmock-generated-actions.h +304 -796
- data/tests/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +18 -184
- data/tests/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +330 -673
- data/tests/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +77 -141
- data/tests/googletest/googlemock/include/gmock/gmock-generated-matchers.h +293 -1372
- data/tests/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +22 -345
- data/tests/googletest/googlemock/include/gmock/gmock-matchers.h +1382 -1218
- data/tests/googletest/googlemock/include/gmock/gmock-more-actions.h +12 -96
- data/tests/googletest/googlemock/include/gmock/gmock-more-matchers.h +39 -5
- data/tests/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
- data/tests/googletest/googlemock/include/gmock/gmock-spec-builders.h +362 -228
- data/tests/googletest/googlemock/include/gmock/gmock.h +10 -3
- data/tests/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
- data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +2 -0
- data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +3 -1
- data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +5 -8
- data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +3 -10
- data/tests/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +114 -54
- data/tests/googletest/googlemock/include/gmock/internal/gmock-port.h +13 -17
- data/tests/googletest/googlemock/include/gmock/internal/gmock-pp.h +317 -0
- data/tests/googletest/googlemock/make/Makefile +23 -7
- data/tests/googletest/googlemock/msvc/2010/gmock.sln +14 -0
- data/tests/googletest/googlemock/msvc/2010/gmock.vcxproj +69 -6
- data/tests/googletest/googlemock/msvc/2010/gmock_config.props +2 -2
- data/tests/googletest/googlemock/msvc/2010/gmock_main.vcxproj +69 -6
- data/tests/googletest/googlemock/msvc/2010/gmock_test.vcxproj +83 -8
- data/tests/googletest/googlemock/msvc/2015/gmock.sln +14 -0
- data/tests/googletest/googlemock/msvc/2015/gmock.vcxproj +63 -2
- data/tests/googletest/googlemock/msvc/2015/gmock_main.vcxproj +63 -2
- data/tests/googletest/googlemock/msvc/2015/gmock_test.vcxproj +76 -3
- data/tests/googletest/googlemock/scripts/fuse_gmock_files.py +1 -1
- data/tests/googletest/googlemock/scripts/generator/README +4 -5
- data/tests/googletest/googlemock/scripts/generator/cpp/ast.py +6 -3
- data/tests/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +18 -0
- data/tests/googletest/googlemock/scripts/upload.py +4 -4
- data/tests/googletest/googlemock/src/gmock-all.cc +1 -2
- data/tests/googletest/googlemock/src/gmock-cardinalities.cc +7 -8
- data/tests/googletest/googlemock/src/gmock-internal-utils.cc +38 -12
- data/tests/googletest/googlemock/src/gmock-matchers.cc +127 -163
- data/tests/googletest/googlemock/src/gmock-spec-builders.cc +150 -86
- data/tests/googletest/googlemock/src/gmock.cc +41 -11
- data/tests/googletest/googlemock/src/gmock_main.cc +14 -3
- data/tests/googletest/googlemock/test/BUILD.bazel +106 -0
- data/tests/googletest/googlemock/test/gmock-actions_test.cc +370 -328
- data/tests/googletest/googlemock/test/gmock-cardinalities_test.cc +5 -6
- data/tests/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
- data/tests/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
- data/tests/googletest/googlemock/test/gmock-function-mocker_test.cc +660 -0
- data/tests/googletest/googlemock/test/gmock-generated-actions_test.cc +137 -301
- data/tests/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +80 -43
- data/tests/googletest/googlemock/test/gmock-generated-matchers_test.cc +239 -201
- data/tests/googletest/googlemock/test/gmock-internal-utils_test.cc +126 -68
- data/tests/googletest/googlemock/test/gmock-matchers_test.cc +1811 -674
- data/tests/googletest/googlemock/test/gmock-more-actions_test.cc +162 -171
- data/tests/googletest/googlemock/test/gmock-nice-strict_test.cc +121 -45
- data/tests/googletest/googlemock/test/gmock-port_test.cc +1 -2
- data/tests/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
- data/tests/googletest/googlemock/test/gmock-pp_test.cc +73 -0
- data/tests/googletest/googlemock/test/gmock-spec-builders_test.cc +152 -23
- data/tests/googletest/googlemock/test/gmock_all_test.cc +1 -3
- data/tests/googletest/googlemock/test/gmock_ex_test.cc +4 -5
- data/tests/googletest/googlemock/test/gmock_leak_test.py +0 -4
- data/tests/googletest/googlemock/test/gmock_leak_test_.cc +1 -2
- data/tests/googletest/googlemock/test/gmock_link2_test.cc +2 -3
- data/tests/googletest/googlemock/test/gmock_link_test.cc +2 -3
- data/tests/googletest/googlemock/test/gmock_link_test.h +45 -24
- data/tests/googletest/googlemock/test/gmock_output_test.py +10 -9
- data/tests/googletest/googlemock/test/gmock_output_test_.cc +21 -3
- data/tests/googletest/googlemock/test/gmock_output_test_golden.txt +8 -1
- data/tests/googletest/googlemock/test/gmock_stress_test.cc +7 -89
- data/tests/googletest/googlemock/test/gmock_test.cc +57 -96
- data/tests/googletest/googlemock/test/gmock_test_utils.py +5 -9
- data/tests/googletest/googletest/CMakeLists.txt +122 -83
- data/tests/googletest/googletest/Makefile.am +103 -75
- data/tests/googletest/googletest/README.md +236 -189
- data/tests/googletest/googletest/cmake/Config.cmake.in +9 -0
- data/tests/googletest/googletest/cmake/gtest.pc.in +10 -0
- data/tests/googletest/googletest/cmake/gtest_main.pc.in +11 -0
- data/tests/googletest/googletest/cmake/internal_utils.cmake +158 -58
- data/tests/googletest/googletest/cmake/libgtest.la.in +21 -0
- data/tests/googletest/googletest/configure.ac +2 -2
- data/tests/googletest/googletest/docs/Pkgconfig.md +146 -0
- data/tests/googletest/googletest/docs/PumpManual.md +5 -5
- data/tests/googletest/googletest/docs/XcodeGuide.md +9 -9
- data/tests/googletest/googletest/docs/advanced.md +2523 -0
- data/tests/googletest/googletest/docs/faq.md +770 -0
- data/tests/googletest/googletest/docs/primer.md +564 -0
- data/tests/googletest/googletest/docs/samples.md +22 -0
- data/tests/googletest/googletest/include/gtest/gtest-death-test.h +60 -11
- data/tests/googletest/googletest/include/gtest/gtest-matchers.h +741 -0
- data/tests/googletest/googletest/include/gtest/gtest-message.h +12 -44
- data/tests/googletest/googletest/include/gtest/gtest-param-test.h +139 -1080
- data/tests/googletest/googletest/include/gtest/gtest-printers.h +202 -268
- data/tests/googletest/googletest/include/gtest/gtest-spi.h +13 -7
- data/tests/googletest/googletest/include/gtest/gtest-test-part.h +21 -16
- data/tests/googletest/googletest/include/gtest/gtest-typed-test.h +157 -84
- data/tests/googletest/googletest/include/gtest/gtest.h +494 -277
- data/tests/googletest/googletest/include/gtest/gtest_pred_impl.h +41 -40
- data/tests/googletest/googletest/include/gtest/gtest_prod.h +10 -7
- data/tests/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
- data/tests/googletest/googletest/include/gtest/internal/custom/gtest-port.h +1 -33
- data/tests/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +2 -2
- data/tests/googletest/googletest/include/gtest/internal/custom/gtest.h +1 -5
- data/tests/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +80 -95
- data/tests/googletest/googletest/include/gtest/internal/gtest-filepath.h +8 -3
- data/tests/googletest/googletest/include/gtest/internal/gtest-internal.h +415 -231
- data/tests/googletest/googletest/include/gtest/internal/gtest-param-util.h +323 -174
- data/tests/googletest/googletest/include/gtest/internal/gtest-port-arch.h +19 -5
- data/tests/googletest/googletest/include/gtest/internal/gtest-port.h +289 -549
- data/tests/googletest/googletest/include/gtest/internal/gtest-string.h +4 -4
- data/tests/googletest/googletest/include/gtest/internal/gtest-type-util.h +23 -7
- data/tests/googletest/googletest/include/gtest/internal/gtest-type-util.h.pump +24 -7
- data/tests/googletest/googletest/make/Makefile +13 -7
- data/tests/googletest/googletest/msvc/2010/gtest-md.sln +55 -0
- data/tests/googletest/googletest/msvc/2010/gtest-md.vcxproj +149 -0
- data/tests/googletest/googletest/msvc/2010/gtest-md.vcxproj.filters +18 -0
- data/tests/googletest/googletest/msvc/2010/gtest.sln +55 -0
- data/tests/googletest/googletest/msvc/2010/gtest.vcxproj +149 -0
- data/tests/googletest/googletest/msvc/2010/gtest.vcxproj.filters +18 -0
- data/tests/googletest/googletest/msvc/2010/gtest_main-md.vcxproj +154 -0
- data/tests/googletest/googletest/msvc/2010/gtest_main-md.vcxproj.filters +18 -0
- data/tests/googletest/googletest/msvc/2010/gtest_main.vcxproj +162 -0
- data/tests/googletest/googletest/msvc/2010/gtest_main.vcxproj.filters +18 -0
- data/tests/googletest/googletest/msvc/2010/gtest_prod_test-md.vcxproj +199 -0
- data/tests/googletest/googletest/msvc/2010/gtest_prod_test-md.vcxproj.filters +26 -0
- data/tests/googletest/googletest/msvc/2010/gtest_prod_test.vcxproj +191 -0
- data/tests/googletest/googletest/msvc/2010/gtest_prod_test.vcxproj.filters +26 -0
- data/tests/googletest/googletest/msvc/2010/gtest_unittest-md.vcxproj +188 -0
- data/tests/googletest/googletest/msvc/2010/gtest_unittest-md.vcxproj.filters +18 -0
- data/tests/googletest/googletest/msvc/2010/gtest_unittest.vcxproj +180 -0
- data/tests/googletest/googletest/msvc/2010/gtest_unittest.vcxproj.filters +18 -0
- data/tests/googletest/googletest/samples/prime_tables.h +13 -10
- data/tests/googletest/googletest/samples/sample1.cc +1 -3
- data/tests/googletest/googletest/samples/sample1.h +0 -2
- data/tests/googletest/googletest/samples/sample10_unittest.cc +4 -9
- data/tests/googletest/googletest/samples/sample1_unittest.cc +2 -4
- data/tests/googletest/googletest/samples/sample2.cc +1 -3
- data/tests/googletest/googletest/samples/sample2.h +4 -8
- data/tests/googletest/googletest/samples/sample2_unittest.cc +5 -7
- data/tests/googletest/googletest/samples/sample3-inl.h +9 -9
- data/tests/googletest/googletest/samples/sample3_unittest.cc +13 -15
- data/tests/googletest/googletest/samples/sample4.cc +10 -2
- data/tests/googletest/googletest/samples/sample4.h +3 -3
- data/tests/googletest/googletest/samples/sample4_unittest.cc +11 -3
- data/tests/googletest/googletest/samples/sample5_unittest.cc +11 -14
- data/tests/googletest/googletest/samples/sample6_unittest.cc +12 -12
- data/tests/googletest/googletest/samples/sample7_unittest.cc +14 -27
- data/tests/googletest/googletest/samples/sample8_unittest.cc +20 -39
- data/tests/googletest/googletest/samples/sample9_unittest.cc +6 -10
- data/tests/googletest/googletest/scripts/fuse_gtest_files.py +1 -1
- data/tests/googletest/googletest/scripts/gen_gtest_pred_impl.py +10 -10
- data/tests/googletest/googletest/scripts/upload.py +5 -5
- data/tests/googletest/googletest/src/gtest-all.cc +3 -3
- data/tests/googletest/googletest/src/gtest-death-test.cc +417 -121
- data/tests/googletest/googletest/src/gtest-filepath.cc +15 -23
- data/tests/googletest/googletest/src/gtest-internal-inl.h +145 -122
- data/tests/googletest/googletest/src/gtest-matchers.cc +97 -0
- data/tests/googletest/googletest/src/gtest-port.cc +263 -129
- data/tests/googletest/googletest/src/gtest-printers.cc +92 -24
- data/tests/googletest/googletest/src/gtest-test-part.cc +13 -19
- data/tests/googletest/googletest/src/gtest-typed-test.cc +5 -5
- data/tests/googletest/googletest/src/gtest.cc +1469 -742
- data/tests/googletest/googletest/src/gtest_main.cc +12 -3
- data/tests/googletest/googletest/test/BUILD.bazel +518 -0
- data/tests/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
- data/tests/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
- data/tests/googletest/googletest/test/googletest-catch-exceptions-test.py +231 -0
- data/tests/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
- data/tests/googletest/googletest/test/googletest-color-test.py +127 -0
- data/tests/googletest/googletest/test/googletest-color-test_.cc +62 -0
- data/tests/googletest/googletest/test/googletest-death-test-test.cc +1458 -0
- data/tests/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
- data/tests/googletest/googletest/test/googletest-env-var-test.py +117 -0
- data/tests/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
- data/tests/googletest/googletest/test/googletest-filepath-test.cc +649 -0
- data/tests/googletest/googletest/test/googletest-filter-unittest.py +639 -0
- data/tests/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
- data/tests/googletest/googletest/test/googletest-json-outfiles-test.py +185 -0
- data/tests/googletest/googletest/test/googletest-json-output-unittest.py +758 -0
- data/tests/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
- data/tests/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
- data/tests/googletest/googletest/test/googletest-listener-test.cc +407 -0
- data/tests/googletest/googletest/test/googletest-message-test.cc +158 -0
- data/tests/googletest/googletest/test/googletest-options-test.cc +216 -0
- data/tests/googletest/googletest/test/googletest-output-test-golden-lin.txt +1128 -0
- data/tests/googletest/googletest/test/googletest-output-test.py +346 -0
- data/tests/googletest/googletest/test/googletest-output-test_.cc +1145 -0
- data/tests/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
- data/tests/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
- data/tests/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
- data/tests/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
- data/tests/googletest/googletest/test/googletest-param-test-test.cc +1055 -0
- data/tests/googletest/googletest/test/googletest-param-test-test.h +51 -0
- data/tests/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
- data/tests/googletest/googletest/test/googletest-port-test.cc +1290 -0
- data/tests/googletest/googletest/test/googletest-printers-test.cc +1561 -0
- data/tests/googletest/googletest/test/googletest-shuffle-test.py +323 -0
- data/tests/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
- data/tests/googletest/googletest/test/googletest-test-part-test.cc +230 -0
- data/tests/googletest/googletest/test/googletest-test2_test.cc +61 -0
- data/tests/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
- data/tests/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
- data/tests/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
- data/tests/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
- data/tests/googletest/googletest/test/gtest-typed-test2_test.cc +3 -4
- data/tests/googletest/googletest/test/gtest-typed-test_test.cc +144 -63
- data/tests/googletest/googletest/test/gtest-typed-test_test.h +4 -5
- data/tests/googletest/googletest/test/gtest-unittest-api_test.cc +122 -123
- data/tests/googletest/googletest/test/gtest_all_test.cc +10 -11
- data/tests/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
- data/tests/googletest/googletest/test/gtest_environment_test.cc +3 -7
- data/tests/googletest/googletest/test/gtest_help_test.py +1 -3
- data/tests/googletest/googletest/test/gtest_help_test_.cc +1 -2
- data/tests/googletest/googletest/test/gtest_json_test_utils.py +60 -0
- data/tests/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
- data/tests/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
- data/tests/googletest/googletest/test/gtest_main_unittest.cc +3 -4
- data/tests/googletest/googletest/test/gtest_no_test_unittest.cc +0 -2
- data/tests/googletest/googletest/test/gtest_pred_impl_unittest.cc +11 -11
- data/tests/googletest/googletest/test/gtest_premature_exit_test.cc +3 -4
- data/tests/googletest/googletest/test/gtest_prod_test.cc +3 -4
- data/tests/googletest/googletest/test/gtest_repeat_test.cc +8 -28
- data/tests/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
- data/tests/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
- data/tests/googletest/googletest/test/gtest_skip_test.cc +55 -0
- data/tests/googletest/googletest/test/gtest_sole_header_test.cc +1 -2
- data/tests/googletest/googletest/test/gtest_stress_test.cc +3 -11
- data/tests/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
- data/tests/googletest/googletest/test/gtest_test_utils.py +15 -22
- data/tests/googletest/googletest/test/gtest_testbridge_test.py +63 -0
- data/tests/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
- data/tests/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +2 -4
- data/tests/googletest/googletest/test/gtest_unittest.cc +770 -924
- data/tests/googletest/googletest/test/gtest_xml_outfile1_test_.cc +2 -8
- data/tests/googletest/googletest/test/gtest_xml_outfile2_test_.cc +2 -8
- data/tests/googletest/googletest/test/gtest_xml_outfiles_test.py +14 -11
- data/tests/googletest/googletest/test/gtest_xml_output_unittest.py +132 -51
- data/tests/googletest/googletest/test/gtest_xml_output_unittest_.cc +21 -14
- data/tests/googletest/googletest/test/gtest_xml_test_utils.py +24 -22
- data/tests/googletest/googletest/test/production.cc +2 -3
- data/tests/googletest/googletest/test/production.h +2 -3
- data/tests/googletest/googletest/xcode/Config/DebugProject.xcconfig +1 -1
- data/tests/googletest/googletest/xcode/Config/FrameworkTarget.xcconfig +1 -1
- data/tests/googletest/googletest/xcode/Config/General.xcconfig +3 -3
- data/tests/googletest/googletest/xcode/Config/ReleaseProject.xcconfig +1 -1
- data/tests/googletest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +1 -1
- data/tests/googletest/googletest/xcode/Scripts/versiongenerate.py +4 -4
- data/tests/googletest/googletest/xcode/gtest.xcodeproj/project.pbxproj +51 -16
- data/tests/googletest/library.json +59 -0
- data/tests/googletest/platformio.ini +31 -0
- metadata +1391 -137
- data/ext/enterprise_script_service/libseccomp/README +0 -65
- data/ext/enterprise_script_service/libseccomp/SUBMITTING_PATCHES +0 -123
- data/ext/enterprise_script_service/mruby/MITL +0 -20
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +0 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/gc_filedes.sh +0 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/init_mrbtest.c +0 -38
- data/ext/enterprise_script_service/mruby/mrblib/float.rb +0 -9
- data/ext/enterprise_script_service/mruby/src/ext/.gitkeep +0 -0
- data/ext/enterprise_script_service/mruby/test/report.rb +0 -4
- data/spec/dummy/app/models/fields/options/boolean_field.rb +0 -6
- data/spec/dummy/app/models/fields/options/multiple_nested_form_field.rb +0 -6
- data/spec/dummy/app/models/fields/options/nested_form_field.rb +0 -6
- data/tests/googletest/googlemock/CHANGES +0 -126
- data/tests/googletest/googlemock/docs/DevGuide.md +0 -132
- data/tests/googletest/googlemock/docs/v1_5/CheatSheet.md +0 -525
- data/tests/googletest/googlemock/docs/v1_5/CookBook.md +0 -3250
- data/tests/googletest/googlemock/docs/v1_5/Documentation.md +0 -11
- data/tests/googletest/googlemock/docs/v1_5/ForDummies.md +0 -439
- data/tests/googletest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +0 -624
- data/tests/googletest/googlemock/docs/v1_6/CheatSheet.md +0 -534
- data/tests/googletest/googlemock/docs/v1_6/CookBook.md +0 -3342
- data/tests/googletest/googlemock/docs/v1_6/Documentation.md +0 -12
- data/tests/googletest/googlemock/docs/v1_6/ForDummies.md +0 -439
- data/tests/googletest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +0 -628
- data/tests/googletest/googlemock/docs/v1_7/CheatSheet.md +0 -556
- data/tests/googletest/googlemock/docs/v1_7/CookBook.md +0 -3432
- data/tests/googletest/googlemock/docs/v1_7/Documentation.md +0 -12
- data/tests/googletest/googlemock/docs/v1_7/ForDummies.md +0 -439
- data/tests/googletest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +0 -628
- data/tests/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h +0 -397
- data/tests/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +0 -161
- data/tests/googletest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +0 -279
- data/tests/googletest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +0 -136
- data/tests/googletest/googlemock/test/gmock-generated-internal-utils_test.cc +0 -127
- data/tests/googletest/googletest/.gitignore +0 -2
- data/tests/googletest/googletest/CHANGES +0 -157
- data/tests/googletest/googletest/build-aux/.keep +0 -0
- data/tests/googletest/googletest/docs/AdvancedGuide.md +0 -2182
- data/tests/googletest/googletest/docs/DevGuide.md +0 -126
- data/tests/googletest/googletest/docs/Documentation.md +0 -14
- data/tests/googletest/googletest/docs/FAQ.md +0 -1087
- data/tests/googletest/googletest/docs/Primer.md +0 -502
- data/tests/googletest/googletest/docs/Samples.md +0 -14
- data/tests/googletest/googletest/docs/V1_5_AdvancedGuide.md +0 -2096
- data/tests/googletest/googletest/docs/V1_5_Documentation.md +0 -12
- data/tests/googletest/googletest/docs/V1_5_FAQ.md +0 -886
- data/tests/googletest/googletest/docs/V1_5_Primer.md +0 -497
- data/tests/googletest/googletest/docs/V1_5_PumpManual.md +0 -177
- data/tests/googletest/googletest/docs/V1_5_XcodeGuide.md +0 -93
- data/tests/googletest/googletest/docs/V1_6_AdvancedGuide.md +0 -2178
- data/tests/googletest/googletest/docs/V1_6_Documentation.md +0 -14
- data/tests/googletest/googletest/docs/V1_6_FAQ.md +0 -1038
- data/tests/googletest/googletest/docs/V1_6_Primer.md +0 -501
- data/tests/googletest/googletest/docs/V1_6_PumpManual.md +0 -177
- data/tests/googletest/googletest/docs/V1_6_Samples.md +0 -14
- data/tests/googletest/googletest/docs/V1_6_XcodeGuide.md +0 -93
- data/tests/googletest/googletest/docs/V1_7_AdvancedGuide.md +0 -2181
- data/tests/googletest/googletest/docs/V1_7_Documentation.md +0 -14
- data/tests/googletest/googletest/docs/V1_7_FAQ.md +0 -1082
- data/tests/googletest/googletest/docs/V1_7_Primer.md +0 -501
- data/tests/googletest/googletest/docs/V1_7_PumpManual.md +0 -177
- data/tests/googletest/googletest/docs/V1_7_Samples.md +0 -14
- data/tests/googletest/googletest/docs/V1_7_XcodeGuide.md +0 -93
- data/tests/googletest/googletest/include/gtest/gtest-param-test.h.pump +0 -510
- data/tests/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
- data/tests/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
- data/tests/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
- data/tests/googletest/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
- data/tests/googletest/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
- data/tests/googletest/googletest/msvc/gtest-md.sln +0 -45
- data/tests/googletest/googletest/msvc/gtest-md.vcproj +0 -126
- data/tests/googletest/googletest/msvc/gtest.sln +0 -45
- data/tests/googletest/googletest/msvc/gtest.vcproj +0 -126
- data/tests/googletest/googletest/msvc/gtest_main-md.vcproj +0 -129
- data/tests/googletest/googletest/msvc/gtest_main.vcproj +0 -129
- data/tests/googletest/googletest/msvc/gtest_prod_test-md.vcproj +0 -164
- data/tests/googletest/googletest/msvc/gtest_prod_test.vcproj +0 -164
- data/tests/googletest/googletest/msvc/gtest_unittest-md.vcproj +0 -147
- data/tests/googletest/googletest/msvc/gtest_unittest.vcproj +0 -147
- data/tests/googletest/googletest/test/gtest-death-test_ex_test.cc +0 -93
- data/tests/googletest/googletest/test/gtest-death-test_test.cc +0 -1427
- data/tests/googletest/googletest/test/gtest-filepath_test.cc +0 -662
- data/tests/googletest/googletest/test/gtest-linked_ptr_test.cc +0 -154
- data/tests/googletest/googletest/test/gtest-listener_test.cc +0 -311
- data/tests/googletest/googletest/test/gtest-message_test.cc +0 -159
- data/tests/googletest/googletest/test/gtest-options_test.cc +0 -215
- data/tests/googletest/googletest/test/gtest-param-test2_test.cc +0 -65
- data/tests/googletest/googletest/test/gtest-param-test_test.cc +0 -1055
- data/tests/googletest/googletest/test/gtest-param-test_test.h +0 -57
- data/tests/googletest/googletest/test/gtest-port_test.cc +0 -1304
- data/tests/googletest/googletest/test/gtest-printers_test.cc +0 -1635
- data/tests/googletest/googletest/test/gtest-test-part_test.cc +0 -208
- data/tests/googletest/googletest/test/gtest-tuple_test.cc +0 -320
- data/tests/googletest/googletest/test/gtest_break_on_failure_unittest.py +0 -212
- data/tests/googletest/googletest/test/gtest_break_on_failure_unittest_.cc +0 -88
- data/tests/googletest/googletest/test/gtest_catch_exceptions_test.py +0 -237
- data/tests/googletest/googletest/test/gtest_catch_exceptions_test_.cc +0 -311
- data/tests/googletest/googletest/test/gtest_color_test.py +0 -130
- data/tests/googletest/googletest/test/gtest_color_test_.cc +0 -71
- data/tests/googletest/googletest/test/gtest_env_var_test.py +0 -117
- data/tests/googletest/googletest/test/gtest_env_var_test_.cc +0 -126
- data/tests/googletest/googletest/test/gtest_filter_unittest.py +0 -636
- data/tests/googletest/googletest/test/gtest_filter_unittest_.cc +0 -140
- data/tests/googletest/googletest/test/gtest_list_tests_unittest.py +0 -207
- data/tests/googletest/googletest/test/gtest_list_tests_unittest_.cc +0 -157
- data/tests/googletest/googletest/test/gtest_output_test.py +0 -340
- data/tests/googletest/googletest/test/gtest_output_test_.cc +0 -1062
- data/tests/googletest/googletest/test/gtest_output_test_golden_lin.txt +0 -743
- data/tests/googletest/googletest/test/gtest_shuffle_test.py +0 -325
- data/tests/googletest/googletest/test/gtest_shuffle_test_.cc +0 -103
- data/tests/googletest/googletest/test/gtest_throw_on_failure_test.py +0 -171
- data/tests/googletest/googletest/test/gtest_throw_on_failure_test_.cc +0 -72
- data/tests/googletest/googletest/test/gtest_uninitialized_test.py +0 -70
- data/tests/googletest/googletest/test/gtest_uninitialized_test_.cc +0 -43
- data/tests/googletest/travis.sh +0 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
$$ -*- mode: c++; -*-
|
|
2
|
-
$$ This is a Pump source file.
|
|
3
|
-
$$ gmock-generated-
|
|
2
|
+
$$ This is a Pump source file. Please use Pump to convert
|
|
3
|
+
$$ it to gmock-generated-matchers.h.
|
|
4
4
|
$$
|
|
5
5
|
$var n = 10 $$ The maximum arity we support.
|
|
6
6
|
$$ }} This line fixes auto-indentation of the following code in Emacs.
|
|
@@ -37,343 +37,18 @@ $$ }} This line fixes auto-indentation of the following code in Emacs.
|
|
|
37
37
|
//
|
|
38
38
|
// This file implements some commonly used variadic matchers.
|
|
39
39
|
|
|
40
|
+
// GOOGLETEST_CM0002 DO NOT DELETE
|
|
41
|
+
|
|
40
42
|
#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
|
|
41
43
|
#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
|
|
42
44
|
|
|
43
45
|
#include <iterator>
|
|
44
46
|
#include <sstream>
|
|
45
47
|
#include <string>
|
|
48
|
+
#include <utility>
|
|
46
49
|
#include <vector>
|
|
47
50
|
#include "gmock/gmock-matchers.h"
|
|
48
51
|
|
|
49
|
-
namespace testing {
|
|
50
|
-
namespace internal {
|
|
51
|
-
|
|
52
|
-
$range i 0..n-1
|
|
53
|
-
|
|
54
|
-
// The type of the i-th (0-based) field of Tuple.
|
|
55
|
-
#define GMOCK_FIELD_TYPE_(Tuple, i) \
|
|
56
|
-
typename ::testing::tuple_element<i, Tuple>::type
|
|
57
|
-
|
|
58
|
-
// TupleFields<Tuple, k0, ..., kn> is for selecting fields from a
|
|
59
|
-
// tuple of type Tuple. It has two members:
|
|
60
|
-
//
|
|
61
|
-
// type: a tuple type whose i-th field is the ki-th field of Tuple.
|
|
62
|
-
// GetSelectedFields(t): returns fields k0, ..., and kn of t as a tuple.
|
|
63
|
-
//
|
|
64
|
-
// For example, in class TupleFields<tuple<bool, char, int>, 2, 0>, we have:
|
|
65
|
-
//
|
|
66
|
-
// type is tuple<int, bool>, and
|
|
67
|
-
// GetSelectedFields(make_tuple(true, 'a', 42)) is (42, true).
|
|
68
|
-
|
|
69
|
-
template <class Tuple$for i [[, int k$i = -1]]>
|
|
70
|
-
class TupleFields;
|
|
71
|
-
|
|
72
|
-
// This generic version is used when there are $n selectors.
|
|
73
|
-
template <class Tuple$for i [[, int k$i]]>
|
|
74
|
-
class TupleFields {
|
|
75
|
-
public:
|
|
76
|
-
typedef ::testing::tuple<$for i, [[GMOCK_FIELD_TYPE_(Tuple, k$i)]]> type;
|
|
77
|
-
static type GetSelectedFields(const Tuple& t) {
|
|
78
|
-
return type($for i, [[get<k$i>(t)]]);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
// The following specialization is used for 0 ~ $(n-1) selectors.
|
|
83
|
-
|
|
84
|
-
$for i [[
|
|
85
|
-
$$ }}}
|
|
86
|
-
$range j 0..i-1
|
|
87
|
-
$range k 0..n-1
|
|
88
|
-
|
|
89
|
-
template <class Tuple$for j [[, int k$j]]>
|
|
90
|
-
class TupleFields<Tuple, $for k, [[$if k < i [[k$k]] $else [[-1]]]]> {
|
|
91
|
-
public:
|
|
92
|
-
typedef ::testing::tuple<$for j, [[GMOCK_FIELD_TYPE_(Tuple, k$j)]]> type;
|
|
93
|
-
static type GetSelectedFields(const Tuple& $if i==0 [[/* t */]] $else [[t]]) {
|
|
94
|
-
return type($for j, [[get<k$j>(t)]]);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
]]
|
|
99
|
-
|
|
100
|
-
#undef GMOCK_FIELD_TYPE_
|
|
101
|
-
|
|
102
|
-
// Implements the Args() matcher.
|
|
103
|
-
|
|
104
|
-
$var ks = [[$for i, [[k$i]]]]
|
|
105
|
-
template <class ArgsTuple$for i [[, int k$i = -1]]>
|
|
106
|
-
class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
|
|
107
|
-
public:
|
|
108
|
-
// ArgsTuple may have top-level const or reference modifiers.
|
|
109
|
-
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(ArgsTuple) RawArgsTuple;
|
|
110
|
-
typedef typename internal::TupleFields<RawArgsTuple, $ks>::type SelectedArgs;
|
|
111
|
-
typedef Matcher<const SelectedArgs&> MonomorphicInnerMatcher;
|
|
112
|
-
|
|
113
|
-
template <typename InnerMatcher>
|
|
114
|
-
explicit ArgsMatcherImpl(const InnerMatcher& inner_matcher)
|
|
115
|
-
: inner_matcher_(SafeMatcherCast<const SelectedArgs&>(inner_matcher)) {}
|
|
116
|
-
|
|
117
|
-
virtual bool MatchAndExplain(ArgsTuple args,
|
|
118
|
-
MatchResultListener* listener) const {
|
|
119
|
-
const SelectedArgs& selected_args = GetSelectedArgs(args);
|
|
120
|
-
if (!listener->IsInterested())
|
|
121
|
-
return inner_matcher_.Matches(selected_args);
|
|
122
|
-
|
|
123
|
-
PrintIndices(listener->stream());
|
|
124
|
-
*listener << "are " << PrintToString(selected_args);
|
|
125
|
-
|
|
126
|
-
StringMatchResultListener inner_listener;
|
|
127
|
-
const bool match = inner_matcher_.MatchAndExplain(selected_args,
|
|
128
|
-
&inner_listener);
|
|
129
|
-
PrintIfNotEmpty(inner_listener.str(), listener->stream());
|
|
130
|
-
return match;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
virtual void DescribeTo(::std::ostream* os) const {
|
|
134
|
-
*os << "are a tuple ";
|
|
135
|
-
PrintIndices(os);
|
|
136
|
-
inner_matcher_.DescribeTo(os);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
virtual void DescribeNegationTo(::std::ostream* os) const {
|
|
140
|
-
*os << "are a tuple ";
|
|
141
|
-
PrintIndices(os);
|
|
142
|
-
inner_matcher_.DescribeNegationTo(os);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
private:
|
|
146
|
-
static SelectedArgs GetSelectedArgs(ArgsTuple args) {
|
|
147
|
-
return TupleFields<RawArgsTuple, $ks>::GetSelectedFields(args);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Prints the indices of the selected fields.
|
|
151
|
-
static void PrintIndices(::std::ostream* os) {
|
|
152
|
-
*os << "whose fields (";
|
|
153
|
-
const int indices[$n] = { $ks };
|
|
154
|
-
for (int i = 0; i < $n; i++) {
|
|
155
|
-
if (indices[i] < 0)
|
|
156
|
-
break;
|
|
157
|
-
|
|
158
|
-
if (i >= 1)
|
|
159
|
-
*os << ", ";
|
|
160
|
-
|
|
161
|
-
*os << "#" << indices[i];
|
|
162
|
-
}
|
|
163
|
-
*os << ") ";
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const MonomorphicInnerMatcher inner_matcher_;
|
|
167
|
-
|
|
168
|
-
GTEST_DISALLOW_ASSIGN_(ArgsMatcherImpl);
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
template <class InnerMatcher$for i [[, int k$i = -1]]>
|
|
172
|
-
class ArgsMatcher {
|
|
173
|
-
public:
|
|
174
|
-
explicit ArgsMatcher(const InnerMatcher& inner_matcher)
|
|
175
|
-
: inner_matcher_(inner_matcher) {}
|
|
176
|
-
|
|
177
|
-
template <typename ArgsTuple>
|
|
178
|
-
operator Matcher<ArgsTuple>() const {
|
|
179
|
-
return MakeMatcher(new ArgsMatcherImpl<ArgsTuple, $ks>(inner_matcher_));
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
private:
|
|
183
|
-
const InnerMatcher inner_matcher_;
|
|
184
|
-
|
|
185
|
-
GTEST_DISALLOW_ASSIGN_(ArgsMatcher);
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
// A set of metafunctions for computing the result type of AllOf.
|
|
189
|
-
// AllOf(m1, ..., mN) returns
|
|
190
|
-
// AllOfResultN<decltype(m1), ..., decltype(mN)>::type.
|
|
191
|
-
|
|
192
|
-
// Although AllOf isn't defined for one argument, AllOfResult1 is defined
|
|
193
|
-
// to simplify the implementation.
|
|
194
|
-
template <typename M1>
|
|
195
|
-
struct AllOfResult1 {
|
|
196
|
-
typedef M1 type;
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
$range i 1..n
|
|
200
|
-
|
|
201
|
-
$range i 2..n
|
|
202
|
-
$for i [[
|
|
203
|
-
$range j 2..i
|
|
204
|
-
$var m = i/2
|
|
205
|
-
$range k 1..m
|
|
206
|
-
$range t m+1..i
|
|
207
|
-
|
|
208
|
-
template <typename M1$for j [[, typename M$j]]>
|
|
209
|
-
struct AllOfResult$i {
|
|
210
|
-
typedef BothOfMatcher<
|
|
211
|
-
typename AllOfResult$m<$for k, [[M$k]]>::type,
|
|
212
|
-
typename AllOfResult$(i-m)<$for t, [[M$t]]>::type
|
|
213
|
-
> type;
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
]]
|
|
217
|
-
|
|
218
|
-
// A set of metafunctions for computing the result type of AnyOf.
|
|
219
|
-
// AnyOf(m1, ..., mN) returns
|
|
220
|
-
// AnyOfResultN<decltype(m1), ..., decltype(mN)>::type.
|
|
221
|
-
|
|
222
|
-
// Although AnyOf isn't defined for one argument, AnyOfResult1 is defined
|
|
223
|
-
// to simplify the implementation.
|
|
224
|
-
template <typename M1>
|
|
225
|
-
struct AnyOfResult1 {
|
|
226
|
-
typedef M1 type;
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
$range i 1..n
|
|
230
|
-
|
|
231
|
-
$range i 2..n
|
|
232
|
-
$for i [[
|
|
233
|
-
$range j 2..i
|
|
234
|
-
$var m = i/2
|
|
235
|
-
$range k 1..m
|
|
236
|
-
$range t m+1..i
|
|
237
|
-
|
|
238
|
-
template <typename M1$for j [[, typename M$j]]>
|
|
239
|
-
struct AnyOfResult$i {
|
|
240
|
-
typedef EitherOfMatcher<
|
|
241
|
-
typename AnyOfResult$m<$for k, [[M$k]]>::type,
|
|
242
|
-
typename AnyOfResult$(i-m)<$for t, [[M$t]]>::type
|
|
243
|
-
> type;
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
]]
|
|
247
|
-
|
|
248
|
-
} // namespace internal
|
|
249
|
-
|
|
250
|
-
// Args<N1, N2, ..., Nk>(a_matcher) matches a tuple if the selected
|
|
251
|
-
// fields of it matches a_matcher. C++ doesn't support default
|
|
252
|
-
// arguments for function templates, so we have to overload it.
|
|
253
|
-
|
|
254
|
-
$range i 0..n
|
|
255
|
-
$for i [[
|
|
256
|
-
$range j 1..i
|
|
257
|
-
template <$for j [[int k$j, ]]typename InnerMatcher>
|
|
258
|
-
inline internal::ArgsMatcher<InnerMatcher$for j [[, k$j]]>
|
|
259
|
-
Args(const InnerMatcher& matcher) {
|
|
260
|
-
return internal::ArgsMatcher<InnerMatcher$for j [[, k$j]]>(matcher);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
]]
|
|
265
|
-
// ElementsAre(e_1, e_2, ... e_n) matches an STL-style container with
|
|
266
|
-
// n elements, where the i-th element in the container must
|
|
267
|
-
// match the i-th argument in the list. Each argument of
|
|
268
|
-
// ElementsAre() can be either a value or a matcher. We support up to
|
|
269
|
-
// $n arguments.
|
|
270
|
-
//
|
|
271
|
-
// The use of DecayArray in the implementation allows ElementsAre()
|
|
272
|
-
// to accept string literals, whose type is const char[N], but we
|
|
273
|
-
// want to treat them as const char*.
|
|
274
|
-
//
|
|
275
|
-
// NOTE: Since ElementsAre() cares about the order of the elements, it
|
|
276
|
-
// must not be used with containers whose elements's order is
|
|
277
|
-
// undefined (e.g. hash_map).
|
|
278
|
-
|
|
279
|
-
$range i 0..n
|
|
280
|
-
$for i [[
|
|
281
|
-
|
|
282
|
-
$range j 1..i
|
|
283
|
-
|
|
284
|
-
$if i>0 [[
|
|
285
|
-
|
|
286
|
-
template <$for j, [[typename T$j]]>
|
|
287
|
-
]]
|
|
288
|
-
|
|
289
|
-
inline internal::ElementsAreMatcher<
|
|
290
|
-
::testing::tuple<
|
|
291
|
-
$for j, [[
|
|
292
|
-
|
|
293
|
-
typename internal::DecayArray<T$j[[]]>::type]]> >
|
|
294
|
-
ElementsAre($for j, [[const T$j& e$j]]) {
|
|
295
|
-
typedef ::testing::tuple<
|
|
296
|
-
$for j, [[
|
|
297
|
-
|
|
298
|
-
typename internal::DecayArray<T$j[[]]>::type]]> Args;
|
|
299
|
-
return internal::ElementsAreMatcher<Args>(Args($for j, [[e$j]]));
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
]]
|
|
303
|
-
|
|
304
|
-
// UnorderedElementsAre(e_1, e_2, ..., e_n) is an ElementsAre extension
|
|
305
|
-
// that matches n elements in any order. We support up to n=$n arguments.
|
|
306
|
-
|
|
307
|
-
$range i 0..n
|
|
308
|
-
$for i [[
|
|
309
|
-
|
|
310
|
-
$range j 1..i
|
|
311
|
-
|
|
312
|
-
$if i>0 [[
|
|
313
|
-
|
|
314
|
-
template <$for j, [[typename T$j]]>
|
|
315
|
-
]]
|
|
316
|
-
|
|
317
|
-
inline internal::UnorderedElementsAreMatcher<
|
|
318
|
-
::testing::tuple<
|
|
319
|
-
$for j, [[
|
|
320
|
-
|
|
321
|
-
typename internal::DecayArray<T$j[[]]>::type]]> >
|
|
322
|
-
UnorderedElementsAre($for j, [[const T$j& e$j]]) {
|
|
323
|
-
typedef ::testing::tuple<
|
|
324
|
-
$for j, [[
|
|
325
|
-
|
|
326
|
-
typename internal::DecayArray<T$j[[]]>::type]]> Args;
|
|
327
|
-
return internal::UnorderedElementsAreMatcher<Args>(Args($for j, [[e$j]]));
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
]]
|
|
331
|
-
|
|
332
|
-
// AllOf(m1, m2, ..., mk) matches any value that matches all of the given
|
|
333
|
-
// sub-matchers. AllOf is called fully qualified to prevent ADL from firing.
|
|
334
|
-
|
|
335
|
-
$range i 2..n
|
|
336
|
-
$for i [[
|
|
337
|
-
$range j 1..i
|
|
338
|
-
$var m = i/2
|
|
339
|
-
$range k 1..m
|
|
340
|
-
$range t m+1..i
|
|
341
|
-
|
|
342
|
-
template <$for j, [[typename M$j]]>
|
|
343
|
-
inline typename internal::AllOfResult$i<$for j, [[M$j]]>::type
|
|
344
|
-
AllOf($for j, [[M$j m$j]]) {
|
|
345
|
-
return typename internal::AllOfResult$i<$for j, [[M$j]]>::type(
|
|
346
|
-
$if m == 1 [[m1]] $else [[::testing::AllOf($for k, [[m$k]])]],
|
|
347
|
-
$if m+1 == i [[m$i]] $else [[::testing::AllOf($for t, [[m$t]])]]);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
]]
|
|
351
|
-
|
|
352
|
-
// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given
|
|
353
|
-
// sub-matchers. AnyOf is called fully qualified to prevent ADL from firing.
|
|
354
|
-
|
|
355
|
-
$range i 2..n
|
|
356
|
-
$for i [[
|
|
357
|
-
$range j 1..i
|
|
358
|
-
$var m = i/2
|
|
359
|
-
$range k 1..m
|
|
360
|
-
$range t m+1..i
|
|
361
|
-
|
|
362
|
-
template <$for j, [[typename M$j]]>
|
|
363
|
-
inline typename internal::AnyOfResult$i<$for j, [[M$j]]>::type
|
|
364
|
-
AnyOf($for j, [[M$j m$j]]) {
|
|
365
|
-
return typename internal::AnyOfResult$i<$for j, [[M$j]]>::type(
|
|
366
|
-
$if m == 1 [[m1]] $else [[::testing::AnyOf($for k, [[m$k]])]],
|
|
367
|
-
$if m+1 == i [[m$i]] $else [[::testing::AnyOf($for t, [[m$t]])]]);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
]]
|
|
371
|
-
|
|
372
|
-
} // namespace testing
|
|
373
|
-
$$ } // This Pump meta comment fixes auto-indentation in Emacs. It will not
|
|
374
|
-
$$ // show up in the generated code.
|
|
375
|
-
|
|
376
|
-
|
|
377
52
|
// The MATCHER* family of macros can be used in a namespace scope to
|
|
378
53
|
// define custom matchers easily.
|
|
379
54
|
//
|
|
@@ -479,7 +154,7 @@ $$ // show up in the generated code.
|
|
|
479
154
|
// using testing::PrintToString;
|
|
480
155
|
//
|
|
481
156
|
// MATCHER_P2(InClosedRange, low, hi,
|
|
482
|
-
// string(negation ? "is not" : "is") + " in range [" +
|
|
157
|
+
// std::string(negation ? "is not" : "is") + " in range [" +
|
|
483
158
|
// PrintToString(low) + ", " + PrintToString(hi) + "]") {
|
|
484
159
|
// return low <= arg && arg <= hi;
|
|
485
160
|
// }
|
|
@@ -587,7 +262,8 @@ $$ // show up in the generated code.
|
|
|
587
262
|
// ================
|
|
588
263
|
//
|
|
589
264
|
// To learn more about using these macros, please search for 'MATCHER'
|
|
590
|
-
// on
|
|
265
|
+
// on
|
|
266
|
+
// https://github.com/google/googletest/blob/master/googlemock/docs/CookBook.md
|
|
591
267
|
|
|
592
268
|
$range i 0..n
|
|
593
269
|
$for i
|
|
@@ -604,32 +280,34 @@ $var template = [[$if i==0 [[]] $else [[
|
|
|
604
280
|
]]]]
|
|
605
281
|
$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
|
|
606
282
|
$var impl_ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
|
|
607
|
-
$var impl_inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(gmock_p$j)]]]]]]
|
|
608
|
-
$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(gmock_p$j)]]]]]]
|
|
283
|
+
$var impl_inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]]
|
|
284
|
+
$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]]
|
|
609
285
|
$var params = [[$for j, [[p$j]]]]
|
|
610
286
|
$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]]
|
|
611
287
|
$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]]
|
|
612
288
|
$var param_field_decls = [[$for j
|
|
613
289
|
[[
|
|
614
290
|
|
|
615
|
-
p$j##_type p$j;\
|
|
291
|
+
p$j##_type const p$j;\
|
|
616
292
|
]]]]
|
|
617
293
|
$var param_field_decls2 = [[$for j
|
|
618
294
|
[[
|
|
619
295
|
|
|
620
|
-
p$j##_type p$j;\
|
|
296
|
+
p$j##_type const p$j;\
|
|
621
297
|
]]]]
|
|
622
298
|
|
|
623
299
|
#define $macro_name(name$for j [[, p$j]], description)\$template
|
|
624
300
|
class $class_name {\
|
|
625
301
|
public:\
|
|
626
302
|
template <typename arg_type>\
|
|
627
|
-
class gmock_Impl : public ::testing::MatcherInterface
|
|
303
|
+
class gmock_Impl : public ::testing::MatcherInterface<\
|
|
304
|
+
GTEST_REFERENCE_TO_CONST_(arg_type)> {\
|
|
628
305
|
public:\
|
|
629
306
|
[[$if i==1 [[explicit ]]]]gmock_Impl($impl_ctor_param_list)\
|
|
630
307
|
$impl_inits {}\
|
|
631
308
|
virtual bool MatchAndExplain(\
|
|
632
|
-
arg_type arg
|
|
309
|
+
GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
|
|
310
|
+
::testing::MatchResultListener* result_listener) const;\
|
|
633
311
|
virtual void DescribeTo(::std::ostream* gmock_os) const {\
|
|
634
312
|
*gmock_os << FormatDescription(false);\
|
|
635
313
|
}\
|
|
@@ -637,16 +315,16 @@ $var param_field_decls2 = [[$for j
|
|
|
637
315
|
*gmock_os << FormatDescription(true);\
|
|
638
316
|
}\$param_field_decls
|
|
639
317
|
private:\
|
|
640
|
-
::
|
|
641
|
-
|
|
642
|
-
if (!gmock_description.empty())\
|
|
318
|
+
::std::string FormatDescription(bool negation) const {\
|
|
319
|
+
::std::string gmock_description = (description);\
|
|
320
|
+
if (!gmock_description.empty()) {\
|
|
643
321
|
return gmock_description;\
|
|
322
|
+
}\
|
|
644
323
|
return ::testing::internal::FormatMatcherDescription(\
|
|
645
324
|
negation, #name, \
|
|
646
325
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
|
647
|
-
::
|
|
326
|
+
::std::tuple<$for j, [[p$j##_type]]>($for j, [[p$j]])));\
|
|
648
327
|
}\
|
|
649
|
-
GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
|
|
650
328
|
};\
|
|
651
329
|
template <typename arg_type>\
|
|
652
330
|
operator ::testing::Matcher<arg_type>() const {\
|
|
@@ -656,14 +334,13 @@ $var param_field_decls2 = [[$for j
|
|
|
656
334
|
[[$if i==1 [[explicit ]]]]$class_name($ctor_param_list)$inits {\
|
|
657
335
|
}\$param_field_decls2
|
|
658
336
|
private:\
|
|
659
|
-
GTEST_DISALLOW_ASSIGN_($class_name);\
|
|
660
337
|
};\$template
|
|
661
338
|
inline $class_name$param_types name($param_types_and_names) {\
|
|
662
339
|
return $class_name$param_types($params);\
|
|
663
340
|
}\$template
|
|
664
341
|
template <typename arg_type>\
|
|
665
342
|
bool $class_name$param_types::gmock_Impl<arg_type>::MatchAndExplain(\
|
|
666
|
-
arg_type arg
|
|
343
|
+
GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
|
|
667
344
|
::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
|
|
668
345
|
const
|
|
669
346
|
]]
|
|
@@ -26,35 +26,42 @@
|
|
|
26
26
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
27
27
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
28
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
-
|
|
30
|
-
// Author: wan@google.com (Zhanyong Wan)
|
|
29
|
+
|
|
31
30
|
|
|
32
31
|
// Google Mock - a framework for writing C++ mock classes.
|
|
33
32
|
//
|
|
34
33
|
// This file implements some commonly used argument matchers. More
|
|
35
34
|
// matchers can be defined by the user implementing the
|
|
36
35
|
// MatcherInterface<T> interface if necessary.
|
|
36
|
+
//
|
|
37
|
+
// See googletest/include/gtest/gtest-matchers.h for the definition of class
|
|
38
|
+
// Matcher, class MatcherInterface, and others.
|
|
39
|
+
|
|
40
|
+
// GOOGLETEST_CM0002 DO NOT DELETE
|
|
37
41
|
|
|
38
42
|
#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|
|
39
43
|
#define GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|
|
40
44
|
|
|
41
45
|
#include <math.h>
|
|
42
46
|
#include <algorithm>
|
|
47
|
+
#include <initializer_list>
|
|
43
48
|
#include <iterator>
|
|
44
49
|
#include <limits>
|
|
50
|
+
#include <memory>
|
|
45
51
|
#include <ostream> // NOLINT
|
|
46
52
|
#include <sstream>
|
|
47
53
|
#include <string>
|
|
54
|
+
#include <type_traits>
|
|
48
55
|
#include <utility>
|
|
49
56
|
#include <vector>
|
|
50
|
-
|
|
51
57
|
#include "gmock/internal/gmock-internal-utils.h"
|
|
52
58
|
#include "gmock/internal/gmock-port.h"
|
|
53
59
|
#include "gtest/gtest.h"
|
|
54
60
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(
|
|
62
|
+
4251 5046 /* class A needs to have dll-interface to be used by clients of
|
|
63
|
+
class B */
|
|
64
|
+
/* Symbol involving type with internal linkage not defined */)
|
|
58
65
|
|
|
59
66
|
namespace testing {
|
|
60
67
|
|
|
@@ -70,123 +77,13 @@ namespace testing {
|
|
|
70
77
|
// ownership management as Matcher objects can now be copied like
|
|
71
78
|
// plain values.
|
|
72
79
|
|
|
73
|
-
// MatchResultListener is an abstract class. Its << operator can be
|
|
74
|
-
// used by a matcher to explain why a value matches or doesn't match.
|
|
75
|
-
//
|
|
76
|
-
// TODO(wan@google.com): add method
|
|
77
|
-
// bool InterestedInWhy(bool result) const;
|
|
78
|
-
// to indicate whether the listener is interested in why the match
|
|
79
|
-
// result is 'result'.
|
|
80
|
-
class MatchResultListener {
|
|
81
|
-
public:
|
|
82
|
-
// Creates a listener object with the given underlying ostream. The
|
|
83
|
-
// listener does not own the ostream, and does not dereference it
|
|
84
|
-
// in the constructor or destructor.
|
|
85
|
-
explicit MatchResultListener(::std::ostream* os) : stream_(os) {}
|
|
86
|
-
virtual ~MatchResultListener() = 0; // Makes this class abstract.
|
|
87
|
-
|
|
88
|
-
// Streams x to the underlying ostream; does nothing if the ostream
|
|
89
|
-
// is NULL.
|
|
90
|
-
template <typename T>
|
|
91
|
-
MatchResultListener& operator<<(const T& x) {
|
|
92
|
-
if (stream_ != NULL)
|
|
93
|
-
*stream_ << x;
|
|
94
|
-
return *this;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Returns the underlying ostream.
|
|
98
|
-
::std::ostream* stream() { return stream_; }
|
|
99
|
-
|
|
100
|
-
// Returns true iff the listener is interested in an explanation of
|
|
101
|
-
// the match result. A matcher's MatchAndExplain() method can use
|
|
102
|
-
// this information to avoid generating the explanation when no one
|
|
103
|
-
// intends to hear it.
|
|
104
|
-
bool IsInterested() const { return stream_ != NULL; }
|
|
105
|
-
|
|
106
|
-
private:
|
|
107
|
-
::std::ostream* const stream_;
|
|
108
|
-
|
|
109
|
-
GTEST_DISALLOW_COPY_AND_ASSIGN_(MatchResultListener);
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
inline MatchResultListener::~MatchResultListener() {
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// An instance of a subclass of this knows how to describe itself as a
|
|
116
|
-
// matcher.
|
|
117
|
-
class MatcherDescriberInterface {
|
|
118
|
-
public:
|
|
119
|
-
virtual ~MatcherDescriberInterface() {}
|
|
120
|
-
|
|
121
|
-
// Describes this matcher to an ostream. The function should print
|
|
122
|
-
// a verb phrase that describes the property a value matching this
|
|
123
|
-
// matcher should have. The subject of the verb phrase is the value
|
|
124
|
-
// being matched. For example, the DescribeTo() method of the Gt(7)
|
|
125
|
-
// matcher prints "is greater than 7".
|
|
126
|
-
virtual void DescribeTo(::std::ostream* os) const = 0;
|
|
127
|
-
|
|
128
|
-
// Describes the negation of this matcher to an ostream. For
|
|
129
|
-
// example, if the description of this matcher is "is greater than
|
|
130
|
-
// 7", the negated description could be "is not greater than 7".
|
|
131
|
-
// You are not required to override this when implementing
|
|
132
|
-
// MatcherInterface, but it is highly advised so that your matcher
|
|
133
|
-
// can produce good error messages.
|
|
134
|
-
virtual void DescribeNegationTo(::std::ostream* os) const {
|
|
135
|
-
*os << "not (";
|
|
136
|
-
DescribeTo(os);
|
|
137
|
-
*os << ")";
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
// The implementation of a matcher.
|
|
142
|
-
template <typename T>
|
|
143
|
-
class MatcherInterface : public MatcherDescriberInterface {
|
|
144
|
-
public:
|
|
145
|
-
// Returns true iff the matcher matches x; also explains the match
|
|
146
|
-
// result to 'listener' if necessary (see the next paragraph), in
|
|
147
|
-
// the form of a non-restrictive relative clause ("which ...",
|
|
148
|
-
// "whose ...", etc) that describes x. For example, the
|
|
149
|
-
// MatchAndExplain() method of the Pointee(...) matcher should
|
|
150
|
-
// generate an explanation like "which points to ...".
|
|
151
|
-
//
|
|
152
|
-
// Implementations of MatchAndExplain() should add an explanation of
|
|
153
|
-
// the match result *if and only if* they can provide additional
|
|
154
|
-
// information that's not already present (or not obvious) in the
|
|
155
|
-
// print-out of x and the matcher's description. Whether the match
|
|
156
|
-
// succeeds is not a factor in deciding whether an explanation is
|
|
157
|
-
// needed, as sometimes the caller needs to print a failure message
|
|
158
|
-
// when the match succeeds (e.g. when the matcher is used inside
|
|
159
|
-
// Not()).
|
|
160
|
-
//
|
|
161
|
-
// For example, a "has at least 10 elements" matcher should explain
|
|
162
|
-
// what the actual element count is, regardless of the match result,
|
|
163
|
-
// as it is useful information to the reader; on the other hand, an
|
|
164
|
-
// "is empty" matcher probably only needs to explain what the actual
|
|
165
|
-
// size is when the match fails, as it's redundant to say that the
|
|
166
|
-
// size is 0 when the value is already known to be empty.
|
|
167
|
-
//
|
|
168
|
-
// You should override this method when defining a new matcher.
|
|
169
|
-
//
|
|
170
|
-
// It's the responsibility of the caller (Google Mock) to guarantee
|
|
171
|
-
// that 'listener' is not NULL. This helps to simplify a matcher's
|
|
172
|
-
// implementation when it doesn't care about the performance, as it
|
|
173
|
-
// can talk to 'listener' without checking its validity first.
|
|
174
|
-
// However, in order to implement dummy listeners efficiently,
|
|
175
|
-
// listener->stream() may be NULL.
|
|
176
|
-
virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0;
|
|
177
|
-
|
|
178
|
-
// Inherits these methods from MatcherDescriberInterface:
|
|
179
|
-
// virtual void DescribeTo(::std::ostream* os) const = 0;
|
|
180
|
-
// virtual void DescribeNegationTo(::std::ostream* os) const;
|
|
181
|
-
};
|
|
182
|
-
|
|
183
80
|
// A match result listener that stores the explanation in a string.
|
|
184
81
|
class StringMatchResultListener : public MatchResultListener {
|
|
185
82
|
public:
|
|
186
83
|
StringMatchResultListener() : MatchResultListener(&ss_) {}
|
|
187
84
|
|
|
188
85
|
// Returns the explanation accumulated so far.
|
|
189
|
-
|
|
86
|
+
std::string str() const { return ss_.str(); }
|
|
190
87
|
|
|
191
88
|
// Clears the explanation accumulated so far.
|
|
192
89
|
void Clear() { ss_.str(""); }
|
|
@@ -197,306 +94,6 @@ class StringMatchResultListener : public MatchResultListener {
|
|
|
197
94
|
GTEST_DISALLOW_COPY_AND_ASSIGN_(StringMatchResultListener);
|
|
198
95
|
};
|
|
199
96
|
|
|
200
|
-
namespace internal {
|
|
201
|
-
|
|
202
|
-
struct AnyEq {
|
|
203
|
-
template <typename A, typename B>
|
|
204
|
-
bool operator()(const A& a, const B& b) const { return a == b; }
|
|
205
|
-
};
|
|
206
|
-
struct AnyNe {
|
|
207
|
-
template <typename A, typename B>
|
|
208
|
-
bool operator()(const A& a, const B& b) const { return a != b; }
|
|
209
|
-
};
|
|
210
|
-
struct AnyLt {
|
|
211
|
-
template <typename A, typename B>
|
|
212
|
-
bool operator()(const A& a, const B& b) const { return a < b; }
|
|
213
|
-
};
|
|
214
|
-
struct AnyGt {
|
|
215
|
-
template <typename A, typename B>
|
|
216
|
-
bool operator()(const A& a, const B& b) const { return a > b; }
|
|
217
|
-
};
|
|
218
|
-
struct AnyLe {
|
|
219
|
-
template <typename A, typename B>
|
|
220
|
-
bool operator()(const A& a, const B& b) const { return a <= b; }
|
|
221
|
-
};
|
|
222
|
-
struct AnyGe {
|
|
223
|
-
template <typename A, typename B>
|
|
224
|
-
bool operator()(const A& a, const B& b) const { return a >= b; }
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
// A match result listener that ignores the explanation.
|
|
228
|
-
class DummyMatchResultListener : public MatchResultListener {
|
|
229
|
-
public:
|
|
230
|
-
DummyMatchResultListener() : MatchResultListener(NULL) {}
|
|
231
|
-
|
|
232
|
-
private:
|
|
233
|
-
GTEST_DISALLOW_COPY_AND_ASSIGN_(DummyMatchResultListener);
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
// A match result listener that forwards the explanation to a given
|
|
237
|
-
// ostream. The difference between this and MatchResultListener is
|
|
238
|
-
// that the former is concrete.
|
|
239
|
-
class StreamMatchResultListener : public MatchResultListener {
|
|
240
|
-
public:
|
|
241
|
-
explicit StreamMatchResultListener(::std::ostream* os)
|
|
242
|
-
: MatchResultListener(os) {}
|
|
243
|
-
|
|
244
|
-
private:
|
|
245
|
-
GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamMatchResultListener);
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
// An internal class for implementing Matcher<T>, which will derive
|
|
249
|
-
// from it. We put functionalities common to all Matcher<T>
|
|
250
|
-
// specializations here to avoid code duplication.
|
|
251
|
-
template <typename T>
|
|
252
|
-
class MatcherBase {
|
|
253
|
-
public:
|
|
254
|
-
// Returns true iff the matcher matches x; also explains the match
|
|
255
|
-
// result to 'listener'.
|
|
256
|
-
bool MatchAndExplain(T x, MatchResultListener* listener) const {
|
|
257
|
-
return impl_->MatchAndExplain(x, listener);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// Returns true iff this matcher matches x.
|
|
261
|
-
bool Matches(T x) const {
|
|
262
|
-
DummyMatchResultListener dummy;
|
|
263
|
-
return MatchAndExplain(x, &dummy);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// Describes this matcher to an ostream.
|
|
267
|
-
void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
|
|
268
|
-
|
|
269
|
-
// Describes the negation of this matcher to an ostream.
|
|
270
|
-
void DescribeNegationTo(::std::ostream* os) const {
|
|
271
|
-
impl_->DescribeNegationTo(os);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// Explains why x matches, or doesn't match, the matcher.
|
|
275
|
-
void ExplainMatchResultTo(T x, ::std::ostream* os) const {
|
|
276
|
-
StreamMatchResultListener listener(os);
|
|
277
|
-
MatchAndExplain(x, &listener);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// Returns the describer for this matcher object; retains ownership
|
|
281
|
-
// of the describer, which is only guaranteed to be alive when
|
|
282
|
-
// this matcher object is alive.
|
|
283
|
-
const MatcherDescriberInterface* GetDescriber() const {
|
|
284
|
-
return impl_.get();
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
protected:
|
|
288
|
-
MatcherBase() {}
|
|
289
|
-
|
|
290
|
-
// Constructs a matcher from its implementation.
|
|
291
|
-
explicit MatcherBase(const MatcherInterface<T>* impl)
|
|
292
|
-
: impl_(impl) {}
|
|
293
|
-
|
|
294
|
-
virtual ~MatcherBase() {}
|
|
295
|
-
|
|
296
|
-
private:
|
|
297
|
-
// shared_ptr (util/gtl/shared_ptr.h) and linked_ptr have similar
|
|
298
|
-
// interfaces. The former dynamically allocates a chunk of memory
|
|
299
|
-
// to hold the reference count, while the latter tracks all
|
|
300
|
-
// references using a circular linked list without allocating
|
|
301
|
-
// memory. It has been observed that linked_ptr performs better in
|
|
302
|
-
// typical scenarios. However, shared_ptr can out-perform
|
|
303
|
-
// linked_ptr when there are many more uses of the copy constructor
|
|
304
|
-
// than the default constructor.
|
|
305
|
-
//
|
|
306
|
-
// If performance becomes a problem, we should see if using
|
|
307
|
-
// shared_ptr helps.
|
|
308
|
-
::testing::internal::linked_ptr<const MatcherInterface<T> > impl_;
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
} // namespace internal
|
|
312
|
-
|
|
313
|
-
// A Matcher<T> is a copyable and IMMUTABLE (except by assignment)
|
|
314
|
-
// object that can check whether a value of type T matches. The
|
|
315
|
-
// implementation of Matcher<T> is just a linked_ptr to const
|
|
316
|
-
// MatcherInterface<T>, so copying is fairly cheap. Don't inherit
|
|
317
|
-
// from Matcher!
|
|
318
|
-
template <typename T>
|
|
319
|
-
class Matcher : public internal::MatcherBase<T> {
|
|
320
|
-
public:
|
|
321
|
-
// Constructs a null matcher. Needed for storing Matcher objects in STL
|
|
322
|
-
// containers. A default-constructed matcher is not yet initialized. You
|
|
323
|
-
// cannot use it until a valid value has been assigned to it.
|
|
324
|
-
explicit Matcher() {} // NOLINT
|
|
325
|
-
|
|
326
|
-
// Constructs a matcher from its implementation.
|
|
327
|
-
explicit Matcher(const MatcherInterface<T>* impl)
|
|
328
|
-
: internal::MatcherBase<T>(impl) {}
|
|
329
|
-
|
|
330
|
-
// Implicit constructor here allows people to write
|
|
331
|
-
// EXPECT_CALL(foo, Bar(5)) instead of EXPECT_CALL(foo, Bar(Eq(5))) sometimes
|
|
332
|
-
Matcher(T value); // NOLINT
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
// The following two specializations allow the user to write str
|
|
336
|
-
// instead of Eq(str) and "foo" instead of Eq("foo") when a string
|
|
337
|
-
// matcher is expected.
|
|
338
|
-
template <>
|
|
339
|
-
class GTEST_API_ Matcher<const internal::string&>
|
|
340
|
-
: public internal::MatcherBase<const internal::string&> {
|
|
341
|
-
public:
|
|
342
|
-
Matcher() {}
|
|
343
|
-
|
|
344
|
-
explicit Matcher(const MatcherInterface<const internal::string&>* impl)
|
|
345
|
-
: internal::MatcherBase<const internal::string&>(impl) {}
|
|
346
|
-
|
|
347
|
-
// Allows the user to write str instead of Eq(str) sometimes, where
|
|
348
|
-
// str is a string object.
|
|
349
|
-
Matcher(const internal::string& s); // NOLINT
|
|
350
|
-
|
|
351
|
-
// Allows the user to write "foo" instead of Eq("foo") sometimes.
|
|
352
|
-
Matcher(const char* s); // NOLINT
|
|
353
|
-
};
|
|
354
|
-
|
|
355
|
-
template <>
|
|
356
|
-
class GTEST_API_ Matcher<internal::string>
|
|
357
|
-
: public internal::MatcherBase<internal::string> {
|
|
358
|
-
public:
|
|
359
|
-
Matcher() {}
|
|
360
|
-
|
|
361
|
-
explicit Matcher(const MatcherInterface<internal::string>* impl)
|
|
362
|
-
: internal::MatcherBase<internal::string>(impl) {}
|
|
363
|
-
|
|
364
|
-
// Allows the user to write str instead of Eq(str) sometimes, where
|
|
365
|
-
// str is a string object.
|
|
366
|
-
Matcher(const internal::string& s); // NOLINT
|
|
367
|
-
|
|
368
|
-
// Allows the user to write "foo" instead of Eq("foo") sometimes.
|
|
369
|
-
Matcher(const char* s); // NOLINT
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
#if GTEST_HAS_STRING_PIECE_
|
|
373
|
-
// The following two specializations allow the user to write str
|
|
374
|
-
// instead of Eq(str) and "foo" instead of Eq("foo") when a StringPiece
|
|
375
|
-
// matcher is expected.
|
|
376
|
-
template <>
|
|
377
|
-
class GTEST_API_ Matcher<const StringPiece&>
|
|
378
|
-
: public internal::MatcherBase<const StringPiece&> {
|
|
379
|
-
public:
|
|
380
|
-
Matcher() {}
|
|
381
|
-
|
|
382
|
-
explicit Matcher(const MatcherInterface<const StringPiece&>* impl)
|
|
383
|
-
: internal::MatcherBase<const StringPiece&>(impl) {}
|
|
384
|
-
|
|
385
|
-
// Allows the user to write str instead of Eq(str) sometimes, where
|
|
386
|
-
// str is a string object.
|
|
387
|
-
Matcher(const internal::string& s); // NOLINT
|
|
388
|
-
|
|
389
|
-
// Allows the user to write "foo" instead of Eq("foo") sometimes.
|
|
390
|
-
Matcher(const char* s); // NOLINT
|
|
391
|
-
|
|
392
|
-
// Allows the user to pass StringPieces directly.
|
|
393
|
-
Matcher(StringPiece s); // NOLINT
|
|
394
|
-
};
|
|
395
|
-
|
|
396
|
-
template <>
|
|
397
|
-
class GTEST_API_ Matcher<StringPiece>
|
|
398
|
-
: public internal::MatcherBase<StringPiece> {
|
|
399
|
-
public:
|
|
400
|
-
Matcher() {}
|
|
401
|
-
|
|
402
|
-
explicit Matcher(const MatcherInterface<StringPiece>* impl)
|
|
403
|
-
: internal::MatcherBase<StringPiece>(impl) {}
|
|
404
|
-
|
|
405
|
-
// Allows the user to write str instead of Eq(str) sometimes, where
|
|
406
|
-
// str is a string object.
|
|
407
|
-
Matcher(const internal::string& s); // NOLINT
|
|
408
|
-
|
|
409
|
-
// Allows the user to write "foo" instead of Eq("foo") sometimes.
|
|
410
|
-
Matcher(const char* s); // NOLINT
|
|
411
|
-
|
|
412
|
-
// Allows the user to pass StringPieces directly.
|
|
413
|
-
Matcher(StringPiece s); // NOLINT
|
|
414
|
-
};
|
|
415
|
-
#endif // GTEST_HAS_STRING_PIECE_
|
|
416
|
-
|
|
417
|
-
// The PolymorphicMatcher class template makes it easy to implement a
|
|
418
|
-
// polymorphic matcher (i.e. a matcher that can match values of more
|
|
419
|
-
// than one type, e.g. Eq(n) and NotNull()).
|
|
420
|
-
//
|
|
421
|
-
// To define a polymorphic matcher, a user should provide an Impl
|
|
422
|
-
// class that has a DescribeTo() method and a DescribeNegationTo()
|
|
423
|
-
// method, and define a member function (or member function template)
|
|
424
|
-
//
|
|
425
|
-
// bool MatchAndExplain(const Value& value,
|
|
426
|
-
// MatchResultListener* listener) const;
|
|
427
|
-
//
|
|
428
|
-
// See the definition of NotNull() for a complete example.
|
|
429
|
-
template <class Impl>
|
|
430
|
-
class PolymorphicMatcher {
|
|
431
|
-
public:
|
|
432
|
-
explicit PolymorphicMatcher(const Impl& an_impl) : impl_(an_impl) {}
|
|
433
|
-
|
|
434
|
-
// Returns a mutable reference to the underlying matcher
|
|
435
|
-
// implementation object.
|
|
436
|
-
Impl& mutable_impl() { return impl_; }
|
|
437
|
-
|
|
438
|
-
// Returns an immutable reference to the underlying matcher
|
|
439
|
-
// implementation object.
|
|
440
|
-
const Impl& impl() const { return impl_; }
|
|
441
|
-
|
|
442
|
-
template <typename T>
|
|
443
|
-
operator Matcher<T>() const {
|
|
444
|
-
return Matcher<T>(new MonomorphicImpl<T>(impl_));
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
private:
|
|
448
|
-
template <typename T>
|
|
449
|
-
class MonomorphicImpl : public MatcherInterface<T> {
|
|
450
|
-
public:
|
|
451
|
-
explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
|
|
452
|
-
|
|
453
|
-
virtual void DescribeTo(::std::ostream* os) const {
|
|
454
|
-
impl_.DescribeTo(os);
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
virtual void DescribeNegationTo(::std::ostream* os) const {
|
|
458
|
-
impl_.DescribeNegationTo(os);
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
|
|
462
|
-
return impl_.MatchAndExplain(x, listener);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
private:
|
|
466
|
-
const Impl impl_;
|
|
467
|
-
|
|
468
|
-
GTEST_DISALLOW_ASSIGN_(MonomorphicImpl);
|
|
469
|
-
};
|
|
470
|
-
|
|
471
|
-
Impl impl_;
|
|
472
|
-
|
|
473
|
-
GTEST_DISALLOW_ASSIGN_(PolymorphicMatcher);
|
|
474
|
-
};
|
|
475
|
-
|
|
476
|
-
// Creates a matcher from its implementation. This is easier to use
|
|
477
|
-
// than the Matcher<T> constructor as it doesn't require you to
|
|
478
|
-
// explicitly write the template argument, e.g.
|
|
479
|
-
//
|
|
480
|
-
// MakeMatcher(foo);
|
|
481
|
-
// vs
|
|
482
|
-
// Matcher<const string&>(foo);
|
|
483
|
-
template <typename T>
|
|
484
|
-
inline Matcher<T> MakeMatcher(const MatcherInterface<T>* impl) {
|
|
485
|
-
return Matcher<T>(impl);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
// Creates a polymorphic matcher from its implementation. This is
|
|
489
|
-
// easier to use than the PolymorphicMatcher<Impl> constructor as it
|
|
490
|
-
// doesn't require you to explicitly write the template argument, e.g.
|
|
491
|
-
//
|
|
492
|
-
// MakePolymorphicMatcher(foo);
|
|
493
|
-
// vs
|
|
494
|
-
// PolymorphicMatcher<TypeOfFoo>(foo);
|
|
495
|
-
template <class Impl>
|
|
496
|
-
inline PolymorphicMatcher<Impl> MakePolymorphicMatcher(const Impl& impl) {
|
|
497
|
-
return PolymorphicMatcher<Impl>(impl);
|
|
498
|
-
}
|
|
499
|
-
|
|
500
97
|
// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
|
|
501
98
|
// and MUST NOT BE USED IN USER CODE!!!
|
|
502
99
|
namespace internal {
|
|
@@ -515,7 +112,7 @@ template <typename T, typename M>
|
|
|
515
112
|
class MatcherCastImpl {
|
|
516
113
|
public:
|
|
517
114
|
static Matcher<T> Cast(const M& polymorphic_matcher_or_value) {
|
|
518
|
-
// M can be a
|
|
115
|
+
// M can be a polymorphic matcher, in which case we want to use
|
|
519
116
|
// its conversion operator to create Matcher<T>. Or it can be a value
|
|
520
117
|
// that should be passed to the Matcher<T>'s constructor.
|
|
521
118
|
//
|
|
@@ -531,21 +128,18 @@ class MatcherCastImpl {
|
|
|
531
128
|
return CastImpl(
|
|
532
129
|
polymorphic_matcher_or_value,
|
|
533
130
|
BooleanConstant<
|
|
534
|
-
|
|
131
|
+
std::is_convertible<M, Matcher<T> >::value>(),
|
|
132
|
+
BooleanConstant<
|
|
133
|
+
std::is_convertible<M, T>::value>());
|
|
535
134
|
}
|
|
536
135
|
|
|
537
136
|
private:
|
|
538
|
-
|
|
539
|
-
// M can't be implicitly converted to Matcher<T>, so M isn't a polymorphic
|
|
540
|
-
// matcher. It must be a value then. Use direct initialization to create
|
|
541
|
-
// a matcher.
|
|
542
|
-
return Matcher<T>(ImplicitCast_<T>(value));
|
|
543
|
-
}
|
|
544
|
-
|
|
137
|
+
template <bool Ignore>
|
|
545
138
|
static Matcher<T> CastImpl(const M& polymorphic_matcher_or_value,
|
|
546
|
-
BooleanConstant<true>
|
|
139
|
+
BooleanConstant<true> /* convertible_to_matcher */,
|
|
140
|
+
BooleanConstant<Ignore>) {
|
|
547
141
|
// M is implicitly convertible to Matcher<T>, which means that either
|
|
548
|
-
// M is a
|
|
142
|
+
// M is a polymorphic matcher or Matcher<T> has an implicit constructor
|
|
549
143
|
// from M. In both cases using the implicit conversion will produce a
|
|
550
144
|
// matcher.
|
|
551
145
|
//
|
|
@@ -554,6 +148,29 @@ class MatcherCastImpl {
|
|
|
554
148
|
// (first to create T from M and then to create Matcher<T> from T).
|
|
555
149
|
return polymorphic_matcher_or_value;
|
|
556
150
|
}
|
|
151
|
+
|
|
152
|
+
// M can't be implicitly converted to Matcher<T>, so M isn't a polymorphic
|
|
153
|
+
// matcher. It's a value of a type implicitly convertible to T. Use direct
|
|
154
|
+
// initialization to create a matcher.
|
|
155
|
+
static Matcher<T> CastImpl(
|
|
156
|
+
const M& value, BooleanConstant<false> /* convertible_to_matcher */,
|
|
157
|
+
BooleanConstant<true> /* convertible_to_T */) {
|
|
158
|
+
return Matcher<T>(ImplicitCast_<T>(value));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// M can't be implicitly converted to either Matcher<T> or T. Attempt to use
|
|
162
|
+
// polymorphic matcher Eq(value) in this case.
|
|
163
|
+
//
|
|
164
|
+
// Note that we first attempt to perform an implicit cast on the value and
|
|
165
|
+
// only fall back to the polymorphic Eq() matcher afterwards because the
|
|
166
|
+
// latter calls bool operator==(const Lhs& lhs, const Rhs& rhs) in the end
|
|
167
|
+
// which might be undefined even when Rhs is implicitly convertible to Lhs
|
|
168
|
+
// (e.g. std::pair<const int, int> vs. std::pair<int, int>).
|
|
169
|
+
//
|
|
170
|
+
// We don't define this method inline as we need the declaration of Eq().
|
|
171
|
+
static Matcher<T> CastImpl(
|
|
172
|
+
const M& value, BooleanConstant<false> /* convertible_to_matcher */,
|
|
173
|
+
BooleanConstant<false> /* convertible_to_T */);
|
|
557
174
|
};
|
|
558
175
|
|
|
559
176
|
// This more specialized version is used when MatcherCast()'s argument
|
|
@@ -573,15 +190,29 @@ class MatcherCastImpl<T, Matcher<U> > {
|
|
|
573
190
|
: source_matcher_(source_matcher) {}
|
|
574
191
|
|
|
575
192
|
// We delegate the matching logic to the source matcher.
|
|
576
|
-
|
|
193
|
+
bool MatchAndExplain(T x, MatchResultListener* listener) const override {
|
|
194
|
+
using FromType = typename std::remove_cv<typename std::remove_pointer<
|
|
195
|
+
typename std::remove_reference<T>::type>::type>::type;
|
|
196
|
+
using ToType = typename std::remove_cv<typename std::remove_pointer<
|
|
197
|
+
typename std::remove_reference<U>::type>::type>::type;
|
|
198
|
+
// Do not allow implicitly converting base*/& to derived*/&.
|
|
199
|
+
static_assert(
|
|
200
|
+
// Do not trigger if only one of them is a pointer. That implies a
|
|
201
|
+
// regular conversion and not a down_cast.
|
|
202
|
+
(std::is_pointer<typename std::remove_reference<T>::type>::value !=
|
|
203
|
+
std::is_pointer<typename std::remove_reference<U>::type>::value) ||
|
|
204
|
+
std::is_same<FromType, ToType>::value ||
|
|
205
|
+
!std::is_base_of<FromType, ToType>::value,
|
|
206
|
+
"Can't implicitly convert from <base> to <derived>");
|
|
207
|
+
|
|
577
208
|
return source_matcher_.MatchAndExplain(static_cast<U>(x), listener);
|
|
578
209
|
}
|
|
579
210
|
|
|
580
|
-
|
|
211
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
581
212
|
source_matcher_.DescribeTo(os);
|
|
582
213
|
}
|
|
583
214
|
|
|
584
|
-
|
|
215
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
585
216
|
source_matcher_.DescribeNegationTo(os);
|
|
586
217
|
}
|
|
587
218
|
|
|
@@ -613,11 +244,8 @@ inline Matcher<T> MatcherCast(const M& matcher) {
|
|
|
613
244
|
|
|
614
245
|
// Implements SafeMatcherCast().
|
|
615
246
|
//
|
|
616
|
-
//
|
|
617
|
-
//
|
|
618
|
-
// template <T, M> ... (M) and
|
|
619
|
-
// template <T, U> ... (const Matcher<U>&)
|
|
620
|
-
// for function templates but can for member function templates.
|
|
247
|
+
// FIXME: The intermediate SafeMatcherCastImpl class was introduced as a
|
|
248
|
+
// workaround for a compiler bug, and can now be removed.
|
|
621
249
|
template <typename T>
|
|
622
250
|
class SafeMatcherCastImpl {
|
|
623
251
|
public:
|
|
@@ -640,13 +268,13 @@ class SafeMatcherCastImpl {
|
|
|
640
268
|
template <typename U>
|
|
641
269
|
static inline Matcher<T> Cast(const Matcher<U>& matcher) {
|
|
642
270
|
// Enforce that T can be implicitly converted to U.
|
|
643
|
-
GTEST_COMPILE_ASSERT_((
|
|
644
|
-
|
|
271
|
+
GTEST_COMPILE_ASSERT_((std::is_convertible<T, U>::value),
|
|
272
|
+
"T must be implicitly convertible to U");
|
|
645
273
|
// Enforce that we are not converting a non-reference type T to a reference
|
|
646
274
|
// type U.
|
|
647
275
|
GTEST_COMPILE_ASSERT_(
|
|
648
276
|
internal::is_reference<T>::value || !internal::is_reference<U>::value,
|
|
649
|
-
|
|
277
|
+
cannot_convert_non_reference_arg_to_reference);
|
|
650
278
|
// In case both T and U are arithmetic types, enforce that the
|
|
651
279
|
// conversion is not lossy.
|
|
652
280
|
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT;
|
|
@@ -675,9 +303,9 @@ Matcher<T> A();
|
|
|
675
303
|
namespace internal {
|
|
676
304
|
|
|
677
305
|
// If the explanation is not empty, prints it to the ostream.
|
|
678
|
-
inline void PrintIfNotEmpty(const
|
|
306
|
+
inline void PrintIfNotEmpty(const std::string& explanation,
|
|
679
307
|
::std::ostream* os) {
|
|
680
|
-
if (explanation != "" && os !=
|
|
308
|
+
if (explanation != "" && os != nullptr) {
|
|
681
309
|
*os << ", " << explanation;
|
|
682
310
|
}
|
|
683
311
|
}
|
|
@@ -685,11 +313,11 @@ inline void PrintIfNotEmpty(const internal::string& explanation,
|
|
|
685
313
|
// Returns true if the given type name is easy to read by a human.
|
|
686
314
|
// This is used to decide whether printing the type of a value might
|
|
687
315
|
// be helpful.
|
|
688
|
-
inline bool IsReadableTypeName(const string& type_name) {
|
|
316
|
+
inline bool IsReadableTypeName(const std::string& type_name) {
|
|
689
317
|
// We consider a type name readable if it's short or doesn't contain
|
|
690
318
|
// a template or function type.
|
|
691
319
|
return (type_name.length() <= 20 ||
|
|
692
|
-
type_name.find_first_of("<(") == string::npos);
|
|
320
|
+
type_name.find_first_of("<(") == std::string::npos);
|
|
693
321
|
}
|
|
694
322
|
|
|
695
323
|
// Matches the value against the given matcher, prints the value and explains
|
|
@@ -711,7 +339,7 @@ bool MatchPrintAndExplain(Value& value, const Matcher<T>& matcher,
|
|
|
711
339
|
|
|
712
340
|
UniversalPrint(value, listener->stream());
|
|
713
341
|
#if GTEST_HAS_RTTI
|
|
714
|
-
const string& type_name = GetTypeName<Value>();
|
|
342
|
+
const std::string& type_name = GetTypeName<Value>();
|
|
715
343
|
if (IsReadableTypeName(type_name))
|
|
716
344
|
*listener->stream() << " (of type " << type_name << ")";
|
|
717
345
|
#endif
|
|
@@ -731,8 +359,8 @@ class TuplePrefix {
|
|
|
731
359
|
template <typename MatcherTuple, typename ValueTuple>
|
|
732
360
|
static bool Matches(const MatcherTuple& matcher_tuple,
|
|
733
361
|
const ValueTuple& value_tuple) {
|
|
734
|
-
return TuplePrefix<N - 1>::Matches(matcher_tuple, value_tuple)
|
|
735
|
-
|
|
362
|
+
return TuplePrefix<N - 1>::Matches(matcher_tuple, value_tuple) &&
|
|
363
|
+
std::get<N - 1>(matcher_tuple).Matches(std::get<N - 1>(value_tuple));
|
|
736
364
|
}
|
|
737
365
|
|
|
738
366
|
// TuplePrefix<N>::ExplainMatchFailuresTo(matchers, values, os)
|
|
@@ -748,16 +376,14 @@ class TuplePrefix {
|
|
|
748
376
|
|
|
749
377
|
// Then describes the failure (if any) in the (N - 1)-th (0-based)
|
|
750
378
|
// field.
|
|
751
|
-
typename tuple_element<N - 1, MatcherTuple>::type matcher =
|
|
752
|
-
get<N - 1>(matchers);
|
|
753
|
-
typedef typename tuple_element<N - 1, ValueTuple>::type Value;
|
|
754
|
-
Value value = get<N - 1>(values);
|
|
379
|
+
typename std::tuple_element<N - 1, MatcherTuple>::type matcher =
|
|
380
|
+
std::get<N - 1>(matchers);
|
|
381
|
+
typedef typename std::tuple_element<N - 1, ValueTuple>::type Value;
|
|
382
|
+
const Value& value = std::get<N - 1>(values);
|
|
755
383
|
StringMatchResultListener listener;
|
|
756
384
|
if (!matcher.MatchAndExplain(value, &listener)) {
|
|
757
|
-
// TODO(wan): include in the message the name of the parameter
|
|
758
|
-
// as used in MOCK_METHOD*() when possible.
|
|
759
385
|
*os << " Expected arg #" << N - 1 << ": ";
|
|
760
|
-
get<N - 1>(matchers).DescribeTo(os);
|
|
386
|
+
std::get<N - 1>(matchers).DescribeTo(os);
|
|
761
387
|
*os << "\n Actual: ";
|
|
762
388
|
// We remove the reference in type Value to prevent the
|
|
763
389
|
// universal printer from printing the address of value, which
|
|
@@ -797,11 +423,11 @@ bool TupleMatches(const MatcherTuple& matcher_tuple,
|
|
|
797
423
|
const ValueTuple& value_tuple) {
|
|
798
424
|
// Makes sure that matcher_tuple and value_tuple have the same
|
|
799
425
|
// number of fields.
|
|
800
|
-
GTEST_COMPILE_ASSERT_(tuple_size<MatcherTuple>::value ==
|
|
801
|
-
|
|
426
|
+
GTEST_COMPILE_ASSERT_(std::tuple_size<MatcherTuple>::value ==
|
|
427
|
+
std::tuple_size<ValueTuple>::value,
|
|
802
428
|
matcher_and_value_have_different_numbers_of_fields);
|
|
803
|
-
return TuplePrefix<tuple_size<ValueTuple>::value>::
|
|
804
|
-
|
|
429
|
+
return TuplePrefix<std::tuple_size<ValueTuple>::value>::Matches(matcher_tuple,
|
|
430
|
+
value_tuple);
|
|
805
431
|
}
|
|
806
432
|
|
|
807
433
|
// Describes failures in matching matchers against values. If there
|
|
@@ -810,7 +436,7 @@ template <typename MatcherTuple, typename ValueTuple>
|
|
|
810
436
|
void ExplainMatchFailureTupleTo(const MatcherTuple& matchers,
|
|
811
437
|
const ValueTuple& values,
|
|
812
438
|
::std::ostream* os) {
|
|
813
|
-
TuplePrefix<tuple_size<MatcherTuple>::value>::ExplainMatchFailuresTo(
|
|
439
|
+
TuplePrefix<std::tuple_size<MatcherTuple>::value>::ExplainMatchFailuresTo(
|
|
814
440
|
matchers, values, os);
|
|
815
441
|
}
|
|
816
442
|
|
|
@@ -821,7 +447,7 @@ void ExplainMatchFailureTupleTo(const MatcherTuple& matchers,
|
|
|
821
447
|
template <typename Tuple, typename Func, typename OutIter>
|
|
822
448
|
class TransformTupleValuesHelper {
|
|
823
449
|
private:
|
|
824
|
-
typedef ::
|
|
450
|
+
typedef ::std::tuple_size<Tuple> TupleSize;
|
|
825
451
|
|
|
826
452
|
public:
|
|
827
453
|
// For each member of tuple 't', taken in order, evaluates '*out++ = f(t)'.
|
|
@@ -834,7 +460,7 @@ class TransformTupleValuesHelper {
|
|
|
834
460
|
template <typename Tup, size_t kRemainingSize>
|
|
835
461
|
struct IterateOverTuple {
|
|
836
462
|
OutIter operator() (Func f, const Tup& t, OutIter out) const {
|
|
837
|
-
*out++ = f(::
|
|
463
|
+
*out++ = f(::std::get<TupleSize::value - kRemainingSize>(t));
|
|
838
464
|
return IterateOverTuple<Tup, kRemainingSize - 1>()(f, t, out);
|
|
839
465
|
}
|
|
840
466
|
};
|
|
@@ -856,12 +482,14 @@ OutIter TransformTupleValues(Func f, const Tuple& t, OutIter out) {
|
|
|
856
482
|
|
|
857
483
|
// Implements A<T>().
|
|
858
484
|
template <typename T>
|
|
859
|
-
class AnyMatcherImpl : public MatcherInterface<T
|
|
485
|
+
class AnyMatcherImpl : public MatcherInterface<const T&> {
|
|
860
486
|
public:
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
487
|
+
bool MatchAndExplain(const T& /* x */,
|
|
488
|
+
MatchResultListener* /* listener */) const override {
|
|
489
|
+
return true;
|
|
490
|
+
}
|
|
491
|
+
void DescribeTo(::std::ostream* os) const override { *os << "is anything"; }
|
|
492
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
865
493
|
// This is mostly for completeness' safe, as it's not very useful
|
|
866
494
|
// to write Not(A<bool>()). However we cannot completely rule out
|
|
867
495
|
// such a possibility, and it doesn't hurt to be prepared.
|
|
@@ -879,99 +507,6 @@ class AnythingMatcher {
|
|
|
879
507
|
operator Matcher<T>() const { return A<T>(); }
|
|
880
508
|
};
|
|
881
509
|
|
|
882
|
-
// Implements a matcher that compares a given value with a
|
|
883
|
-
// pre-supplied value using one of the ==, <=, <, etc, operators. The
|
|
884
|
-
// two values being compared don't have to have the same type.
|
|
885
|
-
//
|
|
886
|
-
// The matcher defined here is polymorphic (for example, Eq(5) can be
|
|
887
|
-
// used to match an int, a short, a double, etc). Therefore we use
|
|
888
|
-
// a template type conversion operator in the implementation.
|
|
889
|
-
//
|
|
890
|
-
// The following template definition assumes that the Rhs parameter is
|
|
891
|
-
// a "bare" type (i.e. neither 'const T' nor 'T&').
|
|
892
|
-
template <typename D, typename Rhs, typename Op>
|
|
893
|
-
class ComparisonBase {
|
|
894
|
-
public:
|
|
895
|
-
explicit ComparisonBase(const Rhs& rhs) : rhs_(rhs) {}
|
|
896
|
-
template <typename Lhs>
|
|
897
|
-
operator Matcher<Lhs>() const {
|
|
898
|
-
return MakeMatcher(new Impl<Lhs>(rhs_));
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
private:
|
|
902
|
-
template <typename Lhs>
|
|
903
|
-
class Impl : public MatcherInterface<Lhs> {
|
|
904
|
-
public:
|
|
905
|
-
explicit Impl(const Rhs& rhs) : rhs_(rhs) {}
|
|
906
|
-
virtual bool MatchAndExplain(
|
|
907
|
-
Lhs lhs, MatchResultListener* /* listener */) const {
|
|
908
|
-
return Op()(lhs, rhs_);
|
|
909
|
-
}
|
|
910
|
-
virtual void DescribeTo(::std::ostream* os) const {
|
|
911
|
-
*os << D::Desc() << " ";
|
|
912
|
-
UniversalPrint(rhs_, os);
|
|
913
|
-
}
|
|
914
|
-
virtual void DescribeNegationTo(::std::ostream* os) const {
|
|
915
|
-
*os << D::NegatedDesc() << " ";
|
|
916
|
-
UniversalPrint(rhs_, os);
|
|
917
|
-
}
|
|
918
|
-
private:
|
|
919
|
-
Rhs rhs_;
|
|
920
|
-
GTEST_DISALLOW_ASSIGN_(Impl);
|
|
921
|
-
};
|
|
922
|
-
Rhs rhs_;
|
|
923
|
-
GTEST_DISALLOW_ASSIGN_(ComparisonBase);
|
|
924
|
-
};
|
|
925
|
-
|
|
926
|
-
template <typename Rhs>
|
|
927
|
-
class EqMatcher : public ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq> {
|
|
928
|
-
public:
|
|
929
|
-
explicit EqMatcher(const Rhs& rhs)
|
|
930
|
-
: ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq>(rhs) { }
|
|
931
|
-
static const char* Desc() { return "is equal to"; }
|
|
932
|
-
static const char* NegatedDesc() { return "isn't equal to"; }
|
|
933
|
-
};
|
|
934
|
-
template <typename Rhs>
|
|
935
|
-
class NeMatcher : public ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe> {
|
|
936
|
-
public:
|
|
937
|
-
explicit NeMatcher(const Rhs& rhs)
|
|
938
|
-
: ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe>(rhs) { }
|
|
939
|
-
static const char* Desc() { return "isn't equal to"; }
|
|
940
|
-
static const char* NegatedDesc() { return "is equal to"; }
|
|
941
|
-
};
|
|
942
|
-
template <typename Rhs>
|
|
943
|
-
class LtMatcher : public ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt> {
|
|
944
|
-
public:
|
|
945
|
-
explicit LtMatcher(const Rhs& rhs)
|
|
946
|
-
: ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt>(rhs) { }
|
|
947
|
-
static const char* Desc() { return "is <"; }
|
|
948
|
-
static const char* NegatedDesc() { return "isn't <"; }
|
|
949
|
-
};
|
|
950
|
-
template <typename Rhs>
|
|
951
|
-
class GtMatcher : public ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt> {
|
|
952
|
-
public:
|
|
953
|
-
explicit GtMatcher(const Rhs& rhs)
|
|
954
|
-
: ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt>(rhs) { }
|
|
955
|
-
static const char* Desc() { return "is >"; }
|
|
956
|
-
static const char* NegatedDesc() { return "isn't >"; }
|
|
957
|
-
};
|
|
958
|
-
template <typename Rhs>
|
|
959
|
-
class LeMatcher : public ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe> {
|
|
960
|
-
public:
|
|
961
|
-
explicit LeMatcher(const Rhs& rhs)
|
|
962
|
-
: ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe>(rhs) { }
|
|
963
|
-
static const char* Desc() { return "is <="; }
|
|
964
|
-
static const char* NegatedDesc() { return "isn't <="; }
|
|
965
|
-
};
|
|
966
|
-
template <typename Rhs>
|
|
967
|
-
class GeMatcher : public ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe> {
|
|
968
|
-
public:
|
|
969
|
-
explicit GeMatcher(const Rhs& rhs)
|
|
970
|
-
: ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe>(rhs) { }
|
|
971
|
-
static const char* Desc() { return "is >="; }
|
|
972
|
-
static const char* NegatedDesc() { return "isn't >="; }
|
|
973
|
-
};
|
|
974
|
-
|
|
975
510
|
// Implements the polymorphic IsNull() matcher, which matches any raw or smart
|
|
976
511
|
// pointer that is NULL.
|
|
977
512
|
class IsNullMatcher {
|
|
@@ -979,11 +514,7 @@ class IsNullMatcher {
|
|
|
979
514
|
template <typename Pointer>
|
|
980
515
|
bool MatchAndExplain(const Pointer& p,
|
|
981
516
|
MatchResultListener* /* listener */) const {
|
|
982
|
-
#if GTEST_LANG_CXX11
|
|
983
517
|
return p == nullptr;
|
|
984
|
-
#else // GTEST_LANG_CXX11
|
|
985
|
-
return GetRawPointer(p) == NULL;
|
|
986
|
-
#endif // GTEST_LANG_CXX11
|
|
987
518
|
}
|
|
988
519
|
|
|
989
520
|
void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
|
|
@@ -999,11 +530,7 @@ class NotNullMatcher {
|
|
|
999
530
|
template <typename Pointer>
|
|
1000
531
|
bool MatchAndExplain(const Pointer& p,
|
|
1001
532
|
MatchResultListener* /* listener */) const {
|
|
1002
|
-
#if GTEST_LANG_CXX11
|
|
1003
533
|
return p != nullptr;
|
|
1004
|
-
#else // GTEST_LANG_CXX11
|
|
1005
|
-
return GetRawPointer(p) != NULL;
|
|
1006
|
-
#endif // GTEST_LANG_CXX11
|
|
1007
534
|
}
|
|
1008
535
|
|
|
1009
536
|
void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }
|
|
@@ -1059,18 +586,18 @@ class RefMatcher<T&> {
|
|
|
1059
586
|
|
|
1060
587
|
// MatchAndExplain() takes a Super& (as opposed to const Super&)
|
|
1061
588
|
// in order to match the interface MatcherInterface<Super&>.
|
|
1062
|
-
|
|
1063
|
-
|
|
589
|
+
bool MatchAndExplain(Super& x,
|
|
590
|
+
MatchResultListener* listener) const override {
|
|
1064
591
|
*listener << "which is located @" << static_cast<const void*>(&x);
|
|
1065
592
|
return &x == &object_;
|
|
1066
593
|
}
|
|
1067
594
|
|
|
1068
|
-
|
|
595
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1069
596
|
*os << "references the variable ";
|
|
1070
597
|
UniversalPrinter<Super&>::Print(object_, os);
|
|
1071
598
|
}
|
|
1072
599
|
|
|
1073
|
-
|
|
600
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1074
601
|
*os << "does not reference the variable ";
|
|
1075
602
|
UniversalPrinter<Super&>::Print(object_, os);
|
|
1076
603
|
}
|
|
@@ -1129,6 +656,16 @@ class StrEqualityMatcher {
|
|
|
1129
656
|
bool case_sensitive)
|
|
1130
657
|
: string_(str), expect_eq_(expect_eq), case_sensitive_(case_sensitive) {}
|
|
1131
658
|
|
|
659
|
+
#if GTEST_HAS_ABSL
|
|
660
|
+
bool MatchAndExplain(const absl::string_view& s,
|
|
661
|
+
MatchResultListener* listener) const {
|
|
662
|
+
// This should fail to compile if absl::string_view is used with wide
|
|
663
|
+
// strings.
|
|
664
|
+
const StringType& str = std::string(s);
|
|
665
|
+
return MatchAndExplain(str, listener);
|
|
666
|
+
}
|
|
667
|
+
#endif // GTEST_HAS_ABSL
|
|
668
|
+
|
|
1132
669
|
// Accepts pointer types, particularly:
|
|
1133
670
|
// const char*
|
|
1134
671
|
// char*
|
|
@@ -1136,7 +673,7 @@ class StrEqualityMatcher {
|
|
|
1136
673
|
// wchar_t*
|
|
1137
674
|
template <typename CharType>
|
|
1138
675
|
bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
|
|
1139
|
-
if (s ==
|
|
676
|
+
if (s == nullptr) {
|
|
1140
677
|
return !expect_eq_;
|
|
1141
678
|
}
|
|
1142
679
|
return MatchAndExplain(StringType(s), listener);
|
|
@@ -1145,7 +682,7 @@ class StrEqualityMatcher {
|
|
|
1145
682
|
// Matches anything that can convert to StringType.
|
|
1146
683
|
//
|
|
1147
684
|
// This is a template, not just a plain function with const StringType&,
|
|
1148
|
-
// because
|
|
685
|
+
// because absl::string_view has some interfering non-explicit constructors.
|
|
1149
686
|
template <typename MatcheeStringType>
|
|
1150
687
|
bool MatchAndExplain(const MatcheeStringType& s,
|
|
1151
688
|
MatchResultListener* /* listener */) const {
|
|
@@ -1189,6 +726,16 @@ class HasSubstrMatcher {
|
|
|
1189
726
|
explicit HasSubstrMatcher(const StringType& substring)
|
|
1190
727
|
: substring_(substring) {}
|
|
1191
728
|
|
|
729
|
+
#if GTEST_HAS_ABSL
|
|
730
|
+
bool MatchAndExplain(const absl::string_view& s,
|
|
731
|
+
MatchResultListener* listener) const {
|
|
732
|
+
// This should fail to compile if absl::string_view is used with wide
|
|
733
|
+
// strings.
|
|
734
|
+
const StringType& str = std::string(s);
|
|
735
|
+
return MatchAndExplain(str, listener);
|
|
736
|
+
}
|
|
737
|
+
#endif // GTEST_HAS_ABSL
|
|
738
|
+
|
|
1192
739
|
// Accepts pointer types, particularly:
|
|
1193
740
|
// const char*
|
|
1194
741
|
// char*
|
|
@@ -1196,13 +743,13 @@ class HasSubstrMatcher {
|
|
|
1196
743
|
// wchar_t*
|
|
1197
744
|
template <typename CharType>
|
|
1198
745
|
bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
|
|
1199
|
-
return s !=
|
|
746
|
+
return s != nullptr && MatchAndExplain(StringType(s), listener);
|
|
1200
747
|
}
|
|
1201
748
|
|
|
1202
749
|
// Matches anything that can convert to StringType.
|
|
1203
750
|
//
|
|
1204
751
|
// This is a template, not just a plain function with const StringType&,
|
|
1205
|
-
// because
|
|
752
|
+
// because absl::string_view has some interfering non-explicit constructors.
|
|
1206
753
|
template <typename MatcheeStringType>
|
|
1207
754
|
bool MatchAndExplain(const MatcheeStringType& s,
|
|
1208
755
|
MatchResultListener* /* listener */) const {
|
|
@@ -1236,6 +783,16 @@ class StartsWithMatcher {
|
|
|
1236
783
|
explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) {
|
|
1237
784
|
}
|
|
1238
785
|
|
|
786
|
+
#if GTEST_HAS_ABSL
|
|
787
|
+
bool MatchAndExplain(const absl::string_view& s,
|
|
788
|
+
MatchResultListener* listener) const {
|
|
789
|
+
// This should fail to compile if absl::string_view is used with wide
|
|
790
|
+
// strings.
|
|
791
|
+
const StringType& str = std::string(s);
|
|
792
|
+
return MatchAndExplain(str, listener);
|
|
793
|
+
}
|
|
794
|
+
#endif // GTEST_HAS_ABSL
|
|
795
|
+
|
|
1239
796
|
// Accepts pointer types, particularly:
|
|
1240
797
|
// const char*
|
|
1241
798
|
// char*
|
|
@@ -1243,13 +800,13 @@ class StartsWithMatcher {
|
|
|
1243
800
|
// wchar_t*
|
|
1244
801
|
template <typename CharType>
|
|
1245
802
|
bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
|
|
1246
|
-
return s !=
|
|
803
|
+
return s != nullptr && MatchAndExplain(StringType(s), listener);
|
|
1247
804
|
}
|
|
1248
805
|
|
|
1249
806
|
// Matches anything that can convert to StringType.
|
|
1250
807
|
//
|
|
1251
808
|
// This is a template, not just a plain function with const StringType&,
|
|
1252
|
-
// because
|
|
809
|
+
// because absl::string_view has some interfering non-explicit constructors.
|
|
1253
810
|
template <typename MatcheeStringType>
|
|
1254
811
|
bool MatchAndExplain(const MatcheeStringType& s,
|
|
1255
812
|
MatchResultListener* /* listener */) const {
|
|
@@ -1282,6 +839,16 @@ class EndsWithMatcher {
|
|
|
1282
839
|
public:
|
|
1283
840
|
explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {}
|
|
1284
841
|
|
|
842
|
+
#if GTEST_HAS_ABSL
|
|
843
|
+
bool MatchAndExplain(const absl::string_view& s,
|
|
844
|
+
MatchResultListener* listener) const {
|
|
845
|
+
// This should fail to compile if absl::string_view is used with wide
|
|
846
|
+
// strings.
|
|
847
|
+
const StringType& str = std::string(s);
|
|
848
|
+
return MatchAndExplain(str, listener);
|
|
849
|
+
}
|
|
850
|
+
#endif // GTEST_HAS_ABSL
|
|
851
|
+
|
|
1285
852
|
// Accepts pointer types, particularly:
|
|
1286
853
|
// const char*
|
|
1287
854
|
// char*
|
|
@@ -1289,13 +856,13 @@ class EndsWithMatcher {
|
|
|
1289
856
|
// wchar_t*
|
|
1290
857
|
template <typename CharType>
|
|
1291
858
|
bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
|
|
1292
|
-
return s !=
|
|
859
|
+
return s != nullptr && MatchAndExplain(StringType(s), listener);
|
|
1293
860
|
}
|
|
1294
861
|
|
|
1295
862
|
// Matches anything that can convert to StringType.
|
|
1296
863
|
//
|
|
1297
864
|
// This is a template, not just a plain function with const StringType&,
|
|
1298
|
-
// because
|
|
865
|
+
// because absl::string_view has some interfering non-explicit constructors.
|
|
1299
866
|
template <typename MatcheeStringType>
|
|
1300
867
|
bool MatchAndExplain(const MatcheeStringType& s,
|
|
1301
868
|
MatchResultListener* /* listener */) const {
|
|
@@ -1320,73 +887,24 @@ class EndsWithMatcher {
|
|
|
1320
887
|
GTEST_DISALLOW_ASSIGN_(EndsWithMatcher);
|
|
1321
888
|
};
|
|
1322
889
|
|
|
1323
|
-
// Implements polymorphic matchers MatchesRegex(regex) and
|
|
1324
|
-
// ContainsRegex(regex), which can be used as a Matcher<T> as long as
|
|
1325
|
-
// T can be converted to a string.
|
|
1326
|
-
class MatchesRegexMatcher {
|
|
1327
|
-
public:
|
|
1328
|
-
MatchesRegexMatcher(const RE* regex, bool full_match)
|
|
1329
|
-
: regex_(regex), full_match_(full_match) {}
|
|
1330
|
-
|
|
1331
|
-
// Accepts pointer types, particularly:
|
|
1332
|
-
// const char*
|
|
1333
|
-
// char*
|
|
1334
|
-
// const wchar_t*
|
|
1335
|
-
// wchar_t*
|
|
1336
|
-
template <typename CharType>
|
|
1337
|
-
bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
|
|
1338
|
-
return s != NULL && MatchAndExplain(internal::string(s), listener);
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
// Matches anything that can convert to internal::string.
|
|
1342
|
-
//
|
|
1343
|
-
// This is a template, not just a plain function with const internal::string&,
|
|
1344
|
-
// because StringPiece has some interfering non-explicit constructors.
|
|
1345
|
-
template <class MatcheeStringType>
|
|
1346
|
-
bool MatchAndExplain(const MatcheeStringType& s,
|
|
1347
|
-
MatchResultListener* /* listener */) const {
|
|
1348
|
-
const internal::string& s2(s);
|
|
1349
|
-
return full_match_ ? RE::FullMatch(s2, *regex_) :
|
|
1350
|
-
RE::PartialMatch(s2, *regex_);
|
|
1351
|
-
}
|
|
1352
|
-
|
|
1353
|
-
void DescribeTo(::std::ostream* os) const {
|
|
1354
|
-
*os << (full_match_ ? "matches" : "contains")
|
|
1355
|
-
<< " regular expression ";
|
|
1356
|
-
UniversalPrinter<internal::string>::Print(regex_->pattern(), os);
|
|
1357
|
-
}
|
|
1358
|
-
|
|
1359
|
-
void DescribeNegationTo(::std::ostream* os) const {
|
|
1360
|
-
*os << "doesn't " << (full_match_ ? "match" : "contain")
|
|
1361
|
-
<< " regular expression ";
|
|
1362
|
-
UniversalPrinter<internal::string>::Print(regex_->pattern(), os);
|
|
1363
|
-
}
|
|
1364
|
-
|
|
1365
|
-
private:
|
|
1366
|
-
const internal::linked_ptr<const RE> regex_;
|
|
1367
|
-
const bool full_match_;
|
|
1368
|
-
|
|
1369
|
-
GTEST_DISALLOW_ASSIGN_(MatchesRegexMatcher);
|
|
1370
|
-
};
|
|
1371
|
-
|
|
1372
890
|
// Implements a matcher that compares the two fields of a 2-tuple
|
|
1373
891
|
// using one of the ==, <=, <, etc, operators. The two fields being
|
|
1374
892
|
// compared don't have to have the same type.
|
|
1375
893
|
//
|
|
1376
894
|
// The matcher defined here is polymorphic (for example, Eq() can be
|
|
1377
|
-
// used to match a tuple<int, short>, a tuple<const long&, double>,
|
|
895
|
+
// used to match a std::tuple<int, short>, a std::tuple<const long&, double>,
|
|
1378
896
|
// etc). Therefore we use a template type conversion operator in the
|
|
1379
897
|
// implementation.
|
|
1380
898
|
template <typename D, typename Op>
|
|
1381
899
|
class PairMatchBase {
|
|
1382
900
|
public:
|
|
1383
901
|
template <typename T1, typename T2>
|
|
1384
|
-
operator Matcher
|
|
1385
|
-
return
|
|
902
|
+
operator Matcher<::std::tuple<T1, T2>>() const {
|
|
903
|
+
return Matcher<::std::tuple<T1, T2>>(new Impl<const ::std::tuple<T1, T2>&>);
|
|
1386
904
|
}
|
|
1387
905
|
template <typename T1, typename T2>
|
|
1388
|
-
operator Matcher<const ::
|
|
1389
|
-
return MakeMatcher(new Impl<const ::
|
|
906
|
+
operator Matcher<const ::std::tuple<T1, T2>&>() const {
|
|
907
|
+
return MakeMatcher(new Impl<const ::std::tuple<T1, T2>&>);
|
|
1390
908
|
}
|
|
1391
909
|
|
|
1392
910
|
private:
|
|
@@ -1397,15 +915,14 @@ class PairMatchBase {
|
|
|
1397
915
|
template <typename Tuple>
|
|
1398
916
|
class Impl : public MatcherInterface<Tuple> {
|
|
1399
917
|
public:
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
return Op()(::testing::get<0>(args), ::testing::get<1>(args));
|
|
918
|
+
bool MatchAndExplain(Tuple args,
|
|
919
|
+
MatchResultListener* /* listener */) const override {
|
|
920
|
+
return Op()(::std::get<0>(args), ::std::get<1>(args));
|
|
1404
921
|
}
|
|
1405
|
-
|
|
922
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1406
923
|
*os << "are " << GetDesc;
|
|
1407
924
|
}
|
|
1408
|
-
|
|
925
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1409
926
|
*os << "aren't " << GetDesc;
|
|
1410
927
|
}
|
|
1411
928
|
};
|
|
@@ -1441,20 +958,21 @@ class Ge2Matcher : public PairMatchBase<Ge2Matcher, AnyGe> {
|
|
|
1441
958
|
// will prevent different instantiations of NotMatcher from sharing
|
|
1442
959
|
// the same NotMatcherImpl<T> class.
|
|
1443
960
|
template <typename T>
|
|
1444
|
-
class NotMatcherImpl : public MatcherInterface<T
|
|
961
|
+
class NotMatcherImpl : public MatcherInterface<const T&> {
|
|
1445
962
|
public:
|
|
1446
963
|
explicit NotMatcherImpl(const Matcher<T>& matcher)
|
|
1447
964
|
: matcher_(matcher) {}
|
|
1448
965
|
|
|
1449
|
-
|
|
966
|
+
bool MatchAndExplain(const T& x,
|
|
967
|
+
MatchResultListener* listener) const override {
|
|
1450
968
|
return !matcher_.MatchAndExplain(x, listener);
|
|
1451
969
|
}
|
|
1452
970
|
|
|
1453
|
-
|
|
971
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1454
972
|
matcher_.DescribeNegationTo(os);
|
|
1455
973
|
}
|
|
1456
974
|
|
|
1457
|
-
|
|
975
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1458
976
|
matcher_.DescribeTo(os);
|
|
1459
977
|
}
|
|
1460
978
|
|
|
@@ -1489,115 +1007,62 @@ class NotMatcher {
|
|
|
1489
1007
|
// that will prevent different instantiations of BothOfMatcher from
|
|
1490
1008
|
// sharing the same BothOfMatcherImpl<T> class.
|
|
1491
1009
|
template <typename T>
|
|
1492
|
-
class
|
|
1010
|
+
class AllOfMatcherImpl : public MatcherInterface<const T&> {
|
|
1493
1011
|
public:
|
|
1494
|
-
|
|
1495
|
-
:
|
|
1012
|
+
explicit AllOfMatcherImpl(std::vector<Matcher<T> > matchers)
|
|
1013
|
+
: matchers_(std::move(matchers)) {}
|
|
1496
1014
|
|
|
1497
|
-
|
|
1015
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1498
1016
|
*os << "(";
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1017
|
+
for (size_t i = 0; i < matchers_.size(); ++i) {
|
|
1018
|
+
if (i != 0) *os << ") and (";
|
|
1019
|
+
matchers_[i].DescribeTo(os);
|
|
1020
|
+
}
|
|
1502
1021
|
*os << ")";
|
|
1503
1022
|
}
|
|
1504
1023
|
|
|
1505
|
-
|
|
1024
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1506
1025
|
*os << "(";
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1026
|
+
for (size_t i = 0; i < matchers_.size(); ++i) {
|
|
1027
|
+
if (i != 0) *os << ") or (";
|
|
1028
|
+
matchers_[i].DescribeNegationTo(os);
|
|
1029
|
+
}
|
|
1510
1030
|
*os << ")";
|
|
1511
1031
|
}
|
|
1512
1032
|
|
|
1513
|
-
|
|
1033
|
+
bool MatchAndExplain(const T& x,
|
|
1034
|
+
MatchResultListener* listener) const override {
|
|
1514
1035
|
// If either matcher1_ or matcher2_ doesn't match x, we only need
|
|
1515
1036
|
// to explain why one of them fails.
|
|
1516
|
-
|
|
1517
|
-
if (!matcher1_.MatchAndExplain(x, &listener1)) {
|
|
1518
|
-
*listener << listener1.str();
|
|
1519
|
-
return false;
|
|
1520
|
-
}
|
|
1037
|
+
std::string all_match_result;
|
|
1521
1038
|
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1039
|
+
for (size_t i = 0; i < matchers_.size(); ++i) {
|
|
1040
|
+
StringMatchResultListener slistener;
|
|
1041
|
+
if (matchers_[i].MatchAndExplain(x, &slistener)) {
|
|
1042
|
+
if (all_match_result.empty()) {
|
|
1043
|
+
all_match_result = slistener.str();
|
|
1044
|
+
} else {
|
|
1045
|
+
std::string result = slistener.str();
|
|
1046
|
+
if (!result.empty()) {
|
|
1047
|
+
all_match_result += ", and ";
|
|
1048
|
+
all_match_result += result;
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
} else {
|
|
1052
|
+
*listener << slistener.str();
|
|
1053
|
+
return false;
|
|
1054
|
+
}
|
|
1526
1055
|
}
|
|
1527
1056
|
|
|
1528
1057
|
// Otherwise we need to explain why *both* of them match.
|
|
1529
|
-
|
|
1530
|
-
const internal::string s2 = listener2.str();
|
|
1531
|
-
|
|
1532
|
-
if (s1 == "") {
|
|
1533
|
-
*listener << s2;
|
|
1534
|
-
} else {
|
|
1535
|
-
*listener << s1;
|
|
1536
|
-
if (s2 != "") {
|
|
1537
|
-
*listener << ", and " << s2;
|
|
1538
|
-
}
|
|
1539
|
-
}
|
|
1058
|
+
*listener << all_match_result;
|
|
1540
1059
|
return true;
|
|
1541
1060
|
}
|
|
1542
1061
|
|
|
1543
1062
|
private:
|
|
1544
|
-
const Matcher<T>
|
|
1545
|
-
const Matcher<T> matcher2_;
|
|
1546
|
-
|
|
1547
|
-
GTEST_DISALLOW_ASSIGN_(BothOfMatcherImpl);
|
|
1548
|
-
};
|
|
1549
|
-
|
|
1550
|
-
#if GTEST_LANG_CXX11
|
|
1551
|
-
// MatcherList provides mechanisms for storing a variable number of matchers in
|
|
1552
|
-
// a list structure (ListType) and creating a combining matcher from such a
|
|
1553
|
-
// list.
|
|
1554
|
-
// The template is defined recursively using the following template paramters:
|
|
1555
|
-
// * kSize is the length of the MatcherList.
|
|
1556
|
-
// * Head is the type of the first matcher of the list.
|
|
1557
|
-
// * Tail denotes the types of the remaining matchers of the list.
|
|
1558
|
-
template <int kSize, typename Head, typename... Tail>
|
|
1559
|
-
struct MatcherList {
|
|
1560
|
-
typedef MatcherList<kSize - 1, Tail...> MatcherListTail;
|
|
1561
|
-
typedef ::std::pair<Head, typename MatcherListTail::ListType> ListType;
|
|
1562
|
-
|
|
1563
|
-
// BuildList stores variadic type values in a nested pair structure.
|
|
1564
|
-
// Example:
|
|
1565
|
-
// MatcherList<3, int, string, float>::BuildList(5, "foo", 2.0) will return
|
|
1566
|
-
// the corresponding result of type pair<int, pair<string, float>>.
|
|
1567
|
-
static ListType BuildList(const Head& matcher, const Tail&... tail) {
|
|
1568
|
-
return ListType(matcher, MatcherListTail::BuildList(tail...));
|
|
1569
|
-
}
|
|
1570
|
-
|
|
1571
|
-
// CreateMatcher<T> creates a Matcher<T> from a given list of matchers (built
|
|
1572
|
-
// by BuildList()). CombiningMatcher<T> is used to combine the matchers of the
|
|
1573
|
-
// list. CombiningMatcher<T> must implement MatcherInterface<T> and have a
|
|
1574
|
-
// constructor taking two Matcher<T>s as input.
|
|
1575
|
-
template <typename T, template <typename /* T */> class CombiningMatcher>
|
|
1576
|
-
static Matcher<T> CreateMatcher(const ListType& matchers) {
|
|
1577
|
-
return Matcher<T>(new CombiningMatcher<T>(
|
|
1578
|
-
SafeMatcherCast<T>(matchers.first),
|
|
1579
|
-
MatcherListTail::template CreateMatcher<T, CombiningMatcher>(
|
|
1580
|
-
matchers.second)));
|
|
1581
|
-
}
|
|
1582
|
-
};
|
|
1583
|
-
|
|
1584
|
-
// The following defines the base case for the recursive definition of
|
|
1585
|
-
// MatcherList.
|
|
1586
|
-
template <typename Matcher1, typename Matcher2>
|
|
1587
|
-
struct MatcherList<2, Matcher1, Matcher2> {
|
|
1588
|
-
typedef ::std::pair<Matcher1, Matcher2> ListType;
|
|
1063
|
+
const std::vector<Matcher<T> > matchers_;
|
|
1589
1064
|
|
|
1590
|
-
|
|
1591
|
-
const Matcher2& matcher2) {
|
|
1592
|
-
return ::std::pair<Matcher1, Matcher2>(matcher1, matcher2);
|
|
1593
|
-
}
|
|
1594
|
-
|
|
1595
|
-
template <typename T, template <typename /* T */> class CombiningMatcher>
|
|
1596
|
-
static Matcher<T> CreateMatcher(const ListType& matchers) {
|
|
1597
|
-
return Matcher<T>(new CombiningMatcher<T>(
|
|
1598
|
-
SafeMatcherCast<T>(matchers.first),
|
|
1599
|
-
SafeMatcherCast<T>(matchers.second)));
|
|
1600
|
-
}
|
|
1065
|
+
GTEST_DISALLOW_ASSIGN_(AllOfMatcherImpl);
|
|
1601
1066
|
};
|
|
1602
1067
|
|
|
1603
1068
|
// VariadicMatcher is used for the variadic implementation of
|
|
@@ -1608,149 +1073,139 @@ template <template <typename T> class CombiningMatcher, typename... Args>
|
|
|
1608
1073
|
class VariadicMatcher {
|
|
1609
1074
|
public:
|
|
1610
1075
|
VariadicMatcher(const Args&... matchers) // NOLINT
|
|
1611
|
-
: matchers_(
|
|
1076
|
+
: matchers_(matchers...) {
|
|
1077
|
+
static_assert(sizeof...(Args) > 0, "Must have at least one matcher.");
|
|
1078
|
+
}
|
|
1612
1079
|
|
|
1613
1080
|
// This template type conversion operator allows an
|
|
1614
1081
|
// VariadicMatcher<Matcher1, Matcher2...> object to match any type that
|
|
1615
1082
|
// all of the provided matchers (Matcher1, Matcher2, ...) can match.
|
|
1616
1083
|
template <typename T>
|
|
1617
1084
|
operator Matcher<T>() const {
|
|
1618
|
-
|
|
1619
|
-
|
|
1085
|
+
std::vector<Matcher<T> > values;
|
|
1086
|
+
CreateVariadicMatcher<T>(&values, std::integral_constant<size_t, 0>());
|
|
1087
|
+
return Matcher<T>(new CombiningMatcher<T>(std::move(values)));
|
|
1620
1088
|
}
|
|
1621
1089
|
|
|
1622
1090
|
private:
|
|
1623
|
-
|
|
1091
|
+
template <typename T, size_t I>
|
|
1092
|
+
void CreateVariadicMatcher(std::vector<Matcher<T> >* values,
|
|
1093
|
+
std::integral_constant<size_t, I>) const {
|
|
1094
|
+
values->push_back(SafeMatcherCast<T>(std::get<I>(matchers_)));
|
|
1095
|
+
CreateVariadicMatcher<T>(values, std::integral_constant<size_t, I + 1>());
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
template <typename T>
|
|
1099
|
+
void CreateVariadicMatcher(
|
|
1100
|
+
std::vector<Matcher<T> >*,
|
|
1101
|
+
std::integral_constant<size_t, sizeof...(Args)>) const {}
|
|
1624
1102
|
|
|
1625
|
-
|
|
1103
|
+
std::tuple<Args...> matchers_;
|
|
1626
1104
|
|
|
1627
1105
|
GTEST_DISALLOW_ASSIGN_(VariadicMatcher);
|
|
1628
1106
|
};
|
|
1629
1107
|
|
|
1630
1108
|
template <typename... Args>
|
|
1631
|
-
using AllOfMatcher = VariadicMatcher<
|
|
1632
|
-
|
|
1633
|
-
#endif // GTEST_LANG_CXX11
|
|
1634
|
-
|
|
1635
|
-
// Used for implementing the AllOf(m_1, ..., m_n) matcher, which
|
|
1636
|
-
// matches a value that matches all of the matchers m_1, ..., and m_n.
|
|
1637
|
-
template <typename Matcher1, typename Matcher2>
|
|
1638
|
-
class BothOfMatcher {
|
|
1639
|
-
public:
|
|
1640
|
-
BothOfMatcher(Matcher1 matcher1, Matcher2 matcher2)
|
|
1641
|
-
: matcher1_(matcher1), matcher2_(matcher2) {}
|
|
1642
|
-
|
|
1643
|
-
// This template type conversion operator allows a
|
|
1644
|
-
// BothOfMatcher<Matcher1, Matcher2> object to match any type that
|
|
1645
|
-
// both Matcher1 and Matcher2 can match.
|
|
1646
|
-
template <typename T>
|
|
1647
|
-
operator Matcher<T>() const {
|
|
1648
|
-
return Matcher<T>(new BothOfMatcherImpl<T>(SafeMatcherCast<T>(matcher1_),
|
|
1649
|
-
SafeMatcherCast<T>(matcher2_)));
|
|
1650
|
-
}
|
|
1651
|
-
|
|
1652
|
-
private:
|
|
1653
|
-
Matcher1 matcher1_;
|
|
1654
|
-
Matcher2 matcher2_;
|
|
1655
|
-
|
|
1656
|
-
GTEST_DISALLOW_ASSIGN_(BothOfMatcher);
|
|
1657
|
-
};
|
|
1109
|
+
using AllOfMatcher = VariadicMatcher<AllOfMatcherImpl, Args...>;
|
|
1658
1110
|
|
|
1659
1111
|
// Implements the AnyOf(m1, m2) matcher for a particular argument type
|
|
1660
1112
|
// T. We do not nest it inside the AnyOfMatcher class template, as
|
|
1661
1113
|
// that will prevent different instantiations of AnyOfMatcher from
|
|
1662
1114
|
// sharing the same EitherOfMatcherImpl<T> class.
|
|
1663
1115
|
template <typename T>
|
|
1664
|
-
class
|
|
1116
|
+
class AnyOfMatcherImpl : public MatcherInterface<const T&> {
|
|
1665
1117
|
public:
|
|
1666
|
-
|
|
1667
|
-
:
|
|
1118
|
+
explicit AnyOfMatcherImpl(std::vector<Matcher<T> > matchers)
|
|
1119
|
+
: matchers_(std::move(matchers)) {}
|
|
1668
1120
|
|
|
1669
|
-
|
|
1121
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1670
1122
|
*os << "(";
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1123
|
+
for (size_t i = 0; i < matchers_.size(); ++i) {
|
|
1124
|
+
if (i != 0) *os << ") or (";
|
|
1125
|
+
matchers_[i].DescribeTo(os);
|
|
1126
|
+
}
|
|
1674
1127
|
*os << ")";
|
|
1675
1128
|
}
|
|
1676
1129
|
|
|
1677
|
-
|
|
1130
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1678
1131
|
*os << "(";
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1132
|
+
for (size_t i = 0; i < matchers_.size(); ++i) {
|
|
1133
|
+
if (i != 0) *os << ") and (";
|
|
1134
|
+
matchers_[i].DescribeNegationTo(os);
|
|
1135
|
+
}
|
|
1682
1136
|
*os << ")";
|
|
1683
1137
|
}
|
|
1684
1138
|
|
|
1685
|
-
|
|
1139
|
+
bool MatchAndExplain(const T& x,
|
|
1140
|
+
MatchResultListener* listener) const override {
|
|
1141
|
+
std::string no_match_result;
|
|
1142
|
+
|
|
1686
1143
|
// If either matcher1_ or matcher2_ matches x, we just need to
|
|
1687
1144
|
// explain why *one* of them matches.
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1145
|
+
for (size_t i = 0; i < matchers_.size(); ++i) {
|
|
1146
|
+
StringMatchResultListener slistener;
|
|
1147
|
+
if (matchers_[i].MatchAndExplain(x, &slistener)) {
|
|
1148
|
+
*listener << slistener.str();
|
|
1149
|
+
return true;
|
|
1150
|
+
} else {
|
|
1151
|
+
if (no_match_result.empty()) {
|
|
1152
|
+
no_match_result = slistener.str();
|
|
1153
|
+
} else {
|
|
1154
|
+
std::string result = slistener.str();
|
|
1155
|
+
if (!result.empty()) {
|
|
1156
|
+
no_match_result += ", and ";
|
|
1157
|
+
no_match_result += result;
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1698
1161
|
}
|
|
1699
1162
|
|
|
1700
1163
|
// Otherwise we need to explain why *both* of them fail.
|
|
1701
|
-
|
|
1702
|
-
const internal::string s2 = listener2.str();
|
|
1703
|
-
|
|
1704
|
-
if (s1 == "") {
|
|
1705
|
-
*listener << s2;
|
|
1706
|
-
} else {
|
|
1707
|
-
*listener << s1;
|
|
1708
|
-
if (s2 != "") {
|
|
1709
|
-
*listener << ", and " << s2;
|
|
1710
|
-
}
|
|
1711
|
-
}
|
|
1164
|
+
*listener << no_match_result;
|
|
1712
1165
|
return false;
|
|
1713
1166
|
}
|
|
1714
1167
|
|
|
1715
1168
|
private:
|
|
1716
|
-
const Matcher<T>
|
|
1717
|
-
const Matcher<T> matcher2_;
|
|
1169
|
+
const std::vector<Matcher<T> > matchers_;
|
|
1718
1170
|
|
|
1719
|
-
GTEST_DISALLOW_ASSIGN_(
|
|
1171
|
+
GTEST_DISALLOW_ASSIGN_(AnyOfMatcherImpl);
|
|
1720
1172
|
};
|
|
1721
1173
|
|
|
1722
|
-
#if GTEST_LANG_CXX11
|
|
1723
1174
|
// AnyOfMatcher is used for the variadic implementation of AnyOf(m_1, m_2, ...).
|
|
1724
1175
|
template <typename... Args>
|
|
1725
|
-
using AnyOfMatcher = VariadicMatcher<
|
|
1726
|
-
|
|
1727
|
-
#endif // GTEST_LANG_CXX11
|
|
1176
|
+
using AnyOfMatcher = VariadicMatcher<AnyOfMatcherImpl, Args...>;
|
|
1728
1177
|
|
|
1729
|
-
//
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
template <typename Matcher1, typename Matcher2>
|
|
1733
|
-
class EitherOfMatcher {
|
|
1178
|
+
// Wrapper for implementation of Any/AllOfArray().
|
|
1179
|
+
template <template <class> class MatcherImpl, typename T>
|
|
1180
|
+
class SomeOfArrayMatcher {
|
|
1734
1181
|
public:
|
|
1735
|
-
|
|
1736
|
-
|
|
1182
|
+
// Constructs the matcher from a sequence of element values or
|
|
1183
|
+
// element matchers.
|
|
1184
|
+
template <typename Iter>
|
|
1185
|
+
SomeOfArrayMatcher(Iter first, Iter last) : matchers_(first, last) {}
|
|
1737
1186
|
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1187
|
+
template <typename U>
|
|
1188
|
+
operator Matcher<U>() const { // NOLINT
|
|
1189
|
+
using RawU = typename std::decay<U>::type;
|
|
1190
|
+
std::vector<Matcher<RawU>> matchers;
|
|
1191
|
+
for (const auto& matcher : matchers_) {
|
|
1192
|
+
matchers.push_back(MatcherCast<RawU>(matcher));
|
|
1193
|
+
}
|
|
1194
|
+
return Matcher<U>(new MatcherImpl<RawU>(std::move(matchers)));
|
|
1745
1195
|
}
|
|
1746
1196
|
|
|
1747
1197
|
private:
|
|
1748
|
-
|
|
1749
|
-
Matcher2 matcher2_;
|
|
1198
|
+
const ::std::vector<T> matchers_;
|
|
1750
1199
|
|
|
1751
|
-
GTEST_DISALLOW_ASSIGN_(
|
|
1200
|
+
GTEST_DISALLOW_ASSIGN_(SomeOfArrayMatcher);
|
|
1752
1201
|
};
|
|
1753
1202
|
|
|
1203
|
+
template <typename T>
|
|
1204
|
+
using AllOfArrayMatcher = SomeOfArrayMatcher<AllOfMatcherImpl, T>;
|
|
1205
|
+
|
|
1206
|
+
template <typename T>
|
|
1207
|
+
using AnyOfArrayMatcher = SomeOfArrayMatcher<AnyOfMatcherImpl, T>;
|
|
1208
|
+
|
|
1754
1209
|
// Used for implementing Truly(pred), which turns a predicate into a
|
|
1755
1210
|
// matcher.
|
|
1756
1211
|
template <typename Predicate>
|
|
@@ -1833,7 +1288,7 @@ class MatcherAsPredicate {
|
|
|
1833
1288
|
template <typename M>
|
|
1834
1289
|
class PredicateFormatterFromMatcher {
|
|
1835
1290
|
public:
|
|
1836
|
-
explicit PredicateFormatterFromMatcher(M m) : matcher_(
|
|
1291
|
+
explicit PredicateFormatterFromMatcher(M m) : matcher_(std::move(m)) {}
|
|
1837
1292
|
|
|
1838
1293
|
// This template () operator allows a PredicateFormatterFromMatcher
|
|
1839
1294
|
// object to act as a predicate-formatter suitable for using with
|
|
@@ -1852,14 +1307,24 @@ class PredicateFormatterFromMatcher {
|
|
|
1852
1307
|
// We don't write MatcherCast<const T&> either, as that allows
|
|
1853
1308
|
// potentially unsafe downcasting of the matcher argument.
|
|
1854
1309
|
const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
|
|
1855
|
-
|
|
1856
|
-
|
|
1310
|
+
|
|
1311
|
+
// The expected path here is that the matcher should match (i.e. that most
|
|
1312
|
+
// tests pass) so optimize for this case.
|
|
1313
|
+
if (matcher.Matches(x)) {
|
|
1857
1314
|
return AssertionSuccess();
|
|
1315
|
+
}
|
|
1858
1316
|
|
|
1859
1317
|
::std::stringstream ss;
|
|
1860
1318
|
ss << "Value of: " << value_text << "\n"
|
|
1861
1319
|
<< "Expected: ";
|
|
1862
1320
|
matcher.DescribeTo(&ss);
|
|
1321
|
+
|
|
1322
|
+
// Rerun the matcher to "PrintAndExain" the failure.
|
|
1323
|
+
StringMatchResultListener listener;
|
|
1324
|
+
if (MatchPrintAndExplain(x, matcher, &listener)) {
|
|
1325
|
+
ss << "\n The matcher failed on the initial attempt; but passed when "
|
|
1326
|
+
"rerun to generate the explanation.";
|
|
1327
|
+
}
|
|
1863
1328
|
ss << "\n Actual: " << listener.str();
|
|
1864
1329
|
return AssertionFailure() << ss.str();
|
|
1865
1330
|
}
|
|
@@ -1877,7 +1342,7 @@ class PredicateFormatterFromMatcher {
|
|
|
1877
1342
|
template <typename M>
|
|
1878
1343
|
inline PredicateFormatterFromMatcher<M>
|
|
1879
1344
|
MakePredicateFormatterFromMatcher(M matcher) {
|
|
1880
|
-
return PredicateFormatterFromMatcher<M>(
|
|
1345
|
+
return PredicateFormatterFromMatcher<M>(std::move(matcher));
|
|
1881
1346
|
}
|
|
1882
1347
|
|
|
1883
1348
|
// Implements the polymorphic floating point equality matcher, which matches
|
|
@@ -1918,8 +1383,8 @@ class FloatingEqMatcher {
|
|
|
1918
1383
|
nan_eq_nan_(nan_eq_nan),
|
|
1919
1384
|
max_abs_error_(max_abs_error) {}
|
|
1920
1385
|
|
|
1921
|
-
|
|
1922
|
-
|
|
1386
|
+
bool MatchAndExplain(T value,
|
|
1387
|
+
MatchResultListener* listener) const override {
|
|
1923
1388
|
const FloatingPoint<FloatType> actual(value), expected(expected_);
|
|
1924
1389
|
|
|
1925
1390
|
// Compares NaNs first, if nan_eq_nan_ is true.
|
|
@@ -1953,7 +1418,7 @@ class FloatingEqMatcher {
|
|
|
1953
1418
|
}
|
|
1954
1419
|
}
|
|
1955
1420
|
|
|
1956
|
-
|
|
1421
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1957
1422
|
// os->precision() returns the previously set precision, which we
|
|
1958
1423
|
// store to restore the ostream to its original configuration
|
|
1959
1424
|
// after outputting.
|
|
@@ -1974,7 +1439,7 @@ class FloatingEqMatcher {
|
|
|
1974
1439
|
os->precision(old_precision);
|
|
1975
1440
|
}
|
|
1976
1441
|
|
|
1977
|
-
|
|
1442
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1978
1443
|
// As before, get original precision.
|
|
1979
1444
|
const ::std::streamsize old_precision = os->precision(
|
|
1980
1445
|
::std::numeric_limits<FloatType>::digits10 + 2);
|
|
@@ -2037,6 +1502,82 @@ class FloatingEqMatcher {
|
|
|
2037
1502
|
GTEST_DISALLOW_ASSIGN_(FloatingEqMatcher);
|
|
2038
1503
|
};
|
|
2039
1504
|
|
|
1505
|
+
// A 2-tuple ("binary") wrapper around FloatingEqMatcher:
|
|
1506
|
+
// FloatingEq2Matcher() matches (x, y) by matching FloatingEqMatcher(x, false)
|
|
1507
|
+
// against y, and FloatingEq2Matcher(e) matches FloatingEqMatcher(x, false, e)
|
|
1508
|
+
// against y. The former implements "Eq", the latter "Near". At present, there
|
|
1509
|
+
// is no version that compares NaNs as equal.
|
|
1510
|
+
template <typename FloatType>
|
|
1511
|
+
class FloatingEq2Matcher {
|
|
1512
|
+
public:
|
|
1513
|
+
FloatingEq2Matcher() { Init(-1, false); }
|
|
1514
|
+
|
|
1515
|
+
explicit FloatingEq2Matcher(bool nan_eq_nan) { Init(-1, nan_eq_nan); }
|
|
1516
|
+
|
|
1517
|
+
explicit FloatingEq2Matcher(FloatType max_abs_error) {
|
|
1518
|
+
Init(max_abs_error, false);
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
FloatingEq2Matcher(FloatType max_abs_error, bool nan_eq_nan) {
|
|
1522
|
+
Init(max_abs_error, nan_eq_nan);
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
template <typename T1, typename T2>
|
|
1526
|
+
operator Matcher<::std::tuple<T1, T2>>() const {
|
|
1527
|
+
return MakeMatcher(
|
|
1528
|
+
new Impl<::std::tuple<T1, T2>>(max_abs_error_, nan_eq_nan_));
|
|
1529
|
+
}
|
|
1530
|
+
template <typename T1, typename T2>
|
|
1531
|
+
operator Matcher<const ::std::tuple<T1, T2>&>() const {
|
|
1532
|
+
return MakeMatcher(
|
|
1533
|
+
new Impl<const ::std::tuple<T1, T2>&>(max_abs_error_, nan_eq_nan_));
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
private:
|
|
1537
|
+
static ::std::ostream& GetDesc(::std::ostream& os) { // NOLINT
|
|
1538
|
+
return os << "an almost-equal pair";
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
template <typename Tuple>
|
|
1542
|
+
class Impl : public MatcherInterface<Tuple> {
|
|
1543
|
+
public:
|
|
1544
|
+
Impl(FloatType max_abs_error, bool nan_eq_nan) :
|
|
1545
|
+
max_abs_error_(max_abs_error),
|
|
1546
|
+
nan_eq_nan_(nan_eq_nan) {}
|
|
1547
|
+
|
|
1548
|
+
bool MatchAndExplain(Tuple args,
|
|
1549
|
+
MatchResultListener* listener) const override {
|
|
1550
|
+
if (max_abs_error_ == -1) {
|
|
1551
|
+
FloatingEqMatcher<FloatType> fm(::std::get<0>(args), nan_eq_nan_);
|
|
1552
|
+
return static_cast<Matcher<FloatType>>(fm).MatchAndExplain(
|
|
1553
|
+
::std::get<1>(args), listener);
|
|
1554
|
+
} else {
|
|
1555
|
+
FloatingEqMatcher<FloatType> fm(::std::get<0>(args), nan_eq_nan_,
|
|
1556
|
+
max_abs_error_);
|
|
1557
|
+
return static_cast<Matcher<FloatType>>(fm).MatchAndExplain(
|
|
1558
|
+
::std::get<1>(args), listener);
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
1562
|
+
*os << "are " << GetDesc;
|
|
1563
|
+
}
|
|
1564
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
1565
|
+
*os << "aren't " << GetDesc;
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
private:
|
|
1569
|
+
FloatType max_abs_error_;
|
|
1570
|
+
const bool nan_eq_nan_;
|
|
1571
|
+
};
|
|
1572
|
+
|
|
1573
|
+
void Init(FloatType max_abs_error_val, bool nan_eq_nan_val) {
|
|
1574
|
+
max_abs_error_ = max_abs_error_val;
|
|
1575
|
+
nan_eq_nan_ = nan_eq_nan_val;
|
|
1576
|
+
}
|
|
1577
|
+
FloatType max_abs_error_;
|
|
1578
|
+
bool nan_eq_nan_;
|
|
1579
|
+
};
|
|
1580
|
+
|
|
2040
1581
|
// Implements the Pointee(m) matcher for matching a pointer whose
|
|
2041
1582
|
// pointee matches matcher m. The pointer can be either raw or smart.
|
|
2042
1583
|
template <typename InnerMatcher>
|
|
@@ -2054,7 +1595,7 @@ class PointeeMatcher {
|
|
|
2054
1595
|
// enough for implementing the DescribeTo() method of Pointee().
|
|
2055
1596
|
template <typename Pointer>
|
|
2056
1597
|
operator Matcher<Pointer>() const {
|
|
2057
|
-
return
|
|
1598
|
+
return Matcher<Pointer>(new Impl<const Pointer&>(matcher_));
|
|
2058
1599
|
}
|
|
2059
1600
|
|
|
2060
1601
|
private:
|
|
@@ -2068,20 +1609,19 @@ class PointeeMatcher {
|
|
|
2068
1609
|
explicit Impl(const InnerMatcher& matcher)
|
|
2069
1610
|
: matcher_(MatcherCast<const Pointee&>(matcher)) {}
|
|
2070
1611
|
|
|
2071
|
-
|
|
1612
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2072
1613
|
*os << "points to a value that ";
|
|
2073
1614
|
matcher_.DescribeTo(os);
|
|
2074
1615
|
}
|
|
2075
1616
|
|
|
2076
|
-
|
|
1617
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2077
1618
|
*os << "does not point to a value that ";
|
|
2078
1619
|
matcher_.DescribeTo(os);
|
|
2079
1620
|
}
|
|
2080
1621
|
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
if (GetRawPointer(pointer) ==
|
|
2084
|
-
return false;
|
|
1622
|
+
bool MatchAndExplain(Pointer pointer,
|
|
1623
|
+
MatchResultListener* listener) const override {
|
|
1624
|
+
if (GetRawPointer(pointer) == nullptr) return false;
|
|
2085
1625
|
|
|
2086
1626
|
*listener << "which points to ";
|
|
2087
1627
|
return MatchPrintAndExplain(*pointer, matcher_, listener);
|
|
@@ -2098,6 +1638,7 @@ class PointeeMatcher {
|
|
|
2098
1638
|
GTEST_DISALLOW_ASSIGN_(PointeeMatcher);
|
|
2099
1639
|
};
|
|
2100
1640
|
|
|
1641
|
+
#if GTEST_HAS_RTTI
|
|
2101
1642
|
// Implements the WhenDynamicCastTo<T>(m) matcher that matches a pointer or
|
|
2102
1643
|
// reference that matches inner_matcher when dynamic_cast<T> is applied.
|
|
2103
1644
|
// The result of dynamic_cast<To> is forwarded to the inner matcher.
|
|
@@ -2123,12 +1664,8 @@ class WhenDynamicCastToMatcherBase {
|
|
|
2123
1664
|
protected:
|
|
2124
1665
|
const Matcher<To> matcher_;
|
|
2125
1666
|
|
|
2126
|
-
static string GetToName() {
|
|
2127
|
-
#if GTEST_HAS_RTTI
|
|
1667
|
+
static std::string GetToName() {
|
|
2128
1668
|
return GetTypeName<To>();
|
|
2129
|
-
#else // GTEST_HAS_RTTI
|
|
2130
|
-
return "the target type";
|
|
2131
|
-
#endif // GTEST_HAS_RTTI
|
|
2132
1669
|
}
|
|
2133
1670
|
|
|
2134
1671
|
private:
|
|
@@ -2149,7 +1686,6 @@ class WhenDynamicCastToMatcher : public WhenDynamicCastToMatcherBase<To> {
|
|
|
2149
1686
|
|
|
2150
1687
|
template <typename From>
|
|
2151
1688
|
bool MatchAndExplain(From from, MatchResultListener* listener) const {
|
|
2152
|
-
// TODO(sbenza): Add more detail on failures. ie did the dyn_cast fail?
|
|
2153
1689
|
To to = dynamic_cast<To>(from);
|
|
2154
1690
|
return MatchPrintAndExplain(to, this->matcher_, listener);
|
|
2155
1691
|
}
|
|
@@ -2167,13 +1703,14 @@ class WhenDynamicCastToMatcher<To&> : public WhenDynamicCastToMatcherBase<To&> {
|
|
|
2167
1703
|
bool MatchAndExplain(From& from, MatchResultListener* listener) const {
|
|
2168
1704
|
// We don't want an std::bad_cast here, so do the cast with pointers.
|
|
2169
1705
|
To* to = dynamic_cast<To*>(&from);
|
|
2170
|
-
if (to ==
|
|
1706
|
+
if (to == nullptr) {
|
|
2171
1707
|
*listener << "which cannot be dynamic_cast to " << this->GetToName();
|
|
2172
1708
|
return false;
|
|
2173
1709
|
}
|
|
2174
1710
|
return MatchPrintAndExplain(*to, this->matcher_, listener);
|
|
2175
1711
|
}
|
|
2176
1712
|
};
|
|
1713
|
+
#endif // GTEST_HAS_RTTI
|
|
2177
1714
|
|
|
2178
1715
|
// Implements the Field() matcher for matching a field (i.e. member
|
|
2179
1716
|
// variable) of an object.
|
|
@@ -2182,137 +1719,142 @@ class FieldMatcher {
|
|
|
2182
1719
|
public:
|
|
2183
1720
|
FieldMatcher(FieldType Class::*field,
|
|
2184
1721
|
const Matcher<const FieldType&>& matcher)
|
|
2185
|
-
: field_(field), matcher_(matcher) {}
|
|
1722
|
+
: field_(field), matcher_(matcher), whose_field_("whose given field ") {}
|
|
1723
|
+
|
|
1724
|
+
FieldMatcher(const std::string& field_name, FieldType Class::*field,
|
|
1725
|
+
const Matcher<const FieldType&>& matcher)
|
|
1726
|
+
: field_(field),
|
|
1727
|
+
matcher_(matcher),
|
|
1728
|
+
whose_field_("whose field `" + field_name + "` ") {}
|
|
2186
1729
|
|
|
2187
1730
|
void DescribeTo(::std::ostream* os) const {
|
|
2188
|
-
*os << "is an object
|
|
1731
|
+
*os << "is an object " << whose_field_;
|
|
2189
1732
|
matcher_.DescribeTo(os);
|
|
2190
1733
|
}
|
|
2191
1734
|
|
|
2192
1735
|
void DescribeNegationTo(::std::ostream* os) const {
|
|
2193
|
-
*os << "is an object
|
|
1736
|
+
*os << "is an object " << whose_field_;
|
|
2194
1737
|
matcher_.DescribeNegationTo(os);
|
|
2195
1738
|
}
|
|
2196
1739
|
|
|
2197
1740
|
template <typename T>
|
|
2198
1741
|
bool MatchAndExplain(const T& value, MatchResultListener* listener) const {
|
|
1742
|
+
// FIXME: The dispatch on std::is_pointer was introduced as a workaround for
|
|
1743
|
+
// a compiler bug, and can now be removed.
|
|
2199
1744
|
return MatchAndExplainImpl(
|
|
2200
|
-
typename ::
|
|
2201
|
-
|
|
2202
|
-
value, listener);
|
|
1745
|
+
typename std::is_pointer<GTEST_REMOVE_CONST_(T)>::type(), value,
|
|
1746
|
+
listener);
|
|
2203
1747
|
}
|
|
2204
1748
|
|
|
2205
1749
|
private:
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
// true_type iff the Field() matcher is used to match a pointer.
|
|
2209
|
-
bool MatchAndExplainImpl(false_type /* is_not_pointer */, const Class& obj,
|
|
1750
|
+
bool MatchAndExplainImpl(std::false_type /* is_not_pointer */,
|
|
1751
|
+
const Class& obj,
|
|
2210
1752
|
MatchResultListener* listener) const {
|
|
2211
|
-
*listener <<
|
|
1753
|
+
*listener << whose_field_ << "is ";
|
|
2212
1754
|
return MatchPrintAndExplain(obj.*field_, matcher_, listener);
|
|
2213
1755
|
}
|
|
2214
1756
|
|
|
2215
|
-
bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,
|
|
1757
|
+
bool MatchAndExplainImpl(std::true_type /* is_pointer */, const Class* p,
|
|
2216
1758
|
MatchResultListener* listener) const {
|
|
2217
|
-
if (p ==
|
|
2218
|
-
return false;
|
|
1759
|
+
if (p == nullptr) return false;
|
|
2219
1760
|
|
|
2220
1761
|
*listener << "which points to an object ";
|
|
2221
1762
|
// Since *p has a field, it must be a class/struct/union type and
|
|
2222
1763
|
// thus cannot be a pointer. Therefore we pass false_type() as
|
|
2223
1764
|
// the first argument.
|
|
2224
|
-
return MatchAndExplainImpl(false_type(), *p, listener);
|
|
1765
|
+
return MatchAndExplainImpl(std::false_type(), *p, listener);
|
|
2225
1766
|
}
|
|
2226
1767
|
|
|
2227
1768
|
const FieldType Class::*field_;
|
|
2228
1769
|
const Matcher<const FieldType&> matcher_;
|
|
2229
1770
|
|
|
1771
|
+
// Contains either "whose given field " if the name of the field is unknown
|
|
1772
|
+
// or "whose field `name_of_field` " if the name is known.
|
|
1773
|
+
const std::string whose_field_;
|
|
1774
|
+
|
|
2230
1775
|
GTEST_DISALLOW_ASSIGN_(FieldMatcher);
|
|
2231
1776
|
};
|
|
2232
1777
|
|
|
2233
1778
|
// Implements the Property() matcher for matching a property
|
|
2234
1779
|
// (i.e. return value of a getter method) of an object.
|
|
2235
|
-
|
|
1780
|
+
//
|
|
1781
|
+
// Property is a const-qualified member function of Class returning
|
|
1782
|
+
// PropertyType.
|
|
1783
|
+
template <typename Class, typename PropertyType, typename Property>
|
|
2236
1784
|
class PropertyMatcher {
|
|
2237
1785
|
public:
|
|
2238
|
-
|
|
2239
|
-
// may cause double references and fail to compile. That's why we
|
|
2240
|
-
// need GTEST_REFERENCE_TO_CONST, which works regardless of
|
|
2241
|
-
// PropertyType being a reference or not.
|
|
2242
|
-
typedef GTEST_REFERENCE_TO_CONST_(PropertyType) RefToConstProperty;
|
|
1786
|
+
typedef const PropertyType& RefToConstProperty;
|
|
2243
1787
|
|
|
2244
|
-
PropertyMatcher(
|
|
1788
|
+
PropertyMatcher(Property property, const Matcher<RefToConstProperty>& matcher)
|
|
1789
|
+
: property_(property),
|
|
1790
|
+
matcher_(matcher),
|
|
1791
|
+
whose_property_("whose given property ") {}
|
|
1792
|
+
|
|
1793
|
+
PropertyMatcher(const std::string& property_name, Property property,
|
|
2245
1794
|
const Matcher<RefToConstProperty>& matcher)
|
|
2246
|
-
: property_(property),
|
|
1795
|
+
: property_(property),
|
|
1796
|
+
matcher_(matcher),
|
|
1797
|
+
whose_property_("whose property `" + property_name + "` ") {}
|
|
2247
1798
|
|
|
2248
1799
|
void DescribeTo(::std::ostream* os) const {
|
|
2249
|
-
*os << "is an object
|
|
1800
|
+
*os << "is an object " << whose_property_;
|
|
2250
1801
|
matcher_.DescribeTo(os);
|
|
2251
1802
|
}
|
|
2252
1803
|
|
|
2253
1804
|
void DescribeNegationTo(::std::ostream* os) const {
|
|
2254
|
-
*os << "is an object
|
|
1805
|
+
*os << "is an object " << whose_property_;
|
|
2255
1806
|
matcher_.DescribeNegationTo(os);
|
|
2256
1807
|
}
|
|
2257
1808
|
|
|
2258
1809
|
template <typename T>
|
|
2259
1810
|
bool MatchAndExplain(const T&value, MatchResultListener* listener) const {
|
|
2260
1811
|
return MatchAndExplainImpl(
|
|
2261
|
-
typename ::
|
|
2262
|
-
|
|
2263
|
-
value, listener);
|
|
1812
|
+
typename std::is_pointer<GTEST_REMOVE_CONST_(T)>::type(), value,
|
|
1813
|
+
listener);
|
|
2264
1814
|
}
|
|
2265
1815
|
|
|
2266
1816
|
private:
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
// true_type iff the Property() matcher is used to match a pointer.
|
|
2270
|
-
bool MatchAndExplainImpl(false_type /* is_not_pointer */, const Class& obj,
|
|
1817
|
+
bool MatchAndExplainImpl(std::false_type /* is_not_pointer */,
|
|
1818
|
+
const Class& obj,
|
|
2271
1819
|
MatchResultListener* listener) const {
|
|
2272
|
-
*listener <<
|
|
1820
|
+
*listener << whose_property_ << "is ";
|
|
2273
1821
|
// Cannot pass the return value (for example, int) to MatchPrintAndExplain,
|
|
2274
1822
|
// which takes a non-const reference as argument.
|
|
2275
|
-
#if defined(_PREFAST_ ) && _MSC_VER == 1800
|
|
2276
|
-
// Workaround bug in VC++ 2013's /analyze parser.
|
|
2277
|
-
// https://connect.microsoft.com/VisualStudio/feedback/details/1106363/internal-compiler-error-with-analyze-due-to-failure-to-infer-move
|
|
2278
|
-
posix::Abort(); // To make sure it is never run.
|
|
2279
|
-
return false;
|
|
2280
|
-
#else
|
|
2281
1823
|
RefToConstProperty result = (obj.*property_)();
|
|
2282
1824
|
return MatchPrintAndExplain(result, matcher_, listener);
|
|
2283
|
-
#endif
|
|
2284
1825
|
}
|
|
2285
1826
|
|
|
2286
|
-
bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,
|
|
1827
|
+
bool MatchAndExplainImpl(std::true_type /* is_pointer */, const Class* p,
|
|
2287
1828
|
MatchResultListener* listener) const {
|
|
2288
|
-
if (p ==
|
|
2289
|
-
return false;
|
|
1829
|
+
if (p == nullptr) return false;
|
|
2290
1830
|
|
|
2291
1831
|
*listener << "which points to an object ";
|
|
2292
1832
|
// Since *p has a property method, it must be a class/struct/union
|
|
2293
1833
|
// type and thus cannot be a pointer. Therefore we pass
|
|
2294
1834
|
// false_type() as the first argument.
|
|
2295
|
-
return MatchAndExplainImpl(false_type(), *p, listener);
|
|
1835
|
+
return MatchAndExplainImpl(std::false_type(), *p, listener);
|
|
2296
1836
|
}
|
|
2297
1837
|
|
|
2298
|
-
|
|
1838
|
+
Property property_;
|
|
2299
1839
|
const Matcher<RefToConstProperty> matcher_;
|
|
2300
1840
|
|
|
1841
|
+
// Contains either "whose given property " if the name of the property is
|
|
1842
|
+
// unknown or "whose property `name_of_property` " if the name is known.
|
|
1843
|
+
const std::string whose_property_;
|
|
1844
|
+
|
|
2301
1845
|
GTEST_DISALLOW_ASSIGN_(PropertyMatcher);
|
|
2302
1846
|
};
|
|
2303
1847
|
|
|
2304
1848
|
// Type traits specifying various features of different functors for ResultOf.
|
|
2305
1849
|
// The default template specifies features for functor objects.
|
|
2306
|
-
// Functor classes have to typedef argument_type and result_type
|
|
2307
|
-
// to be compatible with ResultOf.
|
|
2308
1850
|
template <typename Functor>
|
|
2309
1851
|
struct CallableTraits {
|
|
2310
|
-
typedef typename Functor::result_type ResultType;
|
|
2311
1852
|
typedef Functor StorageType;
|
|
2312
1853
|
|
|
2313
1854
|
static void CheckIsValid(Functor /* functor */) {}
|
|
1855
|
+
|
|
2314
1856
|
template <typename T>
|
|
2315
|
-
static
|
|
1857
|
+
static auto Invoke(Functor f, T arg) -> decltype(f(arg)) { return f(arg); }
|
|
2316
1858
|
};
|
|
2317
1859
|
|
|
2318
1860
|
// Specialization for function pointers.
|
|
@@ -2322,7 +1864,7 @@ struct CallableTraits<ResType(*)(ArgType)> {
|
|
|
2322
1864
|
typedef ResType(*StorageType)(ArgType);
|
|
2323
1865
|
|
|
2324
1866
|
static void CheckIsValid(ResType(*f)(ArgType)) {
|
|
2325
|
-
GTEST_CHECK_(f !=
|
|
1867
|
+
GTEST_CHECK_(f != nullptr)
|
|
2326
1868
|
<< "NULL function pointer is passed into ResultOf().";
|
|
2327
1869
|
}
|
|
2328
1870
|
template <typename T>
|
|
@@ -2333,13 +1875,11 @@ struct CallableTraits<ResType(*)(ArgType)> {
|
|
|
2333
1875
|
|
|
2334
1876
|
// Implements the ResultOf() matcher for matching a return value of a
|
|
2335
1877
|
// unary function of an object.
|
|
2336
|
-
template <typename Callable>
|
|
1878
|
+
template <typename Callable, typename InnerMatcher>
|
|
2337
1879
|
class ResultOfMatcher {
|
|
2338
1880
|
public:
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
ResultOfMatcher(Callable callable, const Matcher<ResultType>& matcher)
|
|
2342
|
-
: callable_(callable), matcher_(matcher) {
|
|
1881
|
+
ResultOfMatcher(Callable callable, InnerMatcher matcher)
|
|
1882
|
+
: callable_(std::move(callable)), matcher_(std::move(matcher)) {
|
|
2343
1883
|
CallableTraits<Callable>::CheckIsValid(callable_);
|
|
2344
1884
|
}
|
|
2345
1885
|
|
|
@@ -2353,24 +1893,30 @@ class ResultOfMatcher {
|
|
|
2353
1893
|
|
|
2354
1894
|
template <typename T>
|
|
2355
1895
|
class Impl : public MatcherInterface<T> {
|
|
1896
|
+
using ResultType = decltype(CallableTraits<Callable>::template Invoke<T>(
|
|
1897
|
+
std::declval<CallableStorageType>(), std::declval<T>()));
|
|
1898
|
+
|
|
2356
1899
|
public:
|
|
2357
|
-
|
|
2358
|
-
|
|
1900
|
+
template <typename M>
|
|
1901
|
+
Impl(const CallableStorageType& callable, const M& matcher)
|
|
1902
|
+
: callable_(callable), matcher_(MatcherCast<ResultType>(matcher)) {}
|
|
2359
1903
|
|
|
2360
|
-
|
|
1904
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2361
1905
|
*os << "is mapped by the given callable to a value that ";
|
|
2362
1906
|
matcher_.DescribeTo(os);
|
|
2363
1907
|
}
|
|
2364
1908
|
|
|
2365
|
-
|
|
1909
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2366
1910
|
*os << "is mapped by the given callable to a value that ";
|
|
2367
1911
|
matcher_.DescribeNegationTo(os);
|
|
2368
1912
|
}
|
|
2369
1913
|
|
|
2370
|
-
|
|
1914
|
+
bool MatchAndExplain(T obj, MatchResultListener* listener) const override {
|
|
2371
1915
|
*listener << "which is mapped by the given callable to ";
|
|
2372
|
-
// Cannot pass the return value
|
|
2373
|
-
//
|
|
1916
|
+
// Cannot pass the return value directly to MatchPrintAndExplain, which
|
|
1917
|
+
// takes a non-const reference as argument.
|
|
1918
|
+
// Also, specifying template argument explicitly is needed because T could
|
|
1919
|
+
// be a non-const reference (e.g. Matcher<Uncopyable&>).
|
|
2374
1920
|
ResultType result =
|
|
2375
1921
|
CallableTraits<Callable>::template Invoke<T>(callable_, obj);
|
|
2376
1922
|
return MatchPrintAndExplain(result, matcher_, listener);
|
|
@@ -2378,9 +1924,9 @@ class ResultOfMatcher {
|
|
|
2378
1924
|
|
|
2379
1925
|
private:
|
|
2380
1926
|
// Functors often define operator() as non-const method even though
|
|
2381
|
-
// they are
|
|
1927
|
+
// they are actually stateless. But we need to use them even when
|
|
2382
1928
|
// 'this' is a const pointer. It's the user's responsibility not to
|
|
2383
|
-
// use stateful callables with ResultOf(), which
|
|
1929
|
+
// use stateful callables with ResultOf(), which doesn't guarantee
|
|
2384
1930
|
// how many times the callable will be invoked.
|
|
2385
1931
|
mutable CallableStorageType callable_;
|
|
2386
1932
|
const Matcher<ResultType> matcher_;
|
|
@@ -2389,7 +1935,7 @@ class ResultOfMatcher {
|
|
|
2389
1935
|
}; // class Impl
|
|
2390
1936
|
|
|
2391
1937
|
const CallableStorageType callable_;
|
|
2392
|
-
const
|
|
1938
|
+
const InnerMatcher matcher_;
|
|
2393
1939
|
|
|
2394
1940
|
GTEST_DISALLOW_ASSIGN_(ResultOfMatcher);
|
|
2395
1941
|
};
|
|
@@ -2404,29 +1950,27 @@ class SizeIsMatcher {
|
|
|
2404
1950
|
|
|
2405
1951
|
template <typename Container>
|
|
2406
1952
|
operator Matcher<Container>() const {
|
|
2407
|
-
return
|
|
1953
|
+
return Matcher<Container>(new Impl<const Container&>(size_matcher_));
|
|
2408
1954
|
}
|
|
2409
1955
|
|
|
2410
1956
|
template <typename Container>
|
|
2411
1957
|
class Impl : public MatcherInterface<Container> {
|
|
2412
1958
|
public:
|
|
2413
|
-
|
|
2414
|
-
GTEST_REMOVE_REFERENCE_AND_CONST_(Container)> ContainerView;
|
|
2415
|
-
typedef typename ContainerView::type::size_type SizeType;
|
|
1959
|
+
using SizeType = decltype(std::declval<Container>().size());
|
|
2416
1960
|
explicit Impl(const SizeMatcher& size_matcher)
|
|
2417
1961
|
: size_matcher_(MatcherCast<SizeType>(size_matcher)) {}
|
|
2418
1962
|
|
|
2419
|
-
|
|
1963
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2420
1964
|
*os << "size ";
|
|
2421
1965
|
size_matcher_.DescribeTo(os);
|
|
2422
1966
|
}
|
|
2423
|
-
|
|
1967
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2424
1968
|
*os << "size ";
|
|
2425
1969
|
size_matcher_.DescribeNegationTo(os);
|
|
2426
1970
|
}
|
|
2427
1971
|
|
|
2428
|
-
|
|
2429
|
-
|
|
1972
|
+
bool MatchAndExplain(Container container,
|
|
1973
|
+
MatchResultListener* listener) const override {
|
|
2430
1974
|
SizeType size = container.size();
|
|
2431
1975
|
StringMatchResultListener size_listener;
|
|
2432
1976
|
const bool result = size_matcher_.MatchAndExplain(size, &size_listener);
|
|
@@ -2456,7 +2000,7 @@ class BeginEndDistanceIsMatcher {
|
|
|
2456
2000
|
|
|
2457
2001
|
template <typename Container>
|
|
2458
2002
|
operator Matcher<Container>() const {
|
|
2459
|
-
return
|
|
2003
|
+
return Matcher<Container>(new Impl<const Container&>(distance_matcher_));
|
|
2460
2004
|
}
|
|
2461
2005
|
|
|
2462
2006
|
template <typename Container>
|
|
@@ -2470,24 +2014,20 @@ class BeginEndDistanceIsMatcher {
|
|
|
2470
2014
|
explicit Impl(const DistanceMatcher& distance_matcher)
|
|
2471
2015
|
: distance_matcher_(MatcherCast<DistanceType>(distance_matcher)) {}
|
|
2472
2016
|
|
|
2473
|
-
|
|
2017
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2474
2018
|
*os << "distance between begin() and end() ";
|
|
2475
2019
|
distance_matcher_.DescribeTo(os);
|
|
2476
2020
|
}
|
|
2477
|
-
|
|
2021
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2478
2022
|
*os << "distance between begin() and end() ";
|
|
2479
2023
|
distance_matcher_.DescribeNegationTo(os);
|
|
2480
2024
|
}
|
|
2481
2025
|
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
#if GTEST_HAS_STD_BEGIN_AND_END_
|
|
2026
|
+
bool MatchAndExplain(Container container,
|
|
2027
|
+
MatchResultListener* listener) const override {
|
|
2485
2028
|
using std::begin;
|
|
2486
2029
|
using std::end;
|
|
2487
2030
|
DistanceType distance = std::distance(begin(container), end(container));
|
|
2488
|
-
#else
|
|
2489
|
-
DistanceType distance = std::distance(container.begin(), container.end());
|
|
2490
|
-
#endif
|
|
2491
2031
|
StringMatchResultListener distance_listener;
|
|
2492
2032
|
const bool result =
|
|
2493
2033
|
distance_matcher_.MatchAndExplain(distance, &distance_listener);
|
|
@@ -2556,7 +2096,7 @@ class ContainerEqMatcher {
|
|
|
2556
2096
|
return true;
|
|
2557
2097
|
|
|
2558
2098
|
::std::ostream* const os = listener->stream();
|
|
2559
|
-
if (os !=
|
|
2099
|
+
if (os != nullptr) {
|
|
2560
2100
|
// Something is different. Check for extra values first.
|
|
2561
2101
|
bool printed_header = false;
|
|
2562
2102
|
for (typename LhsStlContainer::const_iterator it =
|
|
@@ -2636,18 +2176,18 @@ class WhenSortedByMatcher {
|
|
|
2636
2176
|
Impl(const Comparator& comparator, const ContainerMatcher& matcher)
|
|
2637
2177
|
: comparator_(comparator), matcher_(matcher) {}
|
|
2638
2178
|
|
|
2639
|
-
|
|
2179
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2640
2180
|
*os << "(when sorted) ";
|
|
2641
2181
|
matcher_.DescribeTo(os);
|
|
2642
2182
|
}
|
|
2643
2183
|
|
|
2644
|
-
|
|
2184
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2645
2185
|
*os << "(when sorted) ";
|
|
2646
2186
|
matcher_.DescribeNegationTo(os);
|
|
2647
2187
|
}
|
|
2648
2188
|
|
|
2649
|
-
|
|
2650
|
-
|
|
2189
|
+
bool MatchAndExplain(LhsContainer lhs,
|
|
2190
|
+
MatchResultListener* listener) const override {
|
|
2651
2191
|
LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
|
|
2652
2192
|
::std::vector<LhsValue> sorted_container(lhs_stl_container.begin(),
|
|
2653
2193
|
lhs_stl_container.end());
|
|
@@ -2686,11 +2226,15 @@ class WhenSortedByMatcher {
|
|
|
2686
2226
|
};
|
|
2687
2227
|
|
|
2688
2228
|
// Implements Pointwise(tuple_matcher, rhs_container). tuple_matcher
|
|
2689
|
-
// must be able to be safely cast to Matcher<tuple<const T1&, const
|
|
2229
|
+
// must be able to be safely cast to Matcher<std::tuple<const T1&, const
|
|
2690
2230
|
// T2&> >, where T1 and T2 are the types of elements in the LHS
|
|
2691
2231
|
// container and the RHS container respectively.
|
|
2692
2232
|
template <typename TupleMatcher, typename RhsContainer>
|
|
2693
2233
|
class PointwiseMatcher {
|
|
2234
|
+
GTEST_COMPILE_ASSERT_(
|
|
2235
|
+
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(RhsContainer)>::value,
|
|
2236
|
+
use_UnorderedPointwise_with_hash_tables);
|
|
2237
|
+
|
|
2694
2238
|
public:
|
|
2695
2239
|
typedef internal::StlContainerView<RhsContainer> RhsView;
|
|
2696
2240
|
typedef typename RhsView::type RhsStlContainer;
|
|
@@ -2708,7 +2252,12 @@ class PointwiseMatcher {
|
|
|
2708
2252
|
|
|
2709
2253
|
template <typename LhsContainer>
|
|
2710
2254
|
operator Matcher<LhsContainer>() const {
|
|
2711
|
-
|
|
2255
|
+
GTEST_COMPILE_ASSERT_(
|
|
2256
|
+
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)>::value,
|
|
2257
|
+
use_UnorderedPointwise_with_hash_tables);
|
|
2258
|
+
|
|
2259
|
+
return Matcher<LhsContainer>(
|
|
2260
|
+
new Impl<const LhsContainer&>(tuple_matcher_, rhs_));
|
|
2712
2261
|
}
|
|
2713
2262
|
|
|
2714
2263
|
template <typename LhsContainer>
|
|
@@ -2723,21 +2272,21 @@ class PointwiseMatcher {
|
|
|
2723
2272
|
// reference, as they may be expensive to copy. We must use tuple
|
|
2724
2273
|
// instead of pair here, as a pair cannot hold references (C++ 98,
|
|
2725
2274
|
// 20.2.2 [lib.pairs]).
|
|
2726
|
-
typedef ::
|
|
2275
|
+
typedef ::std::tuple<const LhsValue&, const RhsValue&> InnerMatcherArg;
|
|
2727
2276
|
|
|
2728
2277
|
Impl(const TupleMatcher& tuple_matcher, const RhsStlContainer& rhs)
|
|
2729
2278
|
// mono_tuple_matcher_ holds a monomorphic version of the tuple matcher.
|
|
2730
2279
|
: mono_tuple_matcher_(SafeMatcherCast<InnerMatcherArg>(tuple_matcher)),
|
|
2731
2280
|
rhs_(rhs) {}
|
|
2732
2281
|
|
|
2733
|
-
|
|
2282
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2734
2283
|
*os << "contains " << rhs_.size()
|
|
2735
2284
|
<< " values, where each value and its corresponding value in ";
|
|
2736
2285
|
UniversalPrinter<RhsStlContainer>::Print(rhs_, os);
|
|
2737
2286
|
*os << " ";
|
|
2738
2287
|
mono_tuple_matcher_.DescribeTo(os);
|
|
2739
2288
|
}
|
|
2740
|
-
|
|
2289
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2741
2290
|
*os << "doesn't contain exactly " << rhs_.size()
|
|
2742
2291
|
<< " values, or contains a value x at some index i"
|
|
2743
2292
|
<< " where x and the i-th value of ";
|
|
@@ -2746,8 +2295,8 @@ class PointwiseMatcher {
|
|
|
2746
2295
|
mono_tuple_matcher_.DescribeNegationTo(os);
|
|
2747
2296
|
}
|
|
2748
2297
|
|
|
2749
|
-
|
|
2750
|
-
|
|
2298
|
+
bool MatchAndExplain(LhsContainer lhs,
|
|
2299
|
+
MatchResultListener* listener) const override {
|
|
2751
2300
|
LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
|
|
2752
2301
|
const size_t actual_size = lhs_stl_container.size();
|
|
2753
2302
|
if (actual_size != rhs_.size()) {
|
|
@@ -2758,12 +2307,15 @@ class PointwiseMatcher {
|
|
|
2758
2307
|
typename LhsStlContainer::const_iterator left = lhs_stl_container.begin();
|
|
2759
2308
|
typename RhsStlContainer::const_iterator right = rhs_.begin();
|
|
2760
2309
|
for (size_t i = 0; i != actual_size; ++i, ++left, ++right) {
|
|
2761
|
-
const InnerMatcherArg value_pair(*left, *right);
|
|
2762
|
-
|
|
2763
2310
|
if (listener->IsInterested()) {
|
|
2764
2311
|
StringMatchResultListener inner_listener;
|
|
2312
|
+
// Create InnerMatcherArg as a temporarily object to avoid it outlives
|
|
2313
|
+
// *left and *right. Dereference or the conversion to `const T&` may
|
|
2314
|
+
// return temp objects, e.g for vector<bool>.
|
|
2765
2315
|
if (!mono_tuple_matcher_.MatchAndExplain(
|
|
2766
|
-
|
|
2316
|
+
InnerMatcherArg(ImplicitCast_<const LhsValue&>(*left),
|
|
2317
|
+
ImplicitCast_<const RhsValue&>(*right)),
|
|
2318
|
+
&inner_listener)) {
|
|
2767
2319
|
*listener << "where the value pair (";
|
|
2768
2320
|
UniversalPrint(*left, listener->stream());
|
|
2769
2321
|
*listener << ", ";
|
|
@@ -2773,7 +2325,9 @@ class PointwiseMatcher {
|
|
|
2773
2325
|
return false;
|
|
2774
2326
|
}
|
|
2775
2327
|
} else {
|
|
2776
|
-
if (!mono_tuple_matcher_.Matches(
|
|
2328
|
+
if (!mono_tuple_matcher_.Matches(
|
|
2329
|
+
InnerMatcherArg(ImplicitCast_<const LhsValue&>(*left),
|
|
2330
|
+
ImplicitCast_<const RhsValue&>(*right))))
|
|
2777
2331
|
return false;
|
|
2778
2332
|
}
|
|
2779
2333
|
}
|
|
@@ -2849,18 +2403,18 @@ class ContainsMatcherImpl : public QuantifierMatcherImpl<Container> {
|
|
|
2849
2403
|
: QuantifierMatcherImpl<Container>(inner_matcher) {}
|
|
2850
2404
|
|
|
2851
2405
|
// Describes what this matcher does.
|
|
2852
|
-
|
|
2406
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2853
2407
|
*os << "contains at least one element that ";
|
|
2854
2408
|
this->inner_matcher_.DescribeTo(os);
|
|
2855
2409
|
}
|
|
2856
2410
|
|
|
2857
|
-
|
|
2411
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2858
2412
|
*os << "doesn't contain any element that ";
|
|
2859
2413
|
this->inner_matcher_.DescribeTo(os);
|
|
2860
2414
|
}
|
|
2861
2415
|
|
|
2862
|
-
|
|
2863
|
-
|
|
2416
|
+
bool MatchAndExplain(Container container,
|
|
2417
|
+
MatchResultListener* listener) const override {
|
|
2864
2418
|
return this->MatchAndExplainImpl(false, container, listener);
|
|
2865
2419
|
}
|
|
2866
2420
|
|
|
@@ -2878,18 +2432,18 @@ class EachMatcherImpl : public QuantifierMatcherImpl<Container> {
|
|
|
2878
2432
|
: QuantifierMatcherImpl<Container>(inner_matcher) {}
|
|
2879
2433
|
|
|
2880
2434
|
// Describes what this matcher does.
|
|
2881
|
-
|
|
2435
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2882
2436
|
*os << "only contains elements that ";
|
|
2883
2437
|
this->inner_matcher_.DescribeTo(os);
|
|
2884
2438
|
}
|
|
2885
2439
|
|
|
2886
|
-
|
|
2440
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2887
2441
|
*os << "contains some element that ";
|
|
2888
2442
|
this->inner_matcher_.DescribeNegationTo(os);
|
|
2889
2443
|
}
|
|
2890
2444
|
|
|
2891
|
-
|
|
2892
|
-
|
|
2445
|
+
bool MatchAndExplain(Container container,
|
|
2446
|
+
MatchResultListener* listener) const override {
|
|
2893
2447
|
return this->MatchAndExplainImpl(true, container, listener);
|
|
2894
2448
|
}
|
|
2895
2449
|
|
|
@@ -2905,7 +2459,8 @@ class ContainsMatcher {
|
|
|
2905
2459
|
|
|
2906
2460
|
template <typename Container>
|
|
2907
2461
|
operator Matcher<Container>() const {
|
|
2908
|
-
return
|
|
2462
|
+
return Matcher<Container>(
|
|
2463
|
+
new ContainsMatcherImpl<const Container&>(inner_matcher_));
|
|
2909
2464
|
}
|
|
2910
2465
|
|
|
2911
2466
|
private:
|
|
@@ -2922,7 +2477,8 @@ class EachMatcher {
|
|
|
2922
2477
|
|
|
2923
2478
|
template <typename Container>
|
|
2924
2479
|
operator Matcher<Container>() const {
|
|
2925
|
-
return
|
|
2480
|
+
return Matcher<Container>(
|
|
2481
|
+
new EachMatcherImpl<const Container&>(inner_matcher_));
|
|
2926
2482
|
}
|
|
2927
2483
|
|
|
2928
2484
|
private:
|
|
@@ -2931,6 +2487,30 @@ class EachMatcher {
|
|
|
2931
2487
|
GTEST_DISALLOW_ASSIGN_(EachMatcher);
|
|
2932
2488
|
};
|
|
2933
2489
|
|
|
2490
|
+
struct Rank1 {};
|
|
2491
|
+
struct Rank0 : Rank1 {};
|
|
2492
|
+
|
|
2493
|
+
namespace pair_getters {
|
|
2494
|
+
using std::get;
|
|
2495
|
+
template <typename T>
|
|
2496
|
+
auto First(T& x, Rank1) -> decltype(get<0>(x)) { // NOLINT
|
|
2497
|
+
return get<0>(x);
|
|
2498
|
+
}
|
|
2499
|
+
template <typename T>
|
|
2500
|
+
auto First(T& x, Rank0) -> decltype((x.first)) { // NOLINT
|
|
2501
|
+
return x.first;
|
|
2502
|
+
}
|
|
2503
|
+
|
|
2504
|
+
template <typename T>
|
|
2505
|
+
auto Second(T& x, Rank1) -> decltype(get<1>(x)) { // NOLINT
|
|
2506
|
+
return get<1>(x);
|
|
2507
|
+
}
|
|
2508
|
+
template <typename T>
|
|
2509
|
+
auto Second(T& x, Rank0) -> decltype((x.second)) { // NOLINT
|
|
2510
|
+
return x.second;
|
|
2511
|
+
}
|
|
2512
|
+
} // namespace pair_getters
|
|
2513
|
+
|
|
2934
2514
|
// Implements Key(inner_matcher) for the given argument pair type.
|
|
2935
2515
|
// Key(inner_matcher) matches an std::pair whose 'first' field matches
|
|
2936
2516
|
// inner_matcher. For example, Contains(Key(Ge(5))) can be used to match an
|
|
@@ -2948,12 +2528,12 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
|
|
|
2948
2528
|
}
|
|
2949
2529
|
|
|
2950
2530
|
// Returns true iff 'key_value.first' (the key) matches the inner matcher.
|
|
2951
|
-
|
|
2952
|
-
|
|
2531
|
+
bool MatchAndExplain(PairType key_value,
|
|
2532
|
+
MatchResultListener* listener) const override {
|
|
2953
2533
|
StringMatchResultListener inner_listener;
|
|
2954
|
-
const bool match = inner_matcher_.MatchAndExplain(
|
|
2955
|
-
|
|
2956
|
-
const
|
|
2534
|
+
const bool match = inner_matcher_.MatchAndExplain(
|
|
2535
|
+
pair_getters::First(key_value, Rank0()), &inner_listener);
|
|
2536
|
+
const std::string explanation = inner_listener.str();
|
|
2957
2537
|
if (explanation != "") {
|
|
2958
2538
|
*listener << "whose first field is a value " << explanation;
|
|
2959
2539
|
}
|
|
@@ -2961,13 +2541,13 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
|
|
|
2961
2541
|
}
|
|
2962
2542
|
|
|
2963
2543
|
// Describes what this matcher does.
|
|
2964
|
-
|
|
2544
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
2965
2545
|
*os << "has a key that ";
|
|
2966
2546
|
inner_matcher_.DescribeTo(os);
|
|
2967
2547
|
}
|
|
2968
2548
|
|
|
2969
2549
|
// Describes what the negation of this matcher does.
|
|
2970
|
-
|
|
2550
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
2971
2551
|
*os << "doesn't have a key that ";
|
|
2972
2552
|
inner_matcher_.DescribeTo(os);
|
|
2973
2553
|
}
|
|
@@ -2986,7 +2566,8 @@ class KeyMatcher {
|
|
|
2986
2566
|
|
|
2987
2567
|
template <typename PairType>
|
|
2988
2568
|
operator Matcher<PairType>() const {
|
|
2989
|
-
return
|
|
2569
|
+
return Matcher<PairType>(
|
|
2570
|
+
new KeyMatcherImpl<const PairType&>(matcher_for_key_));
|
|
2990
2571
|
}
|
|
2991
2572
|
|
|
2992
2573
|
private:
|
|
@@ -3013,7 +2594,7 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
|
|
|
3013
2594
|
}
|
|
3014
2595
|
|
|
3015
2596
|
// Describes what this matcher does.
|
|
3016
|
-
|
|
2597
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
3017
2598
|
*os << "has a first field that ";
|
|
3018
2599
|
first_matcher_.DescribeTo(os);
|
|
3019
2600
|
*os << ", and has a second field that ";
|
|
@@ -3021,7 +2602,7 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
|
|
|
3021
2602
|
}
|
|
3022
2603
|
|
|
3023
2604
|
// Describes what the negation of this matcher does.
|
|
3024
|
-
|
|
2605
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
3025
2606
|
*os << "has a first field that ";
|
|
3026
2607
|
first_matcher_.DescribeNegationTo(os);
|
|
3027
2608
|
*os << ", or has a second field that ";
|
|
@@ -3030,23 +2611,23 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
|
|
|
3030
2611
|
|
|
3031
2612
|
// Returns true iff 'a_pair.first' matches first_matcher and 'a_pair.second'
|
|
3032
2613
|
// matches second_matcher.
|
|
3033
|
-
|
|
3034
|
-
|
|
2614
|
+
bool MatchAndExplain(PairType a_pair,
|
|
2615
|
+
MatchResultListener* listener) const override {
|
|
3035
2616
|
if (!listener->IsInterested()) {
|
|
3036
2617
|
// If the listener is not interested, we don't need to construct the
|
|
3037
2618
|
// explanation.
|
|
3038
|
-
return first_matcher_.Matches(a_pair
|
|
3039
|
-
second_matcher_.Matches(a_pair
|
|
2619
|
+
return first_matcher_.Matches(pair_getters::First(a_pair, Rank0())) &&
|
|
2620
|
+
second_matcher_.Matches(pair_getters::Second(a_pair, Rank0()));
|
|
3040
2621
|
}
|
|
3041
2622
|
StringMatchResultListener first_inner_listener;
|
|
3042
|
-
if (!first_matcher_.MatchAndExplain(a_pair
|
|
2623
|
+
if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank0()),
|
|
3043
2624
|
&first_inner_listener)) {
|
|
3044
2625
|
*listener << "whose first field does not match";
|
|
3045
2626
|
PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
|
|
3046
2627
|
return false;
|
|
3047
2628
|
}
|
|
3048
2629
|
StringMatchResultListener second_inner_listener;
|
|
3049
|
-
if (!second_matcher_.MatchAndExplain(a_pair
|
|
2630
|
+
if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank0()),
|
|
3050
2631
|
&second_inner_listener)) {
|
|
3051
2632
|
*listener << "whose second field does not match";
|
|
3052
2633
|
PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
|
|
@@ -3058,8 +2639,8 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
|
|
|
3058
2639
|
}
|
|
3059
2640
|
|
|
3060
2641
|
private:
|
|
3061
|
-
void ExplainSuccess(const
|
|
3062
|
-
const
|
|
2642
|
+
void ExplainSuccess(const std::string& first_explanation,
|
|
2643
|
+
const std::string& second_explanation,
|
|
3063
2644
|
MatchResultListener* listener) const {
|
|
3064
2645
|
*listener << "whose both fields match";
|
|
3065
2646
|
if (first_explanation != "") {
|
|
@@ -3091,9 +2672,8 @@ class PairMatcher {
|
|
|
3091
2672
|
|
|
3092
2673
|
template <typename PairType>
|
|
3093
2674
|
operator Matcher<PairType> () const {
|
|
3094
|
-
return
|
|
3095
|
-
new PairMatcherImpl<PairType
|
|
3096
|
-
first_matcher_, second_matcher_));
|
|
2675
|
+
return Matcher<PairType>(
|
|
2676
|
+
new PairMatcherImpl<const PairType&>(first_matcher_, second_matcher_));
|
|
3097
2677
|
}
|
|
3098
2678
|
|
|
3099
2679
|
private:
|
|
@@ -3123,7 +2703,7 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
|
|
|
3123
2703
|
}
|
|
3124
2704
|
|
|
3125
2705
|
// Describes what this matcher does.
|
|
3126
|
-
|
|
2706
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
3127
2707
|
if (count() == 0) {
|
|
3128
2708
|
*os << "is empty";
|
|
3129
2709
|
} else if (count() == 1) {
|
|
@@ -3142,7 +2722,7 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
|
|
|
3142
2722
|
}
|
|
3143
2723
|
|
|
3144
2724
|
// Describes what the negation of this matcher does.
|
|
3145
|
-
|
|
2725
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
3146
2726
|
if (count() == 0) {
|
|
3147
2727
|
*os << "isn't empty";
|
|
3148
2728
|
return;
|
|
@@ -3158,15 +2738,15 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
|
|
|
3158
2738
|
}
|
|
3159
2739
|
}
|
|
3160
2740
|
|
|
3161
|
-
|
|
3162
|
-
|
|
2741
|
+
bool MatchAndExplain(Container container,
|
|
2742
|
+
MatchResultListener* listener) const override {
|
|
3163
2743
|
// To work with stream-like "containers", we must only walk
|
|
3164
2744
|
// through the elements in one pass.
|
|
3165
2745
|
|
|
3166
2746
|
const bool listener_interested = listener->IsInterested();
|
|
3167
2747
|
|
|
3168
2748
|
// explanations[i] is the explanation of the element at index i.
|
|
3169
|
-
::std::vector<
|
|
2749
|
+
::std::vector<std::string> explanations(count());
|
|
3170
2750
|
StlContainerReference stl_container = View::ConstReference(container);
|
|
3171
2751
|
typename StlContainer::const_iterator it = stl_container.begin();
|
|
3172
2752
|
size_t exam_pos = 0;
|
|
@@ -3225,7 +2805,7 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
|
|
|
3225
2805
|
if (listener_interested) {
|
|
3226
2806
|
bool reason_printed = false;
|
|
3227
2807
|
for (size_t i = 0; i != count(); ++i) {
|
|
3228
|
-
const
|
|
2808
|
+
const std::string& s = explanations[i];
|
|
3229
2809
|
if (!s.empty()) {
|
|
3230
2810
|
if (reason_printed) {
|
|
3231
2811
|
*listener << ",\nand ";
|
|
@@ -3278,7 +2858,7 @@ class GTEST_API_ MatchMatrix {
|
|
|
3278
2858
|
|
|
3279
2859
|
void Randomize();
|
|
3280
2860
|
|
|
3281
|
-
string DebugString() const;
|
|
2861
|
+
std::string DebugString() const;
|
|
3282
2862
|
|
|
3283
2863
|
private:
|
|
3284
2864
|
size_t SpaceIndex(size_t ilhs, size_t irhs) const {
|
|
@@ -3302,14 +2882,23 @@ typedef ::std::vector<ElementMatcherPair> ElementMatcherPairs;
|
|
|
3302
2882
|
GTEST_API_ ElementMatcherPairs
|
|
3303
2883
|
FindMaxBipartiteMatching(const MatchMatrix& g);
|
|
3304
2884
|
|
|
3305
|
-
|
|
3306
|
-
|
|
2885
|
+
struct UnorderedMatcherRequire {
|
|
2886
|
+
enum Flags {
|
|
2887
|
+
Superset = 1 << 0,
|
|
2888
|
+
Subset = 1 << 1,
|
|
2889
|
+
ExactMatch = Superset | Subset,
|
|
2890
|
+
};
|
|
2891
|
+
};
|
|
3307
2892
|
|
|
3308
2893
|
// Untyped base class for implementing UnorderedElementsAre. By
|
|
3309
2894
|
// putting logic that's not specific to the element type here, we
|
|
3310
2895
|
// reduce binary bloat and increase compilation speed.
|
|
3311
2896
|
class GTEST_API_ UnorderedElementsAreMatcherImplBase {
|
|
3312
2897
|
protected:
|
|
2898
|
+
explicit UnorderedElementsAreMatcherImplBase(
|
|
2899
|
+
UnorderedMatcherRequire::Flags matcher_flags)
|
|
2900
|
+
: match_flags_(matcher_flags) {}
|
|
2901
|
+
|
|
3313
2902
|
// A vector of matcher describers, one for each element matcher.
|
|
3314
2903
|
// Does not own the describers (and thus can be used only when the
|
|
3315
2904
|
// element matchers are alive).
|
|
@@ -3321,10 +2910,12 @@ class GTEST_API_ UnorderedElementsAreMatcherImplBase {
|
|
|
3321
2910
|
// Describes the negation of this UnorderedElementsAre matcher.
|
|
3322
2911
|
void DescribeNegationToImpl(::std::ostream* os) const;
|
|
3323
2912
|
|
|
3324
|
-
bool
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
2913
|
+
bool VerifyMatchMatrix(const ::std::vector<std::string>& element_printouts,
|
|
2914
|
+
const MatchMatrix& matrix,
|
|
2915
|
+
MatchResultListener* listener) const;
|
|
2916
|
+
|
|
2917
|
+
bool FindPairing(const MatchMatrix& matrix,
|
|
2918
|
+
MatchResultListener* listener) const;
|
|
3328
2919
|
|
|
3329
2920
|
MatcherDescriberVec& matcher_describers() {
|
|
3330
2921
|
return matcher_describers_;
|
|
@@ -3334,13 +2925,17 @@ class GTEST_API_ UnorderedElementsAreMatcherImplBase {
|
|
|
3334
2925
|
return Message() << n << " element" << (n == 1 ? "" : "s");
|
|
3335
2926
|
}
|
|
3336
2927
|
|
|
2928
|
+
UnorderedMatcherRequire::Flags match_flags() const { return match_flags_; }
|
|
2929
|
+
|
|
3337
2930
|
private:
|
|
2931
|
+
UnorderedMatcherRequire::Flags match_flags_;
|
|
3338
2932
|
MatcherDescriberVec matcher_describers_;
|
|
3339
2933
|
|
|
3340
2934
|
GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreMatcherImplBase);
|
|
3341
2935
|
};
|
|
3342
2936
|
|
|
3343
|
-
// Implements
|
|
2937
|
+
// Implements UnorderedElementsAre, UnorderedElementsAreArray, IsSubsetOf, and
|
|
2938
|
+
// IsSupersetOf.
|
|
3344
2939
|
template <typename Container>
|
|
3345
2940
|
class UnorderedElementsAreMatcherImpl
|
|
3346
2941
|
: public MatcherInterface<Container>,
|
|
@@ -3353,10 +2948,10 @@ class UnorderedElementsAreMatcherImpl
|
|
|
3353
2948
|
typedef typename StlContainer::const_iterator StlContainerConstIterator;
|
|
3354
2949
|
typedef typename StlContainer::value_type Element;
|
|
3355
2950
|
|
|
3356
|
-
// Constructs the matcher from a sequence of element values or
|
|
3357
|
-
// element matchers.
|
|
3358
2951
|
template <typename InputIter>
|
|
3359
|
-
UnorderedElementsAreMatcherImpl(
|
|
2952
|
+
UnorderedElementsAreMatcherImpl(UnorderedMatcherRequire::Flags matcher_flags,
|
|
2953
|
+
InputIter first, InputIter last)
|
|
2954
|
+
: UnorderedElementsAreMatcherImplBase(matcher_flags) {
|
|
3360
2955
|
for (; first != last; ++first) {
|
|
3361
2956
|
matchers_.push_back(MatcherCast<const Element&>(*first));
|
|
3362
2957
|
matcher_describers().push_back(matchers_.back().GetDescriber());
|
|
@@ -3364,50 +2959,48 @@ class UnorderedElementsAreMatcherImpl
|
|
|
3364
2959
|
}
|
|
3365
2960
|
|
|
3366
2961
|
// Describes what this matcher does.
|
|
3367
|
-
|
|
2962
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
3368
2963
|
return UnorderedElementsAreMatcherImplBase::DescribeToImpl(os);
|
|
3369
2964
|
}
|
|
3370
2965
|
|
|
3371
2966
|
// Describes what the negation of this matcher does.
|
|
3372
|
-
|
|
2967
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
3373
2968
|
return UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(os);
|
|
3374
2969
|
}
|
|
3375
2970
|
|
|
3376
|
-
|
|
3377
|
-
|
|
2971
|
+
bool MatchAndExplain(Container container,
|
|
2972
|
+
MatchResultListener* listener) const override {
|
|
3378
2973
|
StlContainerReference stl_container = View::ConstReference(container);
|
|
3379
|
-
::std::vector<string> element_printouts;
|
|
3380
|
-
MatchMatrix matrix =
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
const size_t actual_count = matrix.LhsSize();
|
|
3386
|
-
if (actual_count == 0 && matchers_.empty()) {
|
|
2974
|
+
::std::vector<std::string> element_printouts;
|
|
2975
|
+
MatchMatrix matrix =
|
|
2976
|
+
AnalyzeElements(stl_container.begin(), stl_container.end(),
|
|
2977
|
+
&element_printouts, listener);
|
|
2978
|
+
|
|
2979
|
+
if (matrix.LhsSize() == 0 && matrix.RhsSize() == 0) {
|
|
3387
2980
|
return true;
|
|
3388
2981
|
}
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
2982
|
+
|
|
2983
|
+
if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
|
|
2984
|
+
if (matrix.LhsSize() != matrix.RhsSize()) {
|
|
2985
|
+
// The element count doesn't match. If the container is empty,
|
|
2986
|
+
// there's no need to explain anything as Google Mock already
|
|
2987
|
+
// prints the empty container. Otherwise we just need to show
|
|
2988
|
+
// how many elements there actually are.
|
|
2989
|
+
if (matrix.LhsSize() != 0 && listener->IsInterested()) {
|
|
2990
|
+
*listener << "which has " << Elements(matrix.LhsSize());
|
|
2991
|
+
}
|
|
2992
|
+
return false;
|
|
3396
2993
|
}
|
|
3397
|
-
return false;
|
|
3398
2994
|
}
|
|
3399
2995
|
|
|
3400
|
-
return
|
|
3401
|
-
matrix, listener) &&
|
|
2996
|
+
return VerifyMatchMatrix(element_printouts, matrix, listener) &&
|
|
3402
2997
|
FindPairing(matrix, listener);
|
|
3403
2998
|
}
|
|
3404
2999
|
|
|
3405
3000
|
private:
|
|
3406
|
-
typedef ::std::vector<Matcher<const Element&> > MatcherVec;
|
|
3407
|
-
|
|
3408
3001
|
template <typename ElementIter>
|
|
3409
3002
|
MatchMatrix AnalyzeElements(ElementIter elem_first, ElementIter elem_last,
|
|
3410
|
-
::std::vector<string>* element_printouts,
|
|
3003
|
+
::std::vector<std::string>* element_printouts,
|
|
3411
3004
|
MatchResultListener* listener) const {
|
|
3412
3005
|
element_printouts->clear();
|
|
3413
3006
|
::std::vector<char> did_match;
|
|
@@ -3431,7 +3024,7 @@ class UnorderedElementsAreMatcherImpl
|
|
|
3431
3024
|
return matrix;
|
|
3432
3025
|
}
|
|
3433
3026
|
|
|
3434
|
-
|
|
3027
|
+
::std::vector<Matcher<const Element&> > matchers_;
|
|
3435
3028
|
|
|
3436
3029
|
GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreMatcherImpl);
|
|
3437
3030
|
};
|
|
@@ -3460,11 +3053,13 @@ class UnorderedElementsAreMatcher {
|
|
|
3460
3053
|
typedef typename View::value_type Element;
|
|
3461
3054
|
typedef ::std::vector<Matcher<const Element&> > MatcherVec;
|
|
3462
3055
|
MatcherVec matchers;
|
|
3463
|
-
matchers.reserve(::
|
|
3056
|
+
matchers.reserve(::std::tuple_size<MatcherTuple>::value);
|
|
3464
3057
|
TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
|
|
3465
3058
|
::std::back_inserter(matchers));
|
|
3466
|
-
return
|
|
3467
|
-
|
|
3059
|
+
return Matcher<Container>(
|
|
3060
|
+
new UnorderedElementsAreMatcherImpl<const Container&>(
|
|
3061
|
+
UnorderedMatcherRequire::ExactMatch, matchers.begin(),
|
|
3062
|
+
matchers.end()));
|
|
3468
3063
|
}
|
|
3469
3064
|
|
|
3470
3065
|
private:
|
|
@@ -3480,16 +3075,21 @@ class ElementsAreMatcher {
|
|
|
3480
3075
|
|
|
3481
3076
|
template <typename Container>
|
|
3482
3077
|
operator Matcher<Container>() const {
|
|
3078
|
+
GTEST_COMPILE_ASSERT_(
|
|
3079
|
+
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>::value ||
|
|
3080
|
+
::std::tuple_size<MatcherTuple>::value < 2,
|
|
3081
|
+
use_UnorderedElementsAre_with_hash_tables);
|
|
3082
|
+
|
|
3483
3083
|
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
|
|
3484
3084
|
typedef typename internal::StlContainerView<RawContainer>::type View;
|
|
3485
3085
|
typedef typename View::value_type Element;
|
|
3486
3086
|
typedef ::std::vector<Matcher<const Element&> > MatcherVec;
|
|
3487
3087
|
MatcherVec matchers;
|
|
3488
|
-
matchers.reserve(::
|
|
3088
|
+
matchers.reserve(::std::tuple_size<MatcherTuple>::value);
|
|
3489
3089
|
TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
|
|
3490
3090
|
::std::back_inserter(matchers));
|
|
3491
|
-
return
|
|
3492
|
-
|
|
3091
|
+
return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
|
|
3092
|
+
matchers.begin(), matchers.end()));
|
|
3493
3093
|
}
|
|
3494
3094
|
|
|
3495
3095
|
private:
|
|
@@ -3497,24 +3097,24 @@ class ElementsAreMatcher {
|
|
|
3497
3097
|
GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher);
|
|
3498
3098
|
};
|
|
3499
3099
|
|
|
3500
|
-
// Implements UnorderedElementsAreArray().
|
|
3100
|
+
// Implements UnorderedElementsAreArray(), IsSubsetOf(), and IsSupersetOf().
|
|
3501
3101
|
template <typename T>
|
|
3502
3102
|
class UnorderedElementsAreArrayMatcher {
|
|
3503
3103
|
public:
|
|
3504
|
-
UnorderedElementsAreArrayMatcher() {}
|
|
3505
|
-
|
|
3506
3104
|
template <typename Iter>
|
|
3507
|
-
UnorderedElementsAreArrayMatcher(
|
|
3508
|
-
|
|
3105
|
+
UnorderedElementsAreArrayMatcher(UnorderedMatcherRequire::Flags match_flags,
|
|
3106
|
+
Iter first, Iter last)
|
|
3107
|
+
: match_flags_(match_flags), matchers_(first, last) {}
|
|
3509
3108
|
|
|
3510
3109
|
template <typename Container>
|
|
3511
3110
|
operator Matcher<Container>() const {
|
|
3512
|
-
return
|
|
3513
|
-
new UnorderedElementsAreMatcherImpl<Container
|
|
3514
|
-
|
|
3111
|
+
return Matcher<Container>(
|
|
3112
|
+
new UnorderedElementsAreMatcherImpl<const Container&>(
|
|
3113
|
+
match_flags_, matchers_.begin(), matchers_.end()));
|
|
3515
3114
|
}
|
|
3516
3115
|
|
|
3517
3116
|
private:
|
|
3117
|
+
UnorderedMatcherRequire::Flags match_flags_;
|
|
3518
3118
|
::std::vector<T> matchers_;
|
|
3519
3119
|
|
|
3520
3120
|
GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreArrayMatcher);
|
|
@@ -3529,7 +3129,11 @@ class ElementsAreArrayMatcher {
|
|
|
3529
3129
|
|
|
3530
3130
|
template <typename Container>
|
|
3531
3131
|
operator Matcher<Container>() const {
|
|
3532
|
-
|
|
3132
|
+
GTEST_COMPILE_ASSERT_(
|
|
3133
|
+
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>::value,
|
|
3134
|
+
use_UnorderedElementsAreArray_with_hash_tables);
|
|
3135
|
+
|
|
3136
|
+
return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
|
|
3533
3137
|
matchers_.begin(), matchers_.end()));
|
|
3534
3138
|
}
|
|
3535
3139
|
|
|
@@ -3575,20 +3179,20 @@ class BoundSecondMatcher {
|
|
|
3575
3179
|
template <typename T>
|
|
3576
3180
|
class Impl : public MatcherInterface<T> {
|
|
3577
3181
|
public:
|
|
3578
|
-
typedef ::
|
|
3182
|
+
typedef ::std::tuple<T, Second> ArgTuple;
|
|
3579
3183
|
|
|
3580
3184
|
Impl(const Tuple2Matcher& tm, const Second& second)
|
|
3581
3185
|
: mono_tuple2_matcher_(SafeMatcherCast<const ArgTuple&>(tm)),
|
|
3582
3186
|
second_value_(second) {}
|
|
3583
3187
|
|
|
3584
|
-
|
|
3188
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
3585
3189
|
*os << "and ";
|
|
3586
3190
|
UniversalPrint(second_value_, os);
|
|
3587
3191
|
*os << " ";
|
|
3588
3192
|
mono_tuple2_matcher_.DescribeTo(os);
|
|
3589
3193
|
}
|
|
3590
3194
|
|
|
3591
|
-
|
|
3195
|
+
bool MatchAndExplain(T x, MatchResultListener* listener) const override {
|
|
3592
3196
|
return mono_tuple2_matcher_.MatchAndExplain(ArgTuple(x, second_value_),
|
|
3593
3197
|
listener);
|
|
3594
3198
|
}
|
|
@@ -3619,13 +3223,264 @@ BoundSecondMatcher<Tuple2Matcher, Second> MatcherBindSecond(
|
|
|
3619
3223
|
// 'negation' is false; otherwise returns the description of the
|
|
3620
3224
|
// negation of the matcher. 'param_values' contains a list of strings
|
|
3621
3225
|
// that are the print-out of the matcher's parameters.
|
|
3622
|
-
GTEST_API_ string FormatMatcherDescription(bool negation,
|
|
3623
|
-
|
|
3624
|
-
|
|
3226
|
+
GTEST_API_ std::string FormatMatcherDescription(bool negation,
|
|
3227
|
+
const char* matcher_name,
|
|
3228
|
+
const Strings& param_values);
|
|
3229
|
+
|
|
3230
|
+
// Implements a matcher that checks the value of a optional<> type variable.
|
|
3231
|
+
template <typename ValueMatcher>
|
|
3232
|
+
class OptionalMatcher {
|
|
3233
|
+
public:
|
|
3234
|
+
explicit OptionalMatcher(const ValueMatcher& value_matcher)
|
|
3235
|
+
: value_matcher_(value_matcher) {}
|
|
3236
|
+
|
|
3237
|
+
template <typename Optional>
|
|
3238
|
+
operator Matcher<Optional>() const {
|
|
3239
|
+
return Matcher<Optional>(new Impl<const Optional&>(value_matcher_));
|
|
3240
|
+
}
|
|
3241
|
+
|
|
3242
|
+
template <typename Optional>
|
|
3243
|
+
class Impl : public MatcherInterface<Optional> {
|
|
3244
|
+
public:
|
|
3245
|
+
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Optional) OptionalView;
|
|
3246
|
+
typedef typename OptionalView::value_type ValueType;
|
|
3247
|
+
explicit Impl(const ValueMatcher& value_matcher)
|
|
3248
|
+
: value_matcher_(MatcherCast<ValueType>(value_matcher)) {}
|
|
3249
|
+
|
|
3250
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
3251
|
+
*os << "value ";
|
|
3252
|
+
value_matcher_.DescribeTo(os);
|
|
3253
|
+
}
|
|
3254
|
+
|
|
3255
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
3256
|
+
*os << "value ";
|
|
3257
|
+
value_matcher_.DescribeNegationTo(os);
|
|
3258
|
+
}
|
|
3259
|
+
|
|
3260
|
+
bool MatchAndExplain(Optional optional,
|
|
3261
|
+
MatchResultListener* listener) const override {
|
|
3262
|
+
if (!optional) {
|
|
3263
|
+
*listener << "which is not engaged";
|
|
3264
|
+
return false;
|
|
3265
|
+
}
|
|
3266
|
+
const ValueType& value = *optional;
|
|
3267
|
+
StringMatchResultListener value_listener;
|
|
3268
|
+
const bool match = value_matcher_.MatchAndExplain(value, &value_listener);
|
|
3269
|
+
*listener << "whose value " << PrintToString(value)
|
|
3270
|
+
<< (match ? " matches" : " doesn't match");
|
|
3271
|
+
PrintIfNotEmpty(value_listener.str(), listener->stream());
|
|
3272
|
+
return match;
|
|
3273
|
+
}
|
|
3274
|
+
|
|
3275
|
+
private:
|
|
3276
|
+
const Matcher<ValueType> value_matcher_;
|
|
3277
|
+
GTEST_DISALLOW_ASSIGN_(Impl);
|
|
3278
|
+
};
|
|
3279
|
+
|
|
3280
|
+
private:
|
|
3281
|
+
const ValueMatcher value_matcher_;
|
|
3282
|
+
GTEST_DISALLOW_ASSIGN_(OptionalMatcher);
|
|
3283
|
+
};
|
|
3284
|
+
|
|
3285
|
+
namespace variant_matcher {
|
|
3286
|
+
// Overloads to allow VariantMatcher to do proper ADL lookup.
|
|
3287
|
+
template <typename T>
|
|
3288
|
+
void holds_alternative() {}
|
|
3289
|
+
template <typename T>
|
|
3290
|
+
void get() {}
|
|
3291
|
+
|
|
3292
|
+
// Implements a matcher that checks the value of a variant<> type variable.
|
|
3293
|
+
template <typename T>
|
|
3294
|
+
class VariantMatcher {
|
|
3295
|
+
public:
|
|
3296
|
+
explicit VariantMatcher(::testing::Matcher<const T&> matcher)
|
|
3297
|
+
: matcher_(std::move(matcher)) {}
|
|
3298
|
+
|
|
3299
|
+
template <typename Variant>
|
|
3300
|
+
bool MatchAndExplain(const Variant& value,
|
|
3301
|
+
::testing::MatchResultListener* listener) const {
|
|
3302
|
+
using std::get;
|
|
3303
|
+
if (!listener->IsInterested()) {
|
|
3304
|
+
return holds_alternative<T>(value) && matcher_.Matches(get<T>(value));
|
|
3305
|
+
}
|
|
3306
|
+
|
|
3307
|
+
if (!holds_alternative<T>(value)) {
|
|
3308
|
+
*listener << "whose value is not of type '" << GetTypeName() << "'";
|
|
3309
|
+
return false;
|
|
3310
|
+
}
|
|
3311
|
+
|
|
3312
|
+
const T& elem = get<T>(value);
|
|
3313
|
+
StringMatchResultListener elem_listener;
|
|
3314
|
+
const bool match = matcher_.MatchAndExplain(elem, &elem_listener);
|
|
3315
|
+
*listener << "whose value " << PrintToString(elem)
|
|
3316
|
+
<< (match ? " matches" : " doesn't match");
|
|
3317
|
+
PrintIfNotEmpty(elem_listener.str(), listener->stream());
|
|
3318
|
+
return match;
|
|
3319
|
+
}
|
|
3320
|
+
|
|
3321
|
+
void DescribeTo(std::ostream* os) const {
|
|
3322
|
+
*os << "is a variant<> with value of type '" << GetTypeName()
|
|
3323
|
+
<< "' and the value ";
|
|
3324
|
+
matcher_.DescribeTo(os);
|
|
3325
|
+
}
|
|
3326
|
+
|
|
3327
|
+
void DescribeNegationTo(std::ostream* os) const {
|
|
3328
|
+
*os << "is a variant<> with value of type other than '" << GetTypeName()
|
|
3329
|
+
<< "' or the value ";
|
|
3330
|
+
matcher_.DescribeNegationTo(os);
|
|
3331
|
+
}
|
|
3332
|
+
|
|
3333
|
+
private:
|
|
3334
|
+
static std::string GetTypeName() {
|
|
3335
|
+
#if GTEST_HAS_RTTI
|
|
3336
|
+
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(
|
|
3337
|
+
return internal::GetTypeName<T>());
|
|
3338
|
+
#endif
|
|
3339
|
+
return "the element type";
|
|
3340
|
+
}
|
|
3341
|
+
|
|
3342
|
+
const ::testing::Matcher<const T&> matcher_;
|
|
3343
|
+
};
|
|
3344
|
+
|
|
3345
|
+
} // namespace variant_matcher
|
|
3346
|
+
|
|
3347
|
+
namespace any_cast_matcher {
|
|
3348
|
+
|
|
3349
|
+
// Overloads to allow AnyCastMatcher to do proper ADL lookup.
|
|
3350
|
+
template <typename T>
|
|
3351
|
+
void any_cast() {}
|
|
3352
|
+
|
|
3353
|
+
// Implements a matcher that any_casts the value.
|
|
3354
|
+
template <typename T>
|
|
3355
|
+
class AnyCastMatcher {
|
|
3356
|
+
public:
|
|
3357
|
+
explicit AnyCastMatcher(const ::testing::Matcher<const T&>& matcher)
|
|
3358
|
+
: matcher_(matcher) {}
|
|
3359
|
+
|
|
3360
|
+
template <typename AnyType>
|
|
3361
|
+
bool MatchAndExplain(const AnyType& value,
|
|
3362
|
+
::testing::MatchResultListener* listener) const {
|
|
3363
|
+
if (!listener->IsInterested()) {
|
|
3364
|
+
const T* ptr = any_cast<T>(&value);
|
|
3365
|
+
return ptr != nullptr && matcher_.Matches(*ptr);
|
|
3366
|
+
}
|
|
3367
|
+
|
|
3368
|
+
const T* elem = any_cast<T>(&value);
|
|
3369
|
+
if (elem == nullptr) {
|
|
3370
|
+
*listener << "whose value is not of type '" << GetTypeName() << "'";
|
|
3371
|
+
return false;
|
|
3372
|
+
}
|
|
3373
|
+
|
|
3374
|
+
StringMatchResultListener elem_listener;
|
|
3375
|
+
const bool match = matcher_.MatchAndExplain(*elem, &elem_listener);
|
|
3376
|
+
*listener << "whose value " << PrintToString(*elem)
|
|
3377
|
+
<< (match ? " matches" : " doesn't match");
|
|
3378
|
+
PrintIfNotEmpty(elem_listener.str(), listener->stream());
|
|
3379
|
+
return match;
|
|
3380
|
+
}
|
|
3381
|
+
|
|
3382
|
+
void DescribeTo(std::ostream* os) const {
|
|
3383
|
+
*os << "is an 'any' type with value of type '" << GetTypeName()
|
|
3384
|
+
<< "' and the value ";
|
|
3385
|
+
matcher_.DescribeTo(os);
|
|
3386
|
+
}
|
|
3387
|
+
|
|
3388
|
+
void DescribeNegationTo(std::ostream* os) const {
|
|
3389
|
+
*os << "is an 'any' type with value of type other than '" << GetTypeName()
|
|
3390
|
+
<< "' or the value ";
|
|
3391
|
+
matcher_.DescribeNegationTo(os);
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
private:
|
|
3395
|
+
static std::string GetTypeName() {
|
|
3396
|
+
#if GTEST_HAS_RTTI
|
|
3397
|
+
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(
|
|
3398
|
+
return internal::GetTypeName<T>());
|
|
3399
|
+
#endif
|
|
3400
|
+
return "the element type";
|
|
3401
|
+
}
|
|
3402
|
+
|
|
3403
|
+
const ::testing::Matcher<const T&> matcher_;
|
|
3404
|
+
};
|
|
3405
|
+
|
|
3406
|
+
} // namespace any_cast_matcher
|
|
3407
|
+
|
|
3408
|
+
// Implements the Args() matcher.
|
|
3409
|
+
template <class ArgsTuple, size_t... k>
|
|
3410
|
+
class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
|
|
3411
|
+
public:
|
|
3412
|
+
using RawArgsTuple = typename std::decay<ArgsTuple>::type;
|
|
3413
|
+
using SelectedArgs =
|
|
3414
|
+
std::tuple<typename std::tuple_element<k, RawArgsTuple>::type...>;
|
|
3415
|
+
using MonomorphicInnerMatcher = Matcher<const SelectedArgs&>;
|
|
3416
|
+
|
|
3417
|
+
template <typename InnerMatcher>
|
|
3418
|
+
explicit ArgsMatcherImpl(const InnerMatcher& inner_matcher)
|
|
3419
|
+
: inner_matcher_(SafeMatcherCast<const SelectedArgs&>(inner_matcher)) {}
|
|
3420
|
+
|
|
3421
|
+
bool MatchAndExplain(ArgsTuple args,
|
|
3422
|
+
MatchResultListener* listener) const override {
|
|
3423
|
+
// Workaround spurious C4100 on MSVC<=15.7 when k is empty.
|
|
3424
|
+
(void)args;
|
|
3425
|
+
const SelectedArgs& selected_args =
|
|
3426
|
+
std::forward_as_tuple(std::get<k>(args)...);
|
|
3427
|
+
if (!listener->IsInterested()) return inner_matcher_.Matches(selected_args);
|
|
3428
|
+
|
|
3429
|
+
PrintIndices(listener->stream());
|
|
3430
|
+
*listener << "are " << PrintToString(selected_args);
|
|
3431
|
+
|
|
3432
|
+
StringMatchResultListener inner_listener;
|
|
3433
|
+
const bool match =
|
|
3434
|
+
inner_matcher_.MatchAndExplain(selected_args, &inner_listener);
|
|
3435
|
+
PrintIfNotEmpty(inner_listener.str(), listener->stream());
|
|
3436
|
+
return match;
|
|
3437
|
+
}
|
|
3438
|
+
|
|
3439
|
+
void DescribeTo(::std::ostream* os) const override {
|
|
3440
|
+
*os << "are a tuple ";
|
|
3441
|
+
PrintIndices(os);
|
|
3442
|
+
inner_matcher_.DescribeTo(os);
|
|
3443
|
+
}
|
|
3444
|
+
|
|
3445
|
+
void DescribeNegationTo(::std::ostream* os) const override {
|
|
3446
|
+
*os << "are a tuple ";
|
|
3447
|
+
PrintIndices(os);
|
|
3448
|
+
inner_matcher_.DescribeNegationTo(os);
|
|
3449
|
+
}
|
|
3450
|
+
|
|
3451
|
+
private:
|
|
3452
|
+
// Prints the indices of the selected fields.
|
|
3453
|
+
static void PrintIndices(::std::ostream* os) {
|
|
3454
|
+
*os << "whose fields (";
|
|
3455
|
+
const char* sep = "";
|
|
3456
|
+
// Workaround spurious C4189 on MSVC<=15.7 when k is empty.
|
|
3457
|
+
(void)sep;
|
|
3458
|
+
const char* dummy[] = {"", (*os << sep << "#" << k, sep = ", ")...};
|
|
3459
|
+
(void)dummy;
|
|
3460
|
+
*os << ") ";
|
|
3461
|
+
}
|
|
3462
|
+
|
|
3463
|
+
MonomorphicInnerMatcher inner_matcher_;
|
|
3464
|
+
};
|
|
3465
|
+
|
|
3466
|
+
template <class InnerMatcher, size_t... k>
|
|
3467
|
+
class ArgsMatcher {
|
|
3468
|
+
public:
|
|
3469
|
+
explicit ArgsMatcher(InnerMatcher inner_matcher)
|
|
3470
|
+
: inner_matcher_(std::move(inner_matcher)) {}
|
|
3471
|
+
|
|
3472
|
+
template <typename ArgsTuple>
|
|
3473
|
+
operator Matcher<ArgsTuple>() const { // NOLINT
|
|
3474
|
+
return MakeMatcher(new ArgsMatcherImpl<ArgsTuple, k...>(inner_matcher_));
|
|
3475
|
+
}
|
|
3476
|
+
|
|
3477
|
+
private:
|
|
3478
|
+
InnerMatcher inner_matcher_;
|
|
3479
|
+
};
|
|
3625
3480
|
|
|
3626
3481
|
} // namespace internal
|
|
3627
3482
|
|
|
3628
|
-
// ElementsAreArray(
|
|
3483
|
+
// ElementsAreArray(iterator_first, iterator_last)
|
|
3629
3484
|
// ElementsAreArray(pointer, count)
|
|
3630
3485
|
// ElementsAreArray(array)
|
|
3631
3486
|
// ElementsAreArray(container)
|
|
@@ -3666,28 +3521,32 @@ ElementsAreArray(const Container& container) {
|
|
|
3666
3521
|
return ElementsAreArray(container.begin(), container.end());
|
|
3667
3522
|
}
|
|
3668
3523
|
|
|
3669
|
-
#if GTEST_HAS_STD_INITIALIZER_LIST_
|
|
3670
3524
|
template <typename T>
|
|
3671
3525
|
inline internal::ElementsAreArrayMatcher<T>
|
|
3672
3526
|
ElementsAreArray(::std::initializer_list<T> xs) {
|
|
3673
3527
|
return ElementsAreArray(xs.begin(), xs.end());
|
|
3674
3528
|
}
|
|
3675
|
-
#endif
|
|
3676
3529
|
|
|
3677
|
-
// UnorderedElementsAreArray(
|
|
3530
|
+
// UnorderedElementsAreArray(iterator_first, iterator_last)
|
|
3678
3531
|
// UnorderedElementsAreArray(pointer, count)
|
|
3679
3532
|
// UnorderedElementsAreArray(array)
|
|
3680
3533
|
// UnorderedElementsAreArray(container)
|
|
3681
3534
|
// UnorderedElementsAreArray({ e1, e2, ..., en })
|
|
3682
3535
|
//
|
|
3683
|
-
//
|
|
3684
|
-
//
|
|
3536
|
+
// UnorderedElementsAreArray() verifies that a bijective mapping onto a
|
|
3537
|
+
// collection of matchers exists.
|
|
3538
|
+
//
|
|
3539
|
+
// The matchers can be specified as an array, a pointer and count, a container,
|
|
3540
|
+
// an initializer list, or an STL iterator range. In each of these cases, the
|
|
3541
|
+
// underlying matchers can be either values or matchers.
|
|
3542
|
+
|
|
3685
3543
|
template <typename Iter>
|
|
3686
3544
|
inline internal::UnorderedElementsAreArrayMatcher<
|
|
3687
3545
|
typename ::std::iterator_traits<Iter>::value_type>
|
|
3688
3546
|
UnorderedElementsAreArray(Iter first, Iter last) {
|
|
3689
3547
|
typedef typename ::std::iterator_traits<Iter>::value_type T;
|
|
3690
|
-
return internal::UnorderedElementsAreArrayMatcher<T>(
|
|
3548
|
+
return internal::UnorderedElementsAreArrayMatcher<T>(
|
|
3549
|
+
internal::UnorderedMatcherRequire::ExactMatch, first, last);
|
|
3691
3550
|
}
|
|
3692
3551
|
|
|
3693
3552
|
template <typename T>
|
|
@@ -3709,13 +3568,11 @@ UnorderedElementsAreArray(const Container& container) {
|
|
|
3709
3568
|
return UnorderedElementsAreArray(container.begin(), container.end());
|
|
3710
3569
|
}
|
|
3711
3570
|
|
|
3712
|
-
#if GTEST_HAS_STD_INITIALIZER_LIST_
|
|
3713
3571
|
template <typename T>
|
|
3714
3572
|
inline internal::UnorderedElementsAreArrayMatcher<T>
|
|
3715
3573
|
UnorderedElementsAreArray(::std::initializer_list<T> xs) {
|
|
3716
3574
|
return UnorderedElementsAreArray(xs.begin(), xs.end());
|
|
3717
3575
|
}
|
|
3718
|
-
#endif
|
|
3719
3576
|
|
|
3720
3577
|
// _ is a matcher that matches anything of any type.
|
|
3721
3578
|
//
|
|
@@ -3729,66 +3586,20 @@ UnorderedElementsAreArray(::std::initializer_list<T> xs) {
|
|
|
3729
3586
|
const internal::AnythingMatcher _ = {};
|
|
3730
3587
|
// Creates a matcher that matches any value of the given type T.
|
|
3731
3588
|
template <typename T>
|
|
3732
|
-
inline Matcher<T> A() {
|
|
3589
|
+
inline Matcher<T> A() {
|
|
3590
|
+
return Matcher<T>(new internal::AnyMatcherImpl<T>());
|
|
3591
|
+
}
|
|
3733
3592
|
|
|
3734
3593
|
// Creates a matcher that matches any value of the given type T.
|
|
3735
3594
|
template <typename T>
|
|
3736
3595
|
inline Matcher<T> An() { return A<T>(); }
|
|
3737
3596
|
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
|
|
3742
|
-
|
|
3743
|
-
|
|
3744
|
-
// Constructs a Matcher<T> from a 'value' of type T. The constructed
|
|
3745
|
-
// matcher matches any value that's equal to 'value'.
|
|
3746
|
-
template <typename T>
|
|
3747
|
-
Matcher<T>::Matcher(T value) { *this = Eq(value); }
|
|
3748
|
-
|
|
3749
|
-
// Creates a monomorphic matcher that matches anything with type Lhs
|
|
3750
|
-
// and equal to rhs. A user may need to use this instead of Eq(...)
|
|
3751
|
-
// in order to resolve an overloading ambiguity.
|
|
3752
|
-
//
|
|
3753
|
-
// TypedEq<T>(x) is just a convenient short-hand for Matcher<T>(Eq(x))
|
|
3754
|
-
// or Matcher<T>(x), but more readable than the latter.
|
|
3755
|
-
//
|
|
3756
|
-
// We could define similar monomorphic matchers for other comparison
|
|
3757
|
-
// operations (e.g. TypedLt, TypedGe, and etc), but decided not to do
|
|
3758
|
-
// it yet as those are used much less than Eq() in practice. A user
|
|
3759
|
-
// can always write Matcher<T>(Lt(5)) to be explicit about the type,
|
|
3760
|
-
// for example.
|
|
3761
|
-
template <typename Lhs, typename Rhs>
|
|
3762
|
-
inline Matcher<Lhs> TypedEq(const Rhs& rhs) { return Eq(rhs); }
|
|
3763
|
-
|
|
3764
|
-
// Creates a polymorphic matcher that matches anything >= x.
|
|
3765
|
-
template <typename Rhs>
|
|
3766
|
-
inline internal::GeMatcher<Rhs> Ge(Rhs x) {
|
|
3767
|
-
return internal::GeMatcher<Rhs>(x);
|
|
3768
|
-
}
|
|
3769
|
-
|
|
3770
|
-
// Creates a polymorphic matcher that matches anything > x.
|
|
3771
|
-
template <typename Rhs>
|
|
3772
|
-
inline internal::GtMatcher<Rhs> Gt(Rhs x) {
|
|
3773
|
-
return internal::GtMatcher<Rhs>(x);
|
|
3774
|
-
}
|
|
3775
|
-
|
|
3776
|
-
// Creates a polymorphic matcher that matches anything <= x.
|
|
3777
|
-
template <typename Rhs>
|
|
3778
|
-
inline internal::LeMatcher<Rhs> Le(Rhs x) {
|
|
3779
|
-
return internal::LeMatcher<Rhs>(x);
|
|
3780
|
-
}
|
|
3781
|
-
|
|
3782
|
-
// Creates a polymorphic matcher that matches anything < x.
|
|
3783
|
-
template <typename Rhs>
|
|
3784
|
-
inline internal::LtMatcher<Rhs> Lt(Rhs x) {
|
|
3785
|
-
return internal::LtMatcher<Rhs>(x);
|
|
3786
|
-
}
|
|
3787
|
-
|
|
3788
|
-
// Creates a polymorphic matcher that matches anything != x.
|
|
3789
|
-
template <typename Rhs>
|
|
3790
|
-
inline internal::NeMatcher<Rhs> Ne(Rhs x) {
|
|
3791
|
-
return internal::NeMatcher<Rhs>(x);
|
|
3597
|
+
template <typename T, typename M>
|
|
3598
|
+
Matcher<T> internal::MatcherCastImpl<T, M>::CastImpl(
|
|
3599
|
+
const M& value,
|
|
3600
|
+
internal::BooleanConstant<false> /* convertible_to_matcher */,
|
|
3601
|
+
internal::BooleanConstant<false> /* convertible_to_T */) {
|
|
3602
|
+
return Eq(value);
|
|
3792
3603
|
}
|
|
3793
3604
|
|
|
3794
3605
|
// Creates a polymorphic matcher that matches any NULL pointer.
|
|
@@ -3874,6 +3685,7 @@ inline internal::PointeeMatcher<InnerMatcher> Pointee(
|
|
|
3874
3685
|
return internal::PointeeMatcher<InnerMatcher>(inner_matcher);
|
|
3875
3686
|
}
|
|
3876
3687
|
|
|
3688
|
+
#if GTEST_HAS_RTTI
|
|
3877
3689
|
// Creates a matcher that matches a pointer or reference that matches
|
|
3878
3690
|
// inner_matcher when dynamic_cast<To> is applied.
|
|
3879
3691
|
// The result of dynamic_cast<To> is forwarded to the inner matcher.
|
|
@@ -3886,6 +3698,7 @@ WhenDynamicCastTo(const Matcher<To>& inner_matcher) {
|
|
|
3886
3698
|
return MakePolymorphicMatcher(
|
|
3887
3699
|
internal::WhenDynamicCastToMatcher<To>(inner_matcher));
|
|
3888
3700
|
}
|
|
3701
|
+
#endif // GTEST_HAS_RTTI
|
|
3889
3702
|
|
|
3890
3703
|
// Creates a matcher that matches an object whose given field matches
|
|
3891
3704
|
// 'matcher'. For example,
|
|
@@ -3904,178 +3717,195 @@ inline PolymorphicMatcher<
|
|
|
3904
3717
|
// to compile where bar is an int32 and m is a matcher for int64.
|
|
3905
3718
|
}
|
|
3906
3719
|
|
|
3720
|
+
// Same as Field() but also takes the name of the field to provide better error
|
|
3721
|
+
// messages.
|
|
3722
|
+
template <typename Class, typename FieldType, typename FieldMatcher>
|
|
3723
|
+
inline PolymorphicMatcher<internal::FieldMatcher<Class, FieldType> > Field(
|
|
3724
|
+
const std::string& field_name, FieldType Class::*field,
|
|
3725
|
+
const FieldMatcher& matcher) {
|
|
3726
|
+
return MakePolymorphicMatcher(internal::FieldMatcher<Class, FieldType>(
|
|
3727
|
+
field_name, field, MatcherCast<const FieldType&>(matcher)));
|
|
3728
|
+
}
|
|
3729
|
+
|
|
3907
3730
|
// Creates a matcher that matches an object whose given property
|
|
3908
3731
|
// matches 'matcher'. For example,
|
|
3909
3732
|
// Property(&Foo::str, StartsWith("hi"))
|
|
3910
3733
|
// matches a Foo object x iff x.str() starts with "hi".
|
|
3911
3734
|
template <typename Class, typename PropertyType, typename PropertyMatcher>
|
|
3912
|
-
inline PolymorphicMatcher<
|
|
3913
|
-
|
|
3914
|
-
|
|
3735
|
+
inline PolymorphicMatcher<internal::PropertyMatcher<
|
|
3736
|
+
Class, PropertyType, PropertyType (Class::*)() const> >
|
|
3737
|
+
Property(PropertyType (Class::*property)() const,
|
|
3738
|
+
const PropertyMatcher& matcher) {
|
|
3915
3739
|
return MakePolymorphicMatcher(
|
|
3916
|
-
internal::PropertyMatcher<Class, PropertyType
|
|
3917
|
-
|
|
3918
|
-
MatcherCast<
|
|
3740
|
+
internal::PropertyMatcher<Class, PropertyType,
|
|
3741
|
+
PropertyType (Class::*)() const>(
|
|
3742
|
+
property, MatcherCast<const PropertyType&>(matcher)));
|
|
3919
3743
|
// The call to MatcherCast() is required for supporting inner
|
|
3920
3744
|
// matchers of compatible types. For example, it allows
|
|
3921
3745
|
// Property(&Foo::bar, m)
|
|
3922
3746
|
// to compile where bar() returns an int32 and m is a matcher for int64.
|
|
3923
3747
|
}
|
|
3924
3748
|
|
|
3749
|
+
// Same as Property() above, but also takes the name of the property to provide
|
|
3750
|
+
// better error messages.
|
|
3751
|
+
template <typename Class, typename PropertyType, typename PropertyMatcher>
|
|
3752
|
+
inline PolymorphicMatcher<internal::PropertyMatcher<
|
|
3753
|
+
Class, PropertyType, PropertyType (Class::*)() const> >
|
|
3754
|
+
Property(const std::string& property_name,
|
|
3755
|
+
PropertyType (Class::*property)() const,
|
|
3756
|
+
const PropertyMatcher& matcher) {
|
|
3757
|
+
return MakePolymorphicMatcher(
|
|
3758
|
+
internal::PropertyMatcher<Class, PropertyType,
|
|
3759
|
+
PropertyType (Class::*)() const>(
|
|
3760
|
+
property_name, property, MatcherCast<const PropertyType&>(matcher)));
|
|
3761
|
+
}
|
|
3762
|
+
|
|
3763
|
+
// The same as above but for reference-qualified member functions.
|
|
3764
|
+
template <typename Class, typename PropertyType, typename PropertyMatcher>
|
|
3765
|
+
inline PolymorphicMatcher<internal::PropertyMatcher<
|
|
3766
|
+
Class, PropertyType, PropertyType (Class::*)() const &> >
|
|
3767
|
+
Property(PropertyType (Class::*property)() const &,
|
|
3768
|
+
const PropertyMatcher& matcher) {
|
|
3769
|
+
return MakePolymorphicMatcher(
|
|
3770
|
+
internal::PropertyMatcher<Class, PropertyType,
|
|
3771
|
+
PropertyType (Class::*)() const&>(
|
|
3772
|
+
property, MatcherCast<const PropertyType&>(matcher)));
|
|
3773
|
+
}
|
|
3774
|
+
|
|
3775
|
+
// Three-argument form for reference-qualified member functions.
|
|
3776
|
+
template <typename Class, typename PropertyType, typename PropertyMatcher>
|
|
3777
|
+
inline PolymorphicMatcher<internal::PropertyMatcher<
|
|
3778
|
+
Class, PropertyType, PropertyType (Class::*)() const &> >
|
|
3779
|
+
Property(const std::string& property_name,
|
|
3780
|
+
PropertyType (Class::*property)() const &,
|
|
3781
|
+
const PropertyMatcher& matcher) {
|
|
3782
|
+
return MakePolymorphicMatcher(
|
|
3783
|
+
internal::PropertyMatcher<Class, PropertyType,
|
|
3784
|
+
PropertyType (Class::*)() const&>(
|
|
3785
|
+
property_name, property, MatcherCast<const PropertyType&>(matcher)));
|
|
3786
|
+
}
|
|
3787
|
+
|
|
3925
3788
|
// Creates a matcher that matches an object iff the result of applying
|
|
3926
3789
|
// a callable to x matches 'matcher'.
|
|
3927
3790
|
// For example,
|
|
3928
3791
|
// ResultOf(f, StartsWith("hi"))
|
|
3929
3792
|
// matches a Foo object x iff f(x) starts with "hi".
|
|
3930
|
-
// callable parameter can be a function, function pointer, or a functor.
|
|
3931
|
-
//
|
|
3932
|
-
//
|
|
3933
|
-
//
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
internal::ResultOfMatcher<Callable> ResultOf(
|
|
3940
|
-
Callable callable, const ResultOfMatcher& matcher) {
|
|
3941
|
-
return internal::ResultOfMatcher<Callable>(
|
|
3942
|
-
callable,
|
|
3943
|
-
MatcherCast<typename internal::CallableTraits<Callable>::ResultType>(
|
|
3944
|
-
matcher));
|
|
3945
|
-
// The call to MatcherCast() is required for supporting inner
|
|
3946
|
-
// matchers of compatible types. For example, it allows
|
|
3947
|
-
// ResultOf(Function, m)
|
|
3948
|
-
// to compile where Function() returns an int32 and m is a matcher for int64.
|
|
3793
|
+
// `callable` parameter can be a function, function pointer, or a functor. It is
|
|
3794
|
+
// required to keep no state affecting the results of the calls on it and make
|
|
3795
|
+
// no assumptions about how many calls will be made. Any state it keeps must be
|
|
3796
|
+
// protected from the concurrent access.
|
|
3797
|
+
template <typename Callable, typename InnerMatcher>
|
|
3798
|
+
internal::ResultOfMatcher<Callable, InnerMatcher> ResultOf(
|
|
3799
|
+
Callable callable, InnerMatcher matcher) {
|
|
3800
|
+
return internal::ResultOfMatcher<Callable, InnerMatcher>(
|
|
3801
|
+
std::move(callable), std::move(matcher));
|
|
3949
3802
|
}
|
|
3950
3803
|
|
|
3951
3804
|
// String matchers.
|
|
3952
3805
|
|
|
3953
3806
|
// Matches a string equal to str.
|
|
3954
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
3955
|
-
|
|
3956
|
-
return MakePolymorphicMatcher(
|
|
3957
|
-
str, true, true));
|
|
3807
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq(
|
|
3808
|
+
const std::string& str) {
|
|
3809
|
+
return MakePolymorphicMatcher(
|
|
3810
|
+
internal::StrEqualityMatcher<std::string>(str, true, true));
|
|
3958
3811
|
}
|
|
3959
3812
|
|
|
3960
3813
|
// Matches a string not equal to str.
|
|
3961
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
3962
|
-
|
|
3963
|
-
return MakePolymorphicMatcher(
|
|
3964
|
-
str, false, true));
|
|
3814
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe(
|
|
3815
|
+
const std::string& str) {
|
|
3816
|
+
return MakePolymorphicMatcher(
|
|
3817
|
+
internal::StrEqualityMatcher<std::string>(str, false, true));
|
|
3965
3818
|
}
|
|
3966
3819
|
|
|
3967
3820
|
// Matches a string equal to str, ignoring case.
|
|
3968
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
3969
|
-
|
|
3970
|
-
return MakePolymorphicMatcher(
|
|
3971
|
-
str, true, false));
|
|
3821
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq(
|
|
3822
|
+
const std::string& str) {
|
|
3823
|
+
return MakePolymorphicMatcher(
|
|
3824
|
+
internal::StrEqualityMatcher<std::string>(str, true, false));
|
|
3972
3825
|
}
|
|
3973
3826
|
|
|
3974
3827
|
// Matches a string not equal to str, ignoring case.
|
|
3975
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
3976
|
-
|
|
3977
|
-
return MakePolymorphicMatcher(
|
|
3978
|
-
str, false, false));
|
|
3828
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe(
|
|
3829
|
+
const std::string& str) {
|
|
3830
|
+
return MakePolymorphicMatcher(
|
|
3831
|
+
internal::StrEqualityMatcher<std::string>(str, false, false));
|
|
3979
3832
|
}
|
|
3980
3833
|
|
|
3981
3834
|
// Creates a matcher that matches any string, std::string, or C string
|
|
3982
3835
|
// that contains the given substring.
|
|
3983
|
-
inline PolymorphicMatcher<internal::HasSubstrMatcher<
|
|
3984
|
-
|
|
3985
|
-
return MakePolymorphicMatcher(
|
|
3986
|
-
substring));
|
|
3836
|
+
inline PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr(
|
|
3837
|
+
const std::string& substring) {
|
|
3838
|
+
return MakePolymorphicMatcher(
|
|
3839
|
+
internal::HasSubstrMatcher<std::string>(substring));
|
|
3987
3840
|
}
|
|
3988
3841
|
|
|
3989
3842
|
// Matches a string that starts with 'prefix' (case-sensitive).
|
|
3990
|
-
inline PolymorphicMatcher<internal::StartsWithMatcher<
|
|
3991
|
-
|
|
3992
|
-
return MakePolymorphicMatcher(
|
|
3993
|
-
prefix));
|
|
3843
|
+
inline PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith(
|
|
3844
|
+
const std::string& prefix) {
|
|
3845
|
+
return MakePolymorphicMatcher(
|
|
3846
|
+
internal::StartsWithMatcher<std::string>(prefix));
|
|
3994
3847
|
}
|
|
3995
3848
|
|
|
3996
3849
|
// Matches a string that ends with 'suffix' (case-sensitive).
|
|
3997
|
-
inline PolymorphicMatcher<internal::EndsWithMatcher<
|
|
3998
|
-
|
|
3999
|
-
return MakePolymorphicMatcher(internal::EndsWithMatcher<
|
|
4000
|
-
suffix));
|
|
4001
|
-
}
|
|
4002
|
-
|
|
4003
|
-
// Matches a string that fully matches regular expression 'regex'.
|
|
4004
|
-
// The matcher takes ownership of 'regex'.
|
|
4005
|
-
inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
|
|
4006
|
-
const internal::RE* regex) {
|
|
4007
|
-
return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, true));
|
|
4008
|
-
}
|
|
4009
|
-
inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
|
|
4010
|
-
const internal::string& regex) {
|
|
4011
|
-
return MatchesRegex(new internal::RE(regex));
|
|
4012
|
-
}
|
|
4013
|
-
|
|
4014
|
-
// Matches a string that contains regular expression 'regex'.
|
|
4015
|
-
// The matcher takes ownership of 'regex'.
|
|
4016
|
-
inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
|
|
4017
|
-
const internal::RE* regex) {
|
|
4018
|
-
return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, false));
|
|
4019
|
-
}
|
|
4020
|
-
inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
|
|
4021
|
-
const internal::string& regex) {
|
|
4022
|
-
return ContainsRegex(new internal::RE(regex));
|
|
3850
|
+
inline PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith(
|
|
3851
|
+
const std::string& suffix) {
|
|
3852
|
+
return MakePolymorphicMatcher(internal::EndsWithMatcher<std::string>(suffix));
|
|
4023
3853
|
}
|
|
4024
3854
|
|
|
4025
|
-
#if
|
|
3855
|
+
#if GTEST_HAS_STD_WSTRING
|
|
4026
3856
|
// Wide string matchers.
|
|
4027
3857
|
|
|
4028
3858
|
// Matches a string equal to str.
|
|
4029
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
4030
|
-
|
|
4031
|
-
return MakePolymorphicMatcher(
|
|
4032
|
-
str, true, true));
|
|
3859
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> > StrEq(
|
|
3860
|
+
const std::wstring& str) {
|
|
3861
|
+
return MakePolymorphicMatcher(
|
|
3862
|
+
internal::StrEqualityMatcher<std::wstring>(str, true, true));
|
|
4033
3863
|
}
|
|
4034
3864
|
|
|
4035
3865
|
// Matches a string not equal to str.
|
|
4036
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
4037
|
-
|
|
4038
|
-
return MakePolymorphicMatcher(
|
|
4039
|
-
str, false, true));
|
|
3866
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> > StrNe(
|
|
3867
|
+
const std::wstring& str) {
|
|
3868
|
+
return MakePolymorphicMatcher(
|
|
3869
|
+
internal::StrEqualityMatcher<std::wstring>(str, false, true));
|
|
4040
3870
|
}
|
|
4041
3871
|
|
|
4042
3872
|
// Matches a string equal to str, ignoring case.
|
|
4043
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
4044
|
-
|
|
4045
|
-
return MakePolymorphicMatcher(
|
|
4046
|
-
str, true, false));
|
|
3873
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> >
|
|
3874
|
+
StrCaseEq(const std::wstring& str) {
|
|
3875
|
+
return MakePolymorphicMatcher(
|
|
3876
|
+
internal::StrEqualityMatcher<std::wstring>(str, true, false));
|
|
4047
3877
|
}
|
|
4048
3878
|
|
|
4049
3879
|
// Matches a string not equal to str, ignoring case.
|
|
4050
|
-
inline PolymorphicMatcher<internal::StrEqualityMatcher<
|
|
4051
|
-
|
|
4052
|
-
return MakePolymorphicMatcher(
|
|
4053
|
-
str, false, false));
|
|
3880
|
+
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> >
|
|
3881
|
+
StrCaseNe(const std::wstring& str) {
|
|
3882
|
+
return MakePolymorphicMatcher(
|
|
3883
|
+
internal::StrEqualityMatcher<std::wstring>(str, false, false));
|
|
4054
3884
|
}
|
|
4055
3885
|
|
|
4056
|
-
// Creates a matcher that matches any wstring, std::wstring, or C wide string
|
|
3886
|
+
// Creates a matcher that matches any ::wstring, std::wstring, or C wide string
|
|
4057
3887
|
// that contains the given substring.
|
|
4058
|
-
inline PolymorphicMatcher<internal::HasSubstrMatcher<
|
|
4059
|
-
|
|
4060
|
-
return MakePolymorphicMatcher(
|
|
4061
|
-
substring));
|
|
3888
|
+
inline PolymorphicMatcher<internal::HasSubstrMatcher<std::wstring> > HasSubstr(
|
|
3889
|
+
const std::wstring& substring) {
|
|
3890
|
+
return MakePolymorphicMatcher(
|
|
3891
|
+
internal::HasSubstrMatcher<std::wstring>(substring));
|
|
4062
3892
|
}
|
|
4063
3893
|
|
|
4064
3894
|
// Matches a string that starts with 'prefix' (case-sensitive).
|
|
4065
|
-
inline PolymorphicMatcher<internal::StartsWithMatcher<
|
|
4066
|
-
|
|
4067
|
-
return MakePolymorphicMatcher(
|
|
4068
|
-
prefix));
|
|
3895
|
+
inline PolymorphicMatcher<internal::StartsWithMatcher<std::wstring> >
|
|
3896
|
+
StartsWith(const std::wstring& prefix) {
|
|
3897
|
+
return MakePolymorphicMatcher(
|
|
3898
|
+
internal::StartsWithMatcher<std::wstring>(prefix));
|
|
4069
3899
|
}
|
|
4070
3900
|
|
|
4071
3901
|
// Matches a string that ends with 'suffix' (case-sensitive).
|
|
4072
|
-
inline PolymorphicMatcher<internal::EndsWithMatcher<
|
|
4073
|
-
|
|
4074
|
-
return MakePolymorphicMatcher(
|
|
4075
|
-
suffix));
|
|
3902
|
+
inline PolymorphicMatcher<internal::EndsWithMatcher<std::wstring> > EndsWith(
|
|
3903
|
+
const std::wstring& suffix) {
|
|
3904
|
+
return MakePolymorphicMatcher(
|
|
3905
|
+
internal::EndsWithMatcher<std::wstring>(suffix));
|
|
4076
3906
|
}
|
|
4077
3907
|
|
|
4078
|
-
#endif //
|
|
3908
|
+
#endif // GTEST_HAS_STD_WSTRING
|
|
4079
3909
|
|
|
4080
3910
|
// Creates a polymorphic matcher that matches a 2-tuple where the
|
|
4081
3911
|
// first field == the second field.
|
|
@@ -4101,6 +3931,58 @@ inline internal::Lt2Matcher Lt() { return internal::Lt2Matcher(); }
|
|
|
4101
3931
|
// first field != the second field.
|
|
4102
3932
|
inline internal::Ne2Matcher Ne() { return internal::Ne2Matcher(); }
|
|
4103
3933
|
|
|
3934
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3935
|
+
// FloatEq(first field) matches the second field.
|
|
3936
|
+
inline internal::FloatingEq2Matcher<float> FloatEq() {
|
|
3937
|
+
return internal::FloatingEq2Matcher<float>();
|
|
3938
|
+
}
|
|
3939
|
+
|
|
3940
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3941
|
+
// DoubleEq(first field) matches the second field.
|
|
3942
|
+
inline internal::FloatingEq2Matcher<double> DoubleEq() {
|
|
3943
|
+
return internal::FloatingEq2Matcher<double>();
|
|
3944
|
+
}
|
|
3945
|
+
|
|
3946
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3947
|
+
// FloatEq(first field) matches the second field with NaN equality.
|
|
3948
|
+
inline internal::FloatingEq2Matcher<float> NanSensitiveFloatEq() {
|
|
3949
|
+
return internal::FloatingEq2Matcher<float>(true);
|
|
3950
|
+
}
|
|
3951
|
+
|
|
3952
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3953
|
+
// DoubleEq(first field) matches the second field with NaN equality.
|
|
3954
|
+
inline internal::FloatingEq2Matcher<double> NanSensitiveDoubleEq() {
|
|
3955
|
+
return internal::FloatingEq2Matcher<double>(true);
|
|
3956
|
+
}
|
|
3957
|
+
|
|
3958
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3959
|
+
// FloatNear(first field, max_abs_error) matches the second field.
|
|
3960
|
+
inline internal::FloatingEq2Matcher<float> FloatNear(float max_abs_error) {
|
|
3961
|
+
return internal::FloatingEq2Matcher<float>(max_abs_error);
|
|
3962
|
+
}
|
|
3963
|
+
|
|
3964
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3965
|
+
// DoubleNear(first field, max_abs_error) matches the second field.
|
|
3966
|
+
inline internal::FloatingEq2Matcher<double> DoubleNear(double max_abs_error) {
|
|
3967
|
+
return internal::FloatingEq2Matcher<double>(max_abs_error);
|
|
3968
|
+
}
|
|
3969
|
+
|
|
3970
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3971
|
+
// FloatNear(first field, max_abs_error) matches the second field with NaN
|
|
3972
|
+
// equality.
|
|
3973
|
+
inline internal::FloatingEq2Matcher<float> NanSensitiveFloatNear(
|
|
3974
|
+
float max_abs_error) {
|
|
3975
|
+
return internal::FloatingEq2Matcher<float>(max_abs_error, true);
|
|
3976
|
+
}
|
|
3977
|
+
|
|
3978
|
+
// Creates a polymorphic matcher that matches a 2-tuple where
|
|
3979
|
+
// DoubleNear(first field, max_abs_error) matches the second field with NaN
|
|
3980
|
+
// equality.
|
|
3981
|
+
inline internal::FloatingEq2Matcher<double> NanSensitiveDoubleNear(
|
|
3982
|
+
double max_abs_error) {
|
|
3983
|
+
return internal::FloatingEq2Matcher<double>(max_abs_error, true);
|
|
3984
|
+
}
|
|
3985
|
+
|
|
4104
3986
|
// Creates a matcher that matches any value of type T that m doesn't
|
|
4105
3987
|
// match.
|
|
4106
3988
|
template <typename InnerMatcher>
|
|
@@ -4178,7 +4060,7 @@ WhenSorted(const ContainerMatcher& container_matcher) {
|
|
|
4178
4060
|
// Matches an STL-style container or a native array that contains the
|
|
4179
4061
|
// same number of elements as in rhs, where its i-th element and rhs's
|
|
4180
4062
|
// i-th element (as a pair) satisfy the given pair matcher, for all i.
|
|
4181
|
-
// TupleMatcher must be able to be safely cast to Matcher<tuple<const
|
|
4063
|
+
// TupleMatcher must be able to be safely cast to Matcher<std::tuple<const
|
|
4182
4064
|
// T1&, const T2&> >, where T1 and T2 are the types of elements in the
|
|
4183
4065
|
// LHS container and the RHS container respectively.
|
|
4184
4066
|
template <typename TupleMatcher, typename Container>
|
|
@@ -4193,7 +4075,6 @@ Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) {
|
|
|
4193
4075
|
tuple_matcher, rhs);
|
|
4194
4076
|
}
|
|
4195
4077
|
|
|
4196
|
-
#if GTEST_HAS_STD_INITIALIZER_LIST_
|
|
4197
4078
|
|
|
4198
4079
|
// Supports the Pointwise(m, {a, b, c}) syntax.
|
|
4199
4080
|
template <typename TupleMatcher, typename T>
|
|
@@ -4202,14 +4083,13 @@ inline internal::PointwiseMatcher<TupleMatcher, std::vector<T> > Pointwise(
|
|
|
4202
4083
|
return Pointwise(tuple_matcher, std::vector<T>(rhs));
|
|
4203
4084
|
}
|
|
4204
4085
|
|
|
4205
|
-
#endif // GTEST_HAS_STD_INITIALIZER_LIST_
|
|
4206
4086
|
|
|
4207
4087
|
// UnorderedPointwise(pair_matcher, rhs) matches an STL-style
|
|
4208
4088
|
// container or a native array that contains the same number of
|
|
4209
4089
|
// elements as in rhs, where in some permutation of the container, its
|
|
4210
4090
|
// i-th element and rhs's i-th element (as a pair) satisfy the given
|
|
4211
4091
|
// pair matcher, for all i. Tuple2Matcher must be able to be safely
|
|
4212
|
-
// cast to Matcher<tuple<const T1&, const T2&> >, where T1 and T2 are
|
|
4092
|
+
// cast to Matcher<std::tuple<const T1&, const T2&> >, where T1 and T2 are
|
|
4213
4093
|
// the types of elements in the LHS container and the RHS container
|
|
4214
4094
|
// respectively.
|
|
4215
4095
|
//
|
|
@@ -4247,7 +4127,6 @@ UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
|
|
|
4247
4127
|
return UnorderedElementsAreArray(matchers);
|
|
4248
4128
|
}
|
|
4249
4129
|
|
|
4250
|
-
#if GTEST_HAS_STD_INITIALIZER_LIST_
|
|
4251
4130
|
|
|
4252
4131
|
// Supports the UnorderedPointwise(m, {a, b, c}) syntax.
|
|
4253
4132
|
template <typename Tuple2Matcher, typename T>
|
|
@@ -4258,7 +4137,6 @@ UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
|
|
|
4258
4137
|
return UnorderedPointwise(tuple2_matcher, std::vector<T>(rhs));
|
|
4259
4138
|
}
|
|
4260
4139
|
|
|
4261
|
-
#endif // GTEST_HAS_STD_INITIALIZER_LIST_
|
|
4262
4140
|
|
|
4263
4141
|
// Matches an STL-style container or a native array that contains at
|
|
4264
4142
|
// least one element matching the given value or matcher.
|
|
@@ -4283,6 +4161,124 @@ inline internal::ContainsMatcher<M> Contains(M matcher) {
|
|
|
4283
4161
|
return internal::ContainsMatcher<M>(matcher);
|
|
4284
4162
|
}
|
|
4285
4163
|
|
|
4164
|
+
// IsSupersetOf(iterator_first, iterator_last)
|
|
4165
|
+
// IsSupersetOf(pointer, count)
|
|
4166
|
+
// IsSupersetOf(array)
|
|
4167
|
+
// IsSupersetOf(container)
|
|
4168
|
+
// IsSupersetOf({e1, e2, ..., en})
|
|
4169
|
+
//
|
|
4170
|
+
// IsSupersetOf() verifies that a surjective partial mapping onto a collection
|
|
4171
|
+
// of matchers exists. In other words, a container matches
|
|
4172
|
+
// IsSupersetOf({e1, ..., en}) if and only if there is a permutation
|
|
4173
|
+
// {y1, ..., yn} of some of the container's elements where y1 matches e1,
|
|
4174
|
+
// ..., and yn matches en. Obviously, the size of the container must be >= n
|
|
4175
|
+
// in order to have a match. Examples:
|
|
4176
|
+
//
|
|
4177
|
+
// - {1, 2, 3} matches IsSupersetOf({Ge(3), Ne(0)}), as 3 matches Ge(3) and
|
|
4178
|
+
// 1 matches Ne(0).
|
|
4179
|
+
// - {1, 2} doesn't match IsSupersetOf({Eq(1), Lt(2)}), even though 1 matches
|
|
4180
|
+
// both Eq(1) and Lt(2). The reason is that different matchers must be used
|
|
4181
|
+
// for elements in different slots of the container.
|
|
4182
|
+
// - {1, 1, 2} matches IsSupersetOf({Eq(1), Lt(2)}), as (the first) 1 matches
|
|
4183
|
+
// Eq(1) and (the second) 1 matches Lt(2).
|
|
4184
|
+
// - {1, 2, 3} matches IsSupersetOf(Gt(1), Gt(1)), as 2 matches (the first)
|
|
4185
|
+
// Gt(1) and 3 matches (the second) Gt(1).
|
|
4186
|
+
//
|
|
4187
|
+
// The matchers can be specified as an array, a pointer and count, a container,
|
|
4188
|
+
// an initializer list, or an STL iterator range. In each of these cases, the
|
|
4189
|
+
// underlying matchers can be either values or matchers.
|
|
4190
|
+
|
|
4191
|
+
template <typename Iter>
|
|
4192
|
+
inline internal::UnorderedElementsAreArrayMatcher<
|
|
4193
|
+
typename ::std::iterator_traits<Iter>::value_type>
|
|
4194
|
+
IsSupersetOf(Iter first, Iter last) {
|
|
4195
|
+
typedef typename ::std::iterator_traits<Iter>::value_type T;
|
|
4196
|
+
return internal::UnorderedElementsAreArrayMatcher<T>(
|
|
4197
|
+
internal::UnorderedMatcherRequire::Superset, first, last);
|
|
4198
|
+
}
|
|
4199
|
+
|
|
4200
|
+
template <typename T>
|
|
4201
|
+
inline internal::UnorderedElementsAreArrayMatcher<T> IsSupersetOf(
|
|
4202
|
+
const T* pointer, size_t count) {
|
|
4203
|
+
return IsSupersetOf(pointer, pointer + count);
|
|
4204
|
+
}
|
|
4205
|
+
|
|
4206
|
+
template <typename T, size_t N>
|
|
4207
|
+
inline internal::UnorderedElementsAreArrayMatcher<T> IsSupersetOf(
|
|
4208
|
+
const T (&array)[N]) {
|
|
4209
|
+
return IsSupersetOf(array, N);
|
|
4210
|
+
}
|
|
4211
|
+
|
|
4212
|
+
template <typename Container>
|
|
4213
|
+
inline internal::UnorderedElementsAreArrayMatcher<
|
|
4214
|
+
typename Container::value_type>
|
|
4215
|
+
IsSupersetOf(const Container& container) {
|
|
4216
|
+
return IsSupersetOf(container.begin(), container.end());
|
|
4217
|
+
}
|
|
4218
|
+
|
|
4219
|
+
template <typename T>
|
|
4220
|
+
inline internal::UnorderedElementsAreArrayMatcher<T> IsSupersetOf(
|
|
4221
|
+
::std::initializer_list<T> xs) {
|
|
4222
|
+
return IsSupersetOf(xs.begin(), xs.end());
|
|
4223
|
+
}
|
|
4224
|
+
|
|
4225
|
+
// IsSubsetOf(iterator_first, iterator_last)
|
|
4226
|
+
// IsSubsetOf(pointer, count)
|
|
4227
|
+
// IsSubsetOf(array)
|
|
4228
|
+
// IsSubsetOf(container)
|
|
4229
|
+
// IsSubsetOf({e1, e2, ..., en})
|
|
4230
|
+
//
|
|
4231
|
+
// IsSubsetOf() verifies that an injective mapping onto a collection of matchers
|
|
4232
|
+
// exists. In other words, a container matches IsSubsetOf({e1, ..., en}) if and
|
|
4233
|
+
// only if there is a subset of matchers {m1, ..., mk} which would match the
|
|
4234
|
+
// container using UnorderedElementsAre. Obviously, the size of the container
|
|
4235
|
+
// must be <= n in order to have a match. Examples:
|
|
4236
|
+
//
|
|
4237
|
+
// - {1} matches IsSubsetOf({Gt(0), Lt(0)}), as 1 matches Gt(0).
|
|
4238
|
+
// - {1, -1} matches IsSubsetOf({Lt(0), Gt(0)}), as 1 matches Gt(0) and -1
|
|
4239
|
+
// matches Lt(0).
|
|
4240
|
+
// - {1, 2} doesn't matches IsSubsetOf({Gt(0), Lt(0)}), even though 1 and 2 both
|
|
4241
|
+
// match Gt(0). The reason is that different matchers must be used for
|
|
4242
|
+
// elements in different slots of the container.
|
|
4243
|
+
//
|
|
4244
|
+
// The matchers can be specified as an array, a pointer and count, a container,
|
|
4245
|
+
// an initializer list, or an STL iterator range. In each of these cases, the
|
|
4246
|
+
// underlying matchers can be either values or matchers.
|
|
4247
|
+
|
|
4248
|
+
template <typename Iter>
|
|
4249
|
+
inline internal::UnorderedElementsAreArrayMatcher<
|
|
4250
|
+
typename ::std::iterator_traits<Iter>::value_type>
|
|
4251
|
+
IsSubsetOf(Iter first, Iter last) {
|
|
4252
|
+
typedef typename ::std::iterator_traits<Iter>::value_type T;
|
|
4253
|
+
return internal::UnorderedElementsAreArrayMatcher<T>(
|
|
4254
|
+
internal::UnorderedMatcherRequire::Subset, first, last);
|
|
4255
|
+
}
|
|
4256
|
+
|
|
4257
|
+
template <typename T>
|
|
4258
|
+
inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
|
|
4259
|
+
const T* pointer, size_t count) {
|
|
4260
|
+
return IsSubsetOf(pointer, pointer + count);
|
|
4261
|
+
}
|
|
4262
|
+
|
|
4263
|
+
template <typename T, size_t N>
|
|
4264
|
+
inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
|
|
4265
|
+
const T (&array)[N]) {
|
|
4266
|
+
return IsSubsetOf(array, N);
|
|
4267
|
+
}
|
|
4268
|
+
|
|
4269
|
+
template <typename Container>
|
|
4270
|
+
inline internal::UnorderedElementsAreArrayMatcher<
|
|
4271
|
+
typename Container::value_type>
|
|
4272
|
+
IsSubsetOf(const Container& container) {
|
|
4273
|
+
return IsSubsetOf(container.begin(), container.end());
|
|
4274
|
+
}
|
|
4275
|
+
|
|
4276
|
+
template <typename T>
|
|
4277
|
+
inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
|
|
4278
|
+
::std::initializer_list<T> xs) {
|
|
4279
|
+
return IsSubsetOf(xs.begin(), xs.end());
|
|
4280
|
+
}
|
|
4281
|
+
|
|
4286
4282
|
// Matches an STL-style container or a native array that contains only
|
|
4287
4283
|
// elements matching the given value or matcher.
|
|
4288
4284
|
//
|
|
@@ -4356,20 +4352,152 @@ inline bool ExplainMatchResult(
|
|
|
4356
4352
|
return SafeMatcherCast<const T&>(matcher).MatchAndExplain(value, listener);
|
|
4357
4353
|
}
|
|
4358
4354
|
|
|
4359
|
-
|
|
4360
|
-
//
|
|
4361
|
-
//
|
|
4355
|
+
// Returns a string representation of the given matcher. Useful for description
|
|
4356
|
+
// strings of matchers defined using MATCHER_P* macros that accept matchers as
|
|
4357
|
+
// their arguments. For example:
|
|
4358
|
+
//
|
|
4359
|
+
// MATCHER_P(XAndYThat, matcher,
|
|
4360
|
+
// "X that " + DescribeMatcher<int>(matcher, negation) +
|
|
4361
|
+
// " and Y that " + DescribeMatcher<double>(matcher, negation)) {
|
|
4362
|
+
// return ExplainMatchResult(matcher, arg.x(), result_listener) &&
|
|
4363
|
+
// ExplainMatchResult(matcher, arg.y(), result_listener);
|
|
4364
|
+
// }
|
|
4365
|
+
template <typename T, typename M>
|
|
4366
|
+
std::string DescribeMatcher(const M& matcher, bool negation = false) {
|
|
4367
|
+
::std::stringstream ss;
|
|
4368
|
+
Matcher<T> monomorphic_matcher = SafeMatcherCast<T>(matcher);
|
|
4369
|
+
if (negation) {
|
|
4370
|
+
monomorphic_matcher.DescribeNegationTo(&ss);
|
|
4371
|
+
} else {
|
|
4372
|
+
monomorphic_matcher.DescribeTo(&ss);
|
|
4373
|
+
}
|
|
4374
|
+
return ss.str();
|
|
4375
|
+
}
|
|
4376
|
+
|
|
4362
4377
|
template <typename... Args>
|
|
4363
|
-
|
|
4364
|
-
|
|
4378
|
+
internal::ElementsAreMatcher<
|
|
4379
|
+
std::tuple<typename std::decay<const Args&>::type...>>
|
|
4380
|
+
ElementsAre(const Args&... matchers) {
|
|
4381
|
+
return internal::ElementsAreMatcher<
|
|
4382
|
+
std::tuple<typename std::decay<const Args&>::type...>>(
|
|
4383
|
+
std::make_tuple(matchers...));
|
|
4365
4384
|
}
|
|
4366
4385
|
|
|
4367
4386
|
template <typename... Args>
|
|
4368
|
-
|
|
4369
|
-
|
|
4387
|
+
internal::UnorderedElementsAreMatcher<
|
|
4388
|
+
std::tuple<typename std::decay<const Args&>::type...>>
|
|
4389
|
+
UnorderedElementsAre(const Args&... matchers) {
|
|
4390
|
+
return internal::UnorderedElementsAreMatcher<
|
|
4391
|
+
std::tuple<typename std::decay<const Args&>::type...>>(
|
|
4392
|
+
std::make_tuple(matchers...));
|
|
4370
4393
|
}
|
|
4371
4394
|
|
|
4372
|
-
|
|
4395
|
+
// Define variadic matcher versions.
|
|
4396
|
+
template <typename... Args>
|
|
4397
|
+
internal::AllOfMatcher<typename std::decay<const Args&>::type...> AllOf(
|
|
4398
|
+
const Args&... matchers) {
|
|
4399
|
+
return internal::AllOfMatcher<typename std::decay<const Args&>::type...>(
|
|
4400
|
+
matchers...);
|
|
4401
|
+
}
|
|
4402
|
+
|
|
4403
|
+
template <typename... Args>
|
|
4404
|
+
internal::AnyOfMatcher<typename std::decay<const Args&>::type...> AnyOf(
|
|
4405
|
+
const Args&... matchers) {
|
|
4406
|
+
return internal::AnyOfMatcher<typename std::decay<const Args&>::type...>(
|
|
4407
|
+
matchers...);
|
|
4408
|
+
}
|
|
4409
|
+
|
|
4410
|
+
// AnyOfArray(array)
|
|
4411
|
+
// AnyOfArray(pointer, count)
|
|
4412
|
+
// AnyOfArray(container)
|
|
4413
|
+
// AnyOfArray({ e1, e2, ..., en })
|
|
4414
|
+
// AnyOfArray(iterator_first, iterator_last)
|
|
4415
|
+
//
|
|
4416
|
+
// AnyOfArray() verifies whether a given value matches any member of a
|
|
4417
|
+
// collection of matchers.
|
|
4418
|
+
//
|
|
4419
|
+
// AllOfArray(array)
|
|
4420
|
+
// AllOfArray(pointer, count)
|
|
4421
|
+
// AllOfArray(container)
|
|
4422
|
+
// AllOfArray({ e1, e2, ..., en })
|
|
4423
|
+
// AllOfArray(iterator_first, iterator_last)
|
|
4424
|
+
//
|
|
4425
|
+
// AllOfArray() verifies whether a given value matches all members of a
|
|
4426
|
+
// collection of matchers.
|
|
4427
|
+
//
|
|
4428
|
+
// The matchers can be specified as an array, a pointer and count, a container,
|
|
4429
|
+
// an initializer list, or an STL iterator range. In each of these cases, the
|
|
4430
|
+
// underlying matchers can be either values or matchers.
|
|
4431
|
+
|
|
4432
|
+
template <typename Iter>
|
|
4433
|
+
inline internal::AnyOfArrayMatcher<
|
|
4434
|
+
typename ::std::iterator_traits<Iter>::value_type>
|
|
4435
|
+
AnyOfArray(Iter first, Iter last) {
|
|
4436
|
+
return internal::AnyOfArrayMatcher<
|
|
4437
|
+
typename ::std::iterator_traits<Iter>::value_type>(first, last);
|
|
4438
|
+
}
|
|
4439
|
+
|
|
4440
|
+
template <typename Iter>
|
|
4441
|
+
inline internal::AllOfArrayMatcher<
|
|
4442
|
+
typename ::std::iterator_traits<Iter>::value_type>
|
|
4443
|
+
AllOfArray(Iter first, Iter last) {
|
|
4444
|
+
return internal::AllOfArrayMatcher<
|
|
4445
|
+
typename ::std::iterator_traits<Iter>::value_type>(first, last);
|
|
4446
|
+
}
|
|
4447
|
+
|
|
4448
|
+
template <typename T>
|
|
4449
|
+
inline internal::AnyOfArrayMatcher<T> AnyOfArray(const T* ptr, size_t count) {
|
|
4450
|
+
return AnyOfArray(ptr, ptr + count);
|
|
4451
|
+
}
|
|
4452
|
+
|
|
4453
|
+
template <typename T>
|
|
4454
|
+
inline internal::AllOfArrayMatcher<T> AllOfArray(const T* ptr, size_t count) {
|
|
4455
|
+
return AllOfArray(ptr, ptr + count);
|
|
4456
|
+
}
|
|
4457
|
+
|
|
4458
|
+
template <typename T, size_t N>
|
|
4459
|
+
inline internal::AnyOfArrayMatcher<T> AnyOfArray(const T (&array)[N]) {
|
|
4460
|
+
return AnyOfArray(array, N);
|
|
4461
|
+
}
|
|
4462
|
+
|
|
4463
|
+
template <typename T, size_t N>
|
|
4464
|
+
inline internal::AllOfArrayMatcher<T> AllOfArray(const T (&array)[N]) {
|
|
4465
|
+
return AllOfArray(array, N);
|
|
4466
|
+
}
|
|
4467
|
+
|
|
4468
|
+
template <typename Container>
|
|
4469
|
+
inline internal::AnyOfArrayMatcher<typename Container::value_type> AnyOfArray(
|
|
4470
|
+
const Container& container) {
|
|
4471
|
+
return AnyOfArray(container.begin(), container.end());
|
|
4472
|
+
}
|
|
4473
|
+
|
|
4474
|
+
template <typename Container>
|
|
4475
|
+
inline internal::AllOfArrayMatcher<typename Container::value_type> AllOfArray(
|
|
4476
|
+
const Container& container) {
|
|
4477
|
+
return AllOfArray(container.begin(), container.end());
|
|
4478
|
+
}
|
|
4479
|
+
|
|
4480
|
+
template <typename T>
|
|
4481
|
+
inline internal::AnyOfArrayMatcher<T> AnyOfArray(
|
|
4482
|
+
::std::initializer_list<T> xs) {
|
|
4483
|
+
return AnyOfArray(xs.begin(), xs.end());
|
|
4484
|
+
}
|
|
4485
|
+
|
|
4486
|
+
template <typename T>
|
|
4487
|
+
inline internal::AllOfArrayMatcher<T> AllOfArray(
|
|
4488
|
+
::std::initializer_list<T> xs) {
|
|
4489
|
+
return AllOfArray(xs.begin(), xs.end());
|
|
4490
|
+
}
|
|
4491
|
+
|
|
4492
|
+
// Args<N1, N2, ..., Nk>(a_matcher) matches a tuple if the selected
|
|
4493
|
+
// fields of it matches a_matcher. C++ doesn't support default
|
|
4494
|
+
// arguments for function templates, so we have to overload it.
|
|
4495
|
+
template <size_t... k, typename InnerMatcher>
|
|
4496
|
+
internal::ArgsMatcher<typename std::decay<InnerMatcher>::type, k...> Args(
|
|
4497
|
+
InnerMatcher&& matcher) {
|
|
4498
|
+
return internal::ArgsMatcher<typename std::decay<InnerMatcher>::type, k...>(
|
|
4499
|
+
std::forward<InnerMatcher>(matcher));
|
|
4500
|
+
}
|
|
4373
4501
|
|
|
4374
4502
|
// AllArgs(m) is a synonym of m. This is useful in
|
|
4375
4503
|
//
|
|
@@ -4381,6 +4509,39 @@ inline internal::AnyOfMatcher<Args...> AnyOf(const Args&... matchers) {
|
|
|
4381
4509
|
template <typename InnerMatcher>
|
|
4382
4510
|
inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
|
|
4383
4511
|
|
|
4512
|
+
// Returns a matcher that matches the value of an optional<> type variable.
|
|
4513
|
+
// The matcher implementation only uses '!arg' and requires that the optional<>
|
|
4514
|
+
// type has a 'value_type' member type and that '*arg' is of type 'value_type'
|
|
4515
|
+
// and is printable using 'PrintToString'. It is compatible with
|
|
4516
|
+
// std::optional/std::experimental::optional.
|
|
4517
|
+
// Note that to compare an optional type variable against nullopt you should
|
|
4518
|
+
// use Eq(nullopt) and not Optional(Eq(nullopt)). The latter implies that the
|
|
4519
|
+
// optional value contains an optional itself.
|
|
4520
|
+
template <typename ValueMatcher>
|
|
4521
|
+
inline internal::OptionalMatcher<ValueMatcher> Optional(
|
|
4522
|
+
const ValueMatcher& value_matcher) {
|
|
4523
|
+
return internal::OptionalMatcher<ValueMatcher>(value_matcher);
|
|
4524
|
+
}
|
|
4525
|
+
|
|
4526
|
+
// Returns a matcher that matches the value of a absl::any type variable.
|
|
4527
|
+
template <typename T>
|
|
4528
|
+
PolymorphicMatcher<internal::any_cast_matcher::AnyCastMatcher<T> > AnyWith(
|
|
4529
|
+
const Matcher<const T&>& matcher) {
|
|
4530
|
+
return MakePolymorphicMatcher(
|
|
4531
|
+
internal::any_cast_matcher::AnyCastMatcher<T>(matcher));
|
|
4532
|
+
}
|
|
4533
|
+
|
|
4534
|
+
// Returns a matcher that matches the value of a variant<> type variable.
|
|
4535
|
+
// The matcher implementation uses ADL to find the holds_alternative and get
|
|
4536
|
+
// functions.
|
|
4537
|
+
// It is compatible with std::variant.
|
|
4538
|
+
template <typename T>
|
|
4539
|
+
PolymorphicMatcher<internal::variant_matcher::VariantMatcher<T> > VariantWith(
|
|
4540
|
+
const Matcher<const T&>& matcher) {
|
|
4541
|
+
return MakePolymorphicMatcher(
|
|
4542
|
+
internal::variant_matcher::VariantMatcher<T>(matcher));
|
|
4543
|
+
}
|
|
4544
|
+
|
|
4384
4545
|
// These macros allow using matchers to check values in Google Test
|
|
4385
4546
|
// tests. ASSERT_THAT(value, matcher) and EXPECT_THAT(value, matcher)
|
|
4386
4547
|
// succeed iff the value matches the matcher. If the assertion fails,
|
|
@@ -4392,8 +4553,11 @@ inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
|
|
|
4392
4553
|
|
|
4393
4554
|
} // namespace testing
|
|
4394
4555
|
|
|
4556
|
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251 5046
|
|
4557
|
+
|
|
4395
4558
|
// Include any custom callback matchers added by the local installation.
|
|
4396
4559
|
// We must include this header at the end to make sure it can use the
|
|
4397
4560
|
// declarations from this file.
|
|
4398
4561
|
#include "gmock/internal/custom/gmock-matchers.h"
|
|
4562
|
+
|
|
4399
4563
|
#endif // GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|