script_core 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2211) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -1
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +1 -1
  5. data/Gemfile +8 -1
  6. data/{LICENSE → MIT-LICENSE} +0 -0
  7. data/bootstrap.sh +1 -1
  8. data/dev.yml +1 -2
  9. data/ext/enterprise_script_service/Rakefile +7 -1
  10. data/ext/enterprise_script_service/data.cpp +21 -11
  11. data/ext/enterprise_script_service/libseccomp/.gitignore +4 -0
  12. data/ext/enterprise_script_service/libseccomp/.mailmap +10 -0
  13. data/ext/enterprise_script_service/libseccomp/.travis.yml +71 -0
  14. data/ext/enterprise_script_service/libseccomp/CHANGELOG +33 -0
  15. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +134 -0
  16. data/ext/enterprise_script_service/libseccomp/CREDITS +16 -1
  17. data/ext/enterprise_script_service/libseccomp/Makefile.am +32 -1
  18. data/ext/enterprise_script_service/libseccomp/README.md +113 -0
  19. data/ext/enterprise_script_service/libseccomp/RELEASE_PROCESS.md +97 -0
  20. data/ext/enterprise_script_service/libseccomp/configure.ac +8 -1
  21. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +3 -1
  22. data/ext/enterprise_script_service/libseccomp/doc/credits_updater +35 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man1/scmp_sys_resolver.1 +3 -1
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +101 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_set.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +1 -1
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +23 -4
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -0
  29. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +2 -2
  30. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +80 -15
  31. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_resolve_name.3 +15 -1
  32. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +185 -22
  33. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +13 -4
  34. data/ext/enterprise_script_service/libseccomp/src/api.c +87 -8
  35. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +18 -7
  36. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +2 -1
  37. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +17 -6
  38. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -1
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +17 -6
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +1 -1
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +17 -6
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +1 -1
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +17 -6
  44. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +1 -1
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +510 -0
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.c +22 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +38 -0
  48. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +22 -0
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +18 -7
  50. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -1
  51. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +18 -7
  52. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +1 -1
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +19 -7
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +43 -45
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +2 -3
  56. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +18 -7
  57. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +43 -45
  58. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +2 -3
  59. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-check.c +56 -53
  60. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +23 -18
  61. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +52 -49
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +17 -6
  63. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +1 -1
  64. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +18 -7
  65. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +41 -45
  66. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +2 -3
  67. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +17 -6
  68. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -1
  69. data/ext/enterprise_script_service/libseccomp/src/arch.c +48 -83
  70. data/ext/enterprise_script_service/libseccomp/src/arch.h +4 -21
  71. data/ext/enterprise_script_service/libseccomp/src/db.c +1184 -541
  72. data/ext/enterprise_script_service/libseccomp/src/db.h +12 -32
  73. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +43 -24
  74. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +20 -7
  75. data/ext/enterprise_script_service/libseccomp/src/hash.c +65 -649
  76. data/ext/enterprise_script_service/libseccomp/src/hash.h +3 -13
  77. data/ext/enterprise_script_service/libseccomp/src/helper.c +49 -0
  78. data/ext/enterprise_script_service/libseccomp/src/helper.h +27 -0
  79. data/ext/enterprise_script_service/libseccomp/src/python/Makefile.am +9 -4
  80. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +9 -0
  81. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +72 -8
  82. data/ext/enterprise_script_service/libseccomp/src/python/setup.py +0 -0
  83. data/ext/enterprise_script_service/libseccomp/src/system.c +137 -4
  84. data/ext/enterprise_script_service/libseccomp/src/system.h +32 -2
  85. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +17 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/01-sim-allow.tests +2 -2
  87. data/ext/enterprise_script_service/libseccomp/tests/05-sim-long_jumps.tests +18 -18
  88. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.c +12 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.py +4 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +13 -8
  91. data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.c +2 -2
  92. data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.py +2 -2
  93. data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.tests +27 -27
  94. data/ext/enterprise_script_service/libseccomp/tests/09-sim-syscall_priority_pre.tests +7 -7
  95. data/ext/enterprise_script_service/libseccomp/tests/10-sim-syscall_priority_post.tests +7 -7
  96. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +12 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/12-sim-basic_masked_ops.tests +29 -29
  98. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +37 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -0
  100. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +79 -21
  101. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.py +2 -2
  102. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +44 -0
  103. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +4 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.c +6 -6
  105. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.py +6 -6
  106. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +12 -12
  107. data/ext/enterprise_script_service/libseccomp/tests/20-live-basic_die.py +1 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/20-live-basic_die.tests +4 -4
  109. data/ext/enterprise_script_service/libseccomp/tests/21-live-basic_allow.py +2 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/21-live-basic_allow.tests +2 -2
  111. data/ext/enterprise_script_service/libseccomp/tests/24-live-arg_allow.py +3 -2
  112. data/ext/enterprise_script_service/libseccomp/tests/24-live-arg_allow.tests +2 -2
  113. data/ext/enterprise_script_service/libseccomp/tests/25-sim-multilevel_chains_adv.tests +6 -6
  114. data/ext/enterprise_script_service/libseccomp/tests/26-sim-arch_all_be_basic.c +6 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/26-sim-arch_all_be_basic.py +2 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/27-sim-bpf_blk_state.tests +5 -5
  117. data/ext/enterprise_script_service/libseccomp/tests/28-sim-arch_x86.py +0 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/29-sim-pseudo_syscall.py +0 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/32-live-tsync_allow.py +1 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/32-live-tsync_allow.tests +2 -2
  121. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.c +74 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.py +45 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +32 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.c +73 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.py +46 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.tests +18 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +112 -0
  128. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +56 -0
  129. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +39 -0
  130. data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.c +109 -0
  131. data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.py +55 -0
  132. data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.tests +27 -0
  133. data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.c +104 -0
  134. data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.sh +46 -0
  135. data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.tests +11 -0
  136. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +67 -0
  137. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +68 -0
  138. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.tests +11 -0
  139. data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.c +59 -0
  140. data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.py +47 -0
  141. data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.tests +21 -0
  142. data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.c +63 -0
  143. data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.py +44 -0
  144. data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.tests +19 -0
  145. data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.c +198 -0
  146. data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.py +128 -0
  147. data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.tests +54 -0
  148. data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.c +132 -0
  149. data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.py +62 -0
  150. data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.tests +55 -0
  151. data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.c +178 -0
  152. data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.py +107 -0
  153. data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.tests +11 -0
  154. data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.c +108 -0
  155. data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.py +48 -0
  156. data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.tests +16 -0
  157. data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.c +78 -0
  158. data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.py +47 -0
  159. data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.tests +16 -0
  160. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +102 -0
  161. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.py +68 -0
  162. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.tests +11 -0
  163. data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.c +84 -0
  164. data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.py +50 -0
  165. data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.tests +38 -0
  166. data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.c +56 -0
  167. data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.py +45 -0
  168. data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.tests +25 -0
  169. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +68 -6
  170. data/ext/enterprise_script_service/libseccomp/tests/miniseq.c +3 -2
  171. data/ext/enterprise_script_service/libseccomp/tests/regression +102 -10
  172. data/ext/enterprise_script_service/libseccomp/tests/util.c +4 -0
  173. data/ext/enterprise_script_service/libseccomp/tests/util.py +2 -2
  174. data/ext/enterprise_script_service/libseccomp/tools/.gitignore +1 -0
  175. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +5 -1
  176. data/ext/enterprise_script_service/libseccomp/tools/bpf.h +8 -1
  177. data/ext/enterprise_script_service/libseccomp/tools/scmp_api_level.c +39 -0
  178. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +6 -0
  179. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +14 -2
  180. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +12 -2
  181. data/ext/enterprise_script_service/libseccomp/tools/util.c +4 -0
  182. data/ext/enterprise_script_service/mruby/.gitignore +15 -8
  183. data/ext/enterprise_script_service/mruby/.travis.yml +3 -4
  184. data/ext/enterprise_script_service/mruby/.yardopts +1 -1
  185. data/ext/enterprise_script_service/mruby/AUTHORS +6 -2
  186. data/ext/enterprise_script_service/mruby/LEGAL +1 -1
  187. data/ext/enterprise_script_service/mruby/LICENSE +20 -0
  188. data/ext/enterprise_script_service/mruby/README.md +2 -2
  189. data/ext/enterprise_script_service/mruby/Rakefile +28 -12
  190. data/ext/enterprise_script_service/mruby/TODO +0 -2
  191. data/ext/enterprise_script_service/mruby/appveyor.yml +11 -7
  192. data/ext/enterprise_script_service/mruby/benchmark/bm_app_lc_fizzbuzz.rb +1 -2
  193. data/ext/enterprise_script_service/mruby/build_config.rb +3 -2
  194. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  195. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +7 -2
  196. data/ext/enterprise_script_service/mruby/doc/limitations.md +69 -7
  197. data/ext/enterprise_script_service/mruby/doc/opcode.md +127 -0
  198. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +2 -2
  199. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +2 -2
  200. data/ext/enterprise_script_service/mruby/include/mrbconf.h +9 -3
  201. data/ext/enterprise_script_service/mruby/include/mruby.h +45 -34
  202. data/ext/enterprise_script_service/mruby/include/mruby/array.h +17 -0
  203. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +1 -1
  204. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +12 -4
  205. data/ext/enterprise_script_service/mruby/include/mruby/class.h +18 -15
  206. data/ext/enterprise_script_service/mruby/include/mruby/common.h +6 -1
  207. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +6 -5
  208. data/ext/enterprise_script_service/mruby/include/mruby/data.h +5 -4
  209. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +5 -5
  210. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +2 -2
  211. data/ext/enterprise_script_service/mruby/include/mruby/error.h +1 -1
  212. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +56 -9
  213. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +17 -4
  214. data/ext/enterprise_script_service/mruby/include/mruby/object.h +5 -6
  215. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +47 -139
  216. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +117 -0
  217. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +8 -8
  218. data/ext/enterprise_script_service/mruby/include/mruby/range.h +29 -5
  219. data/ext/enterprise_script_service/mruby/include/mruby/string.h +20 -10
  220. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +4 -4
  221. data/ext/enterprise_script_service/mruby/include/mruby/value.h +4 -0
  222. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +7 -4
  223. data/ext/enterprise_script_service/mruby/include/mruby/version.h +7 -7
  224. data/ext/enterprise_script_service/mruby/lib/mruby-core-ext.rb +23 -17
  225. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +35 -9
  226. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +5 -5
  227. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +5 -3
  228. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +26 -27
  229. data/ext/enterprise_script_service/mruby/minirake +136 -15
  230. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -0
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +54 -50
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +3 -46
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +9 -24
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +23 -0
  235. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-bin-mruby-config → mruby-bin-config}/mruby-config +0 -0
  236. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-bin-mruby-config → mruby-bin-config}/mruby-config.bat +0 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +13 -13
  238. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +9 -7
  239. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +1 -1
  240. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +7 -2
  241. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +1 -1
  242. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +3 -3
  243. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +7 -1
  244. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +24 -1
  245. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +1 -1
  246. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +8 -5
  247. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -0
  248. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +22 -0
  249. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +84 -17
  250. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +1 -1
  251. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +9 -0
  252. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +38 -1
  253. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -0
  254. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +60 -7
  255. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +3 -3
  256. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +1 -17
  257. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/mrblib/module.rb +89 -0
  258. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/test/module.rb +55 -1
  259. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +918 -767
  260. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/node.h +4 -20
  261. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +552 -273
  262. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +3 -3
  263. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrbgem.rake +6 -0
  264. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb +60 -0
  265. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/test/enum_chain.rb +76 -0
  266. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +57 -37
  267. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -2
  268. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +1 -1
  269. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +1 -1
  270. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +47 -35
  271. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +22 -17
  272. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +90 -40
  273. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +33 -2
  274. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +15 -12
  275. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +42 -47
  276. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +4 -47
  277. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +0 -6
  278. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +12 -10
  279. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.rb +17 -50
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -1
  281. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +3 -2
  282. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +11 -8
  283. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +128 -117
  284. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +17 -21
  285. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file_test.rb +4 -4
  286. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +16 -53
  287. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/mrblib/kernel.rb +2 -0
  288. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +12 -30
  289. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +4 -2
  290. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +7 -10
  291. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +31 -51
  292. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/mrbgem.rake +5 -0
  293. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +702 -0
  294. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +369 -0
  295. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/kernel.rb +3 -2
  296. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/method.rb +8 -0
  297. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -4
  298. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +27 -9
  299. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +7 -10
  300. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -1
  301. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/test/nil.rb +2 -1
  302. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +1 -1
  303. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +1 -1
  304. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +126 -79
  305. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/test/pack.rb +2 -2
  306. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -4
  307. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +0 -1
  308. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +9 -1
  309. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -19
  310. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.rb +18 -0
  311. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +7 -7
  312. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +0 -12
  313. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +1 -4
  314. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +13 -14
  315. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.gitignore +4 -0
  316. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis.yml +29 -0
  317. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis_build_config.rb +6 -0
  318. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +27 -0
  319. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/Rakefile +29 -0
  320. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/example/sleep.rb +3 -0
  321. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/mrbgem.rake +5 -0
  322. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +135 -0
  323. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/test/sleep_test.rb +29 -0
  324. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -0
  325. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb +3 -3
  326. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/const.cstub +6 -0
  327. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/const.def +2 -0
  328. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +48 -20
  329. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/addrinfo.rb +5 -5
  330. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/socket.rb +2 -2
  331. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +1 -0
  332. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +14 -13
  333. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +6 -3
  334. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +96 -21
  335. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +626 -190
  336. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/test/string.rb +102 -59
  337. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +15 -16
  338. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +16 -15
  339. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/test/struct.rb +2 -2
  340. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +0 -6
  341. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +13 -6
  342. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +21 -13
  343. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +22 -39
  344. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +22 -23
  345. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/include/mruby/time.h +25 -0
  346. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +26 -22
  347. data/ext/enterprise_script_service/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +2 -2
  348. data/ext/enterprise_script_service/mruby/mrblib/array.rb +70 -40
  349. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +4 -3
  350. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +17 -46
  351. data/ext/enterprise_script_service/mruby/mrblib/kernel.rb +1 -1
  352. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +1 -4
  353. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +2 -2
  354. data/ext/enterprise_script_service/mruby/mrblib/string.rb +7 -8
  355. data/ext/enterprise_script_service/mruby/mrblib/symbol.rb +7 -0
  356. data/ext/enterprise_script_service/mruby/src/array.c +97 -44
  357. data/ext/enterprise_script_service/mruby/src/backtrace.c +14 -16
  358. data/ext/enterprise_script_service/mruby/src/class.c +156 -464
  359. data/ext/enterprise_script_service/mruby/src/codedump.c +436 -364
  360. data/ext/enterprise_script_service/mruby/src/debug.c +42 -45
  361. data/ext/enterprise_script_service/mruby/src/dump.c +27 -152
  362. data/ext/enterprise_script_service/mruby/src/enum.c +18 -2
  363. data/ext/enterprise_script_service/mruby/src/error.c +5 -4
  364. data/ext/enterprise_script_service/mruby/src/etc.c +1 -0
  365. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +15 -1
  366. data/ext/enterprise_script_service/mruby/src/gc.c +76 -30
  367. data/ext/enterprise_script_service/mruby/src/hash.c +768 -256
  368. data/ext/enterprise_script_service/mruby/src/kernel.c +24 -446
  369. data/ext/enterprise_script_service/mruby/src/load.c +35 -35
  370. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +2 -3
  371. data/ext/enterprise_script_service/mruby/src/numeric.c +96 -32
  372. data/ext/enterprise_script_service/mruby/src/object.c +88 -43
  373. data/ext/enterprise_script_service/mruby/src/proc.c +16 -14
  374. data/ext/enterprise_script_service/mruby/src/range.c +186 -176
  375. data/ext/enterprise_script_service/mruby/src/state.c +5 -5
  376. data/ext/enterprise_script_service/mruby/src/string.c +79 -93
  377. data/ext/enterprise_script_service/mruby/src/symbol.c +173 -85
  378. data/ext/enterprise_script_service/mruby/src/variable.c +283 -177
  379. data/ext/enterprise_script_service/mruby/src/vm.c +711 -688
  380. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +4 -3
  381. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +3 -2
  382. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +1 -0
  383. data/ext/enterprise_script_service/mruby/tasks/toolchains/clang.rake +1 -1
  384. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +4 -6
  385. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +0 -2
  386. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +12 -11
  387. data/ext/enterprise_script_service/mruby/test/assert.rb +114 -121
  388. data/ext/enterprise_script_service/mruby/test/bintest.rb +10 -1
  389. data/ext/enterprise_script_service/mruby/test/t/array.rb +11 -11
  390. data/ext/enterprise_script_service/mruby/test/t/bs_block.rb +32 -31
  391. data/ext/enterprise_script_service/mruby/test/t/class.rb +11 -23
  392. data/ext/enterprise_script_service/mruby/test/t/codegen.rb +3 -3
  393. data/ext/enterprise_script_service/mruby/test/t/enumerable.rb +1 -1
  394. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  395. data/ext/enterprise_script_service/mruby/test/t/float.rb +41 -2
  396. data/ext/enterprise_script_service/mruby/test/t/hash.rb +6 -5
  397. data/ext/enterprise_script_service/mruby/test/t/integer.rb +26 -44
  398. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +7 -119
  399. data/ext/enterprise_script_service/mruby/test/t/literals.rb +1 -1
  400. data/ext/enterprise_script_service/mruby/test/t/module.rb +93 -282
  401. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +40 -11
  402. data/ext/enterprise_script_service/mruby/test/t/proc.rb +1 -1
  403. data/ext/enterprise_script_service/mruby/test/t/range.rb +19 -2
  404. data/ext/enterprise_script_service/mruby/test/t/string.rb +17 -24
  405. data/ext/enterprise_script_service/mruby/test/t/symbol.rb +6 -2
  406. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +191 -3
  407. data/ext/enterprise_script_service/mruby/travis_config.rb +1 -1
  408. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  409. data/ext/enterprise_script_service/mruby_engine.gembox +1 -0
  410. data/ext/enterprise_script_service/msgpack/.travis.yml +77 -44
  411. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +75 -0
  412. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +187 -50
  413. data/ext/enterprise_script_service/msgpack/Doxyfile +1 -1
  414. data/ext/enterprise_script_service/msgpack/Files.cmake +87 -0
  415. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +3 -3
  416. data/ext/enterprise_script_service/msgpack/QUICKSTART-CPP.md +1 -1
  417. data/ext/enterprise_script_service/msgpack/README.md +15 -7
  418. data/ext/enterprise_script_service/msgpack/appveyor.yml +9 -5
  419. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +2 -2
  420. data/ext/enterprise_script_service/msgpack/ci/build_regression.sh +49 -0
  421. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_define_array.hpp.erb +4 -2
  422. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_define_map.hpp.erb +2 -1
  423. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_msgpack_tuple.hpp.erb +1 -1
  424. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone.hpp.erb +25 -18
  425. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone_decl.hpp.erb +8 -0
  426. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +28 -1
  427. data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv.cpp +104 -0
  428. data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv_zlib.cpp +176 -0
  429. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +4 -2
  430. data/ext/enterprise_script_service/msgpack/example/c/speed_test_uint32_array.c +1 -1
  431. data/ext/enterprise_script_service/msgpack/example/c/speed_test_uint64_array.c +1 -1
  432. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +15 -3
  433. data/ext/enterprise_script_service/msgpack/example/cpp03/class_non_intrusive.cpp +1 -1
  434. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +5 -1
  435. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +12 -4
  436. data/ext/enterprise_script_service/msgpack/example/x3/parse.cpp +7 -1
  437. data/ext/enterprise_script_service/msgpack/example/x3/stream_unpack.cpp +9 -0
  438. data/ext/enterprise_script_service/msgpack/external/boost/predef/.gitattributes +96 -0
  439. data/ext/enterprise_script_service/msgpack/external/boost/predef/.gitignore +3 -0
  440. data/ext/enterprise_script_service/msgpack/external/boost/predef/.project +17 -0
  441. data/ext/enterprise_script_service/msgpack/external/boost/predef/.pydevproject +5 -0
  442. data/ext/enterprise_script_service/msgpack/external/boost/predef/.travis.yml +109 -0
  443. data/ext/enterprise_script_service/msgpack/external/boost/predef/appveyor.yml +149 -0
  444. data/ext/enterprise_script_service/msgpack/external/boost/predef/build.jam +6 -0
  445. data/ext/enterprise_script_service/msgpack/external/boost/predef/check/predef.jam +17 -0
  446. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/.gitignore +1 -0
  447. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/build.jam +100 -0
  448. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/hardware_simd.qbk +89 -0
  449. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/history.qbk +93 -0
  450. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/predef.qbk +734 -0
  451. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/todo.qbk +12 -0
  452. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/detail/endian.hpp +11 -0
  453. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef.h +24 -0
  454. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture.h +33 -0
  455. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/alpha.h +59 -0
  456. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/arm.h +80 -0
  457. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/blackfin.h +46 -0
  458. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/convex.h +65 -0
  459. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ia64.h +49 -0
  460. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/m68k.h +82 -0
  461. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/mips.h +73 -0
  462. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/parisc.h +64 -0
  463. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ppc.h +72 -0
  464. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ptx.h +44 -0
  465. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/pyramid.h +42 -0
  466. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/rs6k.h +56 -0
  467. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sparc.h +54 -0
  468. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/superh.h +67 -0
  469. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sys370.h +43 -0
  470. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sys390.h +43 -0
  471. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86.h +38 -0
  472. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86/32.h +87 -0
  473. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86/64.h +50 -0
  474. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/z.h +42 -0
  475. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler.h +44 -0
  476. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/borland.h +63 -0
  477. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/clang.h +56 -0
  478. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/comeau.h +61 -0
  479. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/compaq.h +66 -0
  480. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/diab.h +56 -0
  481. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/digitalmars.h +56 -0
  482. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/dignus.h +56 -0
  483. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/edg.h +56 -0
  484. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/ekopath.h +57 -0
  485. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/gcc.h +68 -0
  486. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/gcc_xml.h +53 -0
  487. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/greenhills.h +66 -0
  488. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/hp_acc.h +61 -0
  489. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/iar.h +56 -0
  490. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/ibm.h +72 -0
  491. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/intel.h +79 -0
  492. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/kai.h +56 -0
  493. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/llvm.h +57 -0
  494. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/metaware.h +53 -0
  495. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/metrowerks.h +77 -0
  496. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/microtec.h +53 -0
  497. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/mpw.h +63 -0
  498. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/nvcc.h +60 -0
  499. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/palm.h +56 -0
  500. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/pgi.h +60 -0
  501. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/sgi_mipspro.h +66 -0
  502. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/sunpro.h +76 -0
  503. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/tendra.h +53 -0
  504. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/visualc.h +105 -0
  505. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/watcom.h +56 -0
  506. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/_cassert.h +17 -0
  507. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/_exception.h +15 -0
  508. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/comp_detected.h +10 -0
  509. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/endian_compat.h +26 -0
  510. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/os_detected.h +10 -0
  511. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/platform_detected.h +10 -0
  512. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/test.h +17 -0
  513. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/test_def.h +71 -0
  514. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware.h +16 -0
  515. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd.h +119 -0
  516. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/arm.h +59 -0
  517. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/arm/versions.h +32 -0
  518. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/ppc.h +69 -0
  519. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/ppc/versions.h +51 -0
  520. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86.h +123 -0
  521. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86/versions.h +129 -0
  522. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86_amd.h +87 -0
  523. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86_amd/versions.h +51 -0
  524. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language.h +18 -0
  525. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/cuda.h +52 -0
  526. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/objc.h +42 -0
  527. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/stdc.h +53 -0
  528. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/stdcpp.h +121 -0
  529. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library.h +16 -0
  530. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c.h +21 -0
  531. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/_prefix.h +13 -0
  532. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/cloudabi.h +53 -0
  533. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/gnu.h +61 -0
  534. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/uc.h +47 -0
  535. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/vms.h +47 -0
  536. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/zos.h +56 -0
  537. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std.h +25 -0
  538. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/_prefix.h +23 -0
  539. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/cxx.h +46 -0
  540. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/dinkumware.h +52 -0
  541. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/libcomo.h +47 -0
  542. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/modena.h +45 -0
  543. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/msl.h +53 -0
  544. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/roguewave.h +56 -0
  545. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/sgi.h +51 -0
  546. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/stdcpp3.h +53 -0
  547. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/stlport.h +59 -0
  548. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/vacpp.h +44 -0
  549. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/make.h +97 -0
  550. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os.h +33 -0
  551. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/aix.h +66 -0
  552. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/amigaos.h +46 -0
  553. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/android.h +45 -0
  554. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/beos.h +45 -0
  555. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd.h +103 -0
  556. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/bsdi.h +48 -0
  557. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/dragonfly.h +50 -0
  558. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/free.h +67 -0
  559. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/net.h +84 -0
  560. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/open.h +251 -0
  561. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/cygwin.h +45 -0
  562. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/haiku.h +46 -0
  563. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/hpux.h +47 -0
  564. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/ios.h +51 -0
  565. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/irix.h +46 -0
  566. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/linux.h +46 -0
  567. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/macos.h +65 -0
  568. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/os400.h +45 -0
  569. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/qnxnto.h +59 -0
  570. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/solaris.h +46 -0
  571. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/unix.h +76 -0
  572. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/vms.h +52 -0
  573. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/windows.h +51 -0
  574. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other.h +16 -0
  575. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other/endian.h +203 -0
  576. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other/workaround.h +87 -0
  577. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform.h +28 -0
  578. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/cloudabi.h +43 -0
  579. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/ios.h +58 -0
  580. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw.h +69 -0
  581. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw32.h +63 -0
  582. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw64.h +63 -0
  583. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_desktop.h +51 -0
  584. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_phone.h +48 -0
  585. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_runtime.h +53 -0
  586. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_server.h +47 -0
  587. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_store.h +50 -0
  588. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_system.h +47 -0
  589. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_uwp.h +60 -0
  590. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/version.h +15 -0
  591. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/version_number.h +72 -0
  592. data/ext/enterprise_script_service/msgpack/external/boost/predef/index.html +14 -0
  593. data/ext/enterprise_script_service/msgpack/external/boost/predef/meta/libraries.json +14 -0
  594. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/.gitignore +3 -0
  595. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/build.jam +80 -0
  596. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/check_value.cpp +26 -0
  597. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_c.c +7 -0
  598. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_cpp.cpp +7 -0
  599. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_objc.m +7 -0
  600. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_objcpp.mm +7 -0
  601. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/macos_endian.c +21 -0
  602. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/macos_vs_bsd.c +19 -0
  603. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/make.cpp +94 -0
  604. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/platform_windows.cpp +177 -0
  605. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/predef_info.h +46 -0
  606. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/tested_at.cpp +62 -0
  607. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/tested_at_outdated.cpp +18 -0
  608. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/version.cpp +83 -0
  609. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/workaround.cpp +62 -0
  610. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/workaround_strict_config.cpp +17 -0
  611. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/build.jam +9 -0
  612. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef.jam +202 -0
  613. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check.h +98 -0
  614. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_c.c +7 -0
  615. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_cpp.cpp +7 -0
  616. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_objc.m +7 -0
  617. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_objcpp.mm +7 -0
  618. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc.h +19 -0
  619. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_c.c +7 -0
  620. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_cpp.cpp +7 -0
  621. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_objc.m +7 -0
  622. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_objcpp.mm +7 -0
  623. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/build_log.py +428 -0
  624. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/common.py +878 -0
  625. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/library_test.py +198 -0
  626. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/.gitattributes +96 -0
  627. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/.travis.yml +39 -0
  628. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/appveyor.yml +36 -0
  629. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html +2494 -0
  630. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/acknowledgements.html +58 -0
  631. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/bibliography.html +58 -0
  632. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/contents.html +38 -0
  633. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data.html +27 -0
  634. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/arrays.html +55 -0
  635. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/lists.html +42 -0
  636. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/sequences.html +60 -0
  637. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/tuples.html +42 -0
  638. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples.html +27 -0
  639. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/array_arithmetic.c +196 -0
  640. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/catch_builtin.cpp +51 -0
  641. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/delay.c +95 -0
  642. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/duffs_device.c +61 -0
  643. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/is_integral.cpp +49 -0
  644. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/linear_fib.c +91 -0
  645. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers.html +249 -0
  646. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic.html +36 -0
  647. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/add.html +31 -0
  648. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/dec.html +30 -0
  649. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/div.html +31 -0
  650. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/inc.html +30 -0
  651. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/mod.html +31 -0
  652. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/mul.html +31 -0
  653. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/sub.html +31 -0
  654. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array.html +43 -0
  655. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/data.html +30 -0
  656. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/elem.html +30 -0
  657. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/enum.html +24 -0
  658. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/insert.html +31 -0
  659. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/pop_back.html +31 -0
  660. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/pop_front.html +31 -0
  661. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/push_back.html +30 -0
  662. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/push_front.html +30 -0
  663. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/remove.html +31 -0
  664. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/replace.html +31 -0
  665. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/reverse.html +30 -0
  666. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/size.html +30 -0
  667. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_list.html +24 -0
  668. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_seq.html +24 -0
  669. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_tuple.html +24 -0
  670. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/assert_msg.html +31 -0
  671. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/cat.html +30 -0
  672. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comma.html +31 -0
  673. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comma_if.html +31 -0
  674. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison.html +35 -0
  675. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/equal.html +31 -0
  676. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/greater.html +31 -0
  677. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/greater_equal.html +31 -0
  678. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/less.html +31 -0
  679. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/less_equal.html +31 -0
  680. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/not_equal.html +31 -0
  681. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/config/limits.html +44 -0
  682. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/config/variadics.html +32 -0
  683. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control.html +35 -0
  684. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/deduce_d.html +30 -0
  685. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/expr_if.html +30 -0
  686. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/expr_iif.html +30 -0
  687. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/if.html +30 -0
  688. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/iif.html +30 -0
  689. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/while.html +31 -0
  690. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug.html +31 -0
  691. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug/assert.html +31 -0
  692. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug/line.html +30 -0
  693. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/dec.html +31 -0
  694. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/empty.html +31 -0
  695. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum.html +31 -0
  696. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_params.html +31 -0
  697. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_shifted.html +31 -0
  698. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_shifted_params.html +31 -0
  699. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/epwad.html +31 -0
  700. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/epwd.html +31 -0
  701. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/expand.html +31 -0
  702. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/expr_if.html +31 -0
  703. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities.html +34 -0
  704. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/apply.html +30 -0
  705. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/empty.html +30 -0
  706. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/expand.html +30 -0
  707. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/identity.html +32 -0
  708. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/intercept.html +30 -0
  709. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/overload.html +28 -0
  710. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/for.html +31 -0
  711. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/identity.html +31 -0
  712. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/if.html +31 -0
  713. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/inc.html +31 -0
  714. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iterate.html +31 -0
  715. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration.html +32 -0
  716. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/iterate.html +43 -0
  717. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/local.html +30 -0
  718. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/self.html +30 -0
  719. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/library.html +26 -0
  720. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/limits.html +31 -0
  721. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list.html +47 -0
  722. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/adt.html +35 -0
  723. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/append.html +31 -0
  724. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/at.html +31 -0
  725. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/cat.html +31 -0
  726. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/enum.html +31 -0
  727. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/filter.html +31 -0
  728. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/first_n.html +31 -0
  729. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/fold_left.html +34 -0
  730. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/fold_right.html +34 -0
  731. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each.html +31 -0
  732. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each_i.html +31 -0
  733. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each_product.html +31 -0
  734. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/rest_n.html +31 -0
  735. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/reverse.html +31 -0
  736. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/size.html +31 -0
  737. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_array.html +29 -0
  738. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_seq.html +25 -0
  739. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_tuple.html +31 -0
  740. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/transform.html +31 -0
  741. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical.html +40 -0
  742. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/and.html +30 -0
  743. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitand.html +30 -0
  744. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitnor.html +30 -0
  745. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitor.html +30 -0
  746. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitxor.html +30 -0
  747. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bool.html +30 -0
  748. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/compl.html +30 -0
  749. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/nor.html +30 -0
  750. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/not.html +30 -0
  751. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/or.html +30 -0
  752. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/xor.html +30 -0
  753. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/max.html +31 -0
  754. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/min.html +31 -0
  755. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/preprocessor.html +26 -0
  756. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation.html +33 -0
  757. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/comma.html +30 -0
  758. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/comma_if.html +30 -0
  759. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/is_begin_parens.html +26 -0
  760. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/paren.html +31 -0
  761. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/paren_if.html +31 -0
  762. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/remove_parens.html +26 -0
  763. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat.html +31 -0
  764. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_2nd.html +31 -0
  765. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_3rd.html +31 -0
  766. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to.html +31 -0
  767. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to_2nd.html +31 -0
  768. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to_3rd.html +31 -0
  769. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition.html +44 -0
  770. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/deduce_r.html +30 -0
  771. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/deduce_z.html +30 -0
  772. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum.html +31 -0
  773. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_binary_params.html +31 -0
  774. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_params.html +31 -0
  775. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_shifted.html +31 -0
  776. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_shifted_params.html +31 -0
  777. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_trailing.html +31 -0
  778. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_trailing_params.html +31 -0
  779. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/epwad.html +30 -0
  780. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/epwd.html +30 -0
  781. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/esbp.html +31 -0
  782. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/etbp.html +31 -0
  783. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/for.html +31 -0
  784. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/repeat.html +34 -0
  785. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/repeat_from_to.html +36 -0
  786. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection.html +31 -0
  787. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection/max.html +31 -0
  788. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection/min.html +31 -0
  789. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq.html +86 -0
  790. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/cat.html +38 -0
  791. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/elem.html +35 -0
  792. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/enum.html +35 -0
  793. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/filter.html +37 -0
  794. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/first_n.html +36 -0
  795. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/fold_left.html +38 -0
  796. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/fold_right.html +38 -0
  797. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each.html +38 -0
  798. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each_i.html +38 -0
  799. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each_product.html +38 -0
  800. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/insert.html +35 -0
  801. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/pop_back.html +36 -0
  802. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/pop_front.html +36 -0
  803. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/push_back.html +35 -0
  804. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/push_front.html +35 -0
  805. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/remove.html +35 -0
  806. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/replace.html +35 -0
  807. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/rest_n.html +36 -0
  808. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/reverse.html +37 -0
  809. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/seq.html +39 -0
  810. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/size.html +35 -0
  811. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/subseq.html +35 -0
  812. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_array.html +36 -0
  813. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_list.html +30 -0
  814. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_tuple.html +36 -0
  815. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/transform.html +37 -0
  816. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/variadic_seq_to_seq.html +34 -0
  817. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot.html +30 -0
  818. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot/counter.html +31 -0
  819. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot/slot.html +31 -0
  820. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/stringize.html +30 -0
  821. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple.html +59 -0
  822. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/eat.html +25 -0
  823. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/elem.html +25 -0
  824. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/enum.html +25 -0
  825. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/insert.html +27 -0
  826. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/pop_back.html +28 -0
  827. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/pop_front.html +28 -0
  828. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/push_back.html +26 -0
  829. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/push_front.html +26 -0
  830. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/rem.html +27 -0
  831. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/remove.html +27 -0
  832. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/replace.html +28 -0
  833. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/reverse.html +25 -0
  834. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/size.html +25 -0
  835. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_array.html +25 -0
  836. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_list.html +25 -0
  837. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_seq.html +31 -0
  838. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic.html +33 -0
  839. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/elem.html +29 -0
  840. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/size.html +25 -0
  841. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_array.html +25 -0
  842. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_list.html +25 -0
  843. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_seq.html +30 -0
  844. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_tuple.html +31 -0
  845. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/while.html +31 -0
  846. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/wstringize.html +30 -0
  847. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/index.html +23 -0
  848. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/miscellanea.html +24 -0
  849. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref.html +319 -0
  850. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/add.html +68 -0
  851. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/add_d.html +90 -0
  852. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/and.html +64 -0
  853. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/apply.html +64 -0
  854. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_data.html +49 -0
  855. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_elem.html +51 -0
  856. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_enum.html +37 -0
  857. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_insert.html +71 -0
  858. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_insert_d.html +63 -0
  859. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_back.html +59 -0
  860. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_back_z.html +51 -0
  861. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_front.html +51 -0
  862. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_front_z.html +51 -0
  863. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_push_back.html +49 -0
  864. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_push_front.html +49 -0
  865. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_remove.html +60 -0
  866. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_remove_d.html +51 -0
  867. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_replace.html +64 -0
  868. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_replace_d.html +55 -0
  869. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_reverse.html +45 -0
  870. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_size.html +45 -0
  871. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_list.html +41 -0
  872. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_seq.html +37 -0
  873. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_tuple.html +39 -0
  874. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assert.html +114 -0
  875. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assert_msg.html +66 -0
  876. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assign_slot.html +61 -0
  877. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitand.html +65 -0
  878. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitnor.html +65 -0
  879. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitor.html +65 -0
  880. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitxor.html +66 -0
  881. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bool.html +54 -0
  882. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/cat.html +57 -0
  883. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/comma.html +43 -0
  884. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/comma_if.html +60 -0
  885. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/compl.html +58 -0
  886. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/config_extended_line_info.html +54 -0
  887. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/counter.html +58 -0
  888. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/dec.html +54 -0
  889. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_d.html +82 -0
  890. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_r.html +48 -0
  891. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_z.html +48 -0
  892. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/div.html +63 -0
  893. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/div_d.html +85 -0
  894. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/empty.html +47 -0
  895. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum.html +80 -0
  896. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_binary_params.html +76 -0
  897. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_binary_params_z.html +93 -0
  898. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params.html +69 -0
  899. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_with_a_default.html +83 -0
  900. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_with_defaults.html +84 -0
  901. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_z.html +82 -0
  902. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted.html +82 -0
  903. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_params.html +73 -0
  904. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_params_z.html +79 -0
  905. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_z.html +93 -0
  906. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing.html +83 -0
  907. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_params.html +66 -0
  908. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_params_z.html +81 -0
  909. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_z.html +96 -0
  910. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_z.html +96 -0
  911. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/equal.html +64 -0
  912. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/equal_d.html +69 -0
  913. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/esbp.html +65 -0
  914. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/esbpz.html +67 -0
  915. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/etbp.html +83 -0
  916. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/etbpz.html +67 -0
  917. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expand.html +67 -0
  918. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expr_if.html +70 -0
  919. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expr_iif.html +67 -0
  920. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/filename_x.html +52 -0
  921. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for.html +105 -0
  922. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for_r.html +148 -0
  923. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for_r_macros.html +44 -0
  924. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_finish.html +42 -0
  925. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_flags.html +42 -0
  926. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_iteration.html +73 -0
  927. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_start.html +42 -0
  928. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater.html +65 -0
  929. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_d.html +69 -0
  930. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_equal.html +65 -0
  931. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_equal_d.html +69 -0
  932. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/identity.html +57 -0
  933. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/identity_n.html +58 -0
  934. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/if.html +63 -0
  935. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iif.html +66 -0
  936. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/inc.html +54 -0
  937. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/include_self.html +101 -0
  938. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/indirect_self.html +45 -0
  939. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/intercept.html +51 -0
  940. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_begin_parens.html +47 -0
  941. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_iterating.html +38 -0
  942. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_selfish.html +38 -0
  943. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iterate.html +83 -0
  944. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration.html +55 -0
  945. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_depth.html +73 -0
  946. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_finish.html +57 -0
  947. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_flags.html +68 -0
  948. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_limits.html +59 -0
  949. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_params_x.html +77 -0
  950. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_start.html +57 -0
  951. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less.html +65 -0
  952. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_d.html +70 -0
  953. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_equal.html +65 -0
  954. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_equal_d.html +70 -0
  955. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_dim.html +35 -0
  956. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_for.html +34 -0
  957. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_iteration.html +34 -0
  958. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_iteration_dim.html +34 -0
  959. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_mag.html +34 -0
  960. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_repeat.html +39 -0
  961. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_seq.html +41 -0
  962. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_slot_count.html +34 -0
  963. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_slot_sig.html +34 -0
  964. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_tuple.html +33 -0
  965. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_variadic.html +24 -0
  966. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_while.html +34 -0
  967. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/line.html +112 -0
  968. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_append.html +69 -0
  969. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_append_d.html +96 -0
  970. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_at.html +61 -0
  971. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_at_d.html +63 -0
  972. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cat.html +58 -0
  973. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cat_d.html +67 -0
  974. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cons.html +87 -0
  975. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_enum.html +62 -0
  976. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_enum_r.html +69 -0
  977. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_filter.html +76 -0
  978. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_filter_d.html +86 -0
  979. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first.html +62 -0
  980. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first_n.html +62 -0
  981. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first_n_d.html +71 -0
  982. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left.html +75 -0
  983. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_2nd.html +75 -0
  984. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_2nd_d.html +86 -0
  985. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_d.html +81 -0
  986. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_d_old.html +86 -0
  987. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right.html +79 -0
  988. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_2nd.html +79 -0
  989. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_2nd_d.html +86 -0
  990. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_d.html +81 -0
  991. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_d_old.html +90 -0
  992. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each.html +75 -0
  993. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_i.html +75 -0
  994. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_i_r.html +82 -0
  995. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_product.html +86 -0
  996. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_product_r.html +118 -0
  997. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_r.html +81 -0
  998. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_is_cons.html +51 -0
  999. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_is_nil.html +51 -0
  1000. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_nil.html +68 -0
  1001. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest.html +62 -0
  1002. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest_n.html +62 -0
  1003. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest_n_d.html +71 -0
  1004. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_reverse.html +55 -0
  1005. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_reverse_d.html +63 -0
  1006. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_size.html +55 -0
  1007. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_size_d.html +67 -0
  1008. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_array.html +47 -0
  1009. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_array_d.html +34 -0
  1010. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_seq.html +44 -0
  1011. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_seq_r.html +32 -0
  1012. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_tuple.html +55 -0
  1013. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_tuple_r.html +62 -0
  1014. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_transform.html +78 -0
  1015. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_transform_d.html +86 -0
  1016. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_iterate.html +62 -0
  1017. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_limits.html +80 -0
  1018. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_macro.html +64 -0
  1019. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/lparen.html +52 -0
  1020. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/lparen_if.html +61 -0
  1021. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/max.html +64 -0
  1022. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/max_d.html +70 -0
  1023. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/min.html +64 -0
  1024. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/min_d.html +70 -0
  1025. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mod.html +63 -0
  1026. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mod_d.html +75 -0
  1027. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mul.html +68 -0
  1028. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mul_d.html +91 -0
  1029. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/nil.html +41 -0
  1030. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/nor.html +64 -0
  1031. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not.html +59 -0
  1032. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not_equal.html +64 -0
  1033. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not_equal_d.html +69 -0
  1034. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/or.html +64 -0
  1035. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/overload.html +58 -0
  1036. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_finish.html +46 -0
  1037. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_flags.html +46 -0
  1038. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_iteration.html +101 -0
  1039. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_start.html +46 -0
  1040. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/remove_parens.html +44 -0
  1041. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat.html +80 -0
  1042. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_1st.html +82 -0
  1043. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_2nd.html +82 -0
  1044. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_3rd.html +82 -0
  1045. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to.html +102 -0
  1046. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_1st.html +91 -0
  1047. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_2nd.html +91 -0
  1048. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_3rd.html +91 -0
  1049. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_d.html +83 -0
  1050. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_d_z.html +84 -0
  1051. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_z.html +105 -0
  1052. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_z.html +92 -0
  1053. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_z_macros.html +45 -0
  1054. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/rparen.html +53 -0
  1055. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/rparen_if.html +61 -0
  1056. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_cat.html +64 -0
  1057. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_cat_s.html +60 -0
  1058. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_elem.html +59 -0
  1059. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_enum.html +66 -0
  1060. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_filter.html +93 -0
  1061. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_filter_s.html +79 -0
  1062. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_first_n.html +67 -0
  1063. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_left.html +90 -0
  1064. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_left_s.html +96 -0
  1065. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_right.html +92 -0
  1066. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_right_s.html +97 -0
  1067. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each.html +90 -0
  1068. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_i.html +91 -0
  1069. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_i_r.html +78 -0
  1070. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_product.html +100 -0
  1071. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_product_r.html +81 -0
  1072. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_r.html +77 -0
  1073. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_head.html +63 -0
  1074. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_insert.html +70 -0
  1075. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_nil.html +81 -0
  1076. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_pop_back.html +68 -0
  1077. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_pop_front.html +68 -0
  1078. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_push_back.html +76 -0
  1079. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_push_front.html +78 -0
  1080. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_remove.html +66 -0
  1081. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_replace.html +71 -0
  1082. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_rest_n.html +55 -0
  1083. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_reverse.html +68 -0
  1084. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_reverse_s.html +55 -0
  1085. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_size.html +55 -0
  1086. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_subseq.html +69 -0
  1087. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_tail.html +63 -0
  1088. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_array.html +55 -0
  1089. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_list.html +34 -0
  1090. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_tuple.html +55 -0
  1091. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_transform.html +93 -0
  1092. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_transform_s.html +79 -0
  1093. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/slot.html +60 -0
  1094. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/stringize.html +50 -0
  1095. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/sub.html +63 -0
  1096. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/sub_d.html +85 -0
  1097. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_eat.html +58 -0
  1098. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_elem.html +65 -0
  1099. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_enum.html +55 -0
  1100. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_insert.html +54 -0
  1101. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_insert_d.html +46 -0
  1102. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_back.html +48 -0
  1103. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_back_z.html +40 -0
  1104. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_front.html +47 -0
  1105. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_front_z.html +40 -0
  1106. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_push_back.html +39 -0
  1107. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_push_front.html +39 -0
  1108. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_rem.html +60 -0
  1109. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_rem_ctor.html +61 -0
  1110. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_remove.html +50 -0
  1111. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_remove_d.html +41 -0
  1112. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_replace.html +51 -0
  1113. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_replace_d.html +42 -0
  1114. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_reverse.html +61 -0
  1115. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_size.html +32 -0
  1116. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_array.html +50 -0
  1117. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_list.html +60 -0
  1118. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_seq.html +51 -0
  1119. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/update_counter.html +34 -0
  1120. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/value.html +37 -0
  1121. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_elem.html +42 -0
  1122. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_seq_to_seq.html +35 -0
  1123. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_size.html +33 -0
  1124. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_array.html +32 -0
  1125. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_list.html +31 -0
  1126. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_seq.html +32 -0
  1127. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_tuple.html +32 -0
  1128. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadics.html +30 -0
  1129. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while.html +116 -0
  1130. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while_d.html +117 -0
  1131. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while_d_macros.html +89 -0
  1132. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/wstringize.html +49 -0
  1133. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/xor.html +64 -0
  1134. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/styles.css +87 -0
  1135. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/syntax.html +307 -0
  1136. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms.html +23 -0
  1137. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms/evaluated.html +27 -0
  1138. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms/named_external.html +25 -0
  1139. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/title.html +25 -0
  1140. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/top.html +32 -0
  1141. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics.html +27 -0
  1142. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/evaluated_slots.html +157 -0
  1143. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/file_iteration.html +1044 -0
  1144. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/incompatible.html +140 -0
  1145. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/local_iteration.html +156 -0
  1146. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/motivation.html +119 -0
  1147. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/problems.html +135 -0
  1148. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/reentrancy.html +298 -0
  1149. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/techniques.html +350 -0
  1150. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/variadic_macros.html +262 -0
  1151. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor.hpp +19 -0
  1152. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic.hpp +25 -0
  1153. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/add.hpp +51 -0
  1154. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/dec.hpp +289 -0
  1155. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  1156. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/div.hpp +39 -0
  1157. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/inc.hpp +288 -0
  1158. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/mod.hpp +39 -0
  1159. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/mul.hpp +53 -0
  1160. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/sub.hpp +50 -0
  1161. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array.hpp +32 -0
  1162. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/data.hpp +28 -0
  1163. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/detail/get_data.hpp +55 -0
  1164. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/elem.hpp +29 -0
  1165. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/enum.hpp +33 -0
  1166. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/insert.hpp +55 -0
  1167. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/pop_back.hpp +37 -0
  1168. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/pop_front.hpp +38 -0
  1169. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/push_back.hpp +35 -0
  1170. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/push_front.hpp +35 -0
  1171. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/remove.hpp +54 -0
  1172. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/replace.hpp +49 -0
  1173. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/reverse.hpp +29 -0
  1174. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/size.hpp +28 -0
  1175. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_list.hpp +47 -0
  1176. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_seq.hpp +46 -0
  1177. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_tuple.hpp +33 -0
  1178. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/assert_msg.hpp +17 -0
  1179. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/cat.hpp +35 -0
  1180. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comma.hpp +17 -0
  1181. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comma_if.hpp +17 -0
  1182. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison.hpp +24 -0
  1183. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/equal.hpp +34 -0
  1184. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/greater.hpp +38 -0
  1185. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/greater_equal.hpp +38 -0
  1186. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/less.hpp +46 -0
  1187. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/less_equal.hpp +39 -0
  1188. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/not_equal.hpp +814 -0
  1189. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/config/config.hpp +106 -0
  1190. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/config/limits.hpp +30 -0
  1191. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control.hpp +22 -0
  1192. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/deduce_d.hpp +22 -0
  1193. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
  1194. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/edg/while.hpp +534 -0
  1195. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
  1196. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/while.hpp +536 -0
  1197. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/expr_if.hpp +30 -0
  1198. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/expr_iif.hpp +31 -0
  1199. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/if.hpp +30 -0
  1200. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/iif.hpp +34 -0
  1201. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/while.hpp +312 -0
  1202. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug.hpp +18 -0
  1203. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/assert.hpp +44 -0
  1204. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/error.hpp +33 -0
  1205. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/line.hpp +35 -0
  1206. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/dec.hpp +17 -0
  1207. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/auto_rec.hpp +293 -0
  1208. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/check.hpp +48 -0
  1209. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
  1210. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_binary.hpp +30 -0
  1211. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_nullary.hpp +30 -0
  1212. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_unary.hpp +30 -0
  1213. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/null.hpp +17 -0
  1214. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/split.hpp +35 -0
  1215. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/empty.hpp +17 -0
  1216. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum.hpp +17 -0
  1217. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params.hpp +17 -0
  1218. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
  1219. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
  1220. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_shifted.hpp +17 -0
  1221. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_shifted_params.hpp +17 -0
  1222. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/expand.hpp +17 -0
  1223. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/expr_if.hpp +17 -0
  1224. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities.hpp +23 -0
  1225. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/apply.hpp +34 -0
  1226. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/detail/is_empty.hpp +55 -0
  1227. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/empty.hpp +23 -0
  1228. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/expand.hpp +28 -0
  1229. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/identity.hpp +27 -0
  1230. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/intercept.hpp +277 -0
  1231. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_1.hpp +23 -0
  1232. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty.hpp +56 -0
  1233. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty_or_1.hpp +31 -0
  1234. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty_variadic.hpp +57 -0
  1235. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/overload.hpp +25 -0
  1236. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/for.hpp +17 -0
  1237. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/identity.hpp +17 -0
  1238. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/if.hpp +17 -0
  1239. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/inc.hpp +17 -0
  1240. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iterate.hpp +17 -0
  1241. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration.hpp +19 -0
  1242. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
  1243. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
  1244. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
  1245. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
  1246. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
  1247. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
  1248. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
  1249. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
  1250. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
  1251. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
  1252. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/finish.hpp +99 -0
  1253. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
  1254. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
  1255. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
  1256. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
  1257. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
  1258. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
  1259. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
  1260. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
  1261. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
  1262. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
  1263. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/local.hpp +812 -0
  1264. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
  1265. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/self.hpp +21 -0
  1266. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/start.hpp +99 -0
  1267. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/iterate.hpp +82 -0
  1268. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/local.hpp +26 -0
  1269. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/self.hpp +19 -0
  1270. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/library.hpp +37 -0
  1271. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/limits.hpp +17 -0
  1272. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list.hpp +37 -0
  1273. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/adt.hpp +73 -0
  1274. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/append.hpp +40 -0
  1275. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/at.hpp +39 -0
  1276. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/cat.hpp +42 -0
  1277. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
  1278. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
  1279. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
  1280. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/fold_left.hpp +279 -0
  1281. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/fold_right.hpp +277 -0
  1282. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/enum.hpp +41 -0
  1283. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/filter.hpp +54 -0
  1284. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/first_n.hpp +58 -0
  1285. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/fold_left.hpp +303 -0
  1286. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/fold_right.hpp +40 -0
  1287. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each.hpp +49 -0
  1288. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each_i.hpp +65 -0
  1289. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each_product.hpp +141 -0
  1290. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/rest_n.hpp +55 -0
  1291. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/reverse.hpp +40 -0
  1292. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/size.hpp +58 -0
  1293. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_array.hpp +155 -0
  1294. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_seq.hpp +32 -0
  1295. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_tuple.hpp +61 -0
  1296. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/transform.hpp +49 -0
  1297. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical.hpp +29 -0
  1298. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/and.hpp +30 -0
  1299. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitand.hpp +38 -0
  1300. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitnor.hpp +38 -0
  1301. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitor.hpp +38 -0
  1302. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitxor.hpp +38 -0
  1303. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bool.hpp +288 -0
  1304. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/compl.hpp +36 -0
  1305. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/nor.hpp +30 -0
  1306. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/not.hpp +30 -0
  1307. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/or.hpp +30 -0
  1308. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/xor.hpp +30 -0
  1309. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/max.hpp +17 -0
  1310. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/min.hpp +17 -0
  1311. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation.hpp +22 -0
  1312. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/comma.hpp +21 -0
  1313. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/comma_if.hpp +31 -0
  1314. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +48 -0
  1315. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/is_begin_parens.hpp +51 -0
  1316. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/paren.hpp +23 -0
  1317. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/paren_if.hpp +38 -0
  1318. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/remove_parens.hpp +39 -0
  1319. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat.hpp +17 -0
  1320. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_2nd.hpp +17 -0
  1321. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_3rd.hpp +17 -0
  1322. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to.hpp +17 -0
  1323. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
  1324. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
  1325. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition.hpp +32 -0
  1326. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/deduce_r.hpp +22 -0
  1327. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/deduce_z.hpp +22 -0
  1328. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
  1329. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
  1330. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/for.hpp +536 -0
  1331. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
  1332. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum.hpp +66 -0
  1333. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
  1334. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params.hpp +41 -0
  1335. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
  1336. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
  1337. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
  1338. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
  1339. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
  1340. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
  1341. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
  1342. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
  1343. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/for.hpp +324 -0
  1344. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/repeat.hpp +825 -0
  1345. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
  1346. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection.hpp +18 -0
  1347. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection/max.hpp +39 -0
  1348. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection/min.hpp +39 -0
  1349. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq.hpp +44 -0
  1350. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/cat.hpp +49 -0
  1351. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/binary_transform.hpp +47 -0
  1352. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/is_empty.hpp +49 -0
  1353. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/split.hpp +284 -0
  1354. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
  1355. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/elem.hpp +304 -0
  1356. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/enum.hpp +288 -0
  1357. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/filter.hpp +54 -0
  1358. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/first_n.hpp +30 -0
  1359. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/fold_left.hpp +1070 -0
  1360. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/fold_right.hpp +288 -0
  1361. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each.hpp +107 -0
  1362. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each_i.hpp +109 -0
  1363. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each_product.hpp +126 -0
  1364. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/insert.hpp +28 -0
  1365. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/pop_back.hpp +29 -0
  1366. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/pop_front.hpp +27 -0
  1367. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/push_back.hpp +19 -0
  1368. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/push_front.hpp +19 -0
  1369. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/remove.hpp +29 -0
  1370. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/replace.hpp +45 -0
  1371. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/rest_n.hpp +46 -0
  1372. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/reverse.hpp +39 -0
  1373. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/seq.hpp +44 -0
  1374. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/size.hpp +548 -0
  1375. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/subseq.hpp +28 -0
  1376. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_array.hpp +28 -0
  1377. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_list.hpp +41 -0
  1378. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_tuple.hpp +27 -0
  1379. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/transform.hpp +48 -0
  1380. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp +28 -0
  1381. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot.hpp +17 -0
  1382. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/counter.hpp +25 -0
  1383. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp +269 -0
  1384. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/def.hpp +49 -0
  1385. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/shared.hpp +247 -0
  1386. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot1.hpp +267 -0
  1387. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot2.hpp +267 -0
  1388. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot3.hpp +267 -0
  1389. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot4.hpp +267 -0
  1390. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot5.hpp +267 -0
  1391. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/slot.hpp +32 -0
  1392. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/stringize.hpp +33 -0
  1393. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple.hpp +35 -0
  1394. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/detail/is_single_return.hpp +28 -0
  1395. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/eat.hpp +115 -0
  1396. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/elem.hpp +201 -0
  1397. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/enum.hpp +22 -0
  1398. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/insert.hpp +37 -0
  1399. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/pop_back.hpp +64 -0
  1400. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/pop_front.hpp +65 -0
  1401. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/push_back.hpp +31 -0
  1402. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/push_front.hpp +32 -0
  1403. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/rem.hpp +149 -0
  1404. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/remove.hpp +64 -0
  1405. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/replace.hpp +37 -0
  1406. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/reverse.hpp +117 -0
  1407. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/size.hpp +28 -0
  1408. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_array.hpp +39 -0
  1409. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_list.hpp +118 -0
  1410. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_seq.hpp +119 -0
  1411. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic.hpp +23 -0
  1412. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/detail/is_single_return.hpp +28 -0
  1413. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/elem.hpp +94 -0
  1414. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/size.hpp +30 -0
  1415. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_array.hpp +32 -0
  1416. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_list.hpp +25 -0
  1417. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_seq.hpp +25 -0
  1418. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_tuple.hpp +24 -0
  1419. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/while.hpp +17 -0
  1420. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/wstringize.hpp +29 -0
  1421. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/index.html +18 -0
  1422. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/meta/libraries.json +15 -0
  1423. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/Jamfile.v2 +252 -0
  1424. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.c +12 -0
  1425. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.cpp +12 -0
  1426. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.cxx +82 -0
  1427. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.c +14 -0
  1428. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.cpp +14 -0
  1429. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.cxx +192 -0
  1430. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.c +13 -0
  1431. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.cpp +12 -0
  1432. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.cxx +45 -0
  1433. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/config_info.cpp +93 -0
  1434. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.c +12 -0
  1435. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.cpp +12 -0
  1436. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.cxx +40 -0
  1437. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.c +12 -0
  1438. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.cpp +12 -0
  1439. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.cxx +21 -0
  1440. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.c +12 -0
  1441. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.cpp +12 -0
  1442. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.cxx +55 -0
  1443. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.c +12 -0
  1444. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.cpp +12 -0
  1445. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.cxx +145 -0
  1446. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.c +12 -0
  1447. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.cpp +12 -0
  1448. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.cxx +25 -0
  1449. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.c +12 -0
  1450. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.cpp +12 -0
  1451. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.cxx +25 -0
  1452. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/iteration.cpp +33 -0
  1453. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/iteration.h +62 -0
  1454. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.c +14 -0
  1455. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.cpp +14 -0
  1456. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.cxx +91 -0
  1457. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.c +12 -0
  1458. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.cpp +12 -0
  1459. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.cxx +59 -0
  1460. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.c +14 -0
  1461. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.cpp +14 -0
  1462. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.cxx +54 -0
  1463. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/repetition.cpp +50 -0
  1464. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.c +12 -0
  1465. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.cpp +12 -0
  1466. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.cxx +21 -0
  1467. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.c +14 -0
  1468. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.cpp +14 -0
  1469. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.cxx +222 -0
  1470. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.c +12 -0
  1471. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.cpp +12 -0
  1472. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.cxx +53 -0
  1473. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/test.h +37 -0
  1474. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.c +14 -0
  1475. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.cpp +14 -0
  1476. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.cxx +266 -0
  1477. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple_elem_bug_test.cxx +38 -0
  1478. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.c +12 -0
  1479. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.cpp +12 -0
  1480. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.cxx +56 -0
  1481. data/ext/enterprise_script_service/msgpack/fuzz/CMakeLists.txt +43 -0
  1482. data/ext/enterprise_script_service/msgpack/fuzz/regression_runner.cpp +50 -0
  1483. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer.cpp +23 -0
  1484. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 +0 -0
  1485. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 +0 -0
  1486. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray +1 -0
  1487. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject +1 -0
  1488. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting +2 -0
  1489. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap +0 -0
  1490. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground +0 -0
  1491. data/ext/enterprise_script_service/msgpack/include/msgpack.hpp +4 -0
  1492. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/adaptor_base.hpp +1 -0
  1493. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp +1 -0
  1494. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/array_ref_decl.hpp +1 -0
  1495. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp +1 -0
  1496. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp +1 -0
  1497. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp +16 -0
  1498. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/byte.hpp +16 -0
  1499. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp +16 -0
  1500. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/optional.hpp +16 -0
  1501. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp +16 -0
  1502. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp +16 -0
  1503. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/define_decl.hpp +25 -24
  1504. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/ext_decl.hpp +1 -0
  1505. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/fixint_decl.hpp +1 -0
  1506. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/int_decl.hpp +1 -0
  1507. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/map_decl.hpp +1 -0
  1508. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp +1 -0
  1509. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/nil_decl.hpp +1 -0
  1510. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/raw_decl.hpp +1 -0
  1511. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp +1 -0
  1512. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp +2 -2
  1513. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp +2 -2
  1514. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/v4raw_decl.hpp +1 -0
  1515. data/ext/enterprise_script_service/msgpack/include/msgpack/cpp_config_decl.hpp +1 -0
  1516. data/ext/enterprise_script_service/msgpack/include/msgpack/create_object_visitor.hpp +17 -0
  1517. data/ext/enterprise_script_service/msgpack/include/msgpack/create_object_visitor_decl.hpp +16 -0
  1518. data/ext/enterprise_script_service/msgpack/include/msgpack/fbuffer_decl.hpp +1 -0
  1519. data/ext/enterprise_script_service/msgpack/include/msgpack/iterator_decl.hpp +2 -1
  1520. data/ext/enterprise_script_service/msgpack/include/msgpack/meta_decl.hpp +1 -0
  1521. data/ext/enterprise_script_service/msgpack/include/msgpack/null_visitor.hpp +17 -0
  1522. data/ext/enterprise_script_service/msgpack/include/msgpack/null_visitor_decl.hpp +16 -0
  1523. data/ext/enterprise_script_service/msgpack/include/msgpack/object_decl.hpp +1 -0
  1524. data/ext/enterprise_script_service/msgpack/include/msgpack/object_fwd.hpp +1 -0
  1525. data/ext/enterprise_script_service/msgpack/include/msgpack/object_fwd_decl.hpp +1 -0
  1526. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +4 -0
  1527. data/ext/enterprise_script_service/msgpack/include/msgpack/pack_decl.hpp +1 -0
  1528. data/ext/enterprise_script_service/msgpack/include/msgpack/pack_template.h +28 -0
  1529. data/ext/enterprise_script_service/msgpack/include/msgpack/parse.hpp +18 -0
  1530. data/ext/enterprise_script_service/msgpack/include/msgpack/parse_decl.hpp +16 -0
  1531. data/ext/enterprise_script_service/msgpack/include/msgpack/parse_return.hpp +1 -0
  1532. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture.h +1 -0
  1533. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/arm.h +11 -1
  1534. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/parisc.h +1 -1
  1535. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/ptx.h +44 -0
  1536. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler.h +1 -0
  1537. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/intel.h +17 -3
  1538. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/nvcc.h +60 -0
  1539. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/visualc.h +15 -1
  1540. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/hardware/simd/arm.h +3 -1
  1541. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h +3 -3
  1542. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/language.h +1 -0
  1543. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/language/cuda.h +52 -0
  1544. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/library/c.h +1 -0
  1545. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/library/c/cloudabi.h +53 -0
  1546. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/make.h +8 -0
  1547. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/android.h +2 -2
  1548. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/bsd/free.h +10 -3
  1549. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/bsd/open.h +80 -0
  1550. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/other/endian.h +1 -2
  1551. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/other/workaround.h +87 -0
  1552. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform.h +9 -2
  1553. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/cloudabi.h +43 -0
  1554. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/ios.h +58 -0
  1555. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw.h +4 -4
  1556. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw32.h +63 -0
  1557. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw64.h +63 -0
  1558. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_desktop.h +9 -3
  1559. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_phone.h +7 -2
  1560. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_runtime.h +13 -5
  1561. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_server.h +47 -0
  1562. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_store.h +11 -4
  1563. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_system.h +47 -0
  1564. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_uwp.h +60 -0
  1565. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/version.h +1 -1
  1566. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/version_number.h +20 -1
  1567. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/cat.hpp +1 -1
  1568. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/config/config.hpp +13 -11
  1569. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp +5 -6
  1570. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
  1571. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/to_list.hpp +12 -0
  1572. data/ext/enterprise_script_service/msgpack/include/msgpack/sbuffer_decl.hpp +1 -0
  1573. data/ext/enterprise_script_service/msgpack/include/msgpack/sysdep.h +31 -26
  1574. data/ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h +58 -0
  1575. data/ext/enterprise_script_service/msgpack/include/msgpack/type.hpp +13 -0
  1576. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack.hpp +1 -1
  1577. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_decl.hpp +1 -0
  1578. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_template.h +1 -0
  1579. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +6 -6
  1580. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp +48 -5
  1581. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/carray.hpp +5 -5
  1582. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp +1 -1
  1583. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp +1 -1
  1584. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp +8 -1
  1585. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp +8 -1
  1586. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp +215 -0
  1587. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp +1 -1
  1588. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp +1 -1
  1589. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp +2 -2
  1590. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp +2 -2
  1591. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp +74 -0
  1592. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp +109 -0
  1593. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp +90 -0
  1594. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp +86 -0
  1595. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +119 -0
  1596. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/deque.hpp +1 -1
  1597. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp +1088 -32
  1598. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp +32 -16
  1599. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp +32 -32
  1600. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp +45 -0
  1601. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp +4 -3
  1602. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp +4 -2
  1603. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp +1 -1
  1604. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/ext.hpp +3 -3
  1605. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/fixint.hpp +40 -24
  1606. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/int.hpp +55 -33
  1607. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/list.hpp +1 -1
  1608. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +7 -7
  1609. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/pair.hpp +1 -1
  1610. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/set.hpp +2 -2
  1611. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/string.hpp +1 -1
  1612. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp +2 -2
  1613. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp +2 -2
  1614. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +5 -5
  1615. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp +1 -1
  1616. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +9 -9
  1617. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +9 -9
  1618. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/cpp_config.hpp +4 -0
  1619. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/cpp_config_decl.hpp +6 -0
  1620. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp +41 -34
  1621. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp +8 -0
  1622. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp +25 -19
  1623. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp +8 -0
  1624. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object.hpp +768 -404
  1625. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_decl.hpp +8 -1
  1626. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_fwd.hpp +1 -1
  1627. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/unpack.hpp +5 -6
  1628. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/vrefbuffer.hpp +15 -3
  1629. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor.hpp +14 -7
  1630. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp +33 -0
  1631. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/null_visitor.hpp +5 -3
  1632. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/null_visitor_decl.hpp +29 -0
  1633. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/object_decl.hpp +4 -0
  1634. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/object_fwd.hpp +1 -1
  1635. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/pack_decl.hpp +1 -0
  1636. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse.hpp +41 -23
  1637. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse_decl.hpp +79 -0
  1638. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/unpack.hpp +7 -3
  1639. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/unpack_decl.hpp +8 -36
  1640. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse.hpp +5 -6
  1641. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse_decl.hpp +36 -0
  1642. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_unpack.hpp +13 -12
  1643. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_unpack_decl.hpp +71 -0
  1644. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp +58 -0
  1645. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp +52 -0
  1646. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp +36 -0
  1647. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp +42 -0
  1648. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp +39 -0
  1649. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/define_decl.hpp +23 -0
  1650. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp +31 -0
  1651. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp +31 -0
  1652. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp +43 -0
  1653. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp +32 -0
  1654. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp +31 -0
  1655. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp +59 -0
  1656. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp +34 -0
  1657. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp +43 -0
  1658. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/int_decl.hpp +54 -0
  1659. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/map_decl.hpp +33 -0
  1660. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp +21 -0
  1661. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp +42 -0
  1662. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp +33 -0
  1663. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp +35 -0
  1664. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp +34 -0
  1665. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/cpp_config_decl.hpp +84 -0
  1666. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp +33 -0
  1667. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp +31 -0
  1668. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp +31 -0
  1669. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/fbuffer_decl.hpp +32 -0
  1670. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/iterator_decl.hpp +33 -0
  1671. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/meta_decl.hpp +50 -0
  1672. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/null_visitor_decl.hpp +29 -0
  1673. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_decl.hpp +53 -0
  1674. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_fwd.hpp +70 -0
  1675. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_fwd_decl.hpp +75 -0
  1676. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/pack_decl.hpp +55 -0
  1677. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse.hpp +677 -0
  1678. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse_decl.hpp +49 -0
  1679. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse_return.hpp +35 -0
  1680. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/sbuffer_decl.hpp +33 -0
  1681. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +192 -0
  1682. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack_decl.hpp +304 -0
  1683. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp +29 -0
  1684. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_parse_decl.hpp +34 -0
  1685. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_unpack.hpp +97 -0
  1686. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_unpack_decl.hpp +65 -0
  1687. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/zbuffer_decl.hpp +29 -0
  1688. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/zone_decl.hpp +21 -0
  1689. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +1 -1
  1690. data/ext/enterprise_script_service/msgpack/include/msgpack/versioning.hpp +3 -1
  1691. data/ext/enterprise_script_service/msgpack/include/msgpack/vrefbuffer.h +1 -2
  1692. data/ext/enterprise_script_service/msgpack/include/msgpack/vrefbuffer_decl.hpp +1 -0
  1693. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_parse.hpp +15 -0
  1694. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_parse_decl.hpp +16 -0
  1695. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_unpack.hpp +16 -0
  1696. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_unpack_decl.hpp +16 -0
  1697. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer_decl.hpp +1 -0
  1698. data/ext/enterprise_script_service/msgpack/include/msgpack/zone_decl.hpp +1 -0
  1699. data/ext/enterprise_script_service/msgpack/makedist.sh +2 -0
  1700. data/ext/enterprise_script_service/msgpack/msgpack-config.cmake.in +23 -0
  1701. data/ext/enterprise_script_service/msgpack/src/objectc.c +1 -1
  1702. data/ext/enterprise_script_service/msgpack/src/unpack.c +8 -8
  1703. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +13 -1
  1704. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +13 -6
  1705. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +31 -0
  1706. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +3 -3
  1707. data/ext/enterprise_script_service/msgpack/test/cases.cpp +7 -0
  1708. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +8 -0
  1709. data/ext/enterprise_script_service/msgpack/test/json.cpp +1 -1
  1710. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +114 -6
  1711. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +188 -0
  1712. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +333 -0
  1713. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +11 -0
  1714. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +9 -3
  1715. data/ext/enterprise_script_service/msgpack/test/object.cpp +11 -2
  1716. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +72 -8
  1717. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +96 -0
  1718. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +1 -1
  1719. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +38 -13
  1720. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +350 -6
  1721. data/ext/enterprise_script_service/msgpack/update_version.sh +17 -0
  1722. data/lib/script_core/version.rb +1 -1
  1723. data/lib/tasks/script_core.rake +5 -2
  1724. data/script_core.gemspec +0 -1
  1725. data/spec/dummy/app/controllers/application_controller.rb +18 -0
  1726. data/spec/dummy/app/controllers/fields/choices_controller.rb +50 -0
  1727. data/spec/dummy/app/controllers/forms/formulas/playgrounds_controller.rb +2 -2
  1728. data/spec/dummy/app/controllers/playgrounds_controller.rb +18 -3
  1729. data/spec/dummy/app/controllers/time_zones_controller.rb +14 -0
  1730. data/spec/dummy/app/helpers/fields_helper.rb +0 -4
  1731. data/spec/dummy/app/lib/script_engine.rb +18 -7
  1732. data/spec/dummy/app/models/choice.rb +10 -0
  1733. data/spec/dummy/app/models/concerns/fields/helper.rb +23 -0
  1734. data/spec/dummy/app/models/concerns/fields/validations/acceptance.rb +1 -1
  1735. data/spec/dummy/app/models/concerns/fields/validations/confirmation.rb +1 -1
  1736. data/spec/dummy/app/models/concerns/fields/validations/exclusion.rb +2 -2
  1737. data/spec/dummy/app/models/concerns/fields/validations/format.rb +5 -7
  1738. data/spec/dummy/app/models/concerns/fields/validations/inclusion.rb +2 -2
  1739. data/spec/dummy/app/models/concerns/fields/validations/length.rb +2 -2
  1740. data/spec/dummy/app/models/concerns/fields/validations/numericality.rb +2 -2
  1741. data/spec/dummy/app/models/concerns/fields/validations/presence.rb +1 -1
  1742. data/spec/dummy/app/models/field.rb +8 -8
  1743. data/spec/dummy/app/models/field_options.rb +16 -8
  1744. data/spec/dummy/app/models/fields.rb +4 -0
  1745. data/spec/dummy/app/models/fields/boolean_field.rb +1 -1
  1746. data/spec/dummy/app/models/fields/date_field.rb +24 -0
  1747. data/spec/dummy/app/models/fields/datetime_field.rb +24 -0
  1748. data/spec/dummy/app/models/fields/multiple_nested_form_field.rb +8 -3
  1749. data/spec/dummy/app/models/fields/multiple_select_field.rb +42 -0
  1750. data/spec/dummy/app/models/fields/nested_form_field.rb +6 -5
  1751. data/spec/dummy/app/models/fields/options/date_field.rb +138 -0
  1752. data/spec/dummy/app/models/fields/options/datetime_field.rb +138 -0
  1753. data/spec/dummy/app/models/fields/options/multiple_select_field.rb +7 -0
  1754. data/spec/dummy/app/models/fields/options/select_field.rb +7 -0
  1755. data/spec/dummy/app/models/fields/select_field.rb +25 -0
  1756. data/spec/dummy/app/models/fields/validations/boolean_field.rb +1 -1
  1757. data/spec/dummy/app/models/fields/validations/date_field.rb +7 -0
  1758. data/spec/dummy/app/models/fields/validations/datetime_field.rb +7 -0
  1759. data/spec/dummy/app/models/fields/validations/decimal_field.rb +2 -2
  1760. data/spec/dummy/app/models/fields/validations/integer_field.rb +2 -2
  1761. data/spec/dummy/app/models/fields/validations/multiple_nested_form_field.rb +2 -2
  1762. data/spec/dummy/app/models/fields/validations/multiple_select_field.rb +8 -0
  1763. data/spec/dummy/app/models/fields/validations/nested_form_field.rb +1 -1
  1764. data/spec/dummy/app/models/fields/validations/select_field.rb +7 -0
  1765. data/spec/dummy/app/models/fields/validations/text_field.rb +3 -3
  1766. data/spec/dummy/app/models/metal_form.rb +4 -0
  1767. data/spec/dummy/app/models/non_configurable.rb +4 -0
  1768. data/spec/dummy/app/models/virtual_model.rb +8 -0
  1769. data/spec/dummy/app/presenters/fields/date_field_presenter.rb +53 -0
  1770. data/spec/dummy/app/presenters/fields/datetime_field_presenter.rb +53 -0
  1771. data/spec/dummy/app/presenters/fields/field_presenter.rb +3 -2
  1772. data/spec/dummy/app/presenters/fields/multiple_select_field_presenter.rb +37 -0
  1773. data/spec/dummy/app/presenters/fields/select_field_presenter.rb +26 -0
  1774. data/spec/dummy/app/views/_form_core/field_options/_date_field.html.erb +97 -0
  1775. data/spec/dummy/app/views/_form_core/field_options/_datetime_field.html.erb +97 -0
  1776. data/spec/dummy/app/views/_form_core/field_options/_multiple_select_field.html.erb +12 -0
  1777. data/spec/dummy/app/views/_form_core/field_options/_select_field.html.erb +12 -0
  1778. data/spec/dummy/app/views/_form_core/fields/_date_field.html.erb +9 -0
  1779. data/spec/dummy/app/views/_form_core/fields/_datetime_field.html.erb +9 -0
  1780. data/spec/dummy/app/views/_form_core/fields/_multiple_select_field.html.erb +18 -0
  1781. data/spec/dummy/app/views/_form_core/fields/_select_field.html.erb +17 -0
  1782. data/spec/dummy/app/views/fields/choices/_form.html.erb +34 -0
  1783. data/spec/dummy/app/views/fields/choices/edit.html.erb +6 -0
  1784. data/spec/dummy/app/views/fields/choices/index.html.erb +27 -0
  1785. data/spec/dummy/app/views/fields/choices/new.html.erb +6 -0
  1786. data/spec/dummy/app/views/forms/fields/index.html.erb +4 -1
  1787. data/spec/dummy/app/views/forms/formulas/playgrounds/create.html.erb +1 -1
  1788. data/spec/dummy/app/views/layouts/_nav.html.erb +22 -0
  1789. data/spec/dummy/app/views/nested_forms/fields/index.html.erb +10 -3
  1790. data/spec/dummy/app/views/playgrounds/_form.html.erb +1 -1
  1791. data/spec/dummy/config/application.rb +2 -1
  1792. data/spec/dummy/config/initializers/validates_timeliness.rb +42 -0
  1793. data/spec/dummy/config/routes.rb +3 -0
  1794. data/spec/dummy/db/migrate/20180916202025_create_forms.form_core.rb +1 -0
  1795. data/spec/dummy/db/migrate/20180916202122_create_choices.rb +12 -0
  1796. data/spec/dummy/db/migrate/20180916202123_add_position_to_choices.rb +9 -0
  1797. data/spec/dummy/db/schema.rb +19 -5
  1798. data/spec/dummy/lib/monkey_patches/big_decimal.rb +7 -3
  1799. data/spec/dummy/lib/monkey_patches/date.rb +12 -0
  1800. data/spec/dummy/lib/monkey_patches/time.rb +12 -0
  1801. data/spec/dummy/mruby/engine.gembox +1 -0
  1802. data/spec/dummy/mruby/lib/core_ext.rb +64 -2
  1803. data/spec/dummy/mruby/lib/input.rb +16 -4
  1804. data/spec/dummy/mruby/lib/io.rb +4 -3
  1805. data/spec/dummy/mruby/lib/output.rb +2 -28
  1806. data/spec/dummy/mruby/lib/script_kernel.rb +8 -7
  1807. data/spec/script_core_spec.rb +2 -2
  1808. data/tests/googletest/.clang-format +4 -0
  1809. data/tests/googletest/.gitignore +82 -0
  1810. data/tests/googletest/.travis.yml +68 -29
  1811. data/tests/googletest/BUILD.bazel +179 -0
  1812. data/tests/googletest/CMakeLists.txt +21 -4
  1813. data/tests/googletest/CONTRIBUTING.md +161 -0
  1814. data/tests/googletest/LICENSE +28 -0
  1815. data/tests/googletest/Makefile.am +12 -0
  1816. data/tests/googletest/README.md +28 -41
  1817. data/tests/googletest/WORKSPACE +10 -0
  1818. data/tests/googletest/appveyor.yml +118 -35
  1819. data/tests/googletest/ci/build-linux-autotools.sh +44 -0
  1820. data/tests/googletest/ci/build-linux-bazel.sh +36 -0
  1821. data/tests/googletest/ci/build-platformio.sh +2 -0
  1822. data/tests/googletest/ci/env-linux.sh +41 -0
  1823. data/tests/googletest/ci/env-osx.sh +47 -0
  1824. data/tests/googletest/ci/get-nprocessors.sh +48 -0
  1825. data/tests/googletest/ci/install-linux.sh +49 -0
  1826. data/tests/googletest/ci/install-osx.sh +40 -0
  1827. data/tests/googletest/ci/install-platformio.sh +5 -0
  1828. data/tests/googletest/ci/log-config.sh +51 -0
  1829. data/tests/googletest/ci/travis.sh +44 -0
  1830. data/tests/googletest/configure.ac +16 -0
  1831. data/tests/googletest/googlemock/CMakeLists.txt +78 -55
  1832. data/tests/googletest/googlemock/Makefile.am +6 -8
  1833. data/tests/googletest/googlemock/README.md +33 -73
  1834. data/tests/googletest/googlemock/cmake/gmock.pc.in +11 -0
  1835. data/tests/googletest/googlemock/cmake/gmock_main.pc.in +11 -0
  1836. data/tests/googletest/googlemock/configure.ac +6 -18
  1837. data/tests/googletest/googlemock/docs/CheatSheet.md +126 -99
  1838. data/tests/googletest/googlemock/docs/CookBook.md +271 -286
  1839. data/tests/googletest/googlemock/docs/DesignDoc.md +29 -27
  1840. data/tests/googletest/googlemock/docs/Documentation.md +7 -4
  1841. data/tests/googletest/googlemock/docs/ForDummies.md +41 -33
  1842. data/tests/googletest/googlemock/docs/FrequentlyAskedQuestions.md +28 -29
  1843. data/tests/googletest/googlemock/include/gmock/gmock-actions.h +232 -240
  1844. data/tests/googletest/googlemock/include/gmock/gmock-cardinalities.h +12 -6
  1845. data/tests/googletest/googlemock/include/gmock/gmock-function-mocker.h +218 -0
  1846. data/tests/googletest/googlemock/include/gmock/gmock-generated-actions.h +304 -796
  1847. data/tests/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +18 -184
  1848. data/tests/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +330 -673
  1849. data/tests/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +77 -141
  1850. data/tests/googletest/googlemock/include/gmock/gmock-generated-matchers.h +293 -1372
  1851. data/tests/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +22 -345
  1852. data/tests/googletest/googlemock/include/gmock/gmock-matchers.h +1382 -1218
  1853. data/tests/googletest/googlemock/include/gmock/gmock-more-actions.h +12 -96
  1854. data/tests/googletest/googlemock/include/gmock/gmock-more-matchers.h +39 -5
  1855. data/tests/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
  1856. data/tests/googletest/googlemock/include/gmock/gmock-spec-builders.h +362 -228
  1857. data/tests/googletest/googlemock/include/gmock/gmock.h +10 -3
  1858. data/tests/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
  1859. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +2 -0
  1860. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +3 -1
  1861. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +5 -8
  1862. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +3 -10
  1863. data/tests/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +114 -54
  1864. data/tests/googletest/googlemock/include/gmock/internal/gmock-port.h +13 -17
  1865. data/tests/googletest/googlemock/include/gmock/internal/gmock-pp.h +317 -0
  1866. data/tests/googletest/googlemock/make/Makefile +23 -7
  1867. data/tests/googletest/googlemock/msvc/2010/gmock.sln +14 -0
  1868. data/tests/googletest/googlemock/msvc/2010/gmock.vcxproj +69 -6
  1869. data/tests/googletest/googlemock/msvc/2010/gmock_config.props +2 -2
  1870. data/tests/googletest/googlemock/msvc/2010/gmock_main.vcxproj +69 -6
  1871. data/tests/googletest/googlemock/msvc/2010/gmock_test.vcxproj +83 -8
  1872. data/tests/googletest/googlemock/msvc/2015/gmock.sln +14 -0
  1873. data/tests/googletest/googlemock/msvc/2015/gmock.vcxproj +63 -2
  1874. data/tests/googletest/googlemock/msvc/2015/gmock_main.vcxproj +63 -2
  1875. data/tests/googletest/googlemock/msvc/2015/gmock_test.vcxproj +76 -3
  1876. data/tests/googletest/googlemock/scripts/fuse_gmock_files.py +1 -1
  1877. data/tests/googletest/googlemock/scripts/generator/README +4 -5
  1878. data/tests/googletest/googlemock/scripts/generator/cpp/ast.py +6 -3
  1879. data/tests/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +18 -0
  1880. data/tests/googletest/googlemock/scripts/upload.py +4 -4
  1881. data/tests/googletest/googlemock/src/gmock-all.cc +1 -2
  1882. data/tests/googletest/googlemock/src/gmock-cardinalities.cc +7 -8
  1883. data/tests/googletest/googlemock/src/gmock-internal-utils.cc +38 -12
  1884. data/tests/googletest/googlemock/src/gmock-matchers.cc +127 -163
  1885. data/tests/googletest/googlemock/src/gmock-spec-builders.cc +150 -86
  1886. data/tests/googletest/googlemock/src/gmock.cc +41 -11
  1887. data/tests/googletest/googlemock/src/gmock_main.cc +14 -3
  1888. data/tests/googletest/googlemock/test/BUILD.bazel +106 -0
  1889. data/tests/googletest/googlemock/test/gmock-actions_test.cc +370 -328
  1890. data/tests/googletest/googlemock/test/gmock-cardinalities_test.cc +5 -6
  1891. data/tests/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
  1892. data/tests/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
  1893. data/tests/googletest/googlemock/test/gmock-function-mocker_test.cc +660 -0
  1894. data/tests/googletest/googlemock/test/gmock-generated-actions_test.cc +137 -301
  1895. data/tests/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +80 -43
  1896. data/tests/googletest/googlemock/test/gmock-generated-matchers_test.cc +239 -201
  1897. data/tests/googletest/googlemock/test/gmock-internal-utils_test.cc +126 -68
  1898. data/tests/googletest/googlemock/test/gmock-matchers_test.cc +1811 -674
  1899. data/tests/googletest/googlemock/test/gmock-more-actions_test.cc +162 -171
  1900. data/tests/googletest/googlemock/test/gmock-nice-strict_test.cc +121 -45
  1901. data/tests/googletest/googlemock/test/gmock-port_test.cc +1 -2
  1902. data/tests/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
  1903. data/tests/googletest/googlemock/test/gmock-pp_test.cc +73 -0
  1904. data/tests/googletest/googlemock/test/gmock-spec-builders_test.cc +152 -23
  1905. data/tests/googletest/googlemock/test/gmock_all_test.cc +1 -3
  1906. data/tests/googletest/googlemock/test/gmock_ex_test.cc +4 -5
  1907. data/tests/googletest/googlemock/test/gmock_leak_test.py +0 -4
  1908. data/tests/googletest/googlemock/test/gmock_leak_test_.cc +1 -2
  1909. data/tests/googletest/googlemock/test/gmock_link2_test.cc +2 -3
  1910. data/tests/googletest/googlemock/test/gmock_link_test.cc +2 -3
  1911. data/tests/googletest/googlemock/test/gmock_link_test.h +45 -24
  1912. data/tests/googletest/googlemock/test/gmock_output_test.py +10 -9
  1913. data/tests/googletest/googlemock/test/gmock_output_test_.cc +21 -3
  1914. data/tests/googletest/googlemock/test/gmock_output_test_golden.txt +8 -1
  1915. data/tests/googletest/googlemock/test/gmock_stress_test.cc +7 -89
  1916. data/tests/googletest/googlemock/test/gmock_test.cc +57 -96
  1917. data/tests/googletest/googlemock/test/gmock_test_utils.py +5 -9
  1918. data/tests/googletest/googletest/CMakeLists.txt +122 -83
  1919. data/tests/googletest/googletest/Makefile.am +103 -75
  1920. data/tests/googletest/googletest/README.md +236 -189
  1921. data/tests/googletest/googletest/cmake/Config.cmake.in +9 -0
  1922. data/tests/googletest/googletest/cmake/gtest.pc.in +10 -0
  1923. data/tests/googletest/googletest/cmake/gtest_main.pc.in +11 -0
  1924. data/tests/googletest/googletest/cmake/internal_utils.cmake +158 -58
  1925. data/tests/googletest/googletest/cmake/libgtest.la.in +21 -0
  1926. data/tests/googletest/googletest/configure.ac +2 -2
  1927. data/tests/googletest/googletest/docs/Pkgconfig.md +146 -0
  1928. data/tests/googletest/googletest/docs/PumpManual.md +5 -5
  1929. data/tests/googletest/googletest/docs/XcodeGuide.md +9 -9
  1930. data/tests/googletest/googletest/docs/advanced.md +2523 -0
  1931. data/tests/googletest/googletest/docs/faq.md +770 -0
  1932. data/tests/googletest/googletest/docs/primer.md +564 -0
  1933. data/tests/googletest/googletest/docs/samples.md +22 -0
  1934. data/tests/googletest/googletest/include/gtest/gtest-death-test.h +60 -11
  1935. data/tests/googletest/googletest/include/gtest/gtest-matchers.h +741 -0
  1936. data/tests/googletest/googletest/include/gtest/gtest-message.h +12 -44
  1937. data/tests/googletest/googletest/include/gtest/gtest-param-test.h +139 -1080
  1938. data/tests/googletest/googletest/include/gtest/gtest-printers.h +202 -268
  1939. data/tests/googletest/googletest/include/gtest/gtest-spi.h +13 -7
  1940. data/tests/googletest/googletest/include/gtest/gtest-test-part.h +21 -16
  1941. data/tests/googletest/googletest/include/gtest/gtest-typed-test.h +157 -84
  1942. data/tests/googletest/googletest/include/gtest/gtest.h +494 -277
  1943. data/tests/googletest/googletest/include/gtest/gtest_pred_impl.h +41 -40
  1944. data/tests/googletest/googletest/include/gtest/gtest_prod.h +10 -7
  1945. data/tests/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
  1946. data/tests/googletest/googletest/include/gtest/internal/custom/gtest-port.h +1 -33
  1947. data/tests/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +2 -2
  1948. data/tests/googletest/googletest/include/gtest/internal/custom/gtest.h +1 -5
  1949. data/tests/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +80 -95
  1950. data/tests/googletest/googletest/include/gtest/internal/gtest-filepath.h +8 -3
  1951. data/tests/googletest/googletest/include/gtest/internal/gtest-internal.h +415 -231
  1952. data/tests/googletest/googletest/include/gtest/internal/gtest-param-util.h +323 -174
  1953. data/tests/googletest/googletest/include/gtest/internal/gtest-port-arch.h +19 -5
  1954. data/tests/googletest/googletest/include/gtest/internal/gtest-port.h +289 -549
  1955. data/tests/googletest/googletest/include/gtest/internal/gtest-string.h +4 -4
  1956. data/tests/googletest/googletest/include/gtest/internal/gtest-type-util.h +23 -7
  1957. data/tests/googletest/googletest/include/gtest/internal/gtest-type-util.h.pump +24 -7
  1958. data/tests/googletest/googletest/make/Makefile +13 -7
  1959. data/tests/googletest/googletest/msvc/2010/gtest-md.sln +55 -0
  1960. data/tests/googletest/googletest/msvc/2010/gtest-md.vcxproj +149 -0
  1961. data/tests/googletest/googletest/msvc/2010/gtest-md.vcxproj.filters +18 -0
  1962. data/tests/googletest/googletest/msvc/2010/gtest.sln +55 -0
  1963. data/tests/googletest/googletest/msvc/2010/gtest.vcxproj +149 -0
  1964. data/tests/googletest/googletest/msvc/2010/gtest.vcxproj.filters +18 -0
  1965. data/tests/googletest/googletest/msvc/2010/gtest_main-md.vcxproj +154 -0
  1966. data/tests/googletest/googletest/msvc/2010/gtest_main-md.vcxproj.filters +18 -0
  1967. data/tests/googletest/googletest/msvc/2010/gtest_main.vcxproj +162 -0
  1968. data/tests/googletest/googletest/msvc/2010/gtest_main.vcxproj.filters +18 -0
  1969. data/tests/googletest/googletest/msvc/2010/gtest_prod_test-md.vcxproj +199 -0
  1970. data/tests/googletest/googletest/msvc/2010/gtest_prod_test-md.vcxproj.filters +26 -0
  1971. data/tests/googletest/googletest/msvc/2010/gtest_prod_test.vcxproj +191 -0
  1972. data/tests/googletest/googletest/msvc/2010/gtest_prod_test.vcxproj.filters +26 -0
  1973. data/tests/googletest/googletest/msvc/2010/gtest_unittest-md.vcxproj +188 -0
  1974. data/tests/googletest/googletest/msvc/2010/gtest_unittest-md.vcxproj.filters +18 -0
  1975. data/tests/googletest/googletest/msvc/2010/gtest_unittest.vcxproj +180 -0
  1976. data/tests/googletest/googletest/msvc/2010/gtest_unittest.vcxproj.filters +18 -0
  1977. data/tests/googletest/googletest/samples/prime_tables.h +13 -10
  1978. data/tests/googletest/googletest/samples/sample1.cc +1 -3
  1979. data/tests/googletest/googletest/samples/sample1.h +0 -2
  1980. data/tests/googletest/googletest/samples/sample10_unittest.cc +4 -9
  1981. data/tests/googletest/googletest/samples/sample1_unittest.cc +2 -4
  1982. data/tests/googletest/googletest/samples/sample2.cc +1 -3
  1983. data/tests/googletest/googletest/samples/sample2.h +4 -8
  1984. data/tests/googletest/googletest/samples/sample2_unittest.cc +5 -7
  1985. data/tests/googletest/googletest/samples/sample3-inl.h +9 -9
  1986. data/tests/googletest/googletest/samples/sample3_unittest.cc +13 -15
  1987. data/tests/googletest/googletest/samples/sample4.cc +10 -2
  1988. data/tests/googletest/googletest/samples/sample4.h +3 -3
  1989. data/tests/googletest/googletest/samples/sample4_unittest.cc +11 -3
  1990. data/tests/googletest/googletest/samples/sample5_unittest.cc +11 -14
  1991. data/tests/googletest/googletest/samples/sample6_unittest.cc +12 -12
  1992. data/tests/googletest/googletest/samples/sample7_unittest.cc +14 -27
  1993. data/tests/googletest/googletest/samples/sample8_unittest.cc +20 -39
  1994. data/tests/googletest/googletest/samples/sample9_unittest.cc +6 -10
  1995. data/tests/googletest/googletest/scripts/fuse_gtest_files.py +1 -1
  1996. data/tests/googletest/googletest/scripts/gen_gtest_pred_impl.py +10 -10
  1997. data/tests/googletest/googletest/scripts/upload.py +5 -5
  1998. data/tests/googletest/googletest/src/gtest-all.cc +3 -3
  1999. data/tests/googletest/googletest/src/gtest-death-test.cc +417 -121
  2000. data/tests/googletest/googletest/src/gtest-filepath.cc +15 -23
  2001. data/tests/googletest/googletest/src/gtest-internal-inl.h +145 -122
  2002. data/tests/googletest/googletest/src/gtest-matchers.cc +97 -0
  2003. data/tests/googletest/googletest/src/gtest-port.cc +263 -129
  2004. data/tests/googletest/googletest/src/gtest-printers.cc +92 -24
  2005. data/tests/googletest/googletest/src/gtest-test-part.cc +13 -19
  2006. data/tests/googletest/googletest/src/gtest-typed-test.cc +5 -5
  2007. data/tests/googletest/googletest/src/gtest.cc +1469 -742
  2008. data/tests/googletest/googletest/src/gtest_main.cc +12 -3
  2009. data/tests/googletest/googletest/test/BUILD.bazel +518 -0
  2010. data/tests/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
  2011. data/tests/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
  2012. data/tests/googletest/googletest/test/googletest-catch-exceptions-test.py +231 -0
  2013. data/tests/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
  2014. data/tests/googletest/googletest/test/googletest-color-test.py +127 -0
  2015. data/tests/googletest/googletest/test/googletest-color-test_.cc +62 -0
  2016. data/tests/googletest/googletest/test/googletest-death-test-test.cc +1458 -0
  2017. data/tests/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
  2018. data/tests/googletest/googletest/test/googletest-env-var-test.py +117 -0
  2019. data/tests/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
  2020. data/tests/googletest/googletest/test/googletest-filepath-test.cc +649 -0
  2021. data/tests/googletest/googletest/test/googletest-filter-unittest.py +639 -0
  2022. data/tests/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
  2023. data/tests/googletest/googletest/test/googletest-json-outfiles-test.py +185 -0
  2024. data/tests/googletest/googletest/test/googletest-json-output-unittest.py +758 -0
  2025. data/tests/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
  2026. data/tests/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
  2027. data/tests/googletest/googletest/test/googletest-listener-test.cc +407 -0
  2028. data/tests/googletest/googletest/test/googletest-message-test.cc +158 -0
  2029. data/tests/googletest/googletest/test/googletest-options-test.cc +216 -0
  2030. data/tests/googletest/googletest/test/googletest-output-test-golden-lin.txt +1128 -0
  2031. data/tests/googletest/googletest/test/googletest-output-test.py +346 -0
  2032. data/tests/googletest/googletest/test/googletest-output-test_.cc +1145 -0
  2033. data/tests/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
  2034. data/tests/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
  2035. data/tests/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
  2036. data/tests/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
  2037. data/tests/googletest/googletest/test/googletest-param-test-test.cc +1055 -0
  2038. data/tests/googletest/googletest/test/googletest-param-test-test.h +51 -0
  2039. data/tests/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
  2040. data/tests/googletest/googletest/test/googletest-port-test.cc +1290 -0
  2041. data/tests/googletest/googletest/test/googletest-printers-test.cc +1561 -0
  2042. data/tests/googletest/googletest/test/googletest-shuffle-test.py +323 -0
  2043. data/tests/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
  2044. data/tests/googletest/googletest/test/googletest-test-part-test.cc +230 -0
  2045. data/tests/googletest/googletest/test/googletest-test2_test.cc +61 -0
  2046. data/tests/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
  2047. data/tests/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
  2048. data/tests/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
  2049. data/tests/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
  2050. data/tests/googletest/googletest/test/gtest-typed-test2_test.cc +3 -4
  2051. data/tests/googletest/googletest/test/gtest-typed-test_test.cc +144 -63
  2052. data/tests/googletest/googletest/test/gtest-typed-test_test.h +4 -5
  2053. data/tests/googletest/googletest/test/gtest-unittest-api_test.cc +122 -123
  2054. data/tests/googletest/googletest/test/gtest_all_test.cc +10 -11
  2055. data/tests/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
  2056. data/tests/googletest/googletest/test/gtest_environment_test.cc +3 -7
  2057. data/tests/googletest/googletest/test/gtest_help_test.py +1 -3
  2058. data/tests/googletest/googletest/test/gtest_help_test_.cc +1 -2
  2059. data/tests/googletest/googletest/test/gtest_json_test_utils.py +60 -0
  2060. data/tests/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
  2061. data/tests/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
  2062. data/tests/googletest/googletest/test/gtest_main_unittest.cc +3 -4
  2063. data/tests/googletest/googletest/test/gtest_no_test_unittest.cc +0 -2
  2064. data/tests/googletest/googletest/test/gtest_pred_impl_unittest.cc +11 -11
  2065. data/tests/googletest/googletest/test/gtest_premature_exit_test.cc +3 -4
  2066. data/tests/googletest/googletest/test/gtest_prod_test.cc +3 -4
  2067. data/tests/googletest/googletest/test/gtest_repeat_test.cc +8 -28
  2068. data/tests/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
  2069. data/tests/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
  2070. data/tests/googletest/googletest/test/gtest_skip_test.cc +55 -0
  2071. data/tests/googletest/googletest/test/gtest_sole_header_test.cc +1 -2
  2072. data/tests/googletest/googletest/test/gtest_stress_test.cc +3 -11
  2073. data/tests/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
  2074. data/tests/googletest/googletest/test/gtest_test_utils.py +15 -22
  2075. data/tests/googletest/googletest/test/gtest_testbridge_test.py +63 -0
  2076. data/tests/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
  2077. data/tests/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +2 -4
  2078. data/tests/googletest/googletest/test/gtest_unittest.cc +770 -924
  2079. data/tests/googletest/googletest/test/gtest_xml_outfile1_test_.cc +2 -8
  2080. data/tests/googletest/googletest/test/gtest_xml_outfile2_test_.cc +2 -8
  2081. data/tests/googletest/googletest/test/gtest_xml_outfiles_test.py +14 -11
  2082. data/tests/googletest/googletest/test/gtest_xml_output_unittest.py +132 -51
  2083. data/tests/googletest/googletest/test/gtest_xml_output_unittest_.cc +21 -14
  2084. data/tests/googletest/googletest/test/gtest_xml_test_utils.py +24 -22
  2085. data/tests/googletest/googletest/test/production.cc +2 -3
  2086. data/tests/googletest/googletest/test/production.h +2 -3
  2087. data/tests/googletest/googletest/xcode/Config/DebugProject.xcconfig +1 -1
  2088. data/tests/googletest/googletest/xcode/Config/FrameworkTarget.xcconfig +1 -1
  2089. data/tests/googletest/googletest/xcode/Config/General.xcconfig +3 -3
  2090. data/tests/googletest/googletest/xcode/Config/ReleaseProject.xcconfig +1 -1
  2091. data/tests/googletest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +1 -1
  2092. data/tests/googletest/googletest/xcode/Scripts/versiongenerate.py +4 -4
  2093. data/tests/googletest/googletest/xcode/gtest.xcodeproj/project.pbxproj +51 -16
  2094. data/tests/googletest/library.json +59 -0
  2095. data/tests/googletest/platformio.ini +31 -0
  2096. metadata +1391 -137
  2097. data/ext/enterprise_script_service/libseccomp/README +0 -65
  2098. data/ext/enterprise_script_service/libseccomp/SUBMITTING_PATCHES +0 -123
  2099. data/ext/enterprise_script_service/mruby/MITL +0 -20
  2100. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +0 -30
  2101. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/gc_filedes.sh +0 -4
  2102. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/init_mrbtest.c +0 -38
  2103. data/ext/enterprise_script_service/mruby/mrblib/float.rb +0 -9
  2104. data/ext/enterprise_script_service/mruby/src/ext/.gitkeep +0 -0
  2105. data/ext/enterprise_script_service/mruby/test/report.rb +0 -4
  2106. data/spec/dummy/app/models/fields/options/boolean_field.rb +0 -6
  2107. data/spec/dummy/app/models/fields/options/multiple_nested_form_field.rb +0 -6
  2108. data/spec/dummy/app/models/fields/options/nested_form_field.rb +0 -6
  2109. data/tests/googletest/googlemock/CHANGES +0 -126
  2110. data/tests/googletest/googlemock/docs/DevGuide.md +0 -132
  2111. data/tests/googletest/googlemock/docs/v1_5/CheatSheet.md +0 -525
  2112. data/tests/googletest/googlemock/docs/v1_5/CookBook.md +0 -3250
  2113. data/tests/googletest/googlemock/docs/v1_5/Documentation.md +0 -11
  2114. data/tests/googletest/googlemock/docs/v1_5/ForDummies.md +0 -439
  2115. data/tests/googletest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +0 -624
  2116. data/tests/googletest/googlemock/docs/v1_6/CheatSheet.md +0 -534
  2117. data/tests/googletest/googlemock/docs/v1_6/CookBook.md +0 -3342
  2118. data/tests/googletest/googlemock/docs/v1_6/Documentation.md +0 -12
  2119. data/tests/googletest/googlemock/docs/v1_6/ForDummies.md +0 -439
  2120. data/tests/googletest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +0 -628
  2121. data/tests/googletest/googlemock/docs/v1_7/CheatSheet.md +0 -556
  2122. data/tests/googletest/googlemock/docs/v1_7/CookBook.md +0 -3432
  2123. data/tests/googletest/googlemock/docs/v1_7/Documentation.md +0 -12
  2124. data/tests/googletest/googlemock/docs/v1_7/ForDummies.md +0 -439
  2125. data/tests/googletest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +0 -628
  2126. data/tests/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h +0 -397
  2127. data/tests/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +0 -161
  2128. data/tests/googletest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +0 -279
  2129. data/tests/googletest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +0 -136
  2130. data/tests/googletest/googlemock/test/gmock-generated-internal-utils_test.cc +0 -127
  2131. data/tests/googletest/googletest/.gitignore +0 -2
  2132. data/tests/googletest/googletest/CHANGES +0 -157
  2133. data/tests/googletest/googletest/build-aux/.keep +0 -0
  2134. data/tests/googletest/googletest/docs/AdvancedGuide.md +0 -2182
  2135. data/tests/googletest/googletest/docs/DevGuide.md +0 -126
  2136. data/tests/googletest/googletest/docs/Documentation.md +0 -14
  2137. data/tests/googletest/googletest/docs/FAQ.md +0 -1087
  2138. data/tests/googletest/googletest/docs/Primer.md +0 -502
  2139. data/tests/googletest/googletest/docs/Samples.md +0 -14
  2140. data/tests/googletest/googletest/docs/V1_5_AdvancedGuide.md +0 -2096
  2141. data/tests/googletest/googletest/docs/V1_5_Documentation.md +0 -12
  2142. data/tests/googletest/googletest/docs/V1_5_FAQ.md +0 -886
  2143. data/tests/googletest/googletest/docs/V1_5_Primer.md +0 -497
  2144. data/tests/googletest/googletest/docs/V1_5_PumpManual.md +0 -177
  2145. data/tests/googletest/googletest/docs/V1_5_XcodeGuide.md +0 -93
  2146. data/tests/googletest/googletest/docs/V1_6_AdvancedGuide.md +0 -2178
  2147. data/tests/googletest/googletest/docs/V1_6_Documentation.md +0 -14
  2148. data/tests/googletest/googletest/docs/V1_6_FAQ.md +0 -1038
  2149. data/tests/googletest/googletest/docs/V1_6_Primer.md +0 -501
  2150. data/tests/googletest/googletest/docs/V1_6_PumpManual.md +0 -177
  2151. data/tests/googletest/googletest/docs/V1_6_Samples.md +0 -14
  2152. data/tests/googletest/googletest/docs/V1_6_XcodeGuide.md +0 -93
  2153. data/tests/googletest/googletest/docs/V1_7_AdvancedGuide.md +0 -2181
  2154. data/tests/googletest/googletest/docs/V1_7_Documentation.md +0 -14
  2155. data/tests/googletest/googletest/docs/V1_7_FAQ.md +0 -1082
  2156. data/tests/googletest/googletest/docs/V1_7_Primer.md +0 -501
  2157. data/tests/googletest/googletest/docs/V1_7_PumpManual.md +0 -177
  2158. data/tests/googletest/googletest/docs/V1_7_Samples.md +0 -14
  2159. data/tests/googletest/googletest/docs/V1_7_XcodeGuide.md +0 -93
  2160. data/tests/googletest/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  2161. data/tests/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  2162. data/tests/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  2163. data/tests/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  2164. data/tests/googletest/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  2165. data/tests/googletest/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  2166. data/tests/googletest/googletest/msvc/gtest-md.sln +0 -45
  2167. data/tests/googletest/googletest/msvc/gtest-md.vcproj +0 -126
  2168. data/tests/googletest/googletest/msvc/gtest.sln +0 -45
  2169. data/tests/googletest/googletest/msvc/gtest.vcproj +0 -126
  2170. data/tests/googletest/googletest/msvc/gtest_main-md.vcproj +0 -129
  2171. data/tests/googletest/googletest/msvc/gtest_main.vcproj +0 -129
  2172. data/tests/googletest/googletest/msvc/gtest_prod_test-md.vcproj +0 -164
  2173. data/tests/googletest/googletest/msvc/gtest_prod_test.vcproj +0 -164
  2174. data/tests/googletest/googletest/msvc/gtest_unittest-md.vcproj +0 -147
  2175. data/tests/googletest/googletest/msvc/gtest_unittest.vcproj +0 -147
  2176. data/tests/googletest/googletest/test/gtest-death-test_ex_test.cc +0 -93
  2177. data/tests/googletest/googletest/test/gtest-death-test_test.cc +0 -1427
  2178. data/tests/googletest/googletest/test/gtest-filepath_test.cc +0 -662
  2179. data/tests/googletest/googletest/test/gtest-linked_ptr_test.cc +0 -154
  2180. data/tests/googletest/googletest/test/gtest-listener_test.cc +0 -311
  2181. data/tests/googletest/googletest/test/gtest-message_test.cc +0 -159
  2182. data/tests/googletest/googletest/test/gtest-options_test.cc +0 -215
  2183. data/tests/googletest/googletest/test/gtest-param-test2_test.cc +0 -65
  2184. data/tests/googletest/googletest/test/gtest-param-test_test.cc +0 -1055
  2185. data/tests/googletest/googletest/test/gtest-param-test_test.h +0 -57
  2186. data/tests/googletest/googletest/test/gtest-port_test.cc +0 -1304
  2187. data/tests/googletest/googletest/test/gtest-printers_test.cc +0 -1635
  2188. data/tests/googletest/googletest/test/gtest-test-part_test.cc +0 -208
  2189. data/tests/googletest/googletest/test/gtest-tuple_test.cc +0 -320
  2190. data/tests/googletest/googletest/test/gtest_break_on_failure_unittest.py +0 -212
  2191. data/tests/googletest/googletest/test/gtest_break_on_failure_unittest_.cc +0 -88
  2192. data/tests/googletest/googletest/test/gtest_catch_exceptions_test.py +0 -237
  2193. data/tests/googletest/googletest/test/gtest_catch_exceptions_test_.cc +0 -311
  2194. data/tests/googletest/googletest/test/gtest_color_test.py +0 -130
  2195. data/tests/googletest/googletest/test/gtest_color_test_.cc +0 -71
  2196. data/tests/googletest/googletest/test/gtest_env_var_test.py +0 -117
  2197. data/tests/googletest/googletest/test/gtest_env_var_test_.cc +0 -126
  2198. data/tests/googletest/googletest/test/gtest_filter_unittest.py +0 -636
  2199. data/tests/googletest/googletest/test/gtest_filter_unittest_.cc +0 -140
  2200. data/tests/googletest/googletest/test/gtest_list_tests_unittest.py +0 -207
  2201. data/tests/googletest/googletest/test/gtest_list_tests_unittest_.cc +0 -157
  2202. data/tests/googletest/googletest/test/gtest_output_test.py +0 -340
  2203. data/tests/googletest/googletest/test/gtest_output_test_.cc +0 -1062
  2204. data/tests/googletest/googletest/test/gtest_output_test_golden_lin.txt +0 -743
  2205. data/tests/googletest/googletest/test/gtest_shuffle_test.py +0 -325
  2206. data/tests/googletest/googletest/test/gtest_shuffle_test_.cc +0 -103
  2207. data/tests/googletest/googletest/test/gtest_throw_on_failure_test.py +0 -171
  2208. data/tests/googletest/googletest/test/gtest_throw_on_failure_test_.cc +0 -72
  2209. data/tests/googletest/googletest/test/gtest_uninitialized_test.py +0 -70
  2210. data/tests/googletest/googletest/test/gtest_uninitialized_test_.cc +0 -43
  2211. data/tests/googletest/travis.sh +0 -15
