script_core 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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_