@@ -1,6 +1,6 @@
1
1
  $$ -*- mode: c++; -*-
2
- $$ This is a Pump source file. Please use Pump to convert it to
3
- $$ gmock-generated-actions.h.
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 http://code.google.com/p/googlemock/wiki/CookBook.
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<arg_type> {\
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, ::testing::MatchResultListener* result_listener) const;\
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
- ::testing::internal::string FormatDescription(bool negation) const {\
641
- const ::testing::internal::string gmock_description = (description);\
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
- ::testing::tuple<$for j, [[p$j##_type]]>($for j, [[p$j]])));\
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
- #if GTEST_HAS_STD_INITIALIZER_LIST_
56
- # include <initializer_list> // NOLINT -- must be after gtest.h
57
- #endif
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
- internal::string str() const { return ss_.str(); }
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 polymorhic matcher, in which case we want to use
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
- internal::ImplicitlyConvertible<M, Matcher<T> >::value>());
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
- static Matcher<T> CastImpl(const M& value, BooleanConstant<false>) {
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 polymorhpic matcher or Matcher<T> has an implicit constructor
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
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
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
- virtual void DescribeTo(::std::ostream* os) const {
211
+ void DescribeTo(::std::ostream* os) const override {
581
212
  source_matcher_.DescribeTo(os);
582
213
  }
583
214
 
584
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- // We use an intermediate class to do the actual safe casting as Nokia's
617
- // Symbian compiler cannot decide between
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_((internal::ImplicitlyConvertible<T, U>::value),
644
- T_must_be_implicitly_convertible_to_U);
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
- cannot_convert_non_referentce_arg_to_reference);
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 internal::string& explanation,
306
+ inline void PrintIfNotEmpty(const std::string& explanation,
679
307
  ::std::ostream* os) {
680
- if (explanation != "" && os != NULL) {
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
- && get<N - 1>(matcher_tuple).Matches(get<N - 1>(value_tuple));
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
- tuple_size<ValueTuple>::value,
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
- Matches(matcher_tuple, value_tuple);
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 ::testing::tuple_size<Tuple> TupleSize;
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(::testing::get<TupleSize::value - kRemainingSize>(t));
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
- virtual bool MatchAndExplain(
862
- T /* x */, MatchResultListener* /* listener */) const { return true; }
863
- virtual void DescribeTo(::std::ostream* os) const { *os << "is anything"; }
864
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(
1063
- Super& x, MatchResultListener* listener) const {
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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 == NULL) {
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 StringPiece has some interfering non-explicit constructors.
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 != NULL && MatchAndExplain(StringType(s), listener);
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 StringPiece has some interfering non-explicit constructors.
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 != NULL && MatchAndExplain(StringType(s), listener);
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 StringPiece has some interfering non-explicit constructors.
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 != NULL && MatchAndExplain(StringType(s), listener);
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 StringPiece has some interfering non-explicit constructors.
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< ::testing::tuple<T1, T2> >() const {
1385
- return MakeMatcher(new Impl< ::testing::tuple<T1, T2> >);
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 ::testing::tuple<T1, T2>&>() const {
1389
- return MakeMatcher(new Impl<const ::testing::tuple<T1, T2>&>);
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
- virtual bool MatchAndExplain(
1401
- Tuple args,
1402
- MatchResultListener* /* listener */) const {
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
- virtual void DescribeTo(::std::ostream* os) const {
922
+ void DescribeTo(::std::ostream* os) const override {
1406
923
  *os << "are " << GetDesc;
1407
924
  }
1408
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
966
+ bool MatchAndExplain(const T& x,
967
+ MatchResultListener* listener) const override {
1450
968
  return !matcher_.MatchAndExplain(x, listener);
1451
969
  }
1452
970
 
1453
- virtual void DescribeTo(::std::ostream* os) const {
971
+ void DescribeTo(::std::ostream* os) const override {
1454
972
  matcher_.DescribeNegationTo(os);
1455
973
  }
1456
974
 
1457
- virtual void DescribeNegationTo(::std::ostream* os) const {
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 BothOfMatcherImpl : public MatcherInterface<T> {
1010
+ class AllOfMatcherImpl : public MatcherInterface<const T&> {
1493
1011
  public:
1494
- BothOfMatcherImpl(const Matcher<T>& matcher1, const Matcher<T>& matcher2)
1495
- : matcher1_(matcher1), matcher2_(matcher2) {}
1012
+ explicit AllOfMatcherImpl(std::vector<Matcher<T> > matchers)
1013
+ : matchers_(std::move(matchers)) {}
1496
1014
 
1497
- virtual void DescribeTo(::std::ostream* os) const {
1015
+ void DescribeTo(::std::ostream* os) const override {
1498
1016
  *os << "(";
1499
- matcher1_.DescribeTo(os);
1500
- *os << ") and (";
1501
- matcher2_.DescribeTo(os);
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
1024
+ void DescribeNegationTo(::std::ostream* os) const override {
1506
1025
  *os << "(";
1507
- matcher1_.DescribeNegationTo(os);
1508
- *os << ") or (";
1509
- matcher2_.DescribeNegationTo(os);
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
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
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
- StringMatchResultListener listener1;
1517
- if (!matcher1_.MatchAndExplain(x, &listener1)) {
1518
- *listener << listener1.str();
1519
- return false;
1520
- }
1037
+ std::string all_match_result;
1521
1038
 
1522
- StringMatchResultListener listener2;
1523
- if (!matcher2_.MatchAndExplain(x, &listener2)) {
1524
- *listener << listener2.str();
1525
- return false;
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
- const internal::string s1 = listener1.str();
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> matcher1_;
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
- static ListType BuildList(const Matcher1& matcher1,
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_(MatcherListType::BuildList(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
- return MatcherListType::template CreateMatcher<T, CombiningMatcher>(
1619
- matchers_);
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
- typedef MatcherList<sizeof...(Args), Args...> MatcherListType;
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
- const typename MatcherListType::ListType matchers_;
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<BothOfMatcherImpl, Args...>;
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 EitherOfMatcherImpl : public MatcherInterface<T> {
1116
+ class AnyOfMatcherImpl : public MatcherInterface<const T&> {
1665
1117
  public:
1666
- EitherOfMatcherImpl(const Matcher<T>& matcher1, const Matcher<T>& matcher2)
1667
- : matcher1_(matcher1), matcher2_(matcher2) {}
1118
+ explicit AnyOfMatcherImpl(std::vector<Matcher<T> > matchers)
1119
+ : matchers_(std::move(matchers)) {}
1668
1120
 
1669
- virtual void DescribeTo(::std::ostream* os) const {
1121
+ void DescribeTo(::std::ostream* os) const override {
1670
1122
  *os << "(";
1671
- matcher1_.DescribeTo(os);
1672
- *os << ") or (";
1673
- matcher2_.DescribeTo(os);
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
1130
+ void DescribeNegationTo(::std::ostream* os) const override {
1678
1131
  *os << "(";
1679
- matcher1_.DescribeNegationTo(os);
1680
- *os << ") and (";
1681
- matcher2_.DescribeNegationTo(os);
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
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
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
- StringMatchResultListener listener1;
1689
- if (matcher1_.MatchAndExplain(x, &listener1)) {
1690
- *listener << listener1.str();
1691
- return true;
1692
- }
1693
-
1694
- StringMatchResultListener listener2;
1695
- if (matcher2_.MatchAndExplain(x, &listener2)) {
1696
- *listener << listener2.str();
1697
- return true;
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
- const internal::string s1 = listener1.str();
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> matcher1_;
1717
- const Matcher<T> matcher2_;
1169
+ const std::vector<Matcher<T> > matchers_;
1718
1170
 
1719
- GTEST_DISALLOW_ASSIGN_(EitherOfMatcherImpl);
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<EitherOfMatcherImpl, Args...>;
1726
-
1727
- #endif // GTEST_LANG_CXX11
1176
+ using AnyOfMatcher = VariadicMatcher<AnyOfMatcherImpl, Args...>;
1728
1177
 
1729
- // Used for implementing the AnyOf(m_1, ..., m_n) matcher, which
1730
- // matches a value that matches at least one of the matchers m_1, ...,
1731
- // and m_n.
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
- EitherOfMatcher(Matcher1 matcher1, Matcher2 matcher2)
1736
- : matcher1_(matcher1), matcher2_(matcher2) {}
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
- // This template type conversion operator allows a
1739
- // EitherOfMatcher<Matcher1, Matcher2> object to match any type that
1740
- // both Matcher1 and Matcher2 can match.
1741
- template <typename T>
1742
- operator Matcher<T>() const {
1743
- return Matcher<T>(new EitherOfMatcherImpl<T>(
1744
- SafeMatcherCast<T>(matcher1_), SafeMatcherCast<T>(matcher2_)));
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
- Matcher1 matcher1_;
1749
- Matcher2 matcher2_;
1198
+ const ::std::vector<T> matchers_;
1750
1199
 
1751
- GTEST_DISALLOW_ASSIGN_(EitherOfMatcher);
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_(internal::move(m)) {}
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
- StringMatchResultListener listener;
1856
- if (MatchPrintAndExplain(x, matcher, &listener))
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>(internal::move(matcher));
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
- virtual bool MatchAndExplain(T value,
1922
- MatchResultListener* listener) const {
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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 MakeMatcher(new Impl<Pointer>(matcher_));
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(Pointer pointer,
2082
- MatchResultListener* listener) const {
2083
- if (GetRawPointer(pointer) == NULL)
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 == NULL) {
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 whose given field ";
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 whose given field ";
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 ::testing::internal::
2201
- is_pointer<GTEST_REMOVE_CONST_(T)>::type(),
2202
- value, listener);
1745
+ typename std::is_pointer<GTEST_REMOVE_CONST_(T)>::type(), value,
1746
+ listener);
2203
1747
  }
2204
1748
 
2205
1749
  private:
2206
- // The first argument of MatchAndExplainImpl() is needed to help
2207
- // Symbian's C++ compiler choose which overload to use. Its type is
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 << "whose given field is ";
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 == NULL)
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
- template <typename Class, typename PropertyType>
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
- // The property may have a reference type, so 'const PropertyType&'
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(PropertyType (Class::*property)() const,
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), matcher_(matcher) {}
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 whose given property ";
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 whose given property ";
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 ::testing::internal::
2262
- is_pointer<GTEST_REMOVE_CONST_(T)>::type(),
2263
- value, listener);
1812
+ typename std::is_pointer<GTEST_REMOVE_CONST_(T)>::type(), value,
1813
+ listener);
2264
1814
  }
2265
1815
 
2266
1816
  private:
2267
- // The first argument of MatchAndExplainImpl() is needed to help
2268
- // Symbian's C++ compiler choose which overload to use. Its type is
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 << "whose given property is ";
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 == NULL)
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
- PropertyType (Class::*property_)() const;
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 ResultType Invoke(Functor f, T arg) { return f(arg); }
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 != NULL)
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
- typedef typename CallableTraits<Callable>::ResultType ResultType;
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
- Impl(CallableStorageType callable, const Matcher<ResultType>& matcher)
2358
- : callable_(callable), matcher_(matcher) {}
1900
+ template <typename M>
1901
+ Impl(const CallableStorageType& callable, const M& matcher)
1902
+ : callable_(callable), matcher_(MatcherCast<ResultType>(matcher)) {}
2359
1903
 
2360
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(T obj, MatchResultListener* listener) const {
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 (for example, int) to
2373
- // MatchPrintAndExplain, which takes a non-const reference as argument.
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 actualy stateless. But we need to use them even when
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 does't guarantee
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 Matcher<ResultType> matcher_;
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 MakeMatcher(new Impl<Container>(size_matcher_));
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
- typedef internal::StlContainerView<
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
- virtual void DescribeTo(::std::ostream* os) const {
1963
+ void DescribeTo(::std::ostream* os) const override {
2420
1964
  *os << "size ";
2421
1965
  size_matcher_.DescribeTo(os);
2422
1966
  }
2423
- virtual void DescribeNegationTo(::std::ostream* os) const {
1967
+ void DescribeNegationTo(::std::ostream* os) const override {
2424
1968
  *os << "size ";
2425
1969
  size_matcher_.DescribeNegationTo(os);
2426
1970
  }
2427
1971
 
2428
- virtual bool MatchAndExplain(Container container,
2429
- MatchResultListener* listener) const {
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 MakeMatcher(new Impl<Container>(distance_matcher_));
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(Container container,
2483
- MatchResultListener* listener) const {
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 != NULL) {
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
- virtual void DescribeTo(::std::ostream* os) const {
2179
+ void DescribeTo(::std::ostream* os) const override {
2640
2180
  *os << "(when sorted) ";
2641
2181
  matcher_.DescribeTo(os);
2642
2182
  }
2643
2183
 
2644
- virtual void DescribeNegationTo(::std::ostream* os) const {
2184
+ void DescribeNegationTo(::std::ostream* os) const override {
2645
2185
  *os << "(when sorted) ";
2646
2186
  matcher_.DescribeNegationTo(os);
2647
2187
  }
2648
2188
 
2649
- virtual bool MatchAndExplain(LhsContainer lhs,
2650
- MatchResultListener* listener) const {
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
- return MakeMatcher(new Impl<LhsContainer>(tuple_matcher_, rhs_));
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 ::testing::tuple<const LhsValue&, const RhsValue&> InnerMatcherArg;
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(LhsContainer lhs,
2750
- MatchResultListener* listener) const {
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
- value_pair, &inner_listener)) {
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(value_pair))
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(Container container,
2863
- MatchResultListener* listener) const {
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(Container container,
2892
- MatchResultListener* listener) const {
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 MakeMatcher(new ContainsMatcherImpl<Container>(inner_matcher_));
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 MakeMatcher(new EachMatcherImpl<Container>(inner_matcher_));
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
- virtual bool MatchAndExplain(PairType key_value,
2952
- MatchResultListener* listener) const {
2531
+ bool MatchAndExplain(PairType key_value,
2532
+ MatchResultListener* listener) const override {
2953
2533
  StringMatchResultListener inner_listener;
2954
- const bool match = inner_matcher_.MatchAndExplain(key_value.first,
2955
- &inner_listener);
2956
- const internal::string explanation = inner_listener.str();
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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 MakeMatcher(new KeyMatcherImpl<PairType>(matcher_for_key_));
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(PairType a_pair,
3034
- MatchResultListener* listener) const {
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.first) &&
3039
- second_matcher_.Matches(a_pair.second);
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.first,
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.second,
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 internal::string& first_explanation,
3062
- const internal::string& second_explanation,
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 MakeMatcher(
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(Container container,
3162
- MatchResultListener* listener) const {
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<internal::string> explanations(count());
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 internal::string& s = explanations[i];
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
- GTEST_API_ bool FindPairing(const MatchMatrix& matrix,
3306
- MatchResultListener* listener);
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 VerifyAllElementsAndMatchersAreMatched(
3325
- const ::std::vector<string>& element_printouts,
3326
- const MatchMatrix& matrix,
3327
- MatchResultListener* listener) const;
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 unordered ElementsAre and unordered ElementsAreArray.
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(InputIter first, InputIter last) {
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual void DescribeNegationTo(::std::ostream* os) const {
2967
+ void DescribeNegationTo(::std::ostream* os) const override {
3373
2968
  return UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(os);
3374
2969
  }
3375
2970
 
3376
- virtual bool MatchAndExplain(Container container,
3377
- MatchResultListener* listener) const {
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 = AnalyzeElements(stl_container.begin(),
3381
- stl_container.end(),
3382
- &element_printouts,
3383
- listener);
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
- if (actual_count != matchers_.size()) {
3390
- // The element count doesn't match. If the container is empty,
3391
- // there's no need to explain anything as Google Mock already
3392
- // prints the empty container. Otherwise we just need to show
3393
- // how many elements there actually are.
3394
- if (actual_count != 0 && listener->IsInterested()) {
3395
- *listener << "which has " << Elements(actual_count);
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 VerifyAllElementsAndMatchersAreMatched(element_printouts,
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
- MatcherVec matchers_;
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(::testing::tuple_size<MatcherTuple>::value);
3056
+ matchers.reserve(::std::tuple_size<MatcherTuple>::value);
3464
3057
  TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
3465
3058
  ::std::back_inserter(matchers));
3466
- return MakeMatcher(new UnorderedElementsAreMatcherImpl<Container>(
3467
- matchers.begin(), matchers.end()));
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(::testing::tuple_size<MatcherTuple>::value);
3088
+ matchers.reserve(::std::tuple_size<MatcherTuple>::value);
3489
3089
  TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
3490
3090
  ::std::back_inserter(matchers));
3491
- return MakeMatcher(new ElementsAreMatcherImpl<Container>(
3492
- matchers.begin(), matchers.end()));
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(Iter first, Iter last)
3508
- : matchers_(first, last) {}
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 MakeMatcher(
3513
- new UnorderedElementsAreMatcherImpl<Container>(matchers_.begin(),
3514
- matchers_.end()));
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
- return MakeMatcher(new ElementsAreMatcherImpl<Container>(
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 ::testing::tuple<T, Second> ArgTuple;
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
- virtual void DescribeTo(::std::ostream* os) const {
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
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
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
- const char* matcher_name,
3624
- const Strings& param_values);
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(first, last)
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(first, last)
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
- // The UnorderedElementsAreArray() functions are like
3684
- // ElementsAreArray(...), but allow matching the elements in any order.
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>(first, last);
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() { return MakeMatcher(new internal::AnyMatcherImpl<T>()); }
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
- // Creates a polymorphic matcher that matches anything equal to x.
3739
- // Note: if the parameter of Eq() were declared as const T&, Eq("foo")
3740
- // wouldn't compile.
3741
- template <typename T>
3742
- inline internal::EqMatcher<T> Eq(T x) { return internal::EqMatcher<T>(x); }
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
- internal::PropertyMatcher<Class, PropertyType> > Property(
3914
- PropertyType (Class::*property)() const, const PropertyMatcher& matcher) {
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
- property,
3918
- MatcherCast<GTEST_REFERENCE_TO_CONST_(PropertyType)>(matcher)));
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
- // Callable has to satisfy the following conditions:
3932
- // * It is required to keep no state affecting the results of
3933
- // the calls on it and make no assumptions about how many calls
3934
- // will be made. Any state it keeps must be protected from the
3935
- // concurrent access.
3936
- // * If it is a function object, it has to define type result_type.
3937
- // We recommend deriving your functor classes from std::unary_function.
3938
- template <typename Callable, typename ResultOfMatcher>
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<internal::string> >
3955
- StrEq(const internal::string& str) {
3956
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
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<internal::string> >
3962
- StrNe(const internal::string& str) {
3963
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
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<internal::string> >
3969
- StrCaseEq(const internal::string& str) {
3970
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
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<internal::string> >
3976
- StrCaseNe(const internal::string& str) {
3977
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
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<internal::string> >
3984
- HasSubstr(const internal::string& substring) {
3985
- return MakePolymorphicMatcher(internal::HasSubstrMatcher<internal::string>(
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<internal::string> >
3991
- StartsWith(const internal::string& prefix) {
3992
- return MakePolymorphicMatcher(internal::StartsWithMatcher<internal::string>(
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<internal::string> >
3998
- EndsWith(const internal::string& suffix) {
3999
- return MakePolymorphicMatcher(internal::EndsWithMatcher<internal::string>(
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 GTEST_HAS_GLOBAL_WSTRING || GTEST_HAS_STD_WSTRING
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<internal::wstring> >
4030
- StrEq(const internal::wstring& str) {
4031
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
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<internal::wstring> >
4037
- StrNe(const internal::wstring& str) {
4038
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
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<internal::wstring> >
4044
- StrCaseEq(const internal::wstring& str) {
4045
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
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<internal::wstring> >
4051
- StrCaseNe(const internal::wstring& str) {
4052
- return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
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<internal::wstring> >
4059
- HasSubstr(const internal::wstring& substring) {
4060
- return MakePolymorphicMatcher(internal::HasSubstrMatcher<internal::wstring>(
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<internal::wstring> >
4066
- StartsWith(const internal::wstring& prefix) {
4067
- return MakePolymorphicMatcher(internal::StartsWithMatcher<internal::wstring>(
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<internal::wstring> >
4073
- EndsWith(const internal::wstring& suffix) {
4074
- return MakePolymorphicMatcher(internal::EndsWithMatcher<internal::wstring>(
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 // GTEST_HAS_GLOBAL_WSTRING || GTEST_HAS_STD_WSTRING
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
- #if GTEST_LANG_CXX11
4360
- // Define variadic matcher versions. They are overloaded in
4361
- // gmock-generated-matchers.h for the cases supported by pre C++11 compilers.
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
- inline internal::AllOfMatcher<Args...> AllOf(const Args&... matchers) {
4364
- return internal::AllOfMatcher<Args...>(matchers...);
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
- inline internal::AnyOfMatcher<Args...> AnyOf(const Args&... matchers) {
4369
- return internal::AnyOfMatcher<Args...>(matchers...);
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
- #endif // GTEST_LANG_CXX11
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_