script_core 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2211) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -1
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +1 -1
  5. data/Gemfile +8 -1
  6. data/{LICENSE → MIT-LICENSE} +0 -0
  7. data/bootstrap.sh +1 -1
  8. data/dev.yml +1 -2
  9. data/ext/enterprise_script_service/Rakefile +7 -1
  10. data/ext/enterprise_script_service/data.cpp +21 -11
  11. data/ext/enterprise_script_service/libseccomp/.gitignore +4 -0
  12. data/ext/enterprise_script_service/libseccomp/.mailmap +10 -0
  13. data/ext/enterprise_script_service/libseccomp/.travis.yml +71 -0
  14. data/ext/enterprise_script_service/libseccomp/CHANGELOG +33 -0
  15. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +134 -0
  16. data/ext/enterprise_script_service/libseccomp/CREDITS +16 -1
  17. data/ext/enterprise_script_service/libseccomp/Makefile.am +32 -1
  18. data/ext/enterprise_script_service/libseccomp/README.md +113 -0
  19. data/ext/enterprise_script_service/libseccomp/RELEASE_PROCESS.md +97 -0
  20. data/ext/enterprise_script_service/libseccomp/configure.ac +8 -1
  21. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +3 -1
  22. data/ext/enterprise_script_service/libseccomp/doc/credits_updater +35 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man1/scmp_sys_resolver.1 +3 -1
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +101 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_set.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +1 -1
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +23 -4
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -0
  29. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +2 -2
  30. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +80 -15
  31. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_resolve_name.3 +15 -1
  32. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +185 -22
  33. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +13 -4
  34. data/ext/enterprise_script_service/libseccomp/src/api.c +87 -8
  35. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +18 -7
  36. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +2 -1
  37. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +17 -6
  38. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -1
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +17 -6
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +1 -1
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +17 -6
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +1 -1
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +17 -6
  44. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +1 -1
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +510 -0
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.c +22 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +38 -0
  48. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +22 -0
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +18 -7
  50. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -1
  51. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +18 -7
  52. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +1 -1
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +19 -7
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +43 -45
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +2 -3
  56. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +18 -7
  57. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +43 -45
  58. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +2 -3
  59. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-check.c +56 -53
  60. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +23 -18
  61. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +52 -49
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +17 -6
  63. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +1 -1
  64. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +18 -7
  65. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +41 -45
  66. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +2 -3
  67. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +17 -6
  68. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -1
  69. data/ext/enterprise_script_service/libseccomp/src/arch.c +48 -83
  70. data/ext/enterprise_script_service/libseccomp/src/arch.h +4 -21
  71. data/ext/enterprise_script_service/libseccomp/src/db.c +1184 -541
  72. data/ext/enterprise_script_service/libseccomp/src/db.h +12 -32
  73. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +43 -24
  74. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +20 -7
  75. data/ext/enterprise_script_service/libseccomp/src/hash.c +65 -649
  76. data/ext/enterprise_script_service/libseccomp/src/hash.h +3 -13
  77. data/ext/enterprise_script_service/libseccomp/src/helper.c +49 -0
  78. data/ext/enterprise_script_service/libseccomp/src/helper.h +27 -0
  79. data/ext/enterprise_script_service/libseccomp/src/python/Makefile.am +9 -4
  80. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +9 -0
  81. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +72 -8
  82. data/ext/enterprise_script_service/libseccomp/src/python/setup.py +0 -0
  83. data/ext/enterprise_script_service/libseccomp/src/system.c +137 -4
  84. data/ext/enterprise_script_service/libseccomp/src/system.h +32 -2
  85. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +17 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/01-sim-allow.tests +2 -2
  87. data/ext/enterprise_script_service/libseccomp/tests/05-sim-long_jumps.tests +18 -18
  88. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.c +12 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.py +4 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +13 -8
  91. data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.c +2 -2
  92. data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.py +2 -2
  93. data/ext/enterprise_script_service/libseccomp/tests/08-sim-subtree_checks.tests +27 -27
  94. data/ext/enterprise_script_service/libseccomp/tests/09-sim-syscall_priority_pre.tests +7 -7
  95. data/ext/enterprise_script_service/libseccomp/tests/10-sim-syscall_priority_post.tests +7 -7
  96. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +12 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/12-sim-basic_masked_ops.tests +29 -29
  98. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +37 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -0
  100. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +79 -21
  101. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.py +2 -2
  102. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +44 -0
  103. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +4 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.c +6 -6
  105. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.py +6 -6
  106. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +12 -12
  107. data/ext/enterprise_script_service/libseccomp/tests/20-live-basic_die.py +1 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/20-live-basic_die.tests +4 -4
  109. data/ext/enterprise_script_service/libseccomp/tests/21-live-basic_allow.py +2 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/21-live-basic_allow.tests +2 -2
  111. data/ext/enterprise_script_service/libseccomp/tests/24-live-arg_allow.py +3 -2
  112. data/ext/enterprise_script_service/libseccomp/tests/24-live-arg_allow.tests +2 -2
  113. data/ext/enterprise_script_service/libseccomp/tests/25-sim-multilevel_chains_adv.tests +6 -6
  114. data/ext/enterprise_script_service/libseccomp/tests/26-sim-arch_all_be_basic.c +6 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/26-sim-arch_all_be_basic.py +2 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/27-sim-bpf_blk_state.tests +5 -5
  117. data/ext/enterprise_script_service/libseccomp/tests/28-sim-arch_x86.py +0 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/29-sim-pseudo_syscall.py +0 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/32-live-tsync_allow.py +1 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/32-live-tsync_allow.tests +2 -2
  121. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.c +74 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.py +45 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +32 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.c +73 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.py +46 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/35-sim-negative_one.tests +18 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +112 -0
  128. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +56 -0
  129. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +39 -0
  130. data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.c +109 -0
  131. data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.py +55 -0
  132. data/ext/enterprise_script_service/libseccomp/tests/37-sim-ipc_syscalls_be.tests +27 -0
  133. data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.c +104 -0
  134. data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.sh +46 -0
  135. data/ext/enterprise_script_service/libseccomp/tests/38-basic-pfc_coverage.tests +11 -0
  136. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +67 -0
  137. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +68 -0
  138. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.tests +11 -0
  139. data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.c +59 -0
  140. data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.py +47 -0
  141. data/ext/enterprise_script_service/libseccomp/tests/40-sim-log.tests +21 -0
  142. data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.c +63 -0
  143. data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.py +44 -0
  144. data/ext/enterprise_script_service/libseccomp/tests/41-sim-syscall_priority_arch.tests +19 -0
  145. data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.c +198 -0
  146. data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.py +128 -0
  147. data/ext/enterprise_script_service/libseccomp/tests/42-sim-adv_chains.tests +54 -0
  148. data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.c +132 -0
  149. data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.py +62 -0
  150. data/ext/enterprise_script_service/libseccomp/tests/43-sim-a2_order.tests +55 -0
  151. data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.c +178 -0
  152. data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.py +107 -0
  153. data/ext/enterprise_script_service/libseccomp/tests/44-live-a2_order.tests +11 -0
  154. data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.c +108 -0
  155. data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.py +48 -0
  156. data/ext/enterprise_script_service/libseccomp/tests/45-sim-chain_code_coverage.tests +16 -0
  157. data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.c +78 -0
  158. data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.py +47 -0
  159. data/ext/enterprise_script_service/libseccomp/tests/46-sim-kill_process.tests +16 -0
  160. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +102 -0
  161. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.py +68 -0
  162. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.tests +11 -0
  163. data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.c +84 -0
  164. data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.py +50 -0
  165. data/ext/enterprise_script_service/libseccomp/tests/48-sim-32b_args.tests +38 -0
  166. data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.c +56 -0
  167. data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.py +45 -0
  168. data/ext/enterprise_script_service/libseccomp/tests/49-sim-64b_comparisons.tests +25 -0
  169. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +68 -6
  170. data/ext/enterprise_script_service/libseccomp/tests/miniseq.c +3 -2
  171. data/ext/enterprise_script_service/libseccomp/tests/regression +102 -10
  172. data/ext/enterprise_script_service/libseccomp/tests/util.c +4 -0
  173. data/ext/enterprise_script_service/libseccomp/tests/util.py +2 -2
  174. data/ext/enterprise_script_service/libseccomp/tools/.gitignore +1 -0
  175. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +5 -1
  176. data/ext/enterprise_script_service/libseccomp/tools/bpf.h +8 -1
  177. data/ext/enterprise_script_service/libseccomp/tools/scmp_api_level.c +39 -0
  178. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +6 -0
  179. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +14 -2
  180. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +12 -2
  181. data/ext/enterprise_script_service/libseccomp/tools/util.c +4 -0
  182. data/ext/enterprise_script_service/mruby/.gitignore +15 -8
  183. data/ext/enterprise_script_service/mruby/.travis.yml +3 -4
  184. data/ext/enterprise_script_service/mruby/.yardopts +1 -1
  185. data/ext/enterprise_script_service/mruby/AUTHORS +6 -2
  186. data/ext/enterprise_script_service/mruby/LEGAL +1 -1
  187. data/ext/enterprise_script_service/mruby/LICENSE +20 -0
  188. data/ext/enterprise_script_service/mruby/README.md +2 -2
  189. data/ext/enterprise_script_service/mruby/Rakefile +28 -12
  190. data/ext/enterprise_script_service/mruby/TODO +0 -2
  191. data/ext/enterprise_script_service/mruby/appveyor.yml +11 -7
  192. data/ext/enterprise_script_service/mruby/benchmark/bm_app_lc_fizzbuzz.rb +1 -2
  193. data/ext/enterprise_script_service/mruby/build_config.rb +3 -2
  194. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  195. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +7 -2
  196. data/ext/enterprise_script_service/mruby/doc/limitations.md +69 -7
  197. data/ext/enterprise_script_service/mruby/doc/opcode.md +127 -0
  198. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +2 -2
  199. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +2 -2
  200. data/ext/enterprise_script_service/mruby/include/mrbconf.h +9 -3
  201. data/ext/enterprise_script_service/mruby/include/mruby.h +45 -34
  202. data/ext/enterprise_script_service/mruby/include/mruby/array.h +17 -0
  203. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +1 -1
  204. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +12 -4
  205. data/ext/enterprise_script_service/mruby/include/mruby/class.h +18 -15
  206. data/ext/enterprise_script_service/mruby/include/mruby/common.h +6 -1
  207. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +6 -5
  208. data/ext/enterprise_script_service/mruby/include/mruby/data.h +5 -4
  209. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +5 -5
  210. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +2 -2
  211. data/ext/enterprise_script_service/mruby/include/mruby/error.h +1 -1
  212. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +56 -9
  213. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +17 -4
  214. data/ext/enterprise_script_service/mruby/include/mruby/object.h +5 -6
  215. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +47 -139
  216. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +117 -0
  217. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +8 -8
  218. data/ext/enterprise_script_service/mruby/include/mruby/range.h +29 -5
  219. data/ext/enterprise_script_service/mruby/include/mruby/string.h +20 -10
  220. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +4 -4
  221. data/ext/enterprise_script_service/mruby/include/mruby/value.h +4 -0
  222. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +7 -4
  223. data/ext/enterprise_script_service/mruby/include/mruby/version.h +7 -7
  224. data/ext/enterprise_script_service/mruby/lib/mruby-core-ext.rb +23 -17
  225. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +35 -9
  226. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +5 -5
  227. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +5 -3
  228. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +26 -27
  229. data/ext/enterprise_script_service/mruby/minirake +136 -15
  230. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -0
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +54 -50
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +3 -46
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +9 -24
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +23 -0
  235. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-bin-mruby-config → mruby-bin-config}/mruby-config +0 -0
  236. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-bin-mruby-config → mruby-bin-config}/mruby-config.bat +0 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +13 -13
  238. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +9 -7
  239. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +1 -1
  240. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +7 -2
  241. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +1 -1
  242. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +3 -3
  243. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +7 -1
  244. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +24 -1
  245. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +1 -1
  246. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +8 -5
  247. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -0
  248. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +22 -0
  249. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +84 -17
  250. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +1 -1
  251. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +9 -0
  252. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +38 -1
  253. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -0
  254. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +60 -7
  255. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +3 -3
  256. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +1 -17
  257. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/mrblib/module.rb +89 -0
  258. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/test/module.rb +55 -1
  259. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +918 -767
  260. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/node.h +4 -20
  261. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +552 -273
  262. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +3 -3
  263. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrbgem.rake +6 -0
  264. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb +60 -0
  265. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/test/enum_chain.rb +76 -0
  266. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +57 -37
  267. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -2
  268. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +1 -1
  269. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +1 -1
  270. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +47 -35
  271. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +22 -17
  272. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +90 -40
  273. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +33 -2
  274. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +15 -12
  275. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +42 -47
  276. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +4 -47
  277. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +0 -6
  278. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +12 -10
  279. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.rb +17 -50
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -1
  281. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +3 -2
  282. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +11 -8
  283. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +128 -117
  284. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +17 -21
  285. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file_test.rb +4 -4
  286. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +16 -53
  287. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/mrblib/kernel.rb +2 -0
  288. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +12 -30
  289. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +4 -2
  290. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +7 -10
  291. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +31 -51
  292. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/mrbgem.rake +5 -0
  293. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +702 -0
  294. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +369 -0
  295. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/kernel.rb +3 -2
  296. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/method.rb +8 -0
  297. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -4
  298. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +27 -9
  299. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +7 -10
  300. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -1
  301. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/test/nil.rb +2 -1
  302. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +1 -1
  303. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +1 -1
  304. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +126 -79
  305. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/test/pack.rb +2 -2
  306. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -4
  307. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +0 -1
  308. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +9 -1
  309. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -19
  310. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.rb +18 -0
  311. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +7 -7
  312. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +0 -12
  313. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +1 -4
  314. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +13 -14
  315. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.gitignore +4 -0
  316. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis.yml +29 -0
  317. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis_build_config.rb +6 -0
  318. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +27 -0
  319. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/Rakefile +29 -0
  320. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/example/sleep.rb +3 -0
  321. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/mrbgem.rake +5 -0
  322. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +135 -0
  323. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/test/sleep_test.rb +29 -0
  324. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -0
  325. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb +3 -3
  326. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/const.cstub +6 -0
  327. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/const.def +2 -0
  328. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +48 -20
  329. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/addrinfo.rb +5 -5
  330. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/socket.rb +2 -2
  331. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +1 -0
  332. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +14 -13
  333. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +6 -3
  334. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +96 -21
  335. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +626 -190
  336. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/test/string.rb +102 -59
  337. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +15 -16
  338. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +16 -15
  339. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/test/struct.rb +2 -2
  340. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +0 -6
  341. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +13 -6
  342. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +21 -13
  343. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +22 -39
  344. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +22 -23
  345. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/include/mruby/time.h +25 -0
  346. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +26 -22
  347. data/ext/enterprise_script_service/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +2 -2
  348. data/ext/enterprise_script_service/mruby/mrblib/array.rb +70 -40
  349. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +4 -3
  350. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +17 -46
  351. data/ext/enterprise_script_service/mruby/mrblib/kernel.rb +1 -1
  352. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +1 -4
  353. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +2 -2
  354. data/ext/enterprise_script_service/mruby/mrblib/string.rb +7 -8
  355. data/ext/enterprise_script_service/mruby/mrblib/symbol.rb +7 -0
  356. data/ext/enterprise_script_service/mruby/src/array.c +97 -44
  357. data/ext/enterprise_script_service/mruby/src/backtrace.c +14 -16
  358. data/ext/enterprise_script_service/mruby/src/class.c +156 -464
  359. data/ext/enterprise_script_service/mruby/src/codedump.c +436 -364
  360. data/ext/enterprise_script_service/mruby/src/debug.c +42 -45
  361. data/ext/enterprise_script_service/mruby/src/dump.c +27 -152
  362. data/ext/enterprise_script_service/mruby/src/enum.c +18 -2
  363. data/ext/enterprise_script_service/mruby/src/error.c +5 -4
  364. data/ext/enterprise_script_service/mruby/src/etc.c +1 -0
  365. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +15 -1
  366. data/ext/enterprise_script_service/mruby/src/gc.c +76 -30
  367. data/ext/enterprise_script_service/mruby/src/hash.c +768 -256
  368. data/ext/enterprise_script_service/mruby/src/kernel.c +24 -446
  369. data/ext/enterprise_script_service/mruby/src/load.c +35 -35
  370. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +2 -3
  371. data/ext/enterprise_script_service/mruby/src/numeric.c +96 -32
  372. data/ext/enterprise_script_service/mruby/src/object.c +88 -43
  373. data/ext/enterprise_script_service/mruby/src/proc.c +16 -14
  374. data/ext/enterprise_script_service/mruby/src/range.c +186 -176
  375. data/ext/enterprise_script_service/mruby/src/state.c +5 -5
  376. data/ext/enterprise_script_service/mruby/src/string.c +79 -93
  377. data/ext/enterprise_script_service/mruby/src/symbol.c +173 -85
  378. data/ext/enterprise_script_service/mruby/src/variable.c +283 -177
  379. data/ext/enterprise_script_service/mruby/src/vm.c +711 -688
  380. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +4 -3
  381. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +3 -2
  382. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +1 -0
  383. data/ext/enterprise_script_service/mruby/tasks/toolchains/clang.rake +1 -1
  384. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +4 -6
  385. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +0 -2
  386. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +12 -11
  387. data/ext/enterprise_script_service/mruby/test/assert.rb +114 -121
  388. data/ext/enterprise_script_service/mruby/test/bintest.rb +10 -1
  389. data/ext/enterprise_script_service/mruby/test/t/array.rb +11 -11
  390. data/ext/enterprise_script_service/mruby/test/t/bs_block.rb +32 -31
  391. data/ext/enterprise_script_service/mruby/test/t/class.rb +11 -23
  392. data/ext/enterprise_script_service/mruby/test/t/codegen.rb +3 -3
  393. data/ext/enterprise_script_service/mruby/test/t/enumerable.rb +1 -1
  394. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  395. data/ext/enterprise_script_service/mruby/test/t/float.rb +41 -2
  396. data/ext/enterprise_script_service/mruby/test/t/hash.rb +6 -5
  397. data/ext/enterprise_script_service/mruby/test/t/integer.rb +26 -44
  398. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +7 -119
  399. data/ext/enterprise_script_service/mruby/test/t/literals.rb +1 -1
  400. data/ext/enterprise_script_service/mruby/test/t/module.rb +93 -282
  401. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +40 -11
  402. data/ext/enterprise_script_service/mruby/test/t/proc.rb +1 -1
  403. data/ext/enterprise_script_service/mruby/test/t/range.rb +19 -2
  404. data/ext/enterprise_script_service/mruby/test/t/string.rb +17 -24
  405. data/ext/enterprise_script_service/mruby/test/t/symbol.rb +6 -2
  406. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +191 -3
  407. data/ext/enterprise_script_service/mruby/travis_config.rb +1 -1
  408. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  409. data/ext/enterprise_script_service/mruby_engine.gembox +1 -0
  410. data/ext/enterprise_script_service/msgpack/.travis.yml +77 -44
  411. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +75 -0
  412. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +187 -50
  413. data/ext/enterprise_script_service/msgpack/Doxyfile +1 -1
  414. data/ext/enterprise_script_service/msgpack/Files.cmake +87 -0
  415. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +3 -3
  416. data/ext/enterprise_script_service/msgpack/QUICKSTART-CPP.md +1 -1
  417. data/ext/enterprise_script_service/msgpack/README.md +15 -7
  418. data/ext/enterprise_script_service/msgpack/appveyor.yml +9 -5
  419. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +2 -2
  420. data/ext/enterprise_script_service/msgpack/ci/build_regression.sh +49 -0
  421. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_define_array.hpp.erb +4 -2
  422. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_define_map.hpp.erb +2 -1
  423. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_msgpack_tuple.hpp.erb +1 -1
  424. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone.hpp.erb +25 -18
  425. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone_decl.hpp.erb +8 -0
  426. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +28 -1
  427. data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv.cpp +104 -0
  428. data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv_zlib.cpp +176 -0
  429. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +4 -2
  430. data/ext/enterprise_script_service/msgpack/example/c/speed_test_uint32_array.c +1 -1
  431. data/ext/enterprise_script_service/msgpack/example/c/speed_test_uint64_array.c +1 -1
  432. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +15 -3
  433. data/ext/enterprise_script_service/msgpack/example/cpp03/class_non_intrusive.cpp +1 -1
  434. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +5 -1
  435. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +12 -4
  436. data/ext/enterprise_script_service/msgpack/example/x3/parse.cpp +7 -1
  437. data/ext/enterprise_script_service/msgpack/example/x3/stream_unpack.cpp +9 -0
  438. data/ext/enterprise_script_service/msgpack/external/boost/predef/.gitattributes +96 -0
  439. data/ext/enterprise_script_service/msgpack/external/boost/predef/.gitignore +3 -0
  440. data/ext/enterprise_script_service/msgpack/external/boost/predef/.project +17 -0
  441. data/ext/enterprise_script_service/msgpack/external/boost/predef/.pydevproject +5 -0
  442. data/ext/enterprise_script_service/msgpack/external/boost/predef/.travis.yml +109 -0
  443. data/ext/enterprise_script_service/msgpack/external/boost/predef/appveyor.yml +149 -0
  444. data/ext/enterprise_script_service/msgpack/external/boost/predef/build.jam +6 -0
  445. data/ext/enterprise_script_service/msgpack/external/boost/predef/check/predef.jam +17 -0
  446. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/.gitignore +1 -0
  447. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/build.jam +100 -0
  448. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/hardware_simd.qbk +89 -0
  449. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/history.qbk +93 -0
  450. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/predef.qbk +734 -0
  451. data/ext/enterprise_script_service/msgpack/external/boost/predef/doc/todo.qbk +12 -0
  452. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/detail/endian.hpp +11 -0
  453. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef.h +24 -0
  454. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture.h +33 -0
  455. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/alpha.h +59 -0
  456. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/arm.h +80 -0
  457. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/blackfin.h +46 -0
  458. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/convex.h +65 -0
  459. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ia64.h +49 -0
  460. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/m68k.h +82 -0
  461. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/mips.h +73 -0
  462. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/parisc.h +64 -0
  463. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ppc.h +72 -0
  464. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/ptx.h +44 -0
  465. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/pyramid.h +42 -0
  466. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/rs6k.h +56 -0
  467. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sparc.h +54 -0
  468. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/superh.h +67 -0
  469. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sys370.h +43 -0
  470. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/sys390.h +43 -0
  471. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86.h +38 -0
  472. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86/32.h +87 -0
  473. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/x86/64.h +50 -0
  474. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/architecture/z.h +42 -0
  475. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler.h +44 -0
  476. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/borland.h +63 -0
  477. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/clang.h +56 -0
  478. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/comeau.h +61 -0
  479. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/compaq.h +66 -0
  480. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/diab.h +56 -0
  481. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/digitalmars.h +56 -0
  482. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/dignus.h +56 -0
  483. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/edg.h +56 -0
  484. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/ekopath.h +57 -0
  485. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/gcc.h +68 -0
  486. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/gcc_xml.h +53 -0
  487. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/greenhills.h +66 -0
  488. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/hp_acc.h +61 -0
  489. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/iar.h +56 -0
  490. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/ibm.h +72 -0
  491. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/intel.h +79 -0
  492. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/kai.h +56 -0
  493. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/llvm.h +57 -0
  494. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/metaware.h +53 -0
  495. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/metrowerks.h +77 -0
  496. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/microtec.h +53 -0
  497. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/mpw.h +63 -0
  498. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/nvcc.h +60 -0
  499. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/palm.h +56 -0
  500. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/pgi.h +60 -0
  501. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/sgi_mipspro.h +66 -0
  502. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/sunpro.h +76 -0
  503. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/tendra.h +53 -0
  504. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/visualc.h +105 -0
  505. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/compiler/watcom.h +56 -0
  506. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/_cassert.h +17 -0
  507. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/_exception.h +15 -0
  508. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/comp_detected.h +10 -0
  509. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/endian_compat.h +26 -0
  510. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/os_detected.h +10 -0
  511. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/platform_detected.h +10 -0
  512. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/test.h +17 -0
  513. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/detail/test_def.h +71 -0
  514. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware.h +16 -0
  515. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd.h +119 -0
  516. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/arm.h +59 -0
  517. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/arm/versions.h +32 -0
  518. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/ppc.h +69 -0
  519. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/ppc/versions.h +51 -0
  520. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86.h +123 -0
  521. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86/versions.h +129 -0
  522. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86_amd.h +87 -0
  523. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/hardware/simd/x86_amd/versions.h +51 -0
  524. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language.h +18 -0
  525. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/cuda.h +52 -0
  526. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/objc.h +42 -0
  527. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/stdc.h +53 -0
  528. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/language/stdcpp.h +121 -0
  529. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library.h +16 -0
  530. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c.h +21 -0
  531. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/_prefix.h +13 -0
  532. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/cloudabi.h +53 -0
  533. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/gnu.h +61 -0
  534. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/uc.h +47 -0
  535. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/vms.h +47 -0
  536. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/c/zos.h +56 -0
  537. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std.h +25 -0
  538. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/_prefix.h +23 -0
  539. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/cxx.h +46 -0
  540. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/dinkumware.h +52 -0
  541. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/libcomo.h +47 -0
  542. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/modena.h +45 -0
  543. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/msl.h +53 -0
  544. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/roguewave.h +56 -0
  545. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/sgi.h +51 -0
  546. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/stdcpp3.h +53 -0
  547. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/stlport.h +59 -0
  548. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/library/std/vacpp.h +44 -0
  549. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/make.h +97 -0
  550. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os.h +33 -0
  551. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/aix.h +66 -0
  552. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/amigaos.h +46 -0
  553. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/android.h +45 -0
  554. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/beos.h +45 -0
  555. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd.h +103 -0
  556. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/bsdi.h +48 -0
  557. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/dragonfly.h +50 -0
  558. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/free.h +67 -0
  559. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/net.h +84 -0
  560. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/bsd/open.h +251 -0
  561. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/cygwin.h +45 -0
  562. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/haiku.h +46 -0
  563. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/hpux.h +47 -0
  564. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/ios.h +51 -0
  565. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/irix.h +46 -0
  566. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/linux.h +46 -0
  567. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/macos.h +65 -0
  568. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/os400.h +45 -0
  569. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/qnxnto.h +59 -0
  570. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/solaris.h +46 -0
  571. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/unix.h +76 -0
  572. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/vms.h +52 -0
  573. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/os/windows.h +51 -0
  574. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other.h +16 -0
  575. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other/endian.h +203 -0
  576. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/other/workaround.h +87 -0
  577. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform.h +28 -0
  578. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/cloudabi.h +43 -0
  579. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/ios.h +58 -0
  580. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw.h +69 -0
  581. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw32.h +63 -0
  582. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/mingw64.h +63 -0
  583. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_desktop.h +51 -0
  584. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_phone.h +48 -0
  585. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_runtime.h +53 -0
  586. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_server.h +47 -0
  587. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_store.h +50 -0
  588. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_system.h +47 -0
  589. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/platform/windows_uwp.h +60 -0
  590. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/version.h +15 -0
  591. data/ext/enterprise_script_service/msgpack/external/boost/predef/include/boost/predef/version_number.h +72 -0
  592. data/ext/enterprise_script_service/msgpack/external/boost/predef/index.html +14 -0
  593. data/ext/enterprise_script_service/msgpack/external/boost/predef/meta/libraries.json +14 -0
  594. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/.gitignore +3 -0
  595. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/build.jam +80 -0
  596. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/check_value.cpp +26 -0
  597. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_c.c +7 -0
  598. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_cpp.cpp +7 -0
  599. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_objc.m +7 -0
  600. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/info_as_objcpp.mm +7 -0
  601. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/macos_endian.c +21 -0
  602. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/macos_vs_bsd.c +19 -0
  603. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/make.cpp +94 -0
  604. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/platform_windows.cpp +177 -0
  605. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/predef_info.h +46 -0
  606. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/tested_at.cpp +62 -0
  607. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/tested_at_outdated.cpp +18 -0
  608. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/version.cpp +83 -0
  609. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/workaround.cpp +62 -0
  610. data/ext/enterprise_script_service/msgpack/external/boost/predef/test/workaround_strict_config.cpp +17 -0
  611. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/build.jam +9 -0
  612. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef.jam +202 -0
  613. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check.h +98 -0
  614. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_c.c +7 -0
  615. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_cpp.cpp +7 -0
  616. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_objc.m +7 -0
  617. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_as_objcpp.mm +7 -0
  618. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc.h +19 -0
  619. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_c.c +7 -0
  620. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_cpp.cpp +7 -0
  621. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_objc.m +7 -0
  622. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/check/predef_check_cc_as_objcpp.mm +7 -0
  623. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/build_log.py +428 -0
  624. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/common.py +878 -0
  625. data/ext/enterprise_script_service/msgpack/external/boost/predef/tools/ci/library_test.py +198 -0
  626. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/.gitattributes +96 -0
  627. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/.travis.yml +39 -0
  628. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/appveyor.yml +36 -0
  629. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html +2494 -0
  630. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/acknowledgements.html +58 -0
  631. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/bibliography.html +58 -0
  632. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/contents.html +38 -0
  633. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data.html +27 -0
  634. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/arrays.html +55 -0
  635. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/lists.html +42 -0
  636. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/sequences.html +60 -0
  637. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/data/tuples.html +42 -0
  638. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples.html +27 -0
  639. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/array_arithmetic.c +196 -0
  640. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/catch_builtin.cpp +51 -0
  641. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/delay.c +95 -0
  642. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/duffs_device.c +61 -0
  643. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/is_integral.cpp +49 -0
  644. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/examples/linear_fib.c +91 -0
  645. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers.html +249 -0
  646. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic.html +36 -0
  647. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/add.html +31 -0
  648. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/dec.html +30 -0
  649. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/div.html +31 -0
  650. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/inc.html +30 -0
  651. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/mod.html +31 -0
  652. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/mul.html +31 -0
  653. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/arithmetic/sub.html +31 -0
  654. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array.html +43 -0
  655. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/data.html +30 -0
  656. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/elem.html +30 -0
  657. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/enum.html +24 -0
  658. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/insert.html +31 -0
  659. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/pop_back.html +31 -0
  660. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/pop_front.html +31 -0
  661. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/push_back.html +30 -0
  662. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/push_front.html +30 -0
  663. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/remove.html +31 -0
  664. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/replace.html +31 -0
  665. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/reverse.html +30 -0
  666. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/size.html +30 -0
  667. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_list.html +24 -0
  668. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_seq.html +24 -0
  669. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/array/to_tuple.html +24 -0
  670. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/assert_msg.html +31 -0
  671. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/cat.html +30 -0
  672. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comma.html +31 -0
  673. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comma_if.html +31 -0
  674. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison.html +35 -0
  675. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/equal.html +31 -0
  676. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/greater.html +31 -0
  677. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/greater_equal.html +31 -0
  678. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/less.html +31 -0
  679. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/less_equal.html +31 -0
  680. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/comparison/not_equal.html +31 -0
  681. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/config/limits.html +44 -0
  682. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/config/variadics.html +32 -0
  683. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control.html +35 -0
  684. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/deduce_d.html +30 -0
  685. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/expr_if.html +30 -0
  686. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/expr_iif.html +30 -0
  687. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/if.html +30 -0
  688. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/iif.html +30 -0
  689. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/control/while.html +31 -0
  690. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug.html +31 -0
  691. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug/assert.html +31 -0
  692. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/debug/line.html +30 -0
  693. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/dec.html +31 -0
  694. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/empty.html +31 -0
  695. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum.html +31 -0
  696. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_params.html +31 -0
  697. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_shifted.html +31 -0
  698. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/enum_shifted_params.html +31 -0
  699. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/epwad.html +31 -0
  700. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/epwd.html +31 -0
  701. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/expand.html +31 -0
  702. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/expr_if.html +31 -0
  703. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities.html +34 -0
  704. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/apply.html +30 -0
  705. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/empty.html +30 -0
  706. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/expand.html +30 -0
  707. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/identity.html +32 -0
  708. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/intercept.html +30 -0
  709. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/facilities/overload.html +28 -0
  710. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/for.html +31 -0
  711. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/identity.html +31 -0
  712. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/if.html +31 -0
  713. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/inc.html +31 -0
  714. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iterate.html +31 -0
  715. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration.html +32 -0
  716. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/iterate.html +43 -0
  717. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/local.html +30 -0
  718. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/iteration/self.html +30 -0
  719. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/library.html +26 -0
  720. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/limits.html +31 -0
  721. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list.html +47 -0
  722. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/adt.html +35 -0
  723. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/append.html +31 -0
  724. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/at.html +31 -0
  725. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/cat.html +31 -0
  726. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/enum.html +31 -0
  727. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/filter.html +31 -0
  728. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/first_n.html +31 -0
  729. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/fold_left.html +34 -0
  730. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/fold_right.html +34 -0
  731. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each.html +31 -0
  732. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each_i.html +31 -0
  733. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/for_each_product.html +31 -0
  734. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/rest_n.html +31 -0
  735. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/reverse.html +31 -0
  736. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/size.html +31 -0
  737. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_array.html +29 -0
  738. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_seq.html +25 -0
  739. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/to_tuple.html +31 -0
  740. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/list/transform.html +31 -0
  741. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical.html +40 -0
  742. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/and.html +30 -0
  743. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitand.html +30 -0
  744. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitnor.html +30 -0
  745. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitor.html +30 -0
  746. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bitxor.html +30 -0
  747. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/bool.html +30 -0
  748. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/compl.html +30 -0
  749. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/nor.html +30 -0
  750. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/not.html +30 -0
  751. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/or.html +30 -0
  752. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/logical/xor.html +30 -0
  753. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/max.html +31 -0
  754. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/min.html +31 -0
  755. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/preprocessor.html +26 -0
  756. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation.html +33 -0
  757. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/comma.html +30 -0
  758. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/comma_if.html +30 -0
  759. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/is_begin_parens.html +26 -0
  760. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/paren.html +31 -0
  761. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/paren_if.html +31 -0
  762. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/punctuation/remove_parens.html +26 -0
  763. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat.html +31 -0
  764. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_2nd.html +31 -0
  765. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_3rd.html +31 -0
  766. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to.html +31 -0
  767. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to_2nd.html +31 -0
  768. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repeat_from_to_3rd.html +31 -0
  769. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition.html +44 -0
  770. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/deduce_r.html +30 -0
  771. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/deduce_z.html +30 -0
  772. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum.html +31 -0
  773. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_binary_params.html +31 -0
  774. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_params.html +31 -0
  775. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_shifted.html +31 -0
  776. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_shifted_params.html +31 -0
  777. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_trailing.html +31 -0
  778. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/enum_trailing_params.html +31 -0
  779. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/epwad.html +30 -0
  780. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/epwd.html +30 -0
  781. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/esbp.html +31 -0
  782. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/etbp.html +31 -0
  783. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/for.html +31 -0
  784. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/repeat.html +34 -0
  785. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/repetition/repeat_from_to.html +36 -0
  786. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection.html +31 -0
  787. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection/max.html +31 -0
  788. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/selection/min.html +31 -0
  789. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq.html +86 -0
  790. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/cat.html +38 -0
  791. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/elem.html +35 -0
  792. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/enum.html +35 -0
  793. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/filter.html +37 -0
  794. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/first_n.html +36 -0
  795. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/fold_left.html +38 -0
  796. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/fold_right.html +38 -0
  797. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each.html +38 -0
  798. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each_i.html +38 -0
  799. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/for_each_product.html +38 -0
  800. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/insert.html +35 -0
  801. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/pop_back.html +36 -0
  802. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/pop_front.html +36 -0
  803. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/push_back.html +35 -0
  804. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/push_front.html +35 -0
  805. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/remove.html +35 -0
  806. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/replace.html +35 -0
  807. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/rest_n.html +36 -0
  808. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/reverse.html +37 -0
  809. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/seq.html +39 -0
  810. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/size.html +35 -0
  811. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/subseq.html +35 -0
  812. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_array.html +36 -0
  813. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_list.html +30 -0
  814. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/to_tuple.html +36 -0
  815. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/transform.html +37 -0
  816. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/seq/variadic_seq_to_seq.html +34 -0
  817. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot.html +30 -0
  818. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot/counter.html +31 -0
  819. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/slot/slot.html +31 -0
  820. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/stringize.html +30 -0
  821. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple.html +59 -0
  822. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/eat.html +25 -0
  823. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/elem.html +25 -0
  824. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/enum.html +25 -0
  825. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/insert.html +27 -0
  826. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/pop_back.html +28 -0
  827. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/pop_front.html +28 -0
  828. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/push_back.html +26 -0
  829. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/push_front.html +26 -0
  830. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/rem.html +27 -0
  831. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/remove.html +27 -0
  832. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/replace.html +28 -0
  833. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/reverse.html +25 -0
  834. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/size.html +25 -0
  835. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_array.html +25 -0
  836. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_list.html +25 -0
  837. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/tuple/to_seq.html +31 -0
  838. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic.html +33 -0
  839. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/elem.html +29 -0
  840. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/size.html +25 -0
  841. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_array.html +25 -0
  842. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_list.html +25 -0
  843. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_seq.html +30 -0
  844. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/variadic/to_tuple.html +31 -0
  845. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/while.html +31 -0
  846. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/headers/wstringize.html +30 -0
  847. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/index.html +23 -0
  848. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/miscellanea.html +24 -0
  849. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref.html +319 -0
  850. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/add.html +68 -0
  851. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/add_d.html +90 -0
  852. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/and.html +64 -0
  853. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/apply.html +64 -0
  854. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_data.html +49 -0
  855. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_elem.html +51 -0
  856. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_enum.html +37 -0
  857. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_insert.html +71 -0
  858. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_insert_d.html +63 -0
  859. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_back.html +59 -0
  860. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_back_z.html +51 -0
  861. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_front.html +51 -0
  862. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_pop_front_z.html +51 -0
  863. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_push_back.html +49 -0
  864. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_push_front.html +49 -0
  865. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_remove.html +60 -0
  866. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_remove_d.html +51 -0
  867. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_replace.html +64 -0
  868. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_replace_d.html +55 -0
  869. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_reverse.html +45 -0
  870. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_size.html +45 -0
  871. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_list.html +41 -0
  872. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_seq.html +37 -0
  873. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/array_to_tuple.html +39 -0
  874. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assert.html +114 -0
  875. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assert_msg.html +66 -0
  876. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/assign_slot.html +61 -0
  877. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitand.html +65 -0
  878. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitnor.html +65 -0
  879. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitor.html +65 -0
  880. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bitxor.html +66 -0
  881. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/bool.html +54 -0
  882. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/cat.html +57 -0
  883. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/comma.html +43 -0
  884. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/comma_if.html +60 -0
  885. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/compl.html +58 -0
  886. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/config_extended_line_info.html +54 -0
  887. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/counter.html +58 -0
  888. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/dec.html +54 -0
  889. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_d.html +82 -0
  890. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_r.html +48 -0
  891. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/deduce_z.html +48 -0
  892. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/div.html +63 -0
  893. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/div_d.html +85 -0
  894. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/empty.html +47 -0
  895. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum.html +80 -0
  896. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_binary_params.html +76 -0
  897. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_binary_params_z.html +93 -0
  898. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params.html +69 -0
  899. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_with_a_default.html +83 -0
  900. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_with_defaults.html +84 -0
  901. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_params_z.html +82 -0
  902. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted.html +82 -0
  903. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_params.html +73 -0
  904. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_params_z.html +79 -0
  905. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_shifted_z.html +93 -0
  906. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing.html +83 -0
  907. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_params.html +66 -0
  908. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_params_z.html +81 -0
  909. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_trailing_z.html +96 -0
  910. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/enum_z.html +96 -0
  911. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/equal.html +64 -0
  912. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/equal_d.html +69 -0
  913. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/esbp.html +65 -0
  914. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/esbpz.html +67 -0
  915. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/etbp.html +83 -0
  916. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/etbpz.html +67 -0
  917. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expand.html +67 -0
  918. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expr_if.html +70 -0
  919. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/expr_iif.html +67 -0
  920. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/filename_x.html +52 -0
  921. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for.html +105 -0
  922. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for_r.html +148 -0
  923. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/for_r_macros.html +44 -0
  924. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_finish.html +42 -0
  925. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_flags.html +42 -0
  926. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_iteration.html +73 -0
  927. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/frame_start.html +42 -0
  928. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater.html +65 -0
  929. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_d.html +69 -0
  930. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_equal.html +65 -0
  931. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/greater_equal_d.html +69 -0
  932. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/identity.html +57 -0
  933. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/identity_n.html +58 -0
  934. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/if.html +63 -0
  935. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iif.html +66 -0
  936. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/inc.html +54 -0
  937. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/include_self.html +101 -0
  938. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/indirect_self.html +45 -0
  939. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/intercept.html +51 -0
  940. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_begin_parens.html +47 -0
  941. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_iterating.html +38 -0
  942. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/is_selfish.html +38 -0
  943. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iterate.html +83 -0
  944. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration.html +55 -0
  945. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_depth.html +73 -0
  946. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_finish.html +57 -0
  947. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_flags.html +68 -0
  948. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_limits.html +59 -0
  949. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_params_x.html +77 -0
  950. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/iteration_start.html +57 -0
  951. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less.html +65 -0
  952. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_d.html +70 -0
  953. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_equal.html +65 -0
  954. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/less_equal_d.html +70 -0
  955. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_dim.html +35 -0
  956. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_for.html +34 -0
  957. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_iteration.html +34 -0
  958. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_iteration_dim.html +34 -0
  959. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_mag.html +34 -0
  960. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_repeat.html +39 -0
  961. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_seq.html +41 -0
  962. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_slot_count.html +34 -0
  963. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_slot_sig.html +34 -0
  964. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_tuple.html +33 -0
  965. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_variadic.html +24 -0
  966. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/limit_while.html +34 -0
  967. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/line.html +112 -0
  968. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_append.html +69 -0
  969. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_append_d.html +96 -0
  970. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_at.html +61 -0
  971. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_at_d.html +63 -0
  972. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cat.html +58 -0
  973. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cat_d.html +67 -0
  974. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_cons.html +87 -0
  975. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_enum.html +62 -0
  976. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_enum_r.html +69 -0
  977. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_filter.html +76 -0
  978. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_filter_d.html +86 -0
  979. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first.html +62 -0
  980. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first_n.html +62 -0
  981. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_first_n_d.html +71 -0
  982. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left.html +75 -0
  983. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_2nd.html +75 -0
  984. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_2nd_d.html +86 -0
  985. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_d.html +81 -0
  986. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_left_d_old.html +86 -0
  987. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right.html +79 -0
  988. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_2nd.html +79 -0
  989. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_2nd_d.html +86 -0
  990. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_d.html +81 -0
  991. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_fold_right_d_old.html +90 -0
  992. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each.html +75 -0
  993. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_i.html +75 -0
  994. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_i_r.html +82 -0
  995. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_product.html +86 -0
  996. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_product_r.html +118 -0
  997. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_for_each_r.html +81 -0
  998. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_is_cons.html +51 -0
  999. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_is_nil.html +51 -0
  1000. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_nil.html +68 -0
  1001. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest.html +62 -0
  1002. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest_n.html +62 -0
  1003. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_rest_n_d.html +71 -0
  1004. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_reverse.html +55 -0
  1005. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_reverse_d.html +63 -0
  1006. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_size.html +55 -0
  1007. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_size_d.html +67 -0
  1008. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_array.html +47 -0
  1009. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_array_d.html +34 -0
  1010. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_seq.html +44 -0
  1011. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_seq_r.html +32 -0
  1012. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_tuple.html +55 -0
  1013. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_to_tuple_r.html +62 -0
  1014. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_transform.html +78 -0
  1015. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/list_transform_d.html +86 -0
  1016. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_iterate.html +62 -0
  1017. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_limits.html +80 -0
  1018. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/local_macro.html +64 -0
  1019. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/lparen.html +52 -0
  1020. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/lparen_if.html +61 -0
  1021. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/max.html +64 -0
  1022. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/max_d.html +70 -0
  1023. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/min.html +64 -0
  1024. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/min_d.html +70 -0
  1025. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mod.html +63 -0
  1026. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mod_d.html +75 -0
  1027. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mul.html +68 -0
  1028. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/mul_d.html +91 -0
  1029. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/nil.html +41 -0
  1030. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/nor.html +64 -0
  1031. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not.html +59 -0
  1032. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not_equal.html +64 -0
  1033. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/not_equal_d.html +69 -0
  1034. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/or.html +64 -0
  1035. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/overload.html +58 -0
  1036. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_finish.html +46 -0
  1037. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_flags.html +46 -0
  1038. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_iteration.html +101 -0
  1039. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/relative_start.html +46 -0
  1040. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/remove_parens.html +44 -0
  1041. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat.html +80 -0
  1042. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_1st.html +82 -0
  1043. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_2nd.html +82 -0
  1044. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_3rd.html +82 -0
  1045. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to.html +102 -0
  1046. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_1st.html +91 -0
  1047. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_2nd.html +91 -0
  1048. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_3rd.html +91 -0
  1049. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_d.html +83 -0
  1050. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_d_z.html +84 -0
  1051. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_from_to_z.html +105 -0
  1052. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_z.html +92 -0
  1053. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/repeat_z_macros.html +45 -0
  1054. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/rparen.html +53 -0
  1055. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/rparen_if.html +61 -0
  1056. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_cat.html +64 -0
  1057. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_cat_s.html +60 -0
  1058. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_elem.html +59 -0
  1059. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_enum.html +66 -0
  1060. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_filter.html +93 -0
  1061. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_filter_s.html +79 -0
  1062. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_first_n.html +67 -0
  1063. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_left.html +90 -0
  1064. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_left_s.html +96 -0
  1065. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_right.html +92 -0
  1066. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_fold_right_s.html +97 -0
  1067. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each.html +90 -0
  1068. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_i.html +91 -0
  1069. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_i_r.html +78 -0
  1070. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_product.html +100 -0
  1071. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_product_r.html +81 -0
  1072. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_for_each_r.html +77 -0
  1073. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_head.html +63 -0
  1074. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_insert.html +70 -0
  1075. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_nil.html +81 -0
  1076. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_pop_back.html +68 -0
  1077. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_pop_front.html +68 -0
  1078. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_push_back.html +76 -0
  1079. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_push_front.html +78 -0
  1080. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_remove.html +66 -0
  1081. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_replace.html +71 -0
  1082. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_rest_n.html +55 -0
  1083. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_reverse.html +68 -0
  1084. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_reverse_s.html +55 -0
  1085. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_size.html +55 -0
  1086. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_subseq.html +69 -0
  1087. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_tail.html +63 -0
  1088. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_array.html +55 -0
  1089. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_list.html +34 -0
  1090. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_to_tuple.html +55 -0
  1091. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_transform.html +93 -0
  1092. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/seq_transform_s.html +79 -0
  1093. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/slot.html +60 -0
  1094. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/stringize.html +50 -0
  1095. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/sub.html +63 -0
  1096. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/sub_d.html +85 -0
  1097. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_eat.html +58 -0
  1098. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_elem.html +65 -0
  1099. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_enum.html +55 -0
  1100. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_insert.html +54 -0
  1101. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_insert_d.html +46 -0
  1102. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_back.html +48 -0
  1103. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_back_z.html +40 -0
  1104. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_front.html +47 -0
  1105. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_pop_front_z.html +40 -0
  1106. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_push_back.html +39 -0
  1107. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_push_front.html +39 -0
  1108. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_rem.html +60 -0
  1109. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_rem_ctor.html +61 -0
  1110. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_remove.html +50 -0
  1111. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_remove_d.html +41 -0
  1112. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_replace.html +51 -0
  1113. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_replace_d.html +42 -0
  1114. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_reverse.html +61 -0
  1115. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_size.html +32 -0
  1116. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_array.html +50 -0
  1117. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_list.html +60 -0
  1118. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/tuple_to_seq.html +51 -0
  1119. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/update_counter.html +34 -0
  1120. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/value.html +37 -0
  1121. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_elem.html +42 -0
  1122. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_seq_to_seq.html +35 -0
  1123. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_size.html +33 -0
  1124. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_array.html +32 -0
  1125. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_list.html +31 -0
  1126. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_seq.html +32 -0
  1127. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadic_to_tuple.html +32 -0
  1128. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/variadics.html +30 -0
  1129. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while.html +116 -0
  1130. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while_d.html +117 -0
  1131. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/while_d_macros.html +89 -0
  1132. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/wstringize.html +49 -0
  1133. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/ref/xor.html +64 -0
  1134. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/styles.css +87 -0
  1135. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/syntax.html +307 -0
  1136. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms.html +23 -0
  1137. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms/evaluated.html +27 -0
  1138. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/terms/named_external.html +25 -0
  1139. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/title.html +25 -0
  1140. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/top.html +32 -0
  1141. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics.html +27 -0
  1142. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/evaluated_slots.html +157 -0
  1143. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/file_iteration.html +1044 -0
  1144. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/incompatible.html +140 -0
  1145. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/local_iteration.html +156 -0
  1146. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/motivation.html +119 -0
  1147. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/problems.html +135 -0
  1148. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/reentrancy.html +298 -0
  1149. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/techniques.html +350 -0
  1150. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/doc/topics/variadic_macros.html +262 -0
  1151. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor.hpp +19 -0
  1152. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic.hpp +25 -0
  1153. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/add.hpp +51 -0
  1154. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/dec.hpp +289 -0
  1155. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  1156. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/div.hpp +39 -0
  1157. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/inc.hpp +288 -0
  1158. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/mod.hpp +39 -0
  1159. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/mul.hpp +53 -0
  1160. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/arithmetic/sub.hpp +50 -0
  1161. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array.hpp +32 -0
  1162. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/data.hpp +28 -0
  1163. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/detail/get_data.hpp +55 -0
  1164. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/elem.hpp +29 -0
  1165. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/enum.hpp +33 -0
  1166. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/insert.hpp +55 -0
  1167. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/pop_back.hpp +37 -0
  1168. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/pop_front.hpp +38 -0
  1169. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/push_back.hpp +35 -0
  1170. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/push_front.hpp +35 -0
  1171. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/remove.hpp +54 -0
  1172. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/replace.hpp +49 -0
  1173. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/reverse.hpp +29 -0
  1174. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/size.hpp +28 -0
  1175. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_list.hpp +47 -0
  1176. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_seq.hpp +46 -0
  1177. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/array/to_tuple.hpp +33 -0
  1178. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/assert_msg.hpp +17 -0
  1179. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/cat.hpp +35 -0
  1180. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comma.hpp +17 -0
  1181. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comma_if.hpp +17 -0
  1182. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison.hpp +24 -0
  1183. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/equal.hpp +34 -0
  1184. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/greater.hpp +38 -0
  1185. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/greater_equal.hpp +38 -0
  1186. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/less.hpp +46 -0
  1187. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/less_equal.hpp +39 -0
  1188. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/comparison/not_equal.hpp +814 -0
  1189. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/config/config.hpp +106 -0
  1190. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/config/limits.hpp +30 -0
  1191. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control.hpp +22 -0
  1192. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/deduce_d.hpp +22 -0
  1193. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
  1194. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/edg/while.hpp +534 -0
  1195. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
  1196. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/detail/while.hpp +536 -0
  1197. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/expr_if.hpp +30 -0
  1198. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/expr_iif.hpp +31 -0
  1199. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/if.hpp +30 -0
  1200. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/iif.hpp +34 -0
  1201. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/control/while.hpp +312 -0
  1202. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug.hpp +18 -0
  1203. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/assert.hpp +44 -0
  1204. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/error.hpp +33 -0
  1205. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/debug/line.hpp +35 -0
  1206. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/dec.hpp +17 -0
  1207. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/auto_rec.hpp +293 -0
  1208. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/check.hpp +48 -0
  1209. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
  1210. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_binary.hpp +30 -0
  1211. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_nullary.hpp +30 -0
  1212. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/is_unary.hpp +30 -0
  1213. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/null.hpp +17 -0
  1214. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/detail/split.hpp +35 -0
  1215. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/empty.hpp +17 -0
  1216. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum.hpp +17 -0
  1217. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params.hpp +17 -0
  1218. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
  1219. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
  1220. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_shifted.hpp +17 -0
  1221. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/enum_shifted_params.hpp +17 -0
  1222. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/expand.hpp +17 -0
  1223. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/expr_if.hpp +17 -0
  1224. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities.hpp +23 -0
  1225. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/apply.hpp +34 -0
  1226. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/detail/is_empty.hpp +55 -0
  1227. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/empty.hpp +23 -0
  1228. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/expand.hpp +28 -0
  1229. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/identity.hpp +27 -0
  1230. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/intercept.hpp +277 -0
  1231. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_1.hpp +23 -0
  1232. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty.hpp +56 -0
  1233. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty_or_1.hpp +31 -0
  1234. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/is_empty_variadic.hpp +57 -0
  1235. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/facilities/overload.hpp +25 -0
  1236. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/for.hpp +17 -0
  1237. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/identity.hpp +17 -0
  1238. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/if.hpp +17 -0
  1239. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/inc.hpp +17 -0
  1240. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iterate.hpp +17 -0
  1241. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration.hpp +19 -0
  1242. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
  1243. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
  1244. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
  1245. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
  1246. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
  1247. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
  1248. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
  1249. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
  1250. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
  1251. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
  1252. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/finish.hpp +99 -0
  1253. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
  1254. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
  1255. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
  1256. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
  1257. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
  1258. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
  1259. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
  1260. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
  1261. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
  1262. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
  1263. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/local.hpp +812 -0
  1264. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
  1265. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/self.hpp +21 -0
  1266. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/detail/start.hpp +99 -0
  1267. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/iterate.hpp +82 -0
  1268. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/local.hpp +26 -0
  1269. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/iteration/self.hpp +19 -0
  1270. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/library.hpp +37 -0
  1271. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/limits.hpp +17 -0
  1272. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list.hpp +37 -0
  1273. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/adt.hpp +73 -0
  1274. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/append.hpp +40 -0
  1275. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/at.hpp +39 -0
  1276. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/cat.hpp +42 -0
  1277. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
  1278. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
  1279. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
  1280. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/fold_left.hpp +279 -0
  1281. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/detail/fold_right.hpp +277 -0
  1282. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/enum.hpp +41 -0
  1283. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/filter.hpp +54 -0
  1284. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/first_n.hpp +58 -0
  1285. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/fold_left.hpp +303 -0
  1286. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/fold_right.hpp +40 -0
  1287. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each.hpp +49 -0
  1288. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each_i.hpp +65 -0
  1289. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/for_each_product.hpp +141 -0
  1290. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/rest_n.hpp +55 -0
  1291. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/reverse.hpp +40 -0
  1292. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/size.hpp +58 -0
  1293. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_array.hpp +155 -0
  1294. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_seq.hpp +32 -0
  1295. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/to_tuple.hpp +61 -0
  1296. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/list/transform.hpp +49 -0
  1297. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical.hpp +29 -0
  1298. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/and.hpp +30 -0
  1299. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitand.hpp +38 -0
  1300. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitnor.hpp +38 -0
  1301. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitor.hpp +38 -0
  1302. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bitxor.hpp +38 -0
  1303. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/bool.hpp +288 -0
  1304. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/compl.hpp +36 -0
  1305. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/nor.hpp +30 -0
  1306. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/not.hpp +30 -0
  1307. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/or.hpp +30 -0
  1308. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/logical/xor.hpp +30 -0
  1309. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/max.hpp +17 -0
  1310. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/min.hpp +17 -0
  1311. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation.hpp +22 -0
  1312. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/comma.hpp +21 -0
  1313. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/comma_if.hpp +31 -0
  1314. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +48 -0
  1315. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/is_begin_parens.hpp +51 -0
  1316. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/paren.hpp +23 -0
  1317. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/paren_if.hpp +38 -0
  1318. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/punctuation/remove_parens.hpp +39 -0
  1319. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat.hpp +17 -0
  1320. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_2nd.hpp +17 -0
  1321. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_3rd.hpp +17 -0
  1322. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to.hpp +17 -0
  1323. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
  1324. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
  1325. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition.hpp +32 -0
  1326. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/deduce_r.hpp +22 -0
  1327. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/deduce_z.hpp +22 -0
  1328. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
  1329. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
  1330. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/for.hpp +536 -0
  1331. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
  1332. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum.hpp +66 -0
  1333. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
  1334. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params.hpp +41 -0
  1335. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
  1336. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
  1337. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
  1338. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
  1339. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
  1340. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
  1341. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
  1342. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
  1343. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/for.hpp +324 -0
  1344. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/repeat.hpp +825 -0
  1345. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
  1346. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection.hpp +18 -0
  1347. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection/max.hpp +39 -0
  1348. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/selection/min.hpp +39 -0
  1349. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq.hpp +44 -0
  1350. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/cat.hpp +49 -0
  1351. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/binary_transform.hpp +47 -0
  1352. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/is_empty.hpp +49 -0
  1353. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/split.hpp +284 -0
  1354. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
  1355. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/elem.hpp +304 -0
  1356. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/enum.hpp +288 -0
  1357. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/filter.hpp +54 -0
  1358. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/first_n.hpp +30 -0
  1359. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/fold_left.hpp +1070 -0
  1360. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/fold_right.hpp +288 -0
  1361. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each.hpp +107 -0
  1362. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each_i.hpp +109 -0
  1363. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/for_each_product.hpp +126 -0
  1364. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/insert.hpp +28 -0
  1365. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/pop_back.hpp +29 -0
  1366. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/pop_front.hpp +27 -0
  1367. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/push_back.hpp +19 -0
  1368. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/push_front.hpp +19 -0
  1369. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/remove.hpp +29 -0
  1370. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/replace.hpp +45 -0
  1371. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/rest_n.hpp +46 -0
  1372. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/reverse.hpp +39 -0
  1373. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/seq.hpp +44 -0
  1374. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/size.hpp +548 -0
  1375. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/subseq.hpp +28 -0
  1376. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_array.hpp +28 -0
  1377. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_list.hpp +41 -0
  1378. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/to_tuple.hpp +27 -0
  1379. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/transform.hpp +48 -0
  1380. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp +28 -0
  1381. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot.hpp +17 -0
  1382. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/counter.hpp +25 -0
  1383. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp +269 -0
  1384. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/def.hpp +49 -0
  1385. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/shared.hpp +247 -0
  1386. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot1.hpp +267 -0
  1387. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot2.hpp +267 -0
  1388. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot3.hpp +267 -0
  1389. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot4.hpp +267 -0
  1390. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/detail/slot5.hpp +267 -0
  1391. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/slot/slot.hpp +32 -0
  1392. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/stringize.hpp +33 -0
  1393. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple.hpp +35 -0
  1394. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/detail/is_single_return.hpp +28 -0
  1395. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/eat.hpp +115 -0
  1396. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/elem.hpp +201 -0
  1397. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/enum.hpp +22 -0
  1398. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/insert.hpp +37 -0
  1399. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/pop_back.hpp +64 -0
  1400. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/pop_front.hpp +65 -0
  1401. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/push_back.hpp +31 -0
  1402. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/push_front.hpp +32 -0
  1403. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/rem.hpp +149 -0
  1404. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/remove.hpp +64 -0
  1405. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/replace.hpp +37 -0
  1406. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/reverse.hpp +117 -0
  1407. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/size.hpp +28 -0
  1408. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_array.hpp +39 -0
  1409. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_list.hpp +118 -0
  1410. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/tuple/to_seq.hpp +119 -0
  1411. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic.hpp +23 -0
  1412. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/detail/is_single_return.hpp +28 -0
  1413. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/elem.hpp +94 -0
  1414. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/size.hpp +30 -0
  1415. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_array.hpp +32 -0
  1416. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_list.hpp +25 -0
  1417. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_seq.hpp +25 -0
  1418. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/variadic/to_tuple.hpp +24 -0
  1419. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/while.hpp +17 -0
  1420. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/include/boost/preprocessor/wstringize.hpp +29 -0
  1421. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/index.html +18 -0
  1422. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/meta/libraries.json +15 -0
  1423. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/Jamfile.v2 +252 -0
  1424. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.c +12 -0
  1425. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.cpp +12 -0
  1426. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/arithmetic.cxx +82 -0
  1427. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.c +14 -0
  1428. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.cpp +14 -0
  1429. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/array.cxx +192 -0
  1430. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.c +13 -0
  1431. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.cpp +12 -0
  1432. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/comparison.cxx +45 -0
  1433. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/config_info.cpp +93 -0
  1434. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.c +12 -0
  1435. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.cpp +12 -0
  1436. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/control.cxx +40 -0
  1437. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.c +12 -0
  1438. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.cpp +12 -0
  1439. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/debug.cxx +21 -0
  1440. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.c +12 -0
  1441. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.cpp +12 -0
  1442. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/facilities.cxx +55 -0
  1443. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.c +12 -0
  1444. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.cpp +12 -0
  1445. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty.cxx +145 -0
  1446. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.c +12 -0
  1447. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.cpp +12 -0
  1448. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure.cxx +25 -0
  1449. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.c +12 -0
  1450. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.cpp +12 -0
  1451. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/isempty_variadic_standard_failure2.cxx +25 -0
  1452. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/iteration.cpp +33 -0
  1453. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/iteration.h +62 -0
  1454. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.c +14 -0
  1455. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.cpp +14 -0
  1456. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/list.cxx +91 -0
  1457. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.c +12 -0
  1458. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.cpp +12 -0
  1459. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/logical.cxx +59 -0
  1460. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.c +14 -0
  1461. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.cpp +14 -0
  1462. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/punctuation.cxx +54 -0
  1463. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/repetition.cpp +50 -0
  1464. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.c +12 -0
  1465. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.cpp +12 -0
  1466. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/selection.cxx +21 -0
  1467. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.c +14 -0
  1468. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.cpp +14 -0
  1469. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/seq.cxx +222 -0
  1470. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.c +12 -0
  1471. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.cpp +12 -0
  1472. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/slot.cxx +53 -0
  1473. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/test.h +37 -0
  1474. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.c +14 -0
  1475. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.cpp +14 -0
  1476. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple.cxx +266 -0
  1477. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/tuple_elem_bug_test.cxx +38 -0
  1478. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.c +12 -0
  1479. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.cpp +12 -0
  1480. data/ext/enterprise_script_service/msgpack/external/boost/preprocessor/test/variadic.cxx +56 -0
  1481. data/ext/enterprise_script_service/msgpack/fuzz/CMakeLists.txt +43 -0
  1482. data/ext/enterprise_script_service/msgpack/fuzz/regression_runner.cpp +50 -0
  1483. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer.cpp +23 -0
  1484. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 +0 -0
  1485. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 +0 -0
  1486. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray +1 -0
  1487. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject +1 -0
  1488. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting +2 -0
  1489. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap +0 -0
  1490. data/ext/enterprise_script_service/msgpack/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground +0 -0
  1491. data/ext/enterprise_script_service/msgpack/include/msgpack.hpp +4 -0
  1492. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/adaptor_base.hpp +1 -0
  1493. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/adaptor_base_decl.hpp +1 -0
  1494. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/array_ref_decl.hpp +1 -0
  1495. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp +1 -0
  1496. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/check_container_size_decl.hpp +1 -0
  1497. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp11/chrono.hpp +16 -0
  1498. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/byte.hpp +16 -0
  1499. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/carray_byte.hpp +16 -0
  1500. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/optional.hpp +16 -0
  1501. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/string_view.hpp +16 -0
  1502. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp17/vector_byte.hpp +16 -0
  1503. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/define_decl.hpp +25 -24
  1504. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/ext_decl.hpp +1 -0
  1505. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/fixint_decl.hpp +1 -0
  1506. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/int_decl.hpp +1 -0
  1507. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/map_decl.hpp +1 -0
  1508. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/msgpack_tuple_decl.hpp +1 -0
  1509. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/nil_decl.hpp +1 -0
  1510. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/raw_decl.hpp +1 -0
  1511. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/size_equal_only_decl.hpp +1 -0
  1512. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/tr1/unordered_map.hpp +2 -2
  1513. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/tr1/unordered_set.hpp +2 -2
  1514. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/v4raw_decl.hpp +1 -0
  1515. data/ext/enterprise_script_service/msgpack/include/msgpack/cpp_config_decl.hpp +1 -0
  1516. data/ext/enterprise_script_service/msgpack/include/msgpack/create_object_visitor.hpp +17 -0
  1517. data/ext/enterprise_script_service/msgpack/include/msgpack/create_object_visitor_decl.hpp +16 -0
  1518. data/ext/enterprise_script_service/msgpack/include/msgpack/fbuffer_decl.hpp +1 -0
  1519. data/ext/enterprise_script_service/msgpack/include/msgpack/iterator_decl.hpp +2 -1
  1520. data/ext/enterprise_script_service/msgpack/include/msgpack/meta_decl.hpp +1 -0
  1521. data/ext/enterprise_script_service/msgpack/include/msgpack/null_visitor.hpp +17 -0
  1522. data/ext/enterprise_script_service/msgpack/include/msgpack/null_visitor_decl.hpp +16 -0
  1523. data/ext/enterprise_script_service/msgpack/include/msgpack/object_decl.hpp +1 -0
  1524. data/ext/enterprise_script_service/msgpack/include/msgpack/object_fwd.hpp +1 -0
  1525. data/ext/enterprise_script_service/msgpack/include/msgpack/object_fwd_decl.hpp +1 -0
  1526. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +4 -0
  1527. data/ext/enterprise_script_service/msgpack/include/msgpack/pack_decl.hpp +1 -0
  1528. data/ext/enterprise_script_service/msgpack/include/msgpack/pack_template.h +28 -0
  1529. data/ext/enterprise_script_service/msgpack/include/msgpack/parse.hpp +18 -0
  1530. data/ext/enterprise_script_service/msgpack/include/msgpack/parse_decl.hpp +16 -0
  1531. data/ext/enterprise_script_service/msgpack/include/msgpack/parse_return.hpp +1 -0
  1532. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture.h +1 -0
  1533. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/arm.h +11 -1
  1534. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/parisc.h +1 -1
  1535. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/architecture/ptx.h +44 -0
  1536. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler.h +1 -0
  1537. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/intel.h +17 -3
  1538. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/nvcc.h +60 -0
  1539. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/compiler/visualc.h +15 -1
  1540. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/hardware/simd/arm.h +3 -1
  1541. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/hardware/simd/x86_amd/versions.h +3 -3
  1542. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/language.h +1 -0
  1543. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/language/cuda.h +52 -0
  1544. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/library/c.h +1 -0
  1545. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/library/c/cloudabi.h +53 -0
  1546. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/make.h +8 -0
  1547. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/android.h +2 -2
  1548. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/bsd/free.h +10 -3
  1549. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/os/bsd/open.h +80 -0
  1550. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/other/endian.h +1 -2
  1551. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/other/workaround.h +87 -0
  1552. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform.h +9 -2
  1553. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/cloudabi.h +43 -0
  1554. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/ios.h +58 -0
  1555. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw.h +4 -4
  1556. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw32.h +63 -0
  1557. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/mingw64.h +63 -0
  1558. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_desktop.h +9 -3
  1559. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_phone.h +7 -2
  1560. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_runtime.h +13 -5
  1561. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_server.h +47 -0
  1562. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_store.h +11 -4
  1563. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_system.h +47 -0
  1564. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/platform/windows_uwp.h +60 -0
  1565. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/version.h +1 -1
  1566. data/ext/enterprise_script_service/msgpack/include/msgpack/predef/version_number.h +20 -1
  1567. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/cat.hpp +1 -1
  1568. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/config/config.hpp +13 -11
  1569. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/detail/binary_transform.hpp +5 -6
  1570. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
  1571. data/ext/enterprise_script_service/msgpack/include/msgpack/preprocessor/seq/to_list.hpp +12 -0
  1572. data/ext/enterprise_script_service/msgpack/include/msgpack/sbuffer_decl.hpp +1 -0
  1573. data/ext/enterprise_script_service/msgpack/include/msgpack/sysdep.h +31 -26
  1574. data/ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h +58 -0
  1575. data/ext/enterprise_script_service/msgpack/include/msgpack/type.hpp +13 -0
  1576. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack.hpp +1 -1
  1577. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_decl.hpp +1 -0
  1578. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_template.h +1 -0
  1579. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +6 -6
  1580. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/fusion.hpp +48 -5
  1581. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/carray.hpp +5 -5
  1582. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/char_ptr.hpp +1 -1
  1583. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array.hpp +1 -1
  1584. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array_char.hpp +8 -1
  1585. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp +8 -1
  1586. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp +215 -0
  1587. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/forward_list.hpp +1 -1
  1588. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/tuple.hpp +1 -1
  1589. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp +2 -2
  1590. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp +2 -2
  1591. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/byte.hpp +74 -0
  1592. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp +109 -0
  1593. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/optional.hpp +90 -0
  1594. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/string_view.hpp +86 -0
  1595. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +119 -0
  1596. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/deque.hpp +1 -1
  1597. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp +1088 -32
  1598. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp +32 -16
  1599. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp +32 -32
  1600. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp +45 -0
  1601. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp +4 -3
  1602. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp +4 -2
  1603. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp +1 -1
  1604. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/ext.hpp +3 -3
  1605. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/fixint.hpp +40 -24
  1606. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/int.hpp +55 -33
  1607. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/list.hpp +1 -1
  1608. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +7 -7
  1609. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/pair.hpp +1 -1
  1610. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/set.hpp +2 -2
  1611. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/string.hpp +1 -1
  1612. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/tr1/unordered_map.hpp +2 -2
  1613. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/tr1/unordered_set.hpp +2 -2
  1614. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +5 -5
  1615. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_bool.hpp +1 -1
  1616. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +9 -9
  1617. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +9 -9
  1618. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/cpp_config.hpp +4 -0
  1619. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/cpp_config_decl.hpp +6 -0
  1620. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp +41 -34
  1621. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone_decl.hpp +8 -0
  1622. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp +25 -19
  1623. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone_decl.hpp +8 -0
  1624. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object.hpp +768 -404
  1625. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_decl.hpp +8 -1
  1626. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_fwd.hpp +1 -1
  1627. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/unpack.hpp +5 -6
  1628. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/vrefbuffer.hpp +15 -3
  1629. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor.hpp +14 -7
  1630. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor_decl.hpp +33 -0
  1631. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/null_visitor.hpp +5 -3
  1632. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/null_visitor_decl.hpp +29 -0
  1633. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/object_decl.hpp +4 -0
  1634. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/object_fwd.hpp +1 -1
  1635. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/pack_decl.hpp +1 -0
  1636. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse.hpp +41 -23
  1637. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse_decl.hpp +79 -0
  1638. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/unpack.hpp +7 -3
  1639. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/unpack_decl.hpp +8 -36
  1640. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse.hpp +5 -6
  1641. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse_decl.hpp +36 -0
  1642. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_unpack.hpp +13 -12
  1643. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_unpack_decl.hpp +71 -0
  1644. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/adaptor_base.hpp +58 -0
  1645. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/adaptor_base_decl.hpp +52 -0
  1646. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/array_ref_decl.hpp +36 -0
  1647. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp +42 -0
  1648. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/check_container_size_decl.hpp +39 -0
  1649. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/define_decl.hpp +23 -0
  1650. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp +31 -0
  1651. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp +31 -0
  1652. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp +43 -0
  1653. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp +32 -0
  1654. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp +31 -0
  1655. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp +59 -0
  1656. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/ext_decl.hpp +34 -0
  1657. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/fixint_decl.hpp +43 -0
  1658. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/int_decl.hpp +54 -0
  1659. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/map_decl.hpp +33 -0
  1660. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp +21 -0
  1661. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/nil_decl.hpp +42 -0
  1662. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/raw_decl.hpp +33 -0
  1663. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/size_equal_only_decl.hpp +35 -0
  1664. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/v4raw_decl.hpp +34 -0
  1665. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/cpp_config_decl.hpp +84 -0
  1666. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/create_object_visitor_decl.hpp +33 -0
  1667. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/detail/cpp03_zone_decl.hpp +31 -0
  1668. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/detail/cpp11_zone_decl.hpp +31 -0
  1669. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/fbuffer_decl.hpp +32 -0
  1670. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/iterator_decl.hpp +33 -0
  1671. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/meta_decl.hpp +50 -0
  1672. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/null_visitor_decl.hpp +29 -0
  1673. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_decl.hpp +53 -0
  1674. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_fwd.hpp +70 -0
  1675. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/object_fwd_decl.hpp +75 -0
  1676. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/pack_decl.hpp +55 -0
  1677. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse.hpp +677 -0
  1678. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse_decl.hpp +49 -0
  1679. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse_return.hpp +35 -0
  1680. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/sbuffer_decl.hpp +33 -0
  1681. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +192 -0
  1682. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack_decl.hpp +304 -0
  1683. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/vrefbuffer_decl.hpp +29 -0
  1684. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_parse_decl.hpp +34 -0
  1685. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_unpack.hpp +97 -0
  1686. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/x3_unpack_decl.hpp +65 -0
  1687. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/zbuffer_decl.hpp +29 -0
  1688. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/zone_decl.hpp +21 -0
  1689. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +1 -1
  1690. data/ext/enterprise_script_service/msgpack/include/msgpack/versioning.hpp +3 -1
  1691. data/ext/enterprise_script_service/msgpack/include/msgpack/vrefbuffer.h +1 -2
  1692. data/ext/enterprise_script_service/msgpack/include/msgpack/vrefbuffer_decl.hpp +1 -0
  1693. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_parse.hpp +15 -0
  1694. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_parse_decl.hpp +16 -0
  1695. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_unpack.hpp +16 -0
  1696. data/ext/enterprise_script_service/msgpack/include/msgpack/x3_unpack_decl.hpp +16 -0
  1697. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer_decl.hpp +1 -0
  1698. data/ext/enterprise_script_service/msgpack/include/msgpack/zone_decl.hpp +1 -0
  1699. data/ext/enterprise_script_service/msgpack/makedist.sh +2 -0
  1700. data/ext/enterprise_script_service/msgpack/msgpack-config.cmake.in +23 -0
  1701. data/ext/enterprise_script_service/msgpack/src/objectc.c +1 -1
  1702. data/ext/enterprise_script_service/msgpack/src/unpack.c +8 -8
  1703. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +13 -1
  1704. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +13 -6
  1705. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +31 -0
  1706. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +3 -3
  1707. data/ext/enterprise_script_service/msgpack/test/cases.cpp +7 -0
  1708. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +8 -0
  1709. data/ext/enterprise_script_service/msgpack/test/json.cpp +1 -1
  1710. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +114 -6
  1711. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +188 -0
  1712. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +333 -0
  1713. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +11 -0
  1714. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +9 -3
  1715. data/ext/enterprise_script_service/msgpack/test/object.cpp +11 -2
  1716. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +72 -8
  1717. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +96 -0
  1718. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +1 -1
  1719. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +38 -13
  1720. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +350 -6
  1721. data/ext/enterprise_script_service/msgpack/update_version.sh +17 -0
  1722. data/lib/script_core/version.rb +1 -1
  1723. data/lib/tasks/script_core.rake +5 -2
  1724. data/script_core.gemspec +0 -1
  1725. data/spec/dummy/app/controllers/application_controller.rb +18 -0
  1726. data/spec/dummy/app/controllers/fields/choices_controller.rb +50 -0
  1727. data/spec/dummy/app/controllers/forms/formulas/playgrounds_controller.rb +2 -2
  1728. data/spec/dummy/app/controllers/playgrounds_controller.rb +18 -3
  1729. data/spec/dummy/app/controllers/time_zones_controller.rb +14 -0
  1730. data/spec/dummy/app/helpers/fields_helper.rb +0 -4
  1731. data/spec/dummy/app/lib/script_engine.rb +18 -7
  1732. data/spec/dummy/app/models/choice.rb +10 -0
  1733. data/spec/dummy/app/models/concerns/fields/helper.rb +23 -0
  1734. data/spec/dummy/app/models/concerns/fields/validations/acceptance.rb +1 -1
  1735. data/spec/dummy/app/models/concerns/fields/validations/confirmation.rb +1 -1
  1736. data/spec/dummy/app/models/concerns/fields/validations/exclusion.rb +2 -2
  1737. data/spec/dummy/app/models/concerns/fields/validations/format.rb +5 -7
  1738. data/spec/dummy/app/models/concerns/fields/validations/inclusion.rb +2 -2
  1739. data/spec/dummy/app/models/concerns/fields/validations/length.rb +2 -2
  1740. data/spec/dummy/app/models/concerns/fields/validations/numericality.rb +2 -2
  1741. data/spec/dummy/app/models/concerns/fields/validations/presence.rb +1 -1
  1742. data/spec/dummy/app/models/field.rb +8 -8
  1743. data/spec/dummy/app/models/field_options.rb +16 -8
  1744. data/spec/dummy/app/models/fields.rb +4 -0
  1745. data/spec/dummy/app/models/fields/boolean_field.rb +1 -1
  1746. data/spec/dummy/app/models/fields/date_field.rb +24 -0
  1747. data/spec/dummy/app/models/fields/datetime_field.rb +24 -0
  1748. data/spec/dummy/app/models/fields/multiple_nested_form_field.rb +8 -3
  1749. data/spec/dummy/app/models/fields/multiple_select_field.rb +42 -0
  1750. data/spec/dummy/app/models/fields/nested_form_field.rb +6 -5
  1751. data/spec/dummy/app/models/fields/options/date_field.rb +138 -0
  1752. data/spec/dummy/app/models/fields/options/datetime_field.rb +138 -0
  1753. data/spec/dummy/app/models/fields/options/multiple_select_field.rb +7 -0
  1754. data/spec/dummy/app/models/fields/options/select_field.rb +7 -0
  1755. data/spec/dummy/app/models/fields/select_field.rb +25 -0
  1756. data/spec/dummy/app/models/fields/validations/boolean_field.rb +1 -1
  1757. data/spec/dummy/app/models/fields/validations/date_field.rb +7 -0
  1758. data/spec/dummy/app/models/fields/validations/datetime_field.rb +7 -0
  1759. data/spec/dummy/app/models/fields/validations/decimal_field.rb +2 -2
  1760. data/spec/dummy/app/models/fields/validations/integer_field.rb +2 -2
  1761. data/spec/dummy/app/models/fields/validations/multiple_nested_form_field.rb +2 -2
  1762. data/spec/dummy/app/models/fields/validations/multiple_select_field.rb +8 -0
  1763. data/spec/dummy/app/models/fields/validations/nested_form_field.rb +1 -1
  1764. data/spec/dummy/app/models/fields/validations/select_field.rb +7 -0
  1765. data/spec/dummy/app/models/fields/validations/text_field.rb +3 -3
  1766. data/spec/dummy/app/models/metal_form.rb +4 -0
  1767. data/spec/dummy/app/models/non_configurable.rb +4 -0
  1768. data/spec/dummy/app/models/virtual_model.rb +8 -0
  1769. data/spec/dummy/app/presenters/fields/date_field_presenter.rb +53 -0
  1770. data/spec/dummy/app/presenters/fields/datetime_field_presenter.rb +53 -0
  1771. data/spec/dummy/app/presenters/fields/field_presenter.rb +3 -2
  1772. data/spec/dummy/app/presenters/fields/multiple_select_field_presenter.rb +37 -0
  1773. data/spec/dummy/app/presenters/fields/select_field_presenter.rb +26 -0
  1774. data/spec/dummy/app/views/_form_core/field_options/_date_field.html.erb +97 -0
  1775. data/spec/dummy/app/views/_form_core/field_options/_datetime_field.html.erb +97 -0
  1776. data/spec/dummy/app/views/_form_core/field_options/_multiple_select_field.html.erb +12 -0
  1777. data/spec/dummy/app/views/_form_core/field_options/_select_field.html.erb +12 -0
  1778. data/spec/dummy/app/views/_form_core/fields/_date_field.html.erb +9 -0
  1779. data/spec/dummy/app/views/_form_core/fields/_datetime_field.html.erb +9 -0
  1780. data/spec/dummy/app/views/_form_core/fields/_multiple_select_field.html.erb +18 -0
  1781. data/spec/dummy/app/views/_form_core/fields/_select_field.html.erb +17 -0
  1782. data/spec/dummy/app/views/fields/choices/_form.html.erb +34 -0
  1783. data/spec/dummy/app/views/fields/choices/edit.html.erb +6 -0
  1784. data/spec/dummy/app/views/fields/choices/index.html.erb +27 -0
  1785. data/spec/dummy/app/views/fields/choices/new.html.erb +6 -0
  1786. data/spec/dummy/app/views/forms/fields/index.html.erb +4 -1
  1787. data/spec/dummy/app/views/forms/formulas/playgrounds/create.html.erb +1 -1
  1788. data/spec/dummy/app/views/layouts/_nav.html.erb +22 -0
  1789. data/spec/dummy/app/views/nested_forms/fields/index.html.erb +10 -3
  1790. data/spec/dummy/app/views/playgrounds/_form.html.erb +1 -1
  1791. data/spec/dummy/config/application.rb +2 -1
  1792. data/spec/dummy/config/initializers/validates_timeliness.rb +42 -0
  1793. data/spec/dummy/config/routes.rb +3 -0
  1794. data/spec/dummy/db/migrate/20180916202025_create_forms.form_core.rb +1 -0
  1795. data/spec/dummy/db/migrate/20180916202122_create_choices.rb +12 -0
  1796. data/spec/dummy/db/migrate/20180916202123_add_position_to_choices.rb +9 -0
  1797. data/spec/dummy/db/schema.rb +19 -5
  1798. data/spec/dummy/lib/monkey_patches/big_decimal.rb +7 -3
  1799. data/spec/dummy/lib/monkey_patches/date.rb +12 -0
  1800. data/spec/dummy/lib/monkey_patches/time.rb +12 -0
  1801. data/spec/dummy/mruby/engine.gembox +1 -0
  1802. data/spec/dummy/mruby/lib/core_ext.rb +64 -2
  1803. data/spec/dummy/mruby/lib/input.rb +16 -4
  1804. data/spec/dummy/mruby/lib/io.rb +4 -3
  1805. data/spec/dummy/mruby/lib/output.rb +2 -28
  1806. data/spec/dummy/mruby/lib/script_kernel.rb +8 -7
  1807. data/spec/script_core_spec.rb +2 -2
  1808. data/tests/googletest/.clang-format +4 -0
  1809. data/tests/googletest/.gitignore +82 -0
  1810. data/tests/googletest/.travis.yml +68 -29
  1811. data/tests/googletest/BUILD.bazel +179 -0
  1812. data/tests/googletest/CMakeLists.txt +21 -4
  1813. data/tests/googletest/CONTRIBUTING.md +161 -0
  1814. data/tests/googletest/LICENSE +28 -0
  1815. data/tests/googletest/Makefile.am +12 -0
  1816. data/tests/googletest/README.md +28 -41
  1817. data/tests/googletest/WORKSPACE +10 -0
  1818. data/tests/googletest/appveyor.yml +118 -35
  1819. data/tests/googletest/ci/build-linux-autotools.sh +44 -0
  1820. data/tests/googletest/ci/build-linux-bazel.sh +36 -0
  1821. data/tests/googletest/ci/build-platformio.sh +2 -0
  1822. data/tests/googletest/ci/env-linux.sh +41 -0
  1823. data/tests/googletest/ci/env-osx.sh +47 -0
  1824. data/tests/googletest/ci/get-nprocessors.sh +48 -0
  1825. data/tests/googletest/ci/install-linux.sh +49 -0
  1826. data/tests/googletest/ci/install-osx.sh +40 -0
  1827. data/tests/googletest/ci/install-platformio.sh +5 -0
  1828. data/tests/googletest/ci/log-config.sh +51 -0
  1829. data/tests/googletest/ci/travis.sh +44 -0
  1830. data/tests/googletest/configure.ac +16 -0
  1831. data/tests/googletest/googlemock/CMakeLists.txt +78 -55
  1832. data/tests/googletest/googlemock/Makefile.am +6 -8
  1833. data/tests/googletest/googlemock/README.md +33 -73
  1834. data/tests/googletest/googlemock/cmake/gmock.pc.in +11 -0
  1835. data/tests/googletest/googlemock/cmake/gmock_main.pc.in +11 -0
  1836. data/tests/googletest/googlemock/configure.ac +6 -18
  1837. data/tests/googletest/googlemock/docs/CheatSheet.md +126 -99
  1838. data/tests/googletest/googlemock/docs/CookBook.md +271 -286
  1839. data/tests/googletest/googlemock/docs/DesignDoc.md +29 -27
  1840. data/tests/googletest/googlemock/docs/Documentation.md +7 -4
  1841. data/tests/googletest/googlemock/docs/ForDummies.md +41 -33
  1842. data/tests/googletest/googlemock/docs/FrequentlyAskedQuestions.md +28 -29
  1843. data/tests/googletest/googlemock/include/gmock/gmock-actions.h +232 -240
  1844. data/tests/googletest/googlemock/include/gmock/gmock-cardinalities.h +12 -6
  1845. data/tests/googletest/googlemock/include/gmock/gmock-function-mocker.h +218 -0
  1846. data/tests/googletest/googlemock/include/gmock/gmock-generated-actions.h +304 -796
  1847. data/tests/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +18 -184
  1848. data/tests/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +330 -673
  1849. data/tests/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +77 -141
  1850. data/tests/googletest/googlemock/include/gmock/gmock-generated-matchers.h +293 -1372
  1851. data/tests/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +22 -345
  1852. data/tests/googletest/googlemock/include/gmock/gmock-matchers.h +1382 -1218
  1853. data/tests/googletest/googlemock/include/gmock/gmock-more-actions.h +12 -96
  1854. data/tests/googletest/googlemock/include/gmock/gmock-more-matchers.h +39 -5
  1855. data/tests/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
  1856. data/tests/googletest/googlemock/include/gmock/gmock-spec-builders.h +362 -228
  1857. data/tests/googletest/googlemock/include/gmock/gmock.h +10 -3
  1858. data/tests/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
  1859. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +2 -0
  1860. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +3 -1
  1861. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +5 -8
  1862. data/tests/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +3 -10
  1863. data/tests/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +114 -54
  1864. data/tests/googletest/googlemock/include/gmock/internal/gmock-port.h +13 -17
  1865. data/tests/googletest/googlemock/include/gmock/internal/gmock-pp.h +317 -0
  1866. data/tests/googletest/googlemock/make/Makefile +23 -7
  1867. data/tests/googletest/googlemock/msvc/2010/gmock.sln +14 -0
  1868. data/tests/googletest/googlemock/msvc/2010/gmock.vcxproj +69 -6
  1869. data/tests/googletest/googlemock/msvc/2010/gmock_config.props +2 -2
  1870. data/tests/googletest/googlemock/msvc/2010/gmock_main.vcxproj +69 -6
  1871. data/tests/googletest/googlemock/msvc/2010/gmock_test.vcxproj +83 -8
  1872. data/tests/googletest/googlemock/msvc/2015/gmock.sln +14 -0
  1873. data/tests/googletest/googlemock/msvc/2015/gmock.vcxproj +63 -2
  1874. data/tests/googletest/googlemock/msvc/2015/gmock_main.vcxproj +63 -2
  1875. data/tests/googletest/googlemock/msvc/2015/gmock_test.vcxproj +76 -3
  1876. data/tests/googletest/googlemock/scripts/fuse_gmock_files.py +1 -1
  1877. data/tests/googletest/googlemock/scripts/generator/README +4 -5
  1878. data/tests/googletest/googlemock/scripts/generator/cpp/ast.py +6 -3
  1879. data/tests/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +18 -0
  1880. data/tests/googletest/googlemock/scripts/upload.py +4 -4
  1881. data/tests/googletest/googlemock/src/gmock-all.cc +1 -2
  1882. data/tests/googletest/googlemock/src/gmock-cardinalities.cc +7 -8
  1883. data/tests/googletest/googlemock/src/gmock-internal-utils.cc +38 -12
  1884. data/tests/googletest/googlemock/src/gmock-matchers.cc +127 -163
  1885. data/tests/googletest/googlemock/src/gmock-spec-builders.cc +150 -86
  1886. data/tests/googletest/googlemock/src/gmock.cc +41 -11
  1887. data/tests/googletest/googlemock/src/gmock_main.cc +14 -3
  1888. data/tests/googletest/googlemock/test/BUILD.bazel +106 -0
  1889. data/tests/googletest/googlemock/test/gmock-actions_test.cc +370 -328
  1890. data/tests/googletest/googlemock/test/gmock-cardinalities_test.cc +5 -6
  1891. data/tests/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
  1892. data/tests/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
  1893. data/tests/googletest/googlemock/test/gmock-function-mocker_test.cc +660 -0
  1894. data/tests/googletest/googlemock/test/gmock-generated-actions_test.cc +137 -301
  1895. data/tests/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +80 -43
  1896. data/tests/googletest/googlemock/test/gmock-generated-matchers_test.cc +239 -201
  1897. data/tests/googletest/googlemock/test/gmock-internal-utils_test.cc +126 -68
  1898. data/tests/googletest/googlemock/test/gmock-matchers_test.cc +1811 -674
  1899. data/tests/googletest/googlemock/test/gmock-more-actions_test.cc +162 -171
  1900. data/tests/googletest/googlemock/test/gmock-nice-strict_test.cc +121 -45
  1901. data/tests/googletest/googlemock/test/gmock-port_test.cc +1 -2
  1902. data/tests/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
  1903. data/tests/googletest/googlemock/test/gmock-pp_test.cc +73 -0
  1904. data/tests/googletest/googlemock/test/gmock-spec-builders_test.cc +152 -23
  1905. data/tests/googletest/googlemock/test/gmock_all_test.cc +1 -3
  1906. data/tests/googletest/googlemock/test/gmock_ex_test.cc +4 -5
  1907. data/tests/googletest/googlemock/test/gmock_leak_test.py +0 -4
  1908. data/tests/googletest/googlemock/test/gmock_leak_test_.cc +1 -2
  1909. data/tests/googletest/googlemock/test/gmock_link2_test.cc +2 -3
  1910. data/tests/googletest/googlemock/test/gmock_link_test.cc +2 -3
  1911. data/tests/googletest/googlemock/test/gmock_link_test.h +45 -24
  1912. data/tests/googletest/googlemock/test/gmock_output_test.py +10 -9
  1913. data/tests/googletest/googlemock/test/gmock_output_test_.cc +21 -3
  1914. data/tests/googletest/googlemock/test/gmock_output_test_golden.txt +8 -1
  1915. data/tests/googletest/googlemock/test/gmock_stress_test.cc +7 -89
  1916. data/tests/googletest/googlemock/test/gmock_test.cc +57 -96
  1917. data/tests/googletest/googlemock/test/gmock_test_utils.py +5 -9
  1918. data/tests/googletest/googletest/CMakeLists.txt +122 -83
  1919. data/tests/googletest/googletest/Makefile.am +103 -75
  1920. data/tests/googletest/googletest/README.md +236 -189
  1921. data/tests/googletest/googletest/cmake/Config.cmake.in +9 -0
  1922. data/tests/googletest/googletest/cmake/gtest.pc.in +10 -0
  1923. data/tests/googletest/googletest/cmake/gtest_main.pc.in +11 -0
  1924. data/tests/googletest/googletest/cmake/internal_utils.cmake +158 -58
  1925. data/tests/googletest/googletest/cmake/libgtest.la.in +21 -0
  1926. data/tests/googletest/googletest/configure.ac +2 -2
  1927. data/tests/googletest/googletest/docs/Pkgconfig.md +146 -0
  1928. data/tests/googletest/googletest/docs/PumpManual.md +5 -5
  1929. data/tests/googletest/googletest/docs/XcodeGuide.md +9 -9
  1930. data/tests/googletest/googletest/docs/advanced.md +2523 -0
  1931. data/tests/googletest/googletest/docs/faq.md +770 -0
  1932. data/tests/googletest/googletest/docs/primer.md +564 -0
  1933. data/tests/googletest/googletest/docs/samples.md +22 -0
  1934. data/tests/googletest/googletest/include/gtest/gtest-death-test.h +60 -11
  1935. data/tests/googletest/googletest/include/gtest/gtest-matchers.h +741 -0
  1936. data/tests/googletest/googletest/include/gtest/gtest-message.h +12 -44
  1937. data/tests/googletest/googletest/include/gtest/gtest-param-test.h +139 -1080
  1938. data/tests/googletest/googletest/include/gtest/gtest-printers.h +202 -268
  1939. data/tests/googletest/googletest/include/gtest/gtest-spi.h +13 -7
  1940. data/tests/googletest/googletest/include/gtest/gtest-test-part.h +21 -16
  1941. data/tests/googletest/googletest/include/gtest/gtest-typed-test.h +157 -84
  1942. data/tests/googletest/googletest/include/gtest/gtest.h +494 -277
  1943. data/tests/googletest/googletest/include/gtest/gtest_pred_impl.h +41 -40
  1944. data/tests/googletest/googletest/include/gtest/gtest_prod.h +10 -7
  1945. data/tests/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
  1946. data/tests/googletest/googletest/include/gtest/internal/custom/gtest-port.h +1 -33
  1947. data/tests/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +2 -2
  1948. data/tests/googletest/googletest/include/gtest/internal/custom/gtest.h +1 -5
  1949. data/tests/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +80 -95
  1950. data/tests/googletest/googletest/include/gtest/internal/gtest-filepath.h +8 -3
  1951. data/tests/googletest/googletest/include/gtest/internal/gtest-internal.h +415 -231
  1952. data/tests/googletest/googletest/include/gtest/internal/gtest-param-util.h +323 -174
  1953. data/tests/googletest/googletest/include/gtest/internal/gtest-port-arch.h +19 -5
  1954. data/tests/googletest/googletest/include/gtest/internal/gtest-port.h +289 -549
  1955. data/tests/googletest/googletest/include/gtest/internal/gtest-string.h +4 -4
  1956. data/tests/googletest/googletest/include/gtest/internal/gtest-type-util.h +23 -7
  1957. data/tests/googletest/googletest/include/gtest/internal/gtest-type-util.h.pump +24 -7
  1958. data/tests/googletest/googletest/make/Makefile +13 -7
  1959. data/tests/googletest/googletest/msvc/2010/gtest-md.sln +55 -0
  1960. data/tests/googletest/googletest/msvc/2010/gtest-md.vcxproj +149 -0
  1961. data/tests/googletest/googletest/msvc/2010/gtest-md.vcxproj.filters +18 -0
  1962. data/tests/googletest/googletest/msvc/2010/gtest.sln +55 -0
  1963. data/tests/googletest/googletest/msvc/2010/gtest.vcxproj +149 -0
  1964. data/tests/googletest/googletest/msvc/2010/gtest.vcxproj.filters +18 -0
  1965. data/tests/googletest/googletest/msvc/2010/gtest_main-md.vcxproj +154 -0
  1966. data/tests/googletest/googletest/msvc/2010/gtest_main-md.vcxproj.filters +18 -0
  1967. data/tests/googletest/googletest/msvc/2010/gtest_main.vcxproj +162 -0
  1968. data/tests/googletest/googletest/msvc/2010/gtest_main.vcxproj.filters +18 -0
  1969. data/tests/googletest/googletest/msvc/2010/gtest_prod_test-md.vcxproj +199 -0
  1970. data/tests/googletest/googletest/msvc/2010/gtest_prod_test-md.vcxproj.filters +26 -0
  1971. data/tests/googletest/googletest/msvc/2010/gtest_prod_test.vcxproj +191 -0
  1972. data/tests/googletest/googletest/msvc/2010/gtest_prod_test.vcxproj.filters +26 -0
  1973. data/tests/googletest/googletest/msvc/2010/gtest_unittest-md.vcxproj +188 -0
  1974. data/tests/googletest/googletest/msvc/2010/gtest_unittest-md.vcxproj.filters +18 -0
  1975. data/tests/googletest/googletest/msvc/2010/gtest_unittest.vcxproj +180 -0
  1976. data/tests/googletest/googletest/msvc/2010/gtest_unittest.vcxproj.filters +18 -0
  1977. data/tests/googletest/googletest/samples/prime_tables.h +13 -10
  1978. data/tests/googletest/googletest/samples/sample1.cc +1 -3
  1979. data/tests/googletest/googletest/samples/sample1.h +0 -2
  1980. data/tests/googletest/googletest/samples/sample10_unittest.cc +4 -9
  1981. data/tests/googletest/googletest/samples/sample1_unittest.cc +2 -4
  1982. data/tests/googletest/googletest/samples/sample2.cc +1 -3
  1983. data/tests/googletest/googletest/samples/sample2.h +4 -8
  1984. data/tests/googletest/googletest/samples/sample2_unittest.cc +5 -7
  1985. data/tests/googletest/googletest/samples/sample3-inl.h +9 -9
  1986. data/tests/googletest/googletest/samples/sample3_unittest.cc +13 -15
  1987. data/tests/googletest/googletest/samples/sample4.cc +10 -2
  1988. data/tests/googletest/googletest/samples/sample4.h +3 -3
  1989. data/tests/googletest/googletest/samples/sample4_unittest.cc +11 -3
  1990. data/tests/googletest/googletest/samples/sample5_unittest.cc +11 -14
  1991. data/tests/googletest/googletest/samples/sample6_unittest.cc +12 -12
  1992. data/tests/googletest/googletest/samples/sample7_unittest.cc +14 -27
  1993. data/tests/googletest/googletest/samples/sample8_unittest.cc +20 -39
  1994. data/tests/googletest/googletest/samples/sample9_unittest.cc +6 -10
  1995. data/tests/googletest/googletest/scripts/fuse_gtest_files.py +1 -1
  1996. data/tests/googletest/googletest/scripts/gen_gtest_pred_impl.py +10 -10
  1997. data/tests/googletest/googletest/scripts/upload.py +5 -5
  1998. data/tests/googletest/googletest/src/gtest-all.cc +3 -3
  1999. data/tests/googletest/googletest/src/gtest-death-test.cc +417 -121
  2000. data/tests/googletest/googletest/src/gtest-filepath.cc +15 -23
  2001. data/tests/googletest/googletest/src/gtest-internal-inl.h +145 -122
  2002. data/tests/googletest/googletest/src/gtest-matchers.cc +97 -0
  2003. data/tests/googletest/googletest/src/gtest-port.cc +263 -129
  2004. data/tests/googletest/googletest/src/gtest-printers.cc +92 -24
  2005. data/tests/googletest/googletest/src/gtest-test-part.cc +13 -19
  2006. data/tests/googletest/googletest/src/gtest-typed-test.cc +5 -5
  2007. data/tests/googletest/googletest/src/gtest.cc +1469 -742
  2008. data/tests/googletest/googletest/src/gtest_main.cc +12 -3
  2009. data/tests/googletest/googletest/test/BUILD.bazel +518 -0
  2010. data/tests/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
  2011. data/tests/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
  2012. data/tests/googletest/googletest/test/googletest-catch-exceptions-test.py +231 -0
  2013. data/tests/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
  2014. data/tests/googletest/googletest/test/googletest-color-test.py +127 -0
  2015. data/tests/googletest/googletest/test/googletest-color-test_.cc +62 -0
  2016. data/tests/googletest/googletest/test/googletest-death-test-test.cc +1458 -0
  2017. data/tests/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
  2018. data/tests/googletest/googletest/test/googletest-env-var-test.py +117 -0
  2019. data/tests/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
  2020. data/tests/googletest/googletest/test/googletest-filepath-test.cc +649 -0
  2021. data/tests/googletest/googletest/test/googletest-filter-unittest.py +639 -0
  2022. data/tests/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
  2023. data/tests/googletest/googletest/test/googletest-json-outfiles-test.py +185 -0
  2024. data/tests/googletest/googletest/test/googletest-json-output-unittest.py +758 -0
  2025. data/tests/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
  2026. data/tests/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
  2027. data/tests/googletest/googletest/test/googletest-listener-test.cc +407 -0
  2028. data/tests/googletest/googletest/test/googletest-message-test.cc +158 -0
  2029. data/tests/googletest/googletest/test/googletest-options-test.cc +216 -0
  2030. data/tests/googletest/googletest/test/googletest-output-test-golden-lin.txt +1128 -0
  2031. data/tests/googletest/googletest/test/googletest-output-test.py +346 -0
  2032. data/tests/googletest/googletest/test/googletest-output-test_.cc +1145 -0
  2033. data/tests/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
  2034. data/tests/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
  2035. data/tests/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
  2036. data/tests/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
  2037. data/tests/googletest/googletest/test/googletest-param-test-test.cc +1055 -0
  2038. data/tests/googletest/googletest/test/googletest-param-test-test.h +51 -0
  2039. data/tests/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
  2040. data/tests/googletest/googletest/test/googletest-port-test.cc +1290 -0
  2041. data/tests/googletest/googletest/test/googletest-printers-test.cc +1561 -0
  2042. data/tests/googletest/googletest/test/googletest-shuffle-test.py +323 -0
  2043. data/tests/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
  2044. data/tests/googletest/googletest/test/googletest-test-part-test.cc +230 -0
  2045. data/tests/googletest/googletest/test/googletest-test2_test.cc +61 -0
  2046. data/tests/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
  2047. data/tests/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
  2048. data/tests/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
  2049. data/tests/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
  2050. data/tests/googletest/googletest/test/gtest-typed-test2_test.cc +3 -4
  2051. data/tests/googletest/googletest/test/gtest-typed-test_test.cc +144 -63
  2052. data/tests/googletest/googletest/test/gtest-typed-test_test.h +4 -5
  2053. data/tests/googletest/googletest/test/gtest-unittest-api_test.cc +122 -123
  2054. data/tests/googletest/googletest/test/gtest_all_test.cc +10 -11
  2055. data/tests/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
  2056. data/tests/googletest/googletest/test/gtest_environment_test.cc +3 -7
  2057. data/tests/googletest/googletest/test/gtest_help_test.py +1 -3
  2058. data/tests/googletest/googletest/test/gtest_help_test_.cc +1 -2
  2059. data/tests/googletest/googletest/test/gtest_json_test_utils.py +60 -0
  2060. data/tests/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
  2061. data/tests/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
  2062. data/tests/googletest/googletest/test/gtest_main_unittest.cc +3 -4
  2063. data/tests/googletest/googletest/test/gtest_no_test_unittest.cc +0 -2
  2064. data/tests/googletest/googletest/test/gtest_pred_impl_unittest.cc +11 -11
  2065. data/tests/googletest/googletest/test/gtest_premature_exit_test.cc +3 -4
  2066. data/tests/googletest/googletest/test/gtest_prod_test.cc +3 -4
  2067. data/tests/googletest/googletest/test/gtest_repeat_test.cc +8 -28
  2068. data/tests/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
  2069. data/tests/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
  2070. data/tests/googletest/googletest/test/gtest_skip_test.cc +55 -0
  2071. data/tests/googletest/googletest/test/gtest_sole_header_test.cc +1 -2
  2072. data/tests/googletest/googletest/test/gtest_stress_test.cc +3 -11
  2073. data/tests/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
  2074. data/tests/googletest/googletest/test/gtest_test_utils.py +15 -22
  2075. data/tests/googletest/googletest/test/gtest_testbridge_test.py +63 -0
  2076. data/tests/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
  2077. data/tests/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +2 -4
  2078. data/tests/googletest/googletest/test/gtest_unittest.cc +770 -924
  2079. data/tests/googletest/googletest/test/gtest_xml_outfile1_test_.cc +2 -8
  2080. data/tests/googletest/googletest/test/gtest_xml_outfile2_test_.cc +2 -8
  2081. data/tests/googletest/googletest/test/gtest_xml_outfiles_test.py +14 -11
  2082. data/tests/googletest/googletest/test/gtest_xml_output_unittest.py +132 -51
  2083. data/tests/googletest/googletest/test/gtest_xml_output_unittest_.cc +21 -14
  2084. data/tests/googletest/googletest/test/gtest_xml_test_utils.py +24 -22
  2085. data/tests/googletest/googletest/test/production.cc +2 -3
  2086. data/tests/googletest/googletest/test/production.h +2 -3
  2087. data/tests/googletest/googletest/xcode/Config/DebugProject.xcconfig +1 -1
  2088. data/tests/googletest/googletest/xcode/Config/FrameworkTarget.xcconfig +1 -1
  2089. data/tests/googletest/googletest/xcode/Config/General.xcconfig +3 -3
  2090. data/tests/googletest/googletest/xcode/Config/ReleaseProject.xcconfig +1 -1
  2091. data/tests/googletest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +1 -1
  2092. data/tests/googletest/googletest/xcode/Scripts/versiongenerate.py +4 -4
  2093. data/tests/googletest/googletest/xcode/gtest.xcodeproj/project.pbxproj +51 -16
  2094. data/tests/googletest/library.json +59 -0
  2095. data/tests/googletest/platformio.ini +31 -0
  2096. metadata +1391 -137
  2097. data/ext/enterprise_script_service/libseccomp/README +0 -65
  2098. data/ext/enterprise_script_service/libseccomp/SUBMITTING_PATCHES +0 -123
  2099. data/ext/enterprise_script_service/mruby/MITL +0 -20
  2100. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +0 -30
  2101. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/gc_filedes.sh +0 -4
  2102. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/init_mrbtest.c +0 -38
  2103. data/ext/enterprise_script_service/mruby/mrblib/float.rb +0 -9
  2104. data/ext/enterprise_script_service/mruby/src/ext/.gitkeep +0 -0
  2105. data/ext/enterprise_script_service/mruby/test/report.rb +0 -4
  2106. data/spec/dummy/app/models/fields/options/boolean_field.rb +0 -6
  2107. data/spec/dummy/app/models/fields/options/multiple_nested_form_field.rb +0 -6
  2108. data/spec/dummy/app/models/fields/options/nested_form_field.rb +0 -6
  2109. data/tests/googletest/googlemock/CHANGES +0 -126
  2110. data/tests/googletest/googlemock/docs/DevGuide.md +0 -132
  2111. data/tests/googletest/googlemock/docs/v1_5/CheatSheet.md +0 -525
  2112. data/tests/googletest/googlemock/docs/v1_5/CookBook.md +0 -3250
  2113. data/tests/googletest/googlemock/docs/v1_5/Documentation.md +0 -11
  2114. data/tests/googletest/googlemock/docs/v1_5/ForDummies.md +0 -439
  2115. data/tests/googletest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +0 -624
  2116. data/tests/googletest/googlemock/docs/v1_6/CheatSheet.md +0 -534
  2117. data/tests/googletest/googlemock/docs/v1_6/CookBook.md +0 -3342
  2118. data/tests/googletest/googlemock/docs/v1_6/Documentation.md +0 -12
  2119. data/tests/googletest/googlemock/docs/v1_6/ForDummies.md +0 -439
  2120. data/tests/googletest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +0 -628
  2121. data/tests/googletest/googlemock/docs/v1_7/CheatSheet.md +0 -556
  2122. data/tests/googletest/googlemock/docs/v1_7/CookBook.md +0 -3432
  2123. data/tests/googletest/googlemock/docs/v1_7/Documentation.md +0 -12
  2124. data/tests/googletest/googlemock/docs/v1_7/ForDummies.md +0 -439
  2125. data/tests/googletest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +0 -628
  2126. data/tests/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h +0 -397
  2127. data/tests/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +0 -161
  2128. data/tests/googletest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +0 -279
  2129. data/tests/googletest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +0 -136
  2130. data/tests/googletest/googlemock/test/gmock-generated-internal-utils_test.cc +0 -127
  2131. data/tests/googletest/googletest/.gitignore +0 -2
  2132. data/tests/googletest/googletest/CHANGES +0 -157
  2133. data/tests/googletest/googletest/build-aux/.keep +0 -0
  2134. data/tests/googletest/googletest/docs/AdvancedGuide.md +0 -2182
  2135. data/tests/googletest/googletest/docs/DevGuide.md +0 -126
  2136. data/tests/googletest/googletest/docs/Documentation.md +0 -14
  2137. data/tests/googletest/googletest/docs/FAQ.md +0 -1087
  2138. data/tests/googletest/googletest/docs/Primer.md +0 -502
  2139. data/tests/googletest/googletest/docs/Samples.md +0 -14
  2140. data/tests/googletest/googletest/docs/V1_5_AdvancedGuide.md +0 -2096
  2141. data/tests/googletest/googletest/docs/V1_5_Documentation.md +0 -12
  2142. data/tests/googletest/googletest/docs/V1_5_FAQ.md +0 -886
  2143. data/tests/googletest/googletest/docs/V1_5_Primer.md +0 -497
  2144. data/tests/googletest/googletest/docs/V1_5_PumpManual.md +0 -177
  2145. data/tests/googletest/googletest/docs/V1_5_XcodeGuide.md +0 -93
  2146. data/tests/googletest/googletest/docs/V1_6_AdvancedGuide.md +0 -2178
  2147. data/tests/googletest/googletest/docs/V1_6_Documentation.md +0 -14
  2148. data/tests/googletest/googletest/docs/V1_6_FAQ.md +0 -1038
  2149. data/tests/googletest/googletest/docs/V1_6_Primer.md +0 -501
  2150. data/tests/googletest/googletest/docs/V1_6_PumpManual.md +0 -177
  2151. data/tests/googletest/googletest/docs/V1_6_Samples.md +0 -14
  2152. data/tests/googletest/googletest/docs/V1_6_XcodeGuide.md +0 -93
  2153. data/tests/googletest/googletest/docs/V1_7_AdvancedGuide.md +0 -2181
  2154. data/tests/googletest/googletest/docs/V1_7_Documentation.md +0 -14
  2155. data/tests/googletest/googletest/docs/V1_7_FAQ.md +0 -1082
  2156. data/tests/googletest/googletest/docs/V1_7_Primer.md +0 -501
  2157. data/tests/googletest/googletest/docs/V1_7_PumpManual.md +0 -177
  2158. data/tests/googletest/googletest/docs/V1_7_Samples.md +0 -14
  2159. data/tests/googletest/googletest/docs/V1_7_XcodeGuide.md +0 -93
  2160. data/tests/googletest/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  2161. data/tests/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  2162. data/tests/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  2163. data/tests/googletest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  2164. data/tests/googletest/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  2165. data/tests/googletest/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  2166. data/tests/googletest/googletest/msvc/gtest-md.sln +0 -45
  2167. data/tests/googletest/googletest/msvc/gtest-md.vcproj +0 -126
  2168. data/tests/googletest/googletest/msvc/gtest.sln +0 -45
  2169. data/tests/googletest/googletest/msvc/gtest.vcproj +0 -126
  2170. data/tests/googletest/googletest/msvc/gtest_main-md.vcproj +0 -129
  2171. data/tests/googletest/googletest/msvc/gtest_main.vcproj +0 -129
  2172. data/tests/googletest/googletest/msvc/gtest_prod_test-md.vcproj +0 -164
  2173. data/tests/googletest/googletest/msvc/gtest_prod_test.vcproj +0 -164
  2174. data/tests/googletest/googletest/msvc/gtest_unittest-md.vcproj +0 -147
  2175. data/tests/googletest/googletest/msvc/gtest_unittest.vcproj +0 -147
  2176. data/tests/googletest/googletest/test/gtest-death-test_ex_test.cc +0 -93
  2177. data/tests/googletest/googletest/test/gtest-death-test_test.cc +0 -1427
  2178. data/tests/googletest/googletest/test/gtest-filepath_test.cc +0 -662
  2179. data/tests/googletest/googletest/test/gtest-linked_ptr_test.cc +0 -154
  2180. data/tests/googletest/googletest/test/gtest-listener_test.cc +0 -311
  2181. data/tests/googletest/googletest/test/gtest-message_test.cc +0 -159
  2182. data/tests/googletest/googletest/test/gtest-options_test.cc +0 -215
  2183. data/tests/googletest/googletest/test/gtest-param-test2_test.cc +0 -65
  2184. data/tests/googletest/googletest/test/gtest-param-test_test.cc +0 -1055
  2185. data/tests/googletest/googletest/test/gtest-param-test_test.h +0 -57
  2186. data/tests/googletest/googletest/test/gtest-port_test.cc +0 -1304
  2187. data/tests/googletest/googletest/test/gtest-printers_test.cc +0 -1635
  2188. data/tests/googletest/googletest/test/gtest-test-part_test.cc +0 -208
  2189. data/tests/googletest/googletest/test/gtest-tuple_test.cc +0 -320
  2190. data/tests/googletest/googletest/test/gtest_break_on_failure_unittest.py +0 -212
  2191. data/tests/googletest/googletest/test/gtest_break_on_failure_unittest_.cc +0 -88
  2192. data/tests/googletest/googletest/test/gtest_catch_exceptions_test.py +0 -237
  2193. data/tests/googletest/googletest/test/gtest_catch_exceptions_test_.cc +0 -311
  2194. data/tests/googletest/googletest/test/gtest_color_test.py +0 -130
  2195. data/tests/googletest/googletest/test/gtest_color_test_.cc +0 -71
  2196. data/tests/googletest/googletest/test/gtest_env_var_test.py +0 -117
  2197. data/tests/googletest/googletest/test/gtest_env_var_test_.cc +0 -126
  2198. data/tests/googletest/googletest/test/gtest_filter_unittest.py +0 -636
  2199. data/tests/googletest/googletest/test/gtest_filter_unittest_.cc +0 -140
  2200. data/tests/googletest/googletest/test/gtest_list_tests_unittest.py +0 -207
  2201. data/tests/googletest/googletest/test/gtest_list_tests_unittest_.cc +0 -157
  2202. data/tests/googletest/googletest/test/gtest_output_test.py +0 -340
  2203. data/tests/googletest/googletest/test/gtest_output_test_.cc +0 -1062
  2204. data/tests/googletest/googletest/test/gtest_output_test_golden_lin.txt +0 -743
  2205. data/tests/googletest/googletest/test/gtest_shuffle_test.py +0 -325
  2206. data/tests/googletest/googletest/test/gtest_shuffle_test_.cc +0 -103
  2207. data/tests/googletest/googletest/test/gtest_throw_on_failure_test.py +0 -171
  2208. data/tests/googletest/googletest/test/gtest_throw_on_failure_test_.cc +0 -72
  2209. data/tests/googletest/googletest/test/gtest_uninitialized_test.py +0 -70
  2210. data/tests/googletest/googletest/test/gtest_uninitialized_test_.cc +0 -43
  2211. data/tests/googletest/travis.sh +0 -15
@@ -0,0 +1,198 @@
1
+ #!/usr/bin/env python
2
+
3
+ # Copyright Rene Rivera 2016
4
+ #
5
+ # Distributed under the Boost Software License, Version 1.0.
6
+ # (See accompanying file LICENSE_1_0.txt or copy at
7
+ # http://www.boost.org/LICENSE_1_0.txt)
8
+
9
+ import os.path
10
+ import shutil
11
+ import sys
12
+ from common import toolset_info, main, utils, script_common, ci_cli, set_arg
13
+
14
+ __dirname__ = os.path.dirname(os.path.realpath(__file__))
15
+
16
+ class script(script_common):
17
+ '''
18
+ Main script to test a Boost C++ Library.
19
+ '''
20
+
21
+ def __init__(self, ci_klass, **kargs):
22
+ script_common.__init__(self, ci_klass, **kargs)
23
+
24
+ def init(self, opt, kargs):
25
+ opt.add_option( '--toolset',
26
+ help="single toolset to test with" )
27
+ opt.add_option( '--target',
28
+ help="test target to build for testing, defaults to TARGET or 'minimal'")
29
+ opt.add_option( '--address-model',
30
+ help="address model to test, ie 64 or 32" )
31
+ opt.add_option( '--variant',
32
+ help="variant to test, ie debug, release" )
33
+ set_arg(kargs, 'toolset', os.getenv("TOOLSET"))
34
+ set_arg(kargs, 'target', os.getenv('TARGET', 'minimal'))
35
+ set_arg(kargs, 'address_model', os.getenv("ADDRESS_MODEL",None))
36
+ set_arg(kargs, 'variant', os.getenv("VARIANT","debug"))
37
+ set_arg(kargs, 'cxxflags', os.getenv("CXXFLAGS",None))
38
+ return kargs
39
+
40
+ def start(self):
41
+ script_common.start(self)
42
+ # Some setup we need to redo for each invocation.
43
+ self.boost_root = os.path.join(self.ci.work_dir,'boostorg','boost')
44
+
45
+ @property
46
+ def repo_path(self):
47
+ if not hasattr(self,'_repo_path'):
48
+ # Find the path for the submodule of the repo we are testing.
49
+ if self.repo != 'boost':
50
+ self._repo_path = None
51
+ with open(os.path.join(self.boost_root,'.gitmodules'),"rU") as f:
52
+ path = None
53
+ url = None
54
+ for line in f:
55
+ line = line.strip()
56
+ if line.startswith("[submodule"):
57
+ path = None
58
+ url = None
59
+ else:
60
+ name = line.split("=")[0].strip()
61
+ value = line.split("=")[1].strip()
62
+ if name == "path":
63
+ path = value
64
+ elif name == "url":
65
+ url = value
66
+ if name and url and url.endswith("/%s.git"%(self.repo)):
67
+ self._repo_path = path
68
+ if not self._repo_path:
69
+ self._repo_path = "libs/%s"%(self.repo)
70
+ return self._repo_path
71
+
72
+ def command_install(self):
73
+ script_common.command_install(self)
74
+ # Fetch & install toolset..
75
+ utils.log( "Install toolset: %s"%(self.toolset) )
76
+ if self.toolset:
77
+ self.command_install_toolset(self.toolset)
78
+
79
+ def command_before_build(self):
80
+ script_common.command_before_build(self)
81
+
82
+ # Clone boost super-project.
83
+ if self.repo != 'boost':
84
+ utils.git_clone('boost',self.branch,cwd=self.ci.work_dir,no_submodules=True)
85
+ utils.check_call("git","submodule","update","--quiet","--init","tools/build")
86
+ utils.check_call("git","submodule","update","--quiet","--init","tools/boostdep")
87
+ # The global jamfiles require config as they trigger build config checks.
88
+ utils.check_call("git","submodule","update","--quiet","--init","libs/config")
89
+
90
+ # Find the path for the submodule of the repo we are testing.
91
+ if self.repo != 'boost':
92
+ self.repo_dir = os.path.join(self.boost_root,self.repo_path)
93
+
94
+ if self.repo != 'boost':
95
+ # Copy in the existing library tree checkout.
96
+ shutil.rmtree(self.repo_path)
97
+ shutil.copytree(self.root_dir, self.repo_path)
98
+
99
+ # Fetch the dependencies for the library we are testing.
100
+ if self.repo != 'boost':
101
+ os.chdir(self.boost_root)
102
+ utils.check_call(
103
+ sys.executable,
104
+ 'tools/boostdep/depinst/depinst.py',
105
+ self.repo)
106
+
107
+ # Create config file for toolset.
108
+ if not isinstance(self.ci, ci_cli):
109
+ cxxflags = None
110
+ if self.cxxflags:
111
+ cxxflags = self.cxxflags.split()
112
+ cxxflags = " <cxxflags>".join(cxxflags)
113
+ utils.make_file(os.path.join(self.boost_root, 'project-config.jam'),
114
+ """
115
+ using %(toolset)s : %(version)s : %(command)s : %(cxxflags)s ;
116
+ using python : %(pyversion)s : "%(python)s" ;
117
+ """%{
118
+ 'toolset':toolset_info[self.toolset]['toolset'],
119
+ 'version':toolset_info[self.toolset]['version'],
120
+ 'command':toolset_info[self.toolset]['command'],
121
+ 'cxxflags':"<cxxflags>"+cxxflags if cxxflags else "",
122
+ 'pyversion':"%s.%s"%(sys.version_info[0],sys.version_info[1]),
123
+ 'python':sys.executable.replace("\\","\\\\")
124
+ })
125
+
126
+ def command_build(self):
127
+ script_common.command_build(self)
128
+
129
+ # Set up tools.
130
+ utils.makedirs(os.path.join(self.build_dir,'dist','bin'))
131
+ if not isinstance(self.ci, ci_cli) and toolset_info[self.toolset]['command']:
132
+ os.environ['PATH'] = os.pathsep.join([
133
+ os.path.dirname(toolset_info[self.toolset]['command']),
134
+ os.path.join(self.build_dir,'dist','bin'),
135
+ os.environ['PATH']])
136
+ else:
137
+ os.environ['PATH'] = os.pathsep.join([
138
+ os.path.join(self.build_dir,'dist','bin'),
139
+ os.environ['PATH']])
140
+ os.environ['BOOST_BUILD_PATH'] = self.build_dir
141
+
142
+ # Bootstrap Boost Build engine.
143
+ os.chdir(os.path.join(self.boost_root,"tools","build"))
144
+ if sys.platform == 'win32':
145
+ utils.check_call(".\\bootstrap.bat")
146
+ shutil.copy2("b2.exe", os.path.join(self.build_dir,"dist","bin","b2.exe"))
147
+ else:
148
+ utils.check_call("./bootstrap.sh")
149
+ shutil.copy2("b2", os.path.join(self.build_dir,"dist","bin","b2"))
150
+ utils.check_call("git","clean","-dfqx")
151
+
152
+ # Run the limited tests.
153
+ if self.repo != 'boost':
154
+ print("--- Testing %s ---"%(self.repo_path))
155
+ os.chdir(os.path.join(self.boost_root,'status'))
156
+ to_test = self.repo_path.split("/")
157
+ del to_test[0]
158
+ toolset_to_test = ""
159
+ if self.toolset:
160
+ if not isinstance(self.ci, ci_cli):
161
+ toolset_to_test = toolset_info[self.toolset]['toolset']
162
+ else:
163
+ toolset_to_test = self.toolset
164
+ self.b2(
165
+ '-d1',
166
+ '-p0',
167
+ '--include-tests=%s'%("/".join(to_test)),
168
+ 'preserve-test-targets=off',
169
+ '--dump-tests',
170
+ '--build-dir=%s'%(self.build_dir),
171
+ '--out-xml=%s'%(os.path.join(self.build_dir,'regression.xml')),
172
+ '' if not toolset_to_test else 'toolset=%s'%(toolset_to_test),
173
+ '' if not self.address_model else 'address-model=%s'%(self.address_model),
174
+ 'variant=%s'%(self.variant),
175
+ '--test-type=%s'%(self.target),
176
+ '--verbose-test'
177
+ )
178
+
179
+ # Generate a readable test report.
180
+ import build_log
181
+ log_main = build_log.Main([
182
+ '--output=console',
183
+ os.path.join(self.build_dir,'regression.xml')])
184
+ # And exit with an error if the report contains failures.
185
+ # This lets the CI notice the error and report a failed build.
186
+ # And hence trigger the failure machinery, like sending emails.
187
+ if log_main.failed:
188
+ self.ci.finish(-1)
189
+
190
+ def command_before_cache(self):
191
+ script_common.command_before_cache(self)
192
+ os.chdir(self.boost_root)
193
+ utils.check_call("git","clean","-dfqx")
194
+ utils.check_call("git","submodule","--quiet","foreach","git","clean","-dfqx")
195
+ utils.check_call("git","status","-bs")
196
+ utils.check_call("git","submodule","foreach","git","status","-bs")
197
+
198
+ main(script)
@@ -0,0 +1,96 @@
1
+ * text=auto !eol svneol=native#text/plain
2
+ *.gitattributes text svneol=native#text/plain
3
+
4
+ # Scriptish formats
5
+ *.bat text svneol=native#text/plain
6
+ *.bsh text svneol=native#text/x-beanshell
7
+ *.cgi text svneol=native#text/plain
8
+ *.cmd text svneol=native#text/plain
9
+ *.js text svneol=native#text/javascript
10
+ *.php text svneol=native#text/x-php
11
+ *.pl text svneol=native#text/x-perl
12
+ *.pm text svneol=native#text/x-perl
13
+ *.py text svneol=native#text/x-python
14
+ *.sh eol=lf svneol=LF#text/x-sh
15
+ configure eol=lf svneol=LF#text/x-sh
16
+
17
+ # Image formats
18
+ *.bmp binary svneol=unset#image/bmp
19
+ *.gif binary svneol=unset#image/gif
20
+ *.ico binary svneol=unset#image/ico
21
+ *.jpeg binary svneol=unset#image/jpeg
22
+ *.jpg binary svneol=unset#image/jpeg
23
+ *.png binary svneol=unset#image/png
24
+ *.tif binary svneol=unset#image/tiff
25
+ *.tiff binary svneol=unset#image/tiff
26
+ *.svg text svneol=native#image/svg%2Bxml
27
+
28
+ # Data formats
29
+ *.pdf binary svneol=unset#application/pdf
30
+ *.avi binary svneol=unset#video/avi
31
+ *.doc binary svneol=unset#application/msword
32
+ *.dsp text svneol=crlf#text/plain
33
+ *.dsw text svneol=crlf#text/plain
34
+ *.eps binary svneol=unset#application/postscript
35
+ *.gz binary svneol=unset#application/gzip
36
+ *.mov binary svneol=unset#video/quicktime
37
+ *.mp3 binary svneol=unset#audio/mpeg
38
+ *.ppt binary svneol=unset#application/vnd.ms-powerpoint
39
+ *.ps binary svneol=unset#application/postscript
40
+ *.psd binary svneol=unset#application/photoshop
41
+ *.rdf binary svneol=unset#text/rdf
42
+ *.rss text svneol=unset#text/xml
43
+ *.rtf binary svneol=unset#text/rtf
44
+ *.sln text svneol=native#text/plain
45
+ *.swf binary svneol=unset#application/x-shockwave-flash
46
+ *.tgz binary svneol=unset#application/gzip
47
+ *.vcproj text svneol=native#text/xml
48
+ *.vcxproj text svneol=native#text/xml
49
+ *.vsprops text svneol=native#text/xml
50
+ *.wav binary svneol=unset#audio/wav
51
+ *.xls binary svneol=unset#application/vnd.ms-excel
52
+ *.zip binary svneol=unset#application/zip
53
+
54
+ # Text formats
55
+ .htaccess text svneol=native#text/plain
56
+ *.bbk text svneol=native#text/xml
57
+ *.cmake text svneol=native#text/plain
58
+ *.css text svneol=native#text/css
59
+ *.dtd text svneol=native#text/xml
60
+ *.htm text svneol=native#text/html
61
+ *.html text svneol=native#text/html
62
+ *.ini text svneol=native#text/plain
63
+ *.log text svneol=native#text/plain
64
+ *.mak text svneol=native#text/plain
65
+ *.qbk text svneol=native#text/plain
66
+ *.rst text svneol=native#text/plain
67
+ *.sql text svneol=native#text/x-sql
68
+ *.txt text svneol=native#text/plain
69
+ *.xhtml text svneol=native#text/xhtml%2Bxml
70
+ *.xml text svneol=native#text/xml
71
+ *.xsd text svneol=native#text/xml
72
+ *.xsl text svneol=native#text/xml
73
+ *.xslt text svneol=native#text/xml
74
+ *.xul text svneol=native#text/xul
75
+ *.yml text svneol=native#text/plain
76
+ boost-no-inspect text svneol=native#text/plain
77
+ CHANGES text svneol=native#text/plain
78
+ COPYING text svneol=native#text/plain
79
+ INSTALL text svneol=native#text/plain
80
+ Jamfile text svneol=native#text/plain
81
+ Jamroot text svneol=native#text/plain
82
+ Jamfile.v2 text svneol=native#text/plain
83
+ Jamrules text svneol=native#text/plain
84
+ Makefile* text svneol=native#text/plain
85
+ README text svneol=native#text/plain
86
+ TODO text svneol=native#text/plain
87
+
88
+ # Code formats
89
+ *.c text svneol=native#text/plain
90
+ *.cpp text svneol=native#text/plain
91
+ *.h text svneol=native#text/plain
92
+ *.hpp text svneol=native#text/plain
93
+ *.ipp text svneol=native#text/plain
94
+ *.tpp text svneol=native#text/plain
95
+ *.jam text svneol=native#text/plain
96
+ *.java text svneol=native#text/plain
@@ -0,0 +1,39 @@
1
+ # Copyright 2016 Edward Diener
2
+ # Distributed under the Boost Software License, Version 1.0.
3
+ # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
4
+
5
+ language: cpp
6
+
7
+ sudo: false
8
+
9
+ python: "2.7"
10
+
11
+ os:
12
+ - linux
13
+ - osx
14
+
15
+ branches:
16
+ only:
17
+ - master
18
+ - develop
19
+
20
+ install:
21
+ - cd ..
22
+ - git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
23
+ - cd boost-root
24
+ - git submodule update --init tools/build
25
+ - git submodule update --init libs/config
26
+ - git submodule update --init tools/boostdep
27
+ - cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor
28
+ - python tools/boostdep/depinst/depinst.py preprocessor
29
+ - ./bootstrap.sh
30
+ - ./b2 headers
31
+
32
+ script:
33
+ - TOOLSET=gcc,clang
34
+ - if [ $TRAVIS_OS_NAME == osx ]; then TOOLSET=clang; fi
35
+ - ./b2 libs/preprocessor/test toolset=$TOOLSET
36
+
37
+ notifications:
38
+ email:
39
+ on_success: always
@@ -0,0 +1,36 @@
1
+ # Copyright 2017 Edward Diener
2
+ # Distributed under the Boost Software License, Version 1.0.
3
+ # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
4
+
5
+ version: 1.0.{build}-{branch}
6
+
7
+ shallow_clone: true
8
+
9
+ branches:
10
+ only:
11
+ - master
12
+ - develop
13
+
14
+ environment:
15
+ matrix:
16
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
17
+ TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0,msvc-12.0,msvc-14.0
18
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
19
+ TOOLSET: msvc-14.1
20
+
21
+ install:
22
+ - cd ..
23
+ - git clone -b %APPVEYOR_REPO_BRANCH% https://github.com/boostorg/boost.git boost-root
24
+ - cd boost-root
25
+ - git submodule update --init tools/build
26
+ - git submodule update --init libs/config
27
+ - git submodule update --init tools/boostdep
28
+ - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\preprocessor
29
+ - python tools/boostdep/depinst/depinst.py preprocessor
30
+ - bootstrap
31
+ - b2 headers
32
+
33
+ build: off
34
+
35
+ test_script:
36
+ - b2 libs/preprocessor/test toolset=%TOOLSET%
@@ -0,0 +1,2494 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
3
+
4
+ lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
+ <head>
6
+ <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
7
+ <meta name="generator" content="Docutils 0.3.8: http://docutils.sourceforge.net/" />
8
+ <title>Appendix A - An Introduction to Preprocessor Metaprogramming</title>
9
+ <meta name="copyright" content="From &quot;C++ Template Metaprogramming,&quot; by David Abrahams and Aleksey Gurtovoy. Copyright (c) 2005 by Pearson Education, Inc. Reprinted with permission." />
10
+ <style type="text/css">
11
+
12
+ /*
13
+ :Author: David Goodger
14
+ :Contact: goodger@users.sourceforge.net
15
+ :date: $Date: 2004/06/23 13:31:26 $
16
+ :version: $Revision: 1.37 $
17
+ :copyright: This stylesheet has been placed in the public domain.
18
+
19
+ Default cascading style sheet for the HTML output of Docutils.
20
+ */
21
+
22
+ .first {
23
+ margin-top: 0 }
24
+
25
+ .last {
26
+ margin-bottom: 0 }
27
+
28
+ a.toc-backref {
29
+ text-decoration: none ;
30
+ color: black }
31
+
32
+ blockquote.epigraph {
33
+ margin: 2em 5em ; }
34
+
35
+ dd {
36
+ margin-bottom: 0.5em }
37
+
38
+ /* Uncomment (& remove this text!) to get bold-faced definition list terms
39
+ dt {
40
+ font-weight: bold }
41
+ */
42
+
43
+ div.abstract {
44
+ margin: 2em 5em }
45
+
46
+ div.abstract p.topic-title {
47
+ font-weight: bold ;
48
+ text-align: center }
49
+
50
+ div.attention, div.caution, div.danger, div.error, div.hint,
51
+ div.important, div.note, div.tip, div.warning, div.admonition {
52
+ margin: 2em ;
53
+ border: medium outset ;
54
+ padding: 1em }
55
+
56
+ div.attention p.admonition-title, div.caution p.admonition-title,
57
+ div.danger p.admonition-title, div.error p.admonition-title,
58
+ div.warning p.admonition-title {
59
+ color: red ;
60
+ font-weight: bold ;
61
+ font-family: sans-serif }
62
+
63
+ div.hint p.admonition-title, div.important p.admonition-title,
64
+ div.note p.admonition-title, div.tip p.admonition-title,
65
+ div.admonition p.admonition-title {
66
+ font-weight: bold ;
67
+ font-family: sans-serif }
68
+
69
+ div.dedication {
70
+ margin: 2em 5em ;
71
+ text-align: center ;
72
+ font-style: italic }
73
+
74
+ div.dedication p.topic-title {
75
+ font-weight: bold ;
76
+ font-style: normal }
77
+
78
+ div.figure {
79
+ margin-left: 2em }
80
+
81
+ div.footer, div.header {
82
+ font-size: smaller }
83
+
84
+ div.sidebar {
85
+ margin-left: 1em ;
86
+ border: medium outset ;
87
+ padding: 0em 1em ;
88
+ background-color: #ffffee ;
89
+ width: 40% ;
90
+ float: right ;
91
+ clear: right }
92
+
93
+ div.sidebar p.rubric {
94
+ font-family: sans-serif ;
95
+ font-size: medium }
96
+
97
+ div.system-messages {
98
+ margin: 5em }
99
+
100
+ div.system-messages h1 {
101
+ color: red }
102
+
103
+ div.system-message {
104
+ border: medium outset ;
105
+ padding: 1em }
106
+
107
+ div.system-message p.system-message-title {
108
+ color: red ;
109
+ font-weight: bold }
110
+
111
+ div.topic {
112
+ margin: 2em }
113
+
114
+ h1.title {
115
+ text-align: center }
116
+
117
+ h2.subtitle {
118
+ text-align: center }
119
+
120
+ hr {
121
+ width: 75% }
122
+
123
+ ol.simple, ul.simple {
124
+ margin-bottom: 1em }
125
+
126
+ ol.arabic {
127
+ list-style: decimal }
128
+
129
+ ol.loweralpha {
130
+ list-style: lower-alpha }
131
+
132
+ ol.upperalpha {
133
+ list-style: upper-alpha }
134
+
135
+ ol.lowerroman {
136
+ list-style: lower-roman }
137
+
138
+ ol.upperroman {
139
+ list-style: upper-roman }
140
+
141
+ p.attribution {
142
+ text-align: right ;
143
+ margin-left: 50% }
144
+
145
+ p.caption {
146
+ font-style: italic }
147
+
148
+ p.credits {
149
+ font-style: italic ;
150
+ font-size: smaller }
151
+
152
+ p.label {
153
+ white-space: nowrap }
154
+
155
+ p.rubric {
156
+ font-weight: bold ;
157
+ font-size: larger ;
158
+ color: maroon ;
159
+ text-align: center }
160
+
161
+ p.sidebar-title {
162
+ font-family: sans-serif ;
163
+ font-weight: bold ;
164
+ font-size: larger }
165
+
166
+ p.sidebar-subtitle {
167
+ font-family: sans-serif ;
168
+ font-weight: bold }
169
+
170
+ p.topic-title {
171
+ font-weight: bold }
172
+
173
+ pre.address {
174
+ margin-bottom: 0 ;
175
+ margin-top: 0 ;
176
+ font-family: serif ;
177
+ font-size: 100% }
178
+
179
+ pre.line-block {
180
+ font-family: serif ;
181
+ font-size: 100% }
182
+
183
+ pre.literal-block, pre.doctest-block {
184
+ margin-left: 2em ;
185
+ margin-right: 2em ;
186
+ background-color: #eeeeee }
187
+
188
+ span.classifier {
189
+ font-family: sans-serif ;
190
+ font-style: oblique }
191
+
192
+ span.classifier-delimiter {
193
+ font-family: sans-serif ;
194
+ font-weight: bold }
195
+
196
+ span.interpreted {
197
+ font-family: sans-serif }
198
+
199
+ span.option {
200
+ white-space: nowrap }
201
+
202
+ span.option-argument {
203
+ font-style: italic }
204
+
205
+ span.pre {
206
+ white-space: pre }
207
+
208
+ span.problematic {
209
+ color: red }
210
+
211
+ table {
212
+ margin-top: 0.5em ;
213
+ margin-bottom: 0.5em }
214
+
215
+ table.citation {
216
+ border-left: solid thin gray ;
217
+ padding-left: 0.5ex }
218
+
219
+ table.docinfo {
220
+ margin: 2em 4em }
221
+
222
+ table.footnote {
223
+ border-left: solid thin black ;
224
+ padding-left: 0.5ex }
225
+
226
+ dt {
227
+ font-weight: bold }
228
+
229
+ td, th {
230
+ padding-left: 0.5em ;
231
+ padding-right: 0.5em ;
232
+ vertical-align: top }
233
+
234
+ th.docinfo-name, th.field-name {
235
+ font-weight: bold ;
236
+ text-align: left ;
237
+ white-space: nowrap }
238
+
239
+ h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
240
+ font-size: 100% }
241
+
242
+ tt {
243
+ background-color: #eeeeee }
244
+
245
+ ul.auto-toc {
246
+ list-style-type: none }
247
+
248
+ </style> </head>
249
+ <body><br />
250
+ <div class="document" id="preprocessor-title">
251
+ <h1 class="title">Appendix A - An Introduction to Preprocessor
252
+ Metaprogramming</h1>
253
+ <table class="docinfo" frame="void" rules="none">
254
+ <colgroup><col class="docinfo-name" /> <col class="docinfo-content" />
255
+ </colgroup>
256
+ <tbody valign="top">
257
+ <tr>
258
+ <th class="docinfo-name">Copyright:</th>
259
+ <td>From "C++ Template Metaprogramming," by David Abrahams and
260
+ Aleksey Gurtovoy. Copyright (c) 2005 by Pearson Education, Inc.
261
+ Reprinted with permission.</td>
262
+ </tr>
263
+ <tr class="field">
264
+ <th class="docinfo-name">ISBN:</th>
265
+ <td class="field-body">0321227255</td>
266
+ </tr>
267
+ </tbody>
268
+ </table>
269
+ <div class="section" id="motivation">
270
+ <h1><a name="motivation">A.1   Motivation</a></h1>
271
+ <p>Even with the full power of template metaprogramming and the <a class="reference"
272
+
273
+ href="http://www.boost.org/libs/mpl">Boost Metaprogramming library</a>
274
+ at our disposal, some C++ coding jobs still require a great deal of
275
+ boilerplate code repetition. We saw one example in Chapter 5, when we
276
+ implemented <tt class="docutils literal"><span class="pre">tiny_size</span></tt>:</p>
277
+ <pre class="literal-block">template &lt;class T0, class T1, class T2&gt;
278
+ struct tiny_size
279
+ : mpl::int_&lt;3&gt; {};
280
+ </pre>
281
+ <!-- : rst-mode hack -->
282
+ <!-- @prefix.append('struct none {};') -->
283
+ <p>Aside from the repeated pattern in the parameter list of the primary
284
+ template above, there are three partial specializations below, which
285
+ also follow a predictable pattern:</p>
286
+ <pre class="literal-block">template &lt;class T0, class T1&gt;
287
+ struct tiny_size&lt;T0,T1,none&gt;
288
+ : mpl::int_&lt;2&gt; {};
289
+
290
+ template &lt;class T0&gt;
291
+ struct tiny_size&lt;T0,none,none&gt;
292
+ : mpl::int_&lt;1&gt; {};
293
+
294
+ template &lt;&gt;
295
+ struct tiny_size&lt;none,none,none&gt;
296
+ : mpl::int_&lt;0&gt; {};
297
+ </pre>
298
+ <!-- : rst-mode hack -->
299
+ <!-- @compile('all') -->
300
+ <p>In this case there is only a small amount of code with such a
301
+ "mechanical" flavor, but had we been implementing <tt class="docutils literal"><span
302
+
303
+ class="pre">large</span></tt> instead of <tt class="docutils literal"><span
304
+
305
+ class="pre">tiny</span></tt>, there might easily have been a great
306
+ deal more. When the number of instances of a pattern grows beyond two
307
+ or three, writing them by hand tends to become error-prone. Perhaps
308
+ more importantly, the code gets hard to read, because the important
309
+ abstraction in the code is really the pattern, not the individual
310
+ instances.</p>
311
+ <div class="section" id="code-generation">
312
+ <h2><a name="code-generation">A.1.1   Code Generation</a></h2>
313
+ <p>Rather than being written out by hand, mechanical-looking code
314
+ should really be generated mechanically. Having written a program to
315
+ spit out instances of the code pattern, a library author has two
316
+ choices: She can either ship pre-generated source code files, or she
317
+ can ship the generator itself. Either approach has drawbacks. If
318
+ clients only get the generated source, they are stuck with whatever
319
+ the library author generated—and experience shows that if they are
320
+ happy with three instances of a pattern today, someone will need
321
+ four tomorrow. If clients get the generator program, on the other
322
+ hand, they also need the resources to execute it (e.g.,
323
+ interpreters), and they must integrate the generator into their
324
+ build processes...</p>
325
+ </div>
326
+ <div class="section" id="enter-the-preprocessor">
327
+ <h2><a name="enter-the-preprocessor">A.1.2   Enter the Preprocessor</a></h2>
328
+ <p>...unless the generator is a preprocessor metaprogram. Though not
329
+ designed for that purpose, the C and C++ preprocessors can be made
330
+ to execute sophisticated programs during the preprocessing phase of
331
+ compilation. Users can control the code generation process with
332
+ preprocessor <tt class="docutils literal"><span class="pre">#define</span></tt>s
333
+ in code or <tt class="docutils literal"><span class="pre">-D</span></tt>
334
+ options on the compiler's command line, making build integration
335
+ trivial. For example, we might parameterize the primary <tt class="docutils literal"><span
336
+
337
+ class="pre">tiny_size</span></tt> template above as follows:</p>
338
+ <pre class="literal-block">#include &lt;<strong>boost/preprocessor/repetition/enum_params</strong>.hpp&gt;
339
+
340
+ #ifndef TINY_MAX_SIZE
341
+ # define TINY_MAX_SIZE 3 // default maximum size is 3
342
+ #endif
343
+
344
+ template &lt;<strong>BOOST_PP_ENUM_PARAMS(TINY_MAX_SIZE, class T)</strong>&gt;
345
+ struct tiny_size
346
+ : mpl::int_&lt;TINY_MAX_SIZE&gt;
347
+ {};
348
+ </pre>
349
+ <!-- : rst-mode hack -->
350
+ <!-- @compile(pop = None) -->
351
+ <p>To test the metaprogram, run your compiler in its "preprocessing"
352
+ mode (usually the <tt class="docutils literal"><span class="pre">-E</span></tt>
353
+ option), with the Boost root directory in your <tt class="docutils literal"><span
354
+
355
+ class="pre">#include</span></tt> path. For instance:<a class="footnote-reference"
356
+
357
+ href="#minusp" id="id2" name="id2">[1]</a></p>
358
+ <pre class="literal-block">g++ -P -E -Ipath/to/boost_1_32_0 -I. test.cpp
359
+ </pre>
360
+ <!-- @ignore() -->
361
+ <table class="docutils footnote" frame="void" id="minusp" rules="none">
362
+ <colgroup><col class="label" /><col /></colgroup>
363
+ <tbody valign="top">
364
+ <tr>
365
+ <td class="label"><a class="fn-backref" href="#id2" name="minusp">[1]</a></td>
366
+ <td>GCC's <tt class="docutils literal"><span class="pre">-P</span></tt>
367
+ option inhibits the generation of source file and line number
368
+ markers in preprocessed output.</td>
369
+ </tr>
370
+ </tbody>
371
+ </table>
372
+ <p>Given the appropriate metaprograms, users would be able to adjust
373
+ not only the number of parameters to <tt class="docutils literal"><span
374
+
375
+ class="pre">tiny_size</span></tt>, but the maximum size of the
376
+ entire <tt class="docutils literal"><span class="pre">tiny</span></tt>
377
+ implementation just by <tt class="docutils literal"><span class="pre">#define</span></tt>-ing
378
+ <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>.</p>
379
+ <p>The Boost Preprocessor library <a class="citation-reference" href="#mk04"
380
+
381
+ id="id3" name="id3">[MK04]</a> plays a role in preprocessor
382
+ metaprogramming similar to the one played by the MPL in template
383
+ metaprogramming: It supplies a framework of high-level components
384
+ (like <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>)
385
+ that make otherwise-painful metaprogramming jobs approachable. In
386
+ this appendix we won't attempt to cover nitty-gritty details of how
387
+ the preprocessor works, nor principles of preprocessor
388
+ metaprogramming in general, nor even many details of how the
389
+ Preprocessor <em>library</em> works. We <em>will</em> show you
390
+ enough at a high level that you'll be able to use the library
391
+ productively and learn the rest on your own.</p>
392
+ <table class="docutils citation" frame="void" id="mk04" rules="none">
393
+ <colgroup><col class="label" /><col /></colgroup>
394
+ <tbody valign="top">
395
+ <tr>
396
+ <td class="label"><a class="fn-backref" href="#id3" name="mk04">[MK04]</a></td>
397
+ <td>Paul Mensonides and Vesa Karvonen. "The Boost Preprocessor
398
+ Library." <a class="reference" href="http://www.boost.org/libs/preprocessor">http://www.boost.org/libs/preprocessor</a>.</td>
399
+ </tr>
400
+ </tbody>
401
+ </table>
402
+ </div>
403
+ </div>
404
+ <div class="section" id="fundamental-abstractions-of-the-preprocessor">
405
+ <h1><a name="fundamental-abstractions-of-the-preprocessor">A.2   Fundamental
406
+ Abstractions of the Preprocessor</a></h1>
407
+ <p>We began our discussion of template metaprogramming in Chapter 2 by
408
+ describing its metadata (potential template arguments) and
409
+ metafunctions (class templates). On the basis of those two fundamental
410
+ abstractions, we built up the entire picture of compile-time
411
+ computation covered in the rest of this book. In this section we'll
412
+ lay a similar foundation for the preprocessor metaprogrammer. Some of
413
+ what we cover here may be a review for you, but it's important to
414
+ identify the basic concepts going into detail.</p>
415
+ <div class="section" id="preprocessing-tokens">
416
+ <h2><a name="preprocessing-tokens">A.2.1   Preprocessing Tokens</a></h2>
417
+ <p>The fundamental unit of data in the preprocessor is the <strong>preprocessing
418
+ token</strong>. Preprocessing tokens correspond roughly to the
419
+ tokens you're used to working with in C++, such as identifiers,
420
+ operator symbols, and literals. Technically, there are some
421
+ differences between <em>preprocessing tokens</em> and regular <em>tokens</em>
422
+ (see section 2 of the C++ standard for details), but they can be
423
+ ignored for the purposes of this discussion. In fact, we'll be using
424
+ the terms interchangeably here.</p>
425
+ </div>
426
+ <div class="section" id="macros">
427
+ <h2><a name="macros">A.2.2   Macros</a></h2>
428
+ <p>Preprocessor macros come in two flavors. <strong>Object-like
429
+ macros</strong> can be defined this way:</p>
430
+ <blockquote>
431
+ <div class="line-block">
432
+ <div class="line"><tt class="docutils literal"><span class="pre">#define</span></tt>
433
+ <em>identifier</em> <em>replacement-list</em></div>
434
+ </div>
435
+ </blockquote>
436
+ <!-- @litre_translator.line_offset -= 7 -->
437
+ <p>where the <em>identifier</em> names the macro being defined, and <em>replacement-list</em>
438
+ is a sequence of zero or more tokens. Where the <em>identifier</em>
439
+ appears in subsequent program text, it is <strong>expanded</strong>
440
+ by the preprocessor into its <em>replacement-list</em>.</p>
441
+ <p><strong>Function-like macros</strong>, which act as the
442
+ "metafunctions of the preprocessing phase," are defined as follows:</p>
443
+ <blockquote>
444
+ <div class="line-block">
445
+ <div class="line"><tt class="docutils literal"><span class="pre">#define</span></tt>
446
+ <em>identifier</em>(<em>a</em><sub>1</sub>, <em>a</em><sub>2</sub>,
447
+ ... <em>a</em><sub>n</sub>) <em>replacement-list</em></div>
448
+ </div>
449
+ </blockquote>
450
+ <!-- @litre_translator.line_offset -= 7 -->
451
+ <p>where each <em>a</em><sub>i</sub> is an identifier naming a <strong>macro
452
+ parameter</strong>. When the macro name appears in subsequent
453
+ program text followed by a suitable argument list, it is expanded
454
+ into its <em>replacement-list</em>, except that each argument is
455
+ substituted for the corresponding parameter where it appears in the
456
+ <em>replacement-list</em>.<a class="footnote-reference" href="#expansion"
457
+
458
+ id="id4" name="id4">[2]</a></p>
459
+ <table class="docutils footnote" frame="void" id="expansion" rules="none">
460
+ <colgroup><col class="label" /><col /></colgroup>
461
+ <tbody valign="top">
462
+ <tr>
463
+ <td class="label"><a class="fn-backref" href="#id4" name="expansion">[2]</a></td>
464
+ <td>We have omitted many details of how macro expansion works.
465
+ We encourage you to take a few minutes to study section 16.3
466
+ of the C++ standard, which describes that process in
467
+ straightforward terms.</td>
468
+ </tr>
469
+ </tbody>
470
+ </table>
471
+ </div>
472
+ <div class="section" id="macro-arguments">
473
+ <h2><a name="macro-arguments">A.2.3   Macro Arguments</a></h2>
474
+ <div class="admonition-definition admonition">
475
+ <p class="first admonition-title">Definition</p>
476
+ <p>A <strong>macro argument</strong> is a nonempty sequence of:</p>
477
+ <ul class="last simple">
478
+ <li>Preprocessing tokens other than commas or parentheses, <em>and/or</em></li>
479
+ <li>Preprocessing tokens surrounded by matched pairs of
480
+ parentheses.</li>
481
+ </ul>
482
+ </div>
483
+ <p>This definition has consequences for preprocessor metaprogramming
484
+ that must not be underestimated. Note, first of all, that the
485
+ following tokens have special status:</p>
486
+ <blockquote>
487
+ <pre class="literal-block">, ( )
488
+ </pre> </blockquote>
489
+ <!-- @ignore() -->
490
+ <p>As a result, a macro argument can never contain an unmatched
491
+ parenthesis, or a comma that is not surrounded by matched
492
+ parentheses. For example, both lines following the definition of FOO
493
+ below are ill-formed:</p>
494
+ <pre class="literal-block">#define FOO(X) X // Unary identity macro
495
+ FOO(,) // un-parenthesized comma or two empty arguments
496
+ FOO()) // unmatched parenthesis or missing argument
497
+ </pre>
498
+ <!-- @def pp_failure(options = ['-E'], **kw):
499
+ compile( expect_error = not 'mwcc' in config.compiler , options = options, **kw)pp_failure() -->
500
+ <p>Note also that the following tokens do <em>not</em> have special
501
+ status; the preprocessor knows nothing about matched pairs of
502
+ braces, brackets, or angle brackets:</p>
503
+ <blockquote>
504
+ <pre class="literal-block">{ } [ ] &lt; &gt;
505
+ </pre> </blockquote>
506
+ <!-- @ignore() -->
507
+ <p>As a result, these lines are also ill-formed:</p>
508
+ <pre class="literal-block">FOO(std::pair&lt;int<strong>,</strong> long&gt;) // two arguments
509
+ FOO({ int x = 1<strong>,</strong> y = 2; return x+y; }) // two arguments
510
+ </pre>
511
+ <!-- @example.prepend('#define FOO(X) X')
512
+ pp_failure() -->
513
+ <p>It <em>is</em> possible to pass either string of tokens above as
514
+ part of a single macro argument, provided it is parenthesized:</p>
515
+ <pre class="literal-block">FOO(<strong>(</strong>std::pair&lt;int,int&gt;<strong>)</strong>) // one argument
516
+ FOO(<strong>(</strong>{ int x = 1, y = 2; return x+y; }<strong>)</strong>) // one argument
517
+ </pre>
518
+ <!-- @example.prepend('#define FOO(X) X')
519
+ compile(options = ['-E']) -->
520
+ <p>However, because of the special status of commas, it is impossible
521
+ to strip parentheses from a macro argument without knowing the
522
+ number of comma-separated token sequences it contains.<a class="footnote-reference"
523
+
524
+ href="#c99" id="id5" name="id5">[3]</a> If you are writing a macro
525
+ that needs to be able to accept an argument containing a variable
526
+ number of commas, your users will either have to parenthesize that
527
+ argument <em>and</em> pass you the number of comma-separated token
528
+ sequences as an additional argument, or they will have to encode the
529
+ same information in one of the preprocessor data structures covered
530
+ later in this appendix.</p>
531
+ <table class="docutils footnote" frame="void" id="c99" rules="none">
532
+ <colgroup><col class="label" /><col /></colgroup>
533
+ <tbody valign="top">
534
+ <tr>
535
+ <td class="label"><a name="c99">[3]</a></td>
536
+ <td><em>(<a class="fn-backref" href="#id5">1</a>, <a class="fn-backref"
537
+
538
+ href="#id12">2</a>)</em> The C99 preprocessor, by virtue
539
+ of its variadic macros, can do that and more. The C++
540
+ standardization committee is likely to adopt C99's
541
+ preprocessor extensions for the next version of the C++
542
+ standard.</td>
543
+ </tr>
544
+ </tbody>
545
+ </table>
546
+ </div>
547
+ </div>
548
+ <div class="section" id="preprocessor-library-structure">
549
+ <h1><a name="preprocessor-library-structure">A.3   Preprocessor Library
550
+ Structure</a></h1>
551
+ <p>Since in-depth coverage of the Boost Preprocessor library is beyond
552
+ the scope of this book, we'll try to give you the <em>tools</em> to
553
+ gain an in-depth understanding of the library here. To do that, you'll
554
+ need to use the electronic Preprocessor library documentation, which
555
+ begins with the index.html file in the <tt class="docutils literal"><span
556
+
557
+ class="pre">libs/preprocessor/</span></tt> subdirectory of your
558
+ Boost installation.</p>
559
+ <p>On the left of your browser window you'll see an index, and if you
560
+ follow the "Headers" link, it will reveal the structure of the <tt class="docutils literal"><span
561
+
562
+ class="pre">boost/preprocessor/</span></tt> directory. Most of the
563
+ library's headers are grouped into subdirectories according to related
564
+ functionality. The top-level directory contains only a few headers
565
+ that provide general-purpose macros, along with a header for each
566
+ subdirectory that simply <tt class="docutils literal"><span class="pre">#include</span></tt>s
567
+ all the headers in that subdirectory. For example, <tt class="docutils literal"><span
568
+
569
+ class="pre">boost/preprocessor/selection.hpp</span></tt> does
570
+ nothing more than to <tt class="docutils literal"><span class="pre">#include</span></tt>
571
+ the <tt class="docutils literal"><span class="pre">min.hpp</span></tt>
572
+ and <tt class="docutils literal"><span class="pre">max.hpp</span></tt>
573
+ headers that comprise the contents of <tt class="docutils literal"><span
574
+
575
+ class="pre">boost/preprocessor/selection/</span></tt>. The headers
576
+ whose names <em>don't</em> correspond to subdirectories generally
577
+ declare a macro whose name is the same as the name of the header,
578
+ without the extension, and with a <tt class="docutils literal"><span
579
+
580
+ class="pre">BOOST_PP_</span></tt> prefix. For example, <tt class="docutils literal"><span
581
+
582
+ class="pre">boost/preprocessor/selection/max.hpp</span></tt>
583
+ declares <tt class="docutils literal"><span class="pre">BOOST_PP_MAX</span></tt>.</p>
584
+ <p>You'll also notice that often a header will declare an additional
585
+ macro with a <tt class="docutils literal"><span class="pre">_D</span></tt>,
586
+ <tt class="docutils literal"><span class="pre">_R</span></tt>, or <tt
587
+
588
+ class="docutils literal"><span class="pre">_Z</span></tt> suffix.<a
589
+
590
+ class="footnote-reference" href="#suffix" id="id6" name="id6">[4]</a>
591
+ For instance, <tt class="docutils literal"><span class="pre">boost/preprocessor/selection/max.hpp</span></tt>
592
+ also declares <tt class="docutils literal"><span class="pre">BOOST_PP_MAX_D</span></tt>.
593
+ For the purposes of this appendix, you should ignore those macros.
594
+ Eventually you will want to understand how they can be used to
595
+ optimize preprocessing speed; consult the Topics section of the
596
+ library documentation under the subheading "reentrancy" for that
597
+ information.</p>
598
+ <table class="docutils footnote" frame="void" id="suffix" rules="none">
599
+ <colgroup><col class="label" /><col /></colgroup>
600
+ <tbody valign="top">
601
+ <tr>
602
+ <td class="label"><a class="fn-backref" href="#id6" name="suffix">[4]</a></td>
603
+ <td>Macros with <tt class="docutils literal"><span class="pre">_1ST</span></tt>,
604
+ <tt class="docutils literal"><span class="pre">_2ND</span></tt>,
605
+ or <tt class="docutils literal"><span class="pre">_3RD</span></tt>
606
+ suffixes, if they appear, should be ignored for a different
607
+ reason: They are deprecated and will be removed from the library
608
+ soon.</td>
609
+ </tr>
610
+ </tbody>
611
+ </table>
612
+ </div>
613
+ <div class="section" id="preprocessor-library-abstractions">
614
+ <h1><a name="preprocessor-library-abstractions">A.4   Preprocessor
615
+ Library Abstractions</a></h1>
616
+ <p>In this section we'll discuss the basic abstractions of the
617
+ Preprocessor library, and give some simple examples of each.</p>
618
+ <div class="section" id="repetition">
619
+ <h2><a name="repetition">A.4.1   Repetition</a></h2>
620
+ <p>The repeated generation of <tt class="docutils literal"><span class="pre">class</span>
621
+ <span class="pre">T0</span></tt>, <tt class="docutils literal"><span
622
+
623
+ class="pre">class</span> <span class="pre">T1</span></tt>... <tt
624
+
625
+ class="docutils literal"><span class="pre">class</span> <span class="pre">T</span></tt><em>n</em>
626
+ that we achieved using <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>
627
+ was a specific case of the general concept of <strong>horizontal
628
+ repetition</strong>. The library also has a concept of vertical
629
+ repetition, which we'll get to in a moment. Horizontal repetition
630
+ macros are all found in the library's <tt class="docutils literal"><span
631
+
632
+ class="pre">repetition/</span></tt> subdirectory.</p>
633
+ <div class="section" id="horizontal-repetition">
634
+ <h3><a name="horizontal-repetition">A.4.1.1   Horizontal Repetition</a></h3>
635
+ <p>To generate the <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
636
+ specializations using horizontal repetition, we might write the
637
+ following:</p>
638
+ <pre class="literal-block">#include &lt;boost/preprocessor/repetition.hpp&gt;
639
+ #include &lt;boost/preprocessor/arithmetic/sub.hpp&gt;
640
+ #include &lt;boost/preprocessor/punctuation/comma_if.hpp&gt;
641
+
642
+ #define TINY_print(z, n, data) data
643
+
644
+ #define TINY_size(z, n, unused) \
645
+ template &lt;BOOST_PP_ENUM_PARAMS(n, class T)&gt; \
646
+ struct tiny_size&lt; \
647
+ BOOST_PP_ENUM_PARAMS(n,T) \
648
+ BOOST_PP_COMMA_IF(n) \
649
+ BOOST_PP_ENUM( \
650
+ BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none) \
651
+ &gt; \
652
+ : mpl::int_&lt;n&gt; {};
653
+
654
+ BOOST_PP_REPEAT(TINY_MAX_SIZE, TINY_size, ~)
655
+
656
+ #undef TINY_size
657
+ #undef TINY_print
658
+ </pre>
659
+ <!-- @import re
660
+ compile('all', pop = None)example.sub('BOOST_PP_REPEAT.*', '', flags = re.DOTALL) -->
661
+ <p>The code generation process is kicked off by calling <tt class="docutils literal"><span
662
+
663
+ class="pre">BOOST_PP_REPEAT</span></tt>, a <strong>higher-order
664
+ macro</strong> that repeatedly invokes the macro named by its
665
+ second argument (<tt class="docutils literal"><span class="pre">TINY_size</span></tt>).
666
+ The first argument specifies the number of repeated invocations,
667
+ and the third one can be any data; it is passed on unchanged to
668
+ the macro being invoked. In this case, <tt class="docutils literal"><span
669
+
670
+ class="pre">TINY_size</span></tt> doesn't use that data, so
671
+ the choice to pass <tt class="docutils literal"><span class="pre">~</span></tt>
672
+ was arbitrary.<a class="footnote-reference" href="#markers" id="id7"
673
+
674
+ name="id7">[5]</a></p>
675
+ <table class="docutils footnote" frame="void" id="markers" rules="none">
676
+ <colgroup><col class="label" /><col /></colgroup>
677
+ <tbody valign="top">
678
+ <tr>
679
+ <td class="label"><a class="fn-backref" href="#id7" name="markers">[5]</a></td>
680
+ <td><tt class="docutils literal"><span class="pre">~</span></tt>
681
+ is not an <em>entirely</em> arbitrary choice. Both <tt class="docutils literal"><span
682
+
683
+ class="pre">@</span></tt> and <tt class="docutils literal"><span
684
+
685
+ class="pre">$</span></tt> might have been good choices,
686
+ except that they are technically not part of the basic
687
+ character set that C++ implementations are required to
688
+ support. An identifier like <tt class="docutils literal"><span
689
+
690
+ class="pre">ignored</span></tt> might be subject to
691
+ macro expansion, leading to unexpected results.</td>
692
+ </tr>
693
+ </tbody>
694
+ </table>
695
+ <p>Each time the <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
696
+ macro is invoked by <tt class="docutils literal"><span class="pre">BOOST_PP_REPEAT</span></tt>,
697
+ it generates a different specialization of <tt class="docutils literal"><span
698
+
699
+ class="pre">tiny_size</span></tt>. The macro accepts three
700
+ parameters.</p>
701
+ <ul class="simple">
702
+ <li><tt class="docutils literal"><span class="pre">z</span></tt>
703
+ is related to the <tt class="docutils literal"><span class="pre">_Z</span></tt>
704
+ macro suffix we mentioned earlier. You'll never need to use it
705
+ except for optimization purposes, and can safely ignore it for
706
+ now.</li>
707
+ <li><tt class="docutils literal"><span class="pre">n</span></tt>
708
+ is the repetition index. In repeated invocations of <tt class="docutils literal"><span
709
+
710
+ class="pre">TINY_size</span></tt>, <tt class="docutils literal"><span
711
+
712
+ class="pre">n</span></tt> will be <tt class="docutils literal"><span
713
+
714
+ class="pre">0</span></tt>, then <tt class="docutils literal"><span
715
+
716
+ class="pre">1</span></tt>, then <tt class="docutils literal"><span
717
+
718
+ class="pre">2</span></tt>, and so on.</li>
719
+ <li><tt class="docutils literal"><span class="pre">unused</span></tt>,
720
+ in this case, will be <tt class="docutils literal"><span class="pre">~</span></tt>
721
+ on each repetition. In general, the final argument to a macro
722
+ invoked by <tt class="docutils literal"><span class="pre">BOOST_PP_REPEAT</span></tt>
723
+ is always the same as its invoker's final argument.</li>
724
+ </ul>
725
+ <p>Because its <em>replacement-list</em> covers several lines, all
726
+ but the last line of <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
727
+ is continued with a trailing backslash. The first few of those
728
+ lines just invoke <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>
729
+ (which we already used in the primary template) to generate
730
+ comma-separated lists, so each invocation of <tt class="docutils literal"><span
731
+
732
+ class="pre">TINY_size</span></tt> produces something
733
+ equivalent to:<a class="footnote-reference" href="#cont" id="id8"
734
+
735
+ name="id8">[6]</a></p>
736
+ <pre class="literal-block">template &lt;<strong>class T0, class T1, ... class T</strong><em>n-1</em>&gt;
737
+ struct tiny_size&lt;
738
+ <strong>T0, T1, ... T</strong><em>n-1</em>
739
+ <em>...more...</em>
740
+ &gt;
741
+ : mpl::int_&lt;n&gt; {};
742
+ </pre>
743
+ <table class="docutils footnote" frame="void" id="cont" rules="none">
744
+ <colgroup><col class="label" /><col /></colgroup>
745
+ <tbody valign="top">
746
+ <tr>
747
+ <td class="label"><a class="fn-backref" href="#id8" name="cont">[6]</a></td>
748
+ <td>Note that the line continuation characters <em>and</em>
749
+ the newlines following them are removed by the preprocessor,
750
+ so the resulting code actually appears on a single line in
751
+ the preprocessed output.</td>
752
+ </tr>
753
+ </tbody>
754
+ </table>
755
+ <!-- @ignore() -->
756
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_COMMA_IF</span></tt>
757
+ generates a comma if its numeric argument is not <tt class="docutils literal"><span
758
+
759
+ class="pre">0</span></tt>. When <tt class="docutils literal"><span
760
+
761
+ class="pre">n</span></tt> is <tt class="docutils literal"><span
762
+
763
+ class="pre">0</span></tt>, the list generated by the preceding
764
+ line will be empty, and a leading comma directly following the <tt
765
+
766
+ class="docutils literal"><span class="pre">&lt;</span></tt>
767
+ character would be ill-formed.</p>
768
+ <p>The next line uses <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>
769
+ to generate <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE-n</span></tt>
770
+ comma-separated copies of <tt class="docutils literal"><span class="pre">none</span></tt>.
771
+ <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>
772
+ is just like <tt class="docutils literal"><span class="pre">BOOST_PP_REPEAT</span></tt>
773
+ except that it generates commas between repetitions, so its second
774
+ argument (<tt class="docutils literal"><span class="pre">TINY_print</span></tt>,
775
+ here) must have the same signature as <tt class="docutils literal"><span
776
+
777
+ class="pre">TINY_size</span></tt>. In this case, <tt class="docutils literal"><span
778
+
779
+ class="pre">TINY_print</span></tt> ignores its repetition
780
+ index <tt class="docutils literal"><span class="pre">n</span></tt>,
781
+ and simply yields its third argument, <tt class="docutils literal"><span
782
+
783
+ class="pre">none</span></tt>.</p>
784
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_SUB</span></tt>
785
+ implements token subtraction. It's crucial to understand that
786
+ although the preprocessor <em>itself</em> can evaluate ordinary
787
+ arithmetic expressions:</p>
788
+ <pre class="literal-block">#define X 3
789
+ ...
790
+ #if <strong>X - 1 &gt; 0</strong> // OK
791
+ <em>whatever</em>
792
+ #endif
793
+ </pre>
794
+ <!-- @compile() -->
795
+ <!-- @litre_translator.line_offset -= 7 -->
796
+ <p>preprocessor <em>metaprograms</em> can only operate on tokens.
797
+ Normally, when a macro in the Preprocessor library expects a
798
+ numeric argument, it must be passed as a single token. If we had
799
+ written <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE-n</span></tt>
800
+ instead of <tt class="docutils literal"><span class="pre">BOOST_PP_SUB(TINY_MAX_SIZE,n)</span></tt>
801
+ above, the first argument to <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>
802
+ would have contained three tokens at each invocation: first <tt class="docutils literal"><span
803
+
804
+ class="pre">3-0</span></tt>, then <tt class="docutils literal"><span
805
+
806
+ class="pre">3-1</span></tt>, and finally <tt class="docutils literal"><span
807
+
808
+ class="pre">3-2</span></tt>. <tt class="docutils literal"><span
809
+
810
+ class="pre">BOOST_PP_SUB</span></tt>, though, generates
811
+ single-token results: first <tt class="docutils literal"><span class="pre">3</span></tt>,
812
+ then <tt class="docutils literal"><span class="pre">2</span></tt>,
813
+ and finally <tt class="docutils literal"><span class="pre">1</span></tt>,
814
+ in successive repetitions.</p>
815
+ <div class="sidebar">
816
+ <p class="first sidebar-title">Naming Conventions</p>
817
+ <p class="last">Note that <tt class="docutils literal"><span class="pre">TINY_print</span></tt>
818
+ and <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
819
+ are <tt class="docutils literal"><span class="pre">#undef</span></tt>'d
820
+ immediately
821
+ after they're used, with no intervening <tt class="docutils literal"><span
822
+
823
+ class="pre">#include</span></tt>s. They can therefore be
824
+ thought of as "local" macro definitions. Because the
825
+ preprocessor doesn't respect scope boundaries, it's important to
826
+ choose names carefully to prevent clashes. We recommend <tt class="docutils literal"><span
827
+
828
+ class="pre">PREFIXED_lower_case</span></tt> names for local
829
+ macros and <tt class="docutils literal"><span class="pre">PREFIXED_UPPER_CASE</span></tt>
830
+ names for global ones. The only exceptions are one-letter
831
+ lowercase names, which are safe to use for local macros: No
832
+ other header is likely to <tt class="docutils literal"><span class="pre">#define</span></tt>
833
+ a global single-letter lowercase macro—that would be <em>very</em>
834
+ bad manners.</p>
835
+ </div>
836
+ </div>
837
+ <div class="section" id="vertical-repetition">
838
+ <h3><a name="vertical-repetition">A.4.1.2   Vertical Repetition</a></h3>
839
+ <p>If you send the previous example through your preprocessor,
840
+ you'll see one long line containing something like this:</p>
841
+ <pre class="literal-block">template &lt;&gt; struct tiny_size&lt; none , none , none &gt; : mpl::int_&lt;0&gt;
842
+ {}; template &lt; class T0&gt; struct tiny_size&lt; T0 , none , none &gt; :
843
+ mpl::int_&lt;1&gt; {}; template &lt; class T0 , class T1&gt; struct tiny_size
844
+ &lt; T0 , T1 , none &gt; : mpl::int_&lt;2&gt; {};
845
+ </pre>
846
+ <!-- @compile('all', pop = 1) -->
847
+ <p>The distinguishing feature of horizontal repetition is that all
848
+ instances of the repeated pattern are generated on the same line
849
+ of preprocessed output. For some jobs, like generating the primary
850
+ <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
851
+ template, that's perfectly appropriate. In this case, however,
852
+ there are at least two disadvantages.</p>
853
+ <ol class="arabic simple">
854
+ <li>It's hard to verify that our metaprogram is doing the right
855
+ thing without reformatting the resulting code by hand.</li>
856
+ <li>The efficiency of nested horizontal repetitions varies widely
857
+ across preprocessors. Each specialization generated by means of
858
+ horizontal repetition contains three other horizontal
859
+ repetitions: two invocations of <tt class="docutils literal"><span
860
+
861
+ class="pre">BOOST_PP_ENUM_PARAMS</span></tt> and one
862
+ invocation of <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>.
863
+ When <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
864
+ is <tt class="docutils literal"><span class="pre">3</span></tt>,
865
+ you'll probably never care, but on at least one preprocessor
866
+ still in use today, compilation begins to slow noticeably when <tt
867
+
868
+ class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
869
+ reaches <tt class="docutils literal"><span class="pre">8</span></tt>.<a
870
+
871
+ class="footnote-reference" href="#nest" id="id9" name="id9">[7]</a></li>
872
+ </ol>
873
+ <blockquote>
874
+ <table class="docutils footnote" frame="void" id="nest" rules="none">
875
+ <colgroup><col class="label" /><col /></colgroup>
876
+ <tbody valign="top">
877
+ <tr>
878
+ <td class="label"><a class="fn-backref" href="#id9" name="nest">[7]</a></td>
879
+ <td>That said, other preprocessors can handle 256 * 256
880
+ nested repetitions without any speed problems whatsoever.</td>
881
+ </tr>
882
+ </tbody>
883
+ </table>
884
+ </blockquote>
885
+ <p>The solution to these problems, naturally, is <strong>vertical
886
+ repetition</strong>, which generates instances of a pattern
887
+ across multiple lines. The Preprocessor library provides two means
888
+ of vertical repetition: <strong>local iteration</strong> and <strong>file
889
+ iteration</strong>.</p>
890
+ <div class="section" id="local-iteration">
891
+ <h4><a name="local-iteration">Local Iteration</a></h4>
892
+ <p>The most expedient way to demonstrate local iteration in our
893
+ example is to replace the invocation of <tt class="docutils literal"><span
894
+
895
+ class="pre">BOOST_PP_REPEAT</span></tt> with the following:</p>
896
+ <pre class="literal-block">#include &lt;boost/preprocessor/<strong>iteration/local.hpp</strong>&gt;
897
+
898
+ #define BOOST_PP_LOCAL_MACRO(n) TINY_size(~, n, ~)
899
+ #define BOOST_PP_LOCAL_LIMITS (0, <strong>TINY_MAX_SIZE - 1</strong>)
900
+ <strong>#include</strong> BOOST_PP_LOCAL_ITERATE()
901
+ </pre>
902
+ <!-- @compile('all', pop = 1) -->
903
+ <p>Local iteration repeatedly invokes the user-defined macro with
904
+ the special name <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_MACRO</span></tt>,
905
+ whose argument will be an iteration index. Since we already had
906
+ <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
907
+ lying around, we've just defined <tt class="docutils literal"><span
908
+
909
+ class="pre">BOOST_PP_LOCAL_MACRO</span></tt> to invoke it.
910
+ The range of iteration indices are given by another user-defined
911
+ macro, <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_LIMITS</span></tt>,
912
+ which must expand to a parenthesized pair of integer values
913
+ representing the <em>inclusive</em> range of index values
914
+ passed to <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_MACRO</span></tt>.
915
+ Note that this is one of the rare places where the library
916
+ expects a numeric argument that can be an expression consisting
917
+ of multiple tokens.</p>
918
+ <p>Finally, the repetition is initiated by <tt class="docutils literal"><span
919
+
920
+ class="pre">#include</span></tt>-ing the result of invoking
921
+ <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_ITERATE</span></tt>,
922
+ which will ultimately be a file in the Preprocessor library
923
+ itself. You may find it surprising that many preprocessors can
924
+ handle repeated file inclusion more quickly than nested
925
+ horizontal repetition, but that is in fact the case.</p>
926
+ <p>If we throw the new example at our preprocessor, we'll see the
927
+ following, on three separate lines in the output:</p>
928
+ <pre class="literal-block">template &lt;&gt; struct tiny_size&lt; none , none , none &gt; : mpl::int_&lt;0&gt;
929
+ {};
930
+
931
+ template &lt; class T0&gt; struct tiny_size&lt; T0 , none , none &gt; : mpl::
932
+ int_&lt;1&gt; {};
933
+
934
+ template &lt; class T0 , class T1&gt; struct tiny_size&lt; T0 , T1 , none
935
+ &gt; : mpl::int_&lt;2&gt; {};
936
+ </pre>
937
+ <!-- @compile('all', pop = 1) -->
938
+ <p>That represents a great improvement in verifiability, but it's
939
+ still not ideal. As <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
940
+ grows, it gets harder and harder to see that the pattern is
941
+ generating what we'd like. If we could get some more line breaks
942
+ into the output it would retain a more recognizable form.</p>
943
+ <p>Both repetition methods we've used so far have another
944
+ drawback, though it doesn't show up in this example. Consider
945
+ what would happen if <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
946
+ had a member function that we wanted to debug. If you've ever
947
+ tried to use a debugger to step through a function generated by
948
+ a preprocessor macro, you know that it's a frustrating
949
+ experience at best: The debugger shows you the line from which
950
+ the macro was ultimately invoked, which usually looks nothing at
951
+ all like the code that was generated. Worse, as far as the
952
+ debugger is concerned, <em>every</em> statement in that
953
+ generated function occupies that same line.</p>
954
+ </div>
955
+ <div class="section" id="file-iteration">
956
+ <h4><a name="file-iteration">File Iteration</a></h4>
957
+ <p>Clearly, debuggability depends on preserving the association
958
+ between generated code and the lines in the source file that
959
+ describe the code pattern. File iteration generates pattern
960
+ instances by repeatedly <tt class="docutils literal"><span class="pre">#include</span></tt>-ing
961
+ the same source file. The effect of file iteration on
962
+ debuggability is similar to that of templates: Although separate
963
+ instances appear to occupy the same source lines in the
964
+ debugger, we do have the experience of stepping through the
965
+ function's source code.</p>
966
+ <p>To apply file iteration in our example, we can replace our
967
+ earlier local iteration code and the definition of <tt class="docutils literal"><span
968
+
969
+ class="pre">TINY_size</span></tt>, with:</p>
970
+ <pre class="literal-block">#include &lt;boost/preprocessor/iteration/iterate.hpp&gt;
971
+ #define BOOST_PP_ITERATION_LIMITS (0, TINY_MAX_SIZE - 1)
972
+ #define BOOST_PP_FILENAME_1 "tiny_size_spec.hpp"
973
+ #include BOOST_PP_ITERATE()
974
+ </pre>
975
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_ITERATION_LIMITS</span></tt>
976
+ follows the same pattern as <tt class="docutils literal"><span
977
+
978
+ class="pre">BOOST_PP_LOCAL_LIMITS</span></tt> did, allowing
979
+ us to specify an inclusive range of iteration indices. <tt class="docutils literal"><span
980
+
981
+ class="pre">BOOST_PP_FILENAME_1</span></tt> specifies the
982
+ name of the file to repeatedly <tt class="docutils literal"><span
983
+
984
+ class="pre">#include</span></tt> (we'll show you that file
985
+ in a moment). The trailing <tt class="docutils literal"><span class="pre">1</span></tt>
986
+ indicates that this is the first nesting level of file
987
+ iteration—should we need to invoke file iteration again from
988
+ within <tt class="docutils literal"><span class="pre">tiny_size_spec.hpp</span></tt>,
989
+ we'd need to use <tt class="docutils literal"><span class="pre">BOOST_PP_FILENAME_2</span></tt>
990
+ instead.</p>
991
+ <p>The contents of <tt class="docutils literal"><span class="pre">tiny_size_spec.hpp</span></tt>
992
+ should look familiar to you; most of it is the same as <tt class="docutils literal"><span
993
+
994
+ class="pre">TINY_size</span></tt>'s <em>replacement-list</em>,
995
+ without the backslashes:</p>
996
+ <pre class="literal-block">#define n BOOST_PP_ITERATION()
997
+
998
+ template &lt;BOOST_PP_ENUM_PARAMS(n, class T)&gt;
999
+ struct tiny_size&lt;
1000
+ BOOST_PP_ENUM_PARAMS(n,T)
1001
+ BOOST_PP_COMMA_IF(n)
1002
+ BOOST_PP_ENUM(BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none)
1003
+ &gt;
1004
+ : mpl::int_&lt;n&gt; {};
1005
+
1006
+ #undef n
1007
+ </pre>
1008
+ <!-- @import tempfile, os
1009
+ open(os.path.join(tempfile.gettempdir(),'tiny_size_spec.hpp'), 'w' ).write(str(example))ignore()vertical_options = ['-I'+tempfile.gettempdir(), '-c']
1010
+ compile('all', options = vertical_options, pop = 1) -->
1011
+ <p>The Library transmits the iteration index to us in the result
1012
+ of <tt class="docutils literal"><span class="pre">BOOST_PP_ITERATION()</span></tt>;
1013
+ <tt class="docutils literal"><span class="pre">n</span></tt> is
1014
+ nothing more than a convenient local macro used to reduce
1015
+ syntactic noise. Note that we didn't use <tt class="docutils literal"><span
1016
+
1017
+ class="pre">#include</span></tt> guards because we need <tt
1018
+
1019
+ class="docutils literal"><span class="pre">tiny_size_spec.hpp</span></tt>
1020
+ to be processed multiple times.</p>
1021
+ <p>The preprocessed result should now preserve the line structure
1022
+ of the pattern and be more verifiable for larger values of <tt
1023
+
1024
+ class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>.
1025
+ For instance, when <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
1026
+ is <tt class="docutils literal"><span class="pre">8</span></tt>,
1027
+ the following excerpt appears in the output of GCC's
1028
+ preprocessing phase:</p>
1029
+ <pre class="literal-block"><em>...</em>
1030
+ template &lt; class T0 , class T1 , class T2 , class T3&gt;
1031
+ struct tiny_size&lt;
1032
+ T0 , T1 , T2 , T3
1033
+ ,
1034
+ none , none , none , none
1035
+ &gt;
1036
+ : mpl::int_&lt;4&gt; {};
1037
+
1038
+ template &lt; class T0 , class T1 , class T2 , class T3 , class T4&gt;
1039
+ struct tiny_size&lt;
1040
+ T0 , T1 , T2 , T3 , T4
1041
+ ,
1042
+ none , none , none
1043
+ &gt;
1044
+ : mpl::int_&lt;5&gt; {};
1045
+ <em>...etc.</em>
1046
+ </pre>
1047
+ <!-- @compile('all', options = vertical_options + ['-DTINY_MAX_SIZE=8']) -->
1048
+ </div>
1049
+ <div class="section" id="self-iteration">
1050
+ <h4><a name="self-iteration">Self-Iteration</a></h4>
1051
+ <p>Creating an entirely new file like <tt class="docutils literal"><span
1052
+
1053
+ class="pre">tiny_size_spec.hpp</span></tt> each time we want
1054
+ to express a trivial code pattern for file repetition can be
1055
+ inconvenient. Fortunately, the library provides a macro that
1056
+ allows us to place the pattern right in the file that invokes
1057
+ the iteration. <tt class="docutils literal"><span class="pre">BOOST_PP_IS_ITERATING</span></tt>
1058
+ is defined to a nonzero value whenever we're inside an
1059
+ iteration. We can use that value to select between the part of a
1060
+ file that invokes the iteration and the part that provides the
1061
+ repeated pattern. Here's a complete <tt class="docutils literal"><span
1062
+
1063
+ class="pre">tiny_size.hpp</span></tt> file that demonstrates
1064
+ self-iteration. Note in particular the placement and use of the
1065
+ <tt class="docutils literal"><span class="pre">#include</span></tt>
1066
+ guard <tt class="docutils literal"><span class="pre">TINY_SIZE_HPP_INCLUDED</span></tt>:</p>
1067
+ <pre class="literal-block">#ifndef <strong>BOOST_PP_IS_ITERATING</strong>
1068
+
1069
+ # ifndef TINY_SIZE_HPP_INCLUDED
1070
+ # define TINY_SIZE_HPP_INCLUDED
1071
+
1072
+ # include &lt;boost/preprocessor/repetition.hpp&gt;
1073
+ # include &lt;boost/preprocessor/arithmetic/sub.hpp&gt;
1074
+ # include &lt;boost/preprocessor/punctuation/comma_if.hpp&gt;
1075
+ # include &lt;boost/preprocessor/iteration/iterate.hpp&gt;
1076
+
1077
+ # ifndef TINY_MAX_SIZE
1078
+ # define TINY_MAX_SIZE 3 // default maximum size is 3
1079
+ # endif
1080
+
1081
+ // primary template
1082
+ template &lt;BOOST_PP_ENUM_PARAMS(TINY_MAX_SIZE, class T)&gt;
1083
+ struct tiny_size
1084
+ : mpl::int_&lt;TINY_MAX_SIZE&gt;
1085
+ {};
1086
+
1087
+ // generate specializations
1088
+ # define BOOST_PP_ITERATION_LIMITS (0, TINY_MAX_SIZE - 1)
1089
+ # define BOOST_PP_FILENAME_1 "tiny_size.hpp" // this file
1090
+ # include BOOST_PP_ITERATE()
1091
+
1092
+ # endif // TINY_SIZE_HPP_INCLUDED
1093
+
1094
+ #else // <strong>BOOST_PP_IS_ITERATING</strong>
1095
+
1096
+ # define n BOOST_PP_ITERATION()
1097
+
1098
+ # define TINY_print(z, n, data) data
1099
+
1100
+ // specialization pattern
1101
+ template &lt;BOOST_PP_ENUM_PARAMS(n, class T)&gt;
1102
+ struct tiny_size&lt;
1103
+ BOOST_PP_ENUM_PARAMS(n,T)
1104
+ BOOST_PP_COMMA_IF(n)
1105
+ BOOST_PP_ENUM(BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none)
1106
+ &gt;
1107
+ : mpl::int_&lt;n&gt; {};
1108
+
1109
+ # undef TINY_print
1110
+ # undef n
1111
+
1112
+ #endif // <strong>BOOST_PP_IS_ITERATING</strong>
1113
+ </pre>
1114
+ <!-- @compile(source_file = 'tiny_size.hpp') --> </div>
1115
+ <div class="section" id="more">
1116
+ <h4><a name="more">More</a></h4>
1117
+ <p>There's a good deal more to file iteration than what we've been
1118
+ able to show you here. For more details, we encourage you to
1119
+ delve into the library's electronic documentation of <tt class="docutils literal"><span
1120
+
1121
+ class="pre">BOOST_PP_ITERATE</span></tt> and friends. Also,
1122
+ it's important to note that no single technique for repetition
1123
+ is superior to any other: Your choice may depend on convenience,
1124
+ verifiability, debuggability, compilation speed, and your own
1125
+ sense of "logical coherence."</p>
1126
+ </div>
1127
+ </div>
1128
+ </div>
1129
+ <div class="section" id="arithmetic-logical-and-comparison-operations">
1130
+ <h2><a name="arithmetic-logical-and-comparison-operations">A.4.2   Arithmetic,
1131
+ Logical, and Comparison Operations</a></h2>
1132
+ <p>As we mentioned earlier, many of the Preprocessor library
1133
+ interfaces require single-token numeric arguments, and when those
1134
+ numbers need to be computed arithmetically, straightforward
1135
+ arithmetic expressions are inappropriate. We used <tt class="docutils literal"><span
1136
+
1137
+ class="pre">BOOST_PP_SUB</span></tt> to subtract two numeric
1138
+ tokens in our <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
1139
+ examples. The library contains a suite of operations for
1140
+ non-negative integral token arithmetic in its <tt class="docutils literal"><span
1141
+
1142
+ class="pre">arithmetic/</span></tt> subdirectory, as shown in
1143
+ Table A.1</p>
1144
+ <table border="1" class="docutils">
1145
+ <caption>Preprocessor Library Arithmetic Operations</caption> <colgroup>
1146
+ <col width="44%" /> <col width="56%" /> </colgroup>
1147
+ <thead valign="bottom">
1148
+ <tr>
1149
+ <th>Expression</th>
1150
+ <th>Value of Single Token Result</th>
1151
+ </tr>
1152
+ </thead>
1153
+ <tbody valign="top">
1154
+ <tr>
1155
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ADD(x,y)</span></tt></td>
1156
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1157
+
1158
+ class="pre">+</span> <span class="pre">y</span></tt></td>
1159
+ </tr>
1160
+ <tr>
1161
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_DEC(x)</span></tt></td>
1162
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1163
+
1164
+ class="pre">-</span> <span class="pre">1</span></tt></td>
1165
+ </tr>
1166
+ <tr>
1167
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_DIV(x,y)</span></tt></td>
1168
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1169
+
1170
+ class="pre">/</span> <span class="pre">y</span></tt></td>
1171
+ </tr>
1172
+ <tr>
1173
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_INC(x)</span></tt></td>
1174
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1175
+
1176
+ class="pre">+</span> <span class="pre">1</span></tt></td>
1177
+ </tr>
1178
+ <tr>
1179
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_MOD(x,y)</span></tt></td>
1180
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1181
+
1182
+ class="pre">%</span> <span class="pre">y</span></tt></td>
1183
+ </tr>
1184
+ <tr>
1185
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_MUL(x,y)</span></tt></td>
1186
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1187
+
1188
+ class="pre">*</span> <span class="pre">y</span></tt></td>
1189
+ </tr>
1190
+ <tr>
1191
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SUB(x,y)</span></tt></td>
1192
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1193
+
1194
+ class="pre">-</span> <span class="pre">y</span></tt></td>
1195
+ </tr>
1196
+ </tbody>
1197
+ </table>
1198
+ <p>The <tt class="docutils literal"><span class="pre">logical/</span></tt>
1199
+ subdirectory contains the convenient Boolean token operations shown
1200
+ in Table A.2 and the more efficient operations shown in Table A.3,
1201
+ which require that their operands are either <tt class="docutils literal"><span
1202
+
1203
+ class="pre">0</span></tt> or <tt class="docutils literal"><span
1204
+
1205
+ class="pre">1</span></tt> (a single bit).</p>
1206
+ <table border="1" class="docutils">
1207
+ <caption>Preprocessor Library Integer Logical Operations</caption> <colgroup>
1208
+ <col width="44%" /> <col width="56%" /> </colgroup>
1209
+ <thead valign="bottom">
1210
+ <tr>
1211
+ <th>Expression</th>
1212
+ <th>Value of Single Token Result</th>
1213
+ </tr>
1214
+ </thead>
1215
+ <tbody valign="top">
1216
+ <tr>
1217
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_AND(x,y)</span></tt></td>
1218
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1219
+
1220
+ class="pre">&amp;&amp;</span> <span class="pre">y</span></tt></td>
1221
+ </tr>
1222
+ <tr>
1223
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_NOR(x,y)</span></tt></td>
1224
+ <td><tt class="docutils literal"><span class="pre">!(x</span> <span
1225
+
1226
+ class="pre">||</span> <span class="pre">y)</span></tt></td>
1227
+ </tr>
1228
+ <tr>
1229
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_OR(x,y)</span></tt></td>
1230
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1231
+
1232
+ class="pre">||</span> <span class="pre">y</span></tt></td>
1233
+ </tr>
1234
+ <tr>
1235
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_XOR(x,y)</span></tt></td>
1236
+ <td><tt class="docutils literal"><span class="pre">(bool)x</span>
1237
+ <span class="pre">!=</span> <span class="pre">(bool)y</span>  
1238
+ <span class="pre">?</span> <span class="pre">1</span> <span
1239
+
1240
+ class="pre">:</span> <span class="pre">0</span></tt></td>
1241
+ </tr>
1242
+ <tr>
1243
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_NOT(x)</span></tt></td>
1244
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1245
+
1246
+ class="pre">?</span> <span class="pre">0</span> <span class="pre">:</span>
1247
+ <span class="pre">1</span></tt></td>
1248
+ </tr>
1249
+ <tr>
1250
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BOOL(x)</span></tt></td>
1251
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1252
+
1253
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1254
+ <span class="pre">0</span></tt></td>
1255
+ </tr>
1256
+ </tbody>
1257
+ </table>
1258
+ <table border="1" class="docutils">
1259
+ <caption>Preprocessor Library Bit Logical Operations</caption> <colgroup>
1260
+ <col width="44%" /> <col width="56%" /> </colgroup>
1261
+ <thead valign="bottom">
1262
+ <tr>
1263
+ <th>Expression</th>
1264
+ <th>Value of Single Token Result</th>
1265
+ </tr>
1266
+ </thead>
1267
+ <tbody valign="top">
1268
+ <tr>
1269
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITAND(x,y)</span></tt></td>
1270
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1271
+
1272
+ class="pre">&amp;&amp;</span> <span class="pre">y</span></tt></td>
1273
+ </tr>
1274
+ <tr>
1275
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITNOR(x,y)</span></tt></td>
1276
+ <td><tt class="docutils literal"><span class="pre">!(x</span> <span
1277
+
1278
+ class="pre">||</span> <span class="pre">y)</span></tt></td>
1279
+ </tr>
1280
+ <tr>
1281
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITOR(x,y)</span></tt></td>
1282
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1283
+
1284
+ class="pre">||</span> <span class="pre">y</span></tt></td>
1285
+ </tr>
1286
+ <tr>
1287
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITXOR(x,y)</span></tt></td>
1288
+ <td><tt class="docutils literal"><span class="pre">(bool)x</span>
1289
+ <span class="pre">!=</span> <span class="pre">(bool)y</span>  
1290
+ <span class="pre">?</span> <span class="pre">1</span> <span
1291
+
1292
+ class="pre">:</span> <span class="pre">0</span></tt></td>
1293
+ </tr>
1294
+ <tr>
1295
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_COMPL(x)</span></tt></td>
1296
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1297
+
1298
+ class="pre">?</span> <span class="pre">0</span> <span class="pre">:</span>
1299
+ <span class="pre">1</span></tt></td>
1300
+ </tr>
1301
+ </tbody>
1302
+ </table>
1303
+ <p>Finally, the <tt class="docutils literal"><span class="pre">comparison/</span></tt>
1304
+ subdirectory provides the token integral comparison operations shown
1305
+ in Table A.4.</p>
1306
+ <table border="1" class="docutils">
1307
+ <caption>Preprocessor Library Comparison Operations</caption> <colgroup>
1308
+ <col width="46%" /> <col width="54%" /> </colgroup>
1309
+ <thead valign="bottom">
1310
+ <tr>
1311
+ <th>Expression</th>
1312
+ <th>Value of Single Token Result</th>
1313
+ </tr>
1314
+ </thead>
1315
+ <tbody valign="top">
1316
+ <tr>
1317
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_EQUAL(x,y)</span></tt></td>
1318
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1319
+
1320
+ class="pre">==</span> <span class="pre">y</span>   <span
1321
+
1322
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1323
+ <span class="pre">0</span></tt></td>
1324
+ </tr>
1325
+ <tr>
1326
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_NOT_EQUAL(x,y)</span></tt></td>
1327
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1328
+
1329
+ class="pre">!=</span> <span class="pre">y</span>   <span
1330
+
1331
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1332
+ <span class="pre">0</span></tt></td>
1333
+ </tr>
1334
+ <tr>
1335
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_LESS(x,y)</span></tt></td>
1336
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1337
+
1338
+ class="pre">&lt;</span> <span class="pre">y</span>    <span
1339
+
1340
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1341
+ <span class="pre">0</span></tt></td>
1342
+ </tr>
1343
+ <tr>
1344
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_LESS_EQUAL(x,y)</span></tt></td>
1345
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1346
+
1347
+ class="pre">&lt;=</span> <span class="pre">y</span>   <span
1348
+
1349
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1350
+ <span class="pre">0</span></tt></td>
1351
+ </tr>
1352
+ <tr>
1353
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_GREATER(x,y)</span></tt></td>
1354
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1355
+
1356
+ class="pre">&gt;</span> <span class="pre">y</span>    <span
1357
+
1358
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1359
+ <span class="pre">0</span></tt></td>
1360
+ </tr>
1361
+ <tr>
1362
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_GREATER_EQUAL(x,y)</span></tt></td>
1363
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
1364
+
1365
+ class="pre">&gt;=</span> <span class="pre">y</span>   <span
1366
+
1367
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
1368
+ <span class="pre">0</span></tt></td>
1369
+ </tr>
1370
+ </tbody>
1371
+ </table>
1372
+ <p>Because it's common to have a choice among several workable
1373
+ comparison operators, it may be useful to know that <tt class="docutils literal"><span
1374
+
1375
+ class="pre">BOOST_PP_EQUAL</span></tt> and <tt class="docutils literal"><span
1376
+
1377
+ class="pre">BOOST_PP_NOT_EQUAL</span></tt> are likely to be O(1)
1378
+ while the other comparison operators are generally slower.</p>
1379
+ </div>
1380
+ <div class="section" id="control-structures">
1381
+ <h2><a name="control-structures">A.4.3   Control Structures</a></h2>
1382
+ <p>In its <tt class="docutils literal"><span class="pre">control/</span></tt>
1383
+ directory, the Preprocessor Library supplies a macro <tt class="docutils literal"><span
1384
+
1385
+ class="pre">BOOST_PP_IF(c,t,f)</span></tt> that fulfills a
1386
+ similar role to the one filled by <tt class="docutils literal"><span
1387
+
1388
+ class="pre">mpl::if_</span></tt>. To explore the "control"
1389
+ group, we'll generate code for a framework of generic function
1390
+ objects: the Boost Function Library.<a class="footnote-reference" href="#function"
1391
+
1392
+ id="id10" name="id10">[8]</a> <tt class="docutils literal"><span
1393
+
1394
+ class="pre">boost::function</span></tt> is partially specialized
1395
+ to match function type arguments of each arity up to the maximum
1396
+ supported by the library:</p>
1397
+ <pre class="literal-block">template &lt;class Signature&gt; struct function; // primary template
1398
+
1399
+ template &lt;class R&gt; // arity = 0
1400
+ struct function&lt;R()&gt;
1401
+ <em>definition not shown...</em>
1402
+
1403
+ template &lt;class R, class A0&gt; // arity = 1
1404
+ struct function&lt;R(A0)&gt;
1405
+ <em>definition not shown...</em>
1406
+
1407
+ template &lt;class R, class A0, class A1&gt; // arity = 2
1408
+ struct function&lt;R(A0,A1)&gt;
1409
+ <em>definition not shown...</em>
1410
+
1411
+ template &lt;class R, class A0, class A1, class A2&gt; // arity = 3
1412
+ struct function&lt;R(A0,A1,A2)&gt;
1413
+ <em>definition not shown...</em>
1414
+
1415
+ <em>etc.</em>
1416
+ </pre>
1417
+ <!-- @example.replace(')>', ')>;')
1418
+ compile() -->
1419
+ <table class="docutils footnote" frame="void" id="function" rules="none">
1420
+ <colgroup><col class="label" /><col /></colgroup>
1421
+ <tbody valign="top">
1422
+ <tr>
1423
+ <td class="label"><a class="fn-backref" href="#id10" name="function">[8]</a></td>
1424
+ <td>We touched briefly on the design of Boost Function when we
1425
+ discussed type erasure in Chapter 9. See the Function library
1426
+ documentation at <tt class="docutils literal"><span class="pre">boost_1_32_0/libs/function/index.html</span></tt>
1427
+ on the CD that accompanies this book for more information.</td>
1428
+ </tr>
1429
+ </tbody>
1430
+ </table>
1431
+ <p>We've already covered a few strategies that can be used to generate
1432
+ the pattern above, so we won't belabor that part of the problem; the
1433
+ file iteration approach we used for <tt class="docutils literal"><span
1434
+
1435
+ class="pre">tiny_size</span></tt> would be fine:</p>
1436
+ <pre class="literal-block">#ifndef BOOST_PP_IS_ITERATING
1437
+
1438
+ # ifndef BOOST_FUNCTION_HPP_INCLUDED
1439
+ # define BOOST_FUNCTION_HPP_INCLUDED
1440
+
1441
+ # include &lt;boost/preprocessor/repetition.hpp&gt;
1442
+ # include &lt;boost/preprocessor/iteration/iterate.hpp&gt;
1443
+
1444
+ # ifndef FUNCTION_MAX_ARITY
1445
+ # define FUNCTION_MAX_ARITY 15
1446
+ # endif
1447
+
1448
+ <strong>template &lt;class Signature&gt; struct function;</strong> // primary template
1449
+
1450
+ // generate specializations
1451
+ # define BOOST_PP_ITERATION_LIMITS (0, FUNCTION_MAX_ARITY)
1452
+ # define BOOST_PP_FILENAME_1 "boost/function.hpp" // this file
1453
+ # include BOOST_PP_ITERATE()
1454
+
1455
+ # endif // BOOST_FUNCTION_HPP_INCLUDED
1456
+
1457
+ #else // BOOST_PP_IS_ITERATING
1458
+
1459
+ # define n BOOST_PP_ITERATION()
1460
+
1461
+ // specialization pattern
1462
+ <strong>template &lt;class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)&gt;</strong>
1463
+ <strong>struct function&lt;R ( BOOST_PP_ENUM_PARAMS(n,A) )&gt;</strong>
1464
+ <em>definition not shown...</em>
1465
+
1466
+ # undef n
1467
+
1468
+ #endif // BOOST_PP_IS_ITERATING
1469
+ </pre>
1470
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_TRAILING_PARAMS</span></tt>,
1471
+ used above, is just like <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>
1472
+ except that when its first argument is not <tt class="docutils literal"><span
1473
+
1474
+ class="pre">0</span></tt>, it generates a leading comma.</p>
1475
+ <!-- @example.replace_emphasis(';//')
1476
+ tmpdir = tempfile.gettempdir()tmpboost = os.path.join(tmpdir,'boost')try: os.mkdir(tmpboost)except: pass
1477
+ tmp_boost_function = os.path.join(tmpdir, 'boost/function.hpp')compile( options = vertical_options , source_file = tmp_boost_function
1478
+ , pop = None) -->
1479
+ <div class="section" id="argument-selection">
1480
+ <h3><a name="argument-selection">A.4.3.1   Argument Selection</a></h3>
1481
+ <p>For the sake of interoperability with C++ standard library
1482
+ algorithms, it might be nice if <tt class="docutils literal"><span
1483
+
1484
+ class="pre">function</span></tt>s of one or two arguments were
1485
+ derived from appropriate specializations of <tt class="docutils literal"><span
1486
+
1487
+ class="pre">std::unary_function</span></tt> or <tt class="docutils literal"><span
1488
+
1489
+ class="pre">std::binary_function</span></tt>, respectively.<a
1490
+
1491
+ class="footnote-reference" href="#ebo" id="id11" name="id11">[9]</a>
1492
+ <tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
1493
+ is a great tool for dealing with special cases:</p>
1494
+ <pre class="literal-block"># include &lt;boost/preprocessor/control/if.hpp&gt;
1495
+ # include &lt;boost/preprocessor/comparison/equal.hpp&gt;
1496
+
1497
+ // specialization pattern
1498
+ template &lt;class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)&gt;
1499
+ struct function&lt;R ( BOOST_PP_ENUM_PARAMS(n,A) )&gt;
1500
+ BOOST_PP_IF(
1501
+ BOOST_PP_EQUAL(n,2), <strong>: std::binary_function&lt;A0, A1, R&gt;</strong>
1502
+ , BOOST_PP_IF(
1503
+ BOOST_PP_EQUAL(n,1), <strong>: std::unary_function&lt;A0, R&gt;</strong>
1504
+ , <em>...empty argument...</em>
1505
+ )
1506
+ )
1507
+ { <em>...class body omitted...</em> };
1508
+ </pre>
1509
+ <!-- @pp_failure() -->
1510
+ <table class="docutils footnote" frame="void" id="ebo" rules="none">
1511
+ <colgroup><col class="label" /><col /></colgroup>
1512
+ <tbody valign="top">
1513
+ <tr>
1514
+ <td class="label"><a class="fn-backref" href="#id11" name="ebo">[9]</a></td>
1515
+ <td>While derivation from <tt class="docutils literal"><span
1516
+
1517
+ class="pre">std::unary_function</span></tt> or <tt class="docutils literal"><span
1518
+
1519
+ class="pre">std::binary_function</span></tt> might be
1520
+ necessary for interoperability with some older library
1521
+ implementations, it may inhibit the Empty Base Optimization
1522
+ (EBO) from taking effect when two such derived classes are
1523
+ part of the same object. For more information, see section
1524
+ 9.4. In general, it's better to expose <tt class="docutils literal"><span
1525
+
1526
+ class="pre">first_argument_type</span></tt>, <tt class="docutils literal"><span
1527
+
1528
+ class="pre">second_argument_type</span></tt>, and <tt class="docutils literal"><span
1529
+
1530
+ class="pre">result_type</span></tt> <tt class="docutils literal"><span
1531
+
1532
+ class="pre">typedef</span></tt>s directly.</td>
1533
+ </tr>
1534
+ </tbody>
1535
+ </table>
1536
+ <p>Well, our first attempt has run into several problems. First off,
1537
+ you're not allowed to pass an empty argument to the preprocessor.<a
1538
+
1539
+ class="footnote-reference" href="#c99" id="id12" name="id12">[3]</a>
1540
+ Secondly, because angle brackets don't get special treatment, the
1541
+ commas in the <tt class="docutils literal"><span class="pre">std::unary_function</span></tt>
1542
+ and <tt class="docutils literal"><span class="pre">std::binary_function</span></tt>
1543
+ specializations above are treated as macro argument separators,
1544
+ and the preprocessor will complain that we've passed the wrong
1545
+ number of arguments to <tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
1546
+ in two places.</p>
1547
+ <p>Because it captures all of the issues, let's focus on the inner <tt
1548
+
1549
+ class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
1550
+ invocation for a moment. The strategy that <tt class="docutils literal"><span
1551
+
1552
+ class="pre">mpl::eval_if</span></tt> uses, of selecting a
1553
+ nullary function to invoke, could work nicely here. The
1554
+ preprocessor doesn't have a direct analogue for <tt class="docutils literal"><span
1555
+
1556
+ class="pre">mpl::eval_if</span></tt>, but it doesn't really
1557
+ need one: We can get the right effect by adding a second set of
1558
+ parentheses to <tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>.</p>
1559
+ <pre class="literal-block">#define BOOST_FUNCTION_unary() : std::unary_function&lt;A0,R&gt;
1560
+ #define BOOST_FUNCTION_empty() // nothing
1561
+
1562
+ ...
1563
+
1564
+ , BOOST_PP_IF(
1565
+ BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary
1566
+ , BOOST_FUNCTION_empty
1567
+ )<strong>()</strong>
1568
+
1569
+ #undef BOOST_FUNCTION_empty
1570
+ #undef BOOST_FUNCTION_unary
1571
+ </pre>
1572
+ <!-- @ignore() -->
1573
+ <p>A nullary macro that generates nothing is so commonly needed that
1574
+ the library's "facilities" group provides one: <tt class="docutils literal"><span
1575
+
1576
+ class="pre">BOOST_PP_EMPTY</span></tt>. To complete the
1577
+ example we'll need to delay evaluation all the way to the outer <tt
1578
+
1579
+ class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
1580
+ invocation, because <tt class="docutils literal"><span class="pre">std::binary_function&lt;A0,A1,R&gt;</span></tt>
1581
+ also has a "comma problem":</p>
1582
+ <pre class="literal-block"># include &lt;boost/preprocessor/<strong>facilities/empty.hpp</strong>&gt;
1583
+
1584
+ # define BOOST_FUNCTION_binary() : std::binary_function&lt;A0,A1,R&gt;
1585
+ # define BOOST_FUNCTION_unary() : std::unary_function&lt;A0,R&gt;
1586
+
1587
+ // specialization pattern
1588
+ template &lt;class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)&gt;
1589
+ struct function&lt;R ( BOOST_PP_ENUM_PARAMS(n,A) )&gt;
1590
+ BOOST_PP_IF(
1591
+ BOOST_PP_EQUAL(n,2), BOOST_FUNCTION_binary
1592
+ , BOOST_PP_IF(
1593
+ BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary
1594
+ , <strong>BOOST_PP_EMPTY</strong>
1595
+ )
1596
+ )<strong>()</strong>
1597
+ {
1598
+ <em>...class body omitted...</em>
1599
+ };
1600
+
1601
+ # undef BOOST_FUNCTION_unary
1602
+ # undef BOOST_FUNCTION_binary
1603
+ # undef n
1604
+ </pre>
1605
+ <!-- @stack.pop()
1606
+ stack[-1].replace('// specialization pattern', '////\n%s\n////' % str(example))compile(source_file = tmp_boost_function, pop = None) -->
1607
+ <p>Note that because we happened to be using file iteration, we
1608
+ could have also used <tt class="docutils literal"><span class="pre">#if</span></tt>
1609
+ on <tt class="docutils literal"><span class="pre">n</span></tt>'s
1610
+ value directly:</p>
1611
+ <pre class="literal-block"> template &lt;class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)&gt;
1612
+ struct function&lt;R ( BOOST_PP_ENUM_PARAMS(n,A) )&gt;
1613
+ <strong>#if n == 2</strong>
1614
+ : std::binary_function&lt;A0, A1, R&gt;
1615
+ <strong>#elif n == 1</strong>
1616
+ : std::unary_function&lt;A0, R&gt;
1617
+ <strong>#endif</strong>
1618
+ </pre>
1619
+ <!-- @stack.pop()
1620
+ stack[-1].sub( r'////.*////', '////\n%s\n////' % str(example), flags = re.DOTALL)compile(source_file = tmp_boost_function, pop = None) -->
1621
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
1622
+ has the advantage of enabling us to encapsulate the logic in a
1623
+ reusable macro, parameterized on <tt class="docutils literal"><span
1624
+
1625
+ class="pre">n</span></tt>, that is compatible with all
1626
+ repetition constructs:</p>
1627
+ <pre class="literal-block">#define BOOST_FUNCTION_BASE(n) \
1628
+ BOOST_PP_IF(BOOST_PP_EQUAL(n,2), BOOST_FUNCTION_binary \
1629
+ , BOOST_PP_IF(BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary \
1630
+ , BOOST_PP_EMPTY \
1631
+ ) \
1632
+ )()
1633
+ </pre>
1634
+ <!-- @compile(options = ['-E']) --> </div>
1635
+ <div class="section" id="other-selection-constructs">
1636
+ <h3><a name="other-selection-constructs">A.4.3.2   Other Selection
1637
+ Constructs</a></h3>
1638
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_IDENTITY</span></tt>,
1639
+ also in the "facilities" group, is an interesting cousin of <tt class="docutils literal"><span
1640
+
1641
+ class="pre">BOOST_PP_EMPTY</span></tt>:</p>
1642
+ <pre class="literal-block">#define BOOST_PP_IDENTITY(tokens) tokens BOOST_PP_EMPTY
1643
+ </pre>
1644
+ <!-- @ignore() -->
1645
+ <p>You can think of it as creating a nullary macro that returns <tt
1646
+
1647
+ class="docutils literal"><span class="pre">tokens</span></tt>:
1648
+ When empty parentheses are appended, the trailing <tt class="docutils literal"><span
1649
+
1650
+ class="pre">BOOST_PP_EMPTY</span></tt> is expanded leaving
1651
+ just <tt class="docutils literal"><span class="pre">tokens</span></tt>
1652
+ behind. If we had wanted inheritance from <tt class="docutils literal"><span
1653
+
1654
+ class="pre">mpl::empty_base</span></tt> when <tt class="docutils literal"><span
1655
+
1656
+ class="pre">function</span></tt>'s arity is not one or two, we
1657
+ could have used <tt class="docutils literal"><span class="pre">BOOST_PP_IDENTITY</span></tt>:</p>
1658
+ <pre class="literal-block">// specialization pattern
1659
+ template &lt;class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)&gt;
1660
+ struct function&lt;R ( BOOST_PP_ENUM_PARAMS(n,A) )&gt;
1661
+ BOOST_PP_IF(
1662
+ BOOST_PP_EQUAL(n,2), BOOST_FUNCTION_binary
1663
+ , BOOST_PP_IF(
1664
+ BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary
1665
+ , <strong>BOOST_PP_IDENTITY(: mpl::empty_base)</strong>
1666
+ )
1667
+ )<strong>()</strong>
1668
+ {
1669
+ <em>...class body omitted...</em>
1670
+ };
1671
+ </pre>
1672
+ <!-- @stack.pop()
1673
+ stack[-1].sub( r'////.*////', '////\n%s\n////' % str(example), flags = re.DOTALL)compile(source_file = tmp_boost_function, pop = None) -->
1674
+ <p>It's also worth knowing about <tt class="docutils literal"><span
1675
+
1676
+ class="pre">BOOST_PP_EXPR_IF</span></tt>, which generates its
1677
+ second argument or nothing, depending on the Boolean value of its
1678
+ first:</p>
1679
+ <pre class="literal-block">#define BOOST_PP_EXPR_IF(c,tokens) \
1680
+ BOOST_PP_IF(c,BOOST_PP_IDENTITY(tokens),BOOST_PP_EMPTY)()
1681
+ </pre>
1682
+ <!-- @example.append(
1683
+ 'int BOOST_PP_EXPR_IF(1,main) BOOST_PP_EXPR_IF(0,quack) () {}')compile() -->
1684
+ <p>So <tt class="docutils literal"><span class="pre">BOOST_PP_EXPR_IF(1,foo)</span></tt>
1685
+ expands to <tt class="docutils literal"><span class="pre">foo</span></tt>,
1686
+ while <tt class="docutils literal"><span class="pre">BOOST_PP_EXPR_IF(0,foo)</span></tt>
1687
+ expands to nothing.</p>
1688
+ </div>
1689
+ </div>
1690
+ <div class="section" id="token-pasting">
1691
+ <h2><a name="token-pasting">A.4.4   Token Pasting</a></h2>
1692
+ <p>It would be nice if there were a generic way to access the return
1693
+ and parameter types of <em>all</em> function objects, rather than
1694
+ just the unary and binary ones. A metafunction returning the
1695
+ signature as an MPL sequence would do the trick. We could just
1696
+ specialize <tt class="docutils literal"><span class="pre">signature</span></tt>
1697
+ for each <tt class="docutils literal"><span class="pre">function</span></tt>
1698
+ arity:</p>
1699
+ <pre class="literal-block">template &lt;class F&gt; struct signature; // primary template
1700
+
1701
+ // partial specializations for boost::function
1702
+ template &lt;class R&gt;
1703
+ struct signature&lt;function&lt;R()&gt; &gt;
1704
+ : mpl::vector1&lt;R&gt; {};
1705
+
1706
+ template &lt;class R, class A0&gt;
1707
+ struct signature&lt;function&lt;R(A0)&gt; &gt;
1708
+ : mpl::vector2&lt;R,A0&gt; {};
1709
+
1710
+ template &lt;class R, class A0, class A1&gt;
1711
+ struct signature&lt;function&lt;R(A0,A1)&gt; &gt;
1712
+ : mpl::vector3&lt;R,A0,A1&gt; {};
1713
+
1714
+ ...
1715
+ </pre>
1716
+ <!-- @example.prepend('template <class T> struct function;')
1717
+ compile() -->
1718
+ <p>To generate these specializations, we might add the following to
1719
+ our pattern:</p>
1720
+ <pre class="literal-block">template &lt;class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)&gt;
1721
+ struct signature&lt;function&lt;R( BOOST_PP_ENUM_PARAMS(n,A) )&gt; &gt;
1722
+ : mpl::<strong>BOOST_PP_CAT</strong>(vector,n)&lt;
1723
+ R BOOST_PP_ENUM_TRAILING_PARAMS(n,A)
1724
+ &gt; {};
1725
+ </pre>
1726
+ <!-- @stack.pop()
1727
+ stack[-1].replace( ';//', ''';// template <class T> struct signature; %s''' % example)
1728
+ compile(source_file = tmp_boost_function) -->
1729
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_CAT</span></tt>
1730
+ implements <strong>token pasting</strong>; its two arguments are
1731
+ "glued" together into a single token. Since this is a
1732
+ general-purpose macro, it sits in <tt class="docutils literal"><span
1733
+
1734
+ class="pre">cat.hpp</span></tt> at the top level of the
1735
+ library's directory tree.</p>
1736
+ <p>Although the preprocessor has a built-in token-pasting operator, <tt
1737
+
1738
+ class="docutils literal"><span class="pre">##</span></tt>, it only
1739
+ works within a macro definition. If we'd used it here, it wouldn't
1740
+ have taken effect at all:</p>
1741
+ <pre class="literal-block">template &lt;class R&gt;
1742
+ struct signature&lt;function&lt;R()&gt; &gt;
1743
+ : mpl::<strong>vector##1</strong>&lt;R&gt; {};
1744
+
1745
+ template &lt;class R, class A0&gt;
1746
+ struct signature&lt;function&lt;R(A0)&gt; &gt;
1747
+ : mpl::<strong>vector##2</strong>&lt;R,A0&gt; {};
1748
+
1749
+ template &lt;class R, class A0, class A1&gt;
1750
+ struct signature&lt;function&lt;R(A0,A1)&gt; &gt;
1751
+ : mpl::<strong>vector##3</strong>&lt;R,A0,A1&gt; {};
1752
+
1753
+ ...
1754
+ </pre>
1755
+ <!-- @example.replace('##','')
1756
+ example.prepend(''' template <class T> struct function; template <class T> struct signature;''')
1757
+ compile() -->
1758
+ <p>Also, <tt class="docutils literal"><span class="pre">##</span></tt>
1759
+ often yields surprising results by taking effect before its
1760
+ arguments have been expanded:</p>
1761
+ <pre class="literal-block">#define N 10
1762
+ #define VEC(i) vector##i
1763
+
1764
+ VEC(N) // vectorN
1765
+ </pre>
1766
+ <!-- @example.wrap('typedef int vectorN;', 'x;')
1767
+ compile() -->
1768
+ <p>By contrast, <tt class="docutils literal"><span class="pre">BOOST_PP_CAT</span></tt>
1769
+ delays concatenation until after its arguments have been fully
1770
+ evaluated:</p>
1771
+ <pre class="literal-block">#define N 10
1772
+ #define VEC(i) BOOST_PP_CAT(vector,i)
1773
+
1774
+ VEC(N) // vector10
1775
+ </pre>
1776
+ <!-- @example.wrap('''
1777
+ #include <boost/preprocessor/cat.hpp> typedef int vector10; ''', 'x;')compile() -->
1778
+ </div>
1779
+ <div class="section" id="data-types">
1780
+ <h2><a name="data-types">A.4.5   Data Types</a></h2>
1781
+ <p>The Preprocessor library also provides <strong>data types</strong>,
1782
+ which you can think of as being analogous to the MPL's type
1783
+ sequences. Preprocessor data types store <em>macro arguments</em>
1784
+ instead of C++ types.</p>
1785
+ <div class="section" id="sequences">
1786
+ <h3><a name="sequences">A.4.5.1   Sequences</a></h3>
1787
+ <p>A <strong>sequence</strong> (or <strong>seq</strong> for short)
1788
+ is any string of nonempty parenthesized <em>macro arguments</em>.
1789
+ For instance, here's a three-element sequence:</p>
1790
+ <pre class="literal-block">#define MY_SEQ (f(12))(a + 1)(foo)
1791
+ </pre>
1792
+ <!-- @ignore() -->
1793
+ <p>Here's how we might use a sequence to generate specializations of
1794
+ the <tt class="docutils literal"><span class="pre">is_integral</span></tt>
1795
+ template from the Boost Type Traits library (see Chapter 2):</p>
1796
+ <pre class="literal-block">#include &lt;boost/preprocessor/seq.hpp&gt;
1797
+
1798
+ template &lt;class T&gt;
1799
+ struct is_integral : mpl::false_ {};
1800
+
1801
+ // a seq of integral types with unsigned counterparts
1802
+ #define BOOST_TT_basic_ints (char)(short)(int)(long)
1803
+
1804
+ // generate a seq containing "signed t" and "unsigned t"
1805
+ #define BOOST_TT_int_pair(r,data,t) (signed t)(unsigned t)
1806
+
1807
+ // a seq of all the integral types
1808
+ #define BOOST_TT_ints \
1809
+ (bool)(char) \
1810
+ BOOST_PP_SEQ_FOR_EACH(BOOST_TT_int_pair, ~, BOOST_TT_basic_ints)
1811
+
1812
+ // generate an is_integral specialization for type t
1813
+ #define BOOST_TT_is_integral_spec(r,data,t) \
1814
+ template &lt;&gt; \
1815
+ struct is_integral&lt;t&gt; : mpl::true_ {};
1816
+
1817
+ BOOST_PP_SEQ_FOR_EACH(BOOST_TT_is_integral_spec, ~, BOOST_TT_ints)
1818
+
1819
+ #undef BOOST_TT_is_integral_spec
1820
+ #undef BOOST_TT_ints
1821
+ #undef BOOST_TT_int_pair
1822
+ #undef BOOST_TT_basic_ints
1823
+ </pre>
1824
+ <!-- @compile() -->
1825
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH</span></tt>
1826
+ is a higher-order macro, similar to <tt class="docutils literal"><span
1827
+
1828
+ class="pre">BOOST_PP_REPEAT</span></tt>, that invokes its
1829
+ first argument on each element of its third argument.</p>
1830
+ <p>Sequences are the most efficient, most flexible, and
1831
+ easiest-to-use of the library's data structures, provided that you
1832
+ never need to make an empty one: An empty sequence would contain
1833
+ no tokens, and so couldn't be passed as a macro argument. The
1834
+ other data structures covered here all have an empty
1835
+ representation.</p>
1836
+ <p>The facilities for manipulating sequences are all in the
1837
+ library's <tt class="docutils literal"><span class="pre">seq/</span></tt>
1838
+ subdirectory. They are summarized in Table A.5, where <tt class="docutils literal"><span
1839
+
1840
+ class="pre">t</span></tt> is the sequence <tt class="docutils literal"><span
1841
+
1842
+ class="pre">(</span></tt><em>t</em><sub>0</sub><tt class="docutils literal"><span
1843
+
1844
+ class="pre">)(</span></tt><em>t</em><sub>1</sub><tt class="docutils literal"><span
1845
+
1846
+ class="pre">)...(</span></tt><em>t</em><sub>k</sub><tt class="docutils literal"><span
1847
+
1848
+ class="pre">)</span></tt>. Where <em>s</em>, <em>r</em>, and
1849
+ <em>d</em> appear, they have a similar purpose to the <tt class="docutils literal"><span
1850
+
1851
+ class="pre">z</span></tt> parameters we discussed earlier (and
1852
+ suggested you ignore for now).</p>
1853
+ <table border="1" class="docutils">
1854
+ <caption>Preprocessor Sequence Operations</caption> <colgroup> <col
1855
+
1856
+ width="51%" /> <col width="49%" /> </colgroup>
1857
+ <thead valign="bottom">
1858
+ <tr>
1859
+ <th>Expression</th>
1860
+ <th>Result</th>
1861
+ </tr>
1862
+ </thead>
1863
+ <tbody valign="top">
1864
+ <tr>
1865
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_CAT(t)</span></tt></td>
1866
+ <td><em>t</em><sub>0</sub><em>t</em><sub>1</sub>...<em>t</em><sub>k</sub></td>
1867
+ </tr>
1868
+ <tr>
1869
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_ELEM(n,t)</span></tt></td>
1870
+ <td><em>t</em><sub>n</sub></td>
1871
+ </tr>
1872
+ <tr>
1873
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_ENUM(t)</span></tt></td>
1874
+ <td><em>t</em><sub>0</sub>, <em>t</em><sub>1</sub>, ...<em>t</em><sub>k</sub></td>
1875
+ </tr>
1876
+ <tr>
1877
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FILTER(pred,data,t)</span></tt></td>
1878
+ <td><tt class="docutils literal"><span class="pre">t</span></tt>
1879
+ without the elements that don't satisfy <tt class="docutils literal"><span
1880
+
1881
+ class="pre">pred</span></tt></td>
1882
+ </tr>
1883
+ <tr>
1884
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FIRST_N(n,t)</span></tt></td>
1885
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
1886
+
1887
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
1888
+
1889
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
1890
+
1891
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>n-1</sub><tt
1892
+
1893
+ class="docutils literal"><span class="pre">)</span></tt></td>
1894
+ </tr>
1895
+ <tr>
1896
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOLD_LEFT(op,</span>
1897
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
1898
+ <td>...<tt class="docutils literal"><span class="pre">op(</span></tt><em>s</em><tt
1899
+
1900
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
1901
+
1902
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
1903
+
1904
+ class="docutils literal"><span class="pre">,x</span></tt>,<em>t</em><sub>0</sub><tt
1905
+
1906
+ class="docutils literal"><span class="pre">),</span></tt><em>t</em><sub>1</sub><tt
1907
+
1908
+ class="docutils literal"><span class="pre">),</span></tt><em>t</em><sub>2</sub><tt
1909
+
1910
+ class="docutils literal"><span class="pre">)</span></tt>...</td>
1911
+ </tr>
1912
+ <tr>
1913
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOLD_RIGHT(op,</span>
1914
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
1915
+ <td>...<tt class="docutils literal"><span class="pre">op(</span></tt><em>s</em><tt
1916
+
1917
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
1918
+
1919
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
1920
+
1921
+ class="docutils literal"><span class="pre">,x</span></tt>,<em>t</em><sub>k</sub><tt
1922
+
1923
+ class="docutils literal"><span class="pre">),</span></tt><em>t</em><sub>k-1</sub><tt
1924
+
1925
+ class="docutils literal"><span class="pre">),</span></tt>
1926
+ <em>t</em><sub>k-2</sub><tt class="docutils literal"><span class="pre">)</span></tt>...</td>
1927
+ </tr>
1928
+ <tr>
1929
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH(f,</span>
1930
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
1931
+ <td><tt class="docutils literal"><span class="pre">f(</span></tt><em>r</em><tt
1932
+
1933
+ class="docutils literal"><span class="pre">,</span> <span
1934
+
1935
+ class="pre">x,</span></tt><em>t</em><sub>0</sub><tt class="docutils literal"><span
1936
+
1937
+ class="pre">)</span> <span class="pre">f(</span></tt><em>r</em><tt
1938
+
1939
+ class="docutils literal"><span class="pre">,</span> <span
1940
+
1941
+ class="pre">x,</span></tt><em>t</em><sub>1</sub><tt class="docutils literal"><span
1942
+
1943
+ class="pre">)</span></tt>...<tt class="docutils literal"><span
1944
+
1945
+ class="pre">f(</span></tt><em>r</em><tt class="docutils literal"><span
1946
+
1947
+ class="pre">,</span> <span class="pre">x,</span></tt><em>t</em><sub>k</sub><tt
1948
+
1949
+ class="docutils literal"><span class="pre">)</span></tt></td>
1950
+ </tr>
1951
+ <tr>
1952
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH_I(g,</span>
1953
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
1954
+ <td><tt class="docutils literal"><span class="pre">g(</span></tt><em>r</em><tt
1955
+
1956
+ class="docutils literal"><span class="pre">,</span> <span
1957
+
1958
+ class="pre">x,</span> <span class="pre">0,</span></tt>
1959
+ <em>t</em><sub>0</sub><tt class="docutils literal"><span class="pre">)</span>
1960
+ <span class="pre">g(</span></tt><em>r</em><tt class="docutils literal"><span
1961
+
1962
+ class="pre">,</span> <span class="pre">x,</span> <span
1963
+
1964
+ class="pre">1,</span></tt> <em>t</em><sub>1</sub><tt class="docutils literal"><span
1965
+
1966
+ class="pre">)</span></tt>... <tt class="docutils literal"><span
1967
+
1968
+ class="pre">g(</span></tt><em>r</em><tt class="docutils literal"><span
1969
+
1970
+ class="pre">,</span> <span class="pre">x,</span> <span
1971
+
1972
+ class="pre">k,</span></tt> <em>t</em><sub>k</sub><tt class="docutils literal"><span
1973
+
1974
+ class="pre">)</span></tt></td>
1975
+ </tr>
1976
+ <tr>
1977
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH_PRODUCT(h,</span>
1978
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
1979
+ <td>
1980
+ <dl class="first last docutils">
1981
+ <dt>Cartesian product—</dt>
1982
+ <dd>see online docs</dd>
1983
+ </dl>
1984
+ </td>
1985
+ </tr>
1986
+ <tr>
1987
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_INSERT(t,i,tokens)</span></tt></td>
1988
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
1989
+
1990
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
1991
+
1992
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
1993
+
1994
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i-1</sub><tt
1995
+
1996
+ class="docutils literal"><span class="pre">)(tokens)</span>
1997
+ <span class="pre">(</span></tt><em>t</em><sub>i</sub><tt class="docutils literal"><span
1998
+
1999
+ class="pre">)(</span></tt><em>t</em><sub>i+1</sub><tt class="docutils literal"><span
2000
+
2001
+ class="pre">)</span></tt>...<tt class="docutils literal"><span
2002
+
2003
+ class="pre">(</span></tt><em>t</em><sub>k</sub><tt class="docutils literal"><span
2004
+
2005
+ class="pre">)</span></tt></td>
2006
+ </tr>
2007
+ <tr>
2008
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_POP_BACK(t)</span></tt></td>
2009
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
2010
+
2011
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
2012
+
2013
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2014
+
2015
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k-1</sub><tt
2016
+
2017
+ class="docutils literal"><span class="pre">)</span></tt></td>
2018
+ </tr>
2019
+ <tr>
2020
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_POP_FRONT(t)</span></tt></td>
2021
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>1</sub><tt
2022
+
2023
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>2</sub><tt
2024
+
2025
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2026
+
2027
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2028
+
2029
+ class="docutils literal"><span class="pre">)</span></tt></td>
2030
+ </tr>
2031
+ <tr>
2032
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_PUSH_BACK(t,tokens)</span></tt></td>
2033
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
2034
+
2035
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
2036
+
2037
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2038
+
2039
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2040
+
2041
+ class="docutils literal"><span class="pre">)(tokens)</span></tt></td>
2042
+ </tr>
2043
+ <tr>
2044
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_PUSH_FRONT(t,tokens)</span></tt></td>
2045
+ <td><tt class="docutils literal"><span class="pre">(tokens)(</span></tt><em>t</em><sub>0</sub><tt
2046
+
2047
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
2048
+
2049
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2050
+
2051
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2052
+
2053
+ class="docutils literal"><span class="pre">)</span></tt></td>
2054
+ </tr>
2055
+ <tr>
2056
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REMOVE(t,i)</span></tt></td>
2057
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
2058
+
2059
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
2060
+
2061
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2062
+
2063
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i-1</sub><tt
2064
+
2065
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>i+1</sub><tt
2066
+
2067
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2068
+
2069
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2070
+
2071
+ class="docutils literal"><span class="pre">)</span></tt></td>
2072
+ </tr>
2073
+ <tr>
2074
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REPLACE(t,i,tokens)</span></tt></td>
2075
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
2076
+
2077
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
2078
+
2079
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2080
+
2081
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i-1</sub><tt
2082
+
2083
+ class="docutils literal"><span class="pre">)(tokens)(</span></tt><em>t</em><sub>i+1</sub><tt
2084
+
2085
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2086
+
2087
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2088
+
2089
+ class="docutils literal"><span class="pre">)</span></tt></td>
2090
+ </tr>
2091
+ <tr>
2092
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REST_N(n,t)</span></tt></td>
2093
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>n</sub><tt
2094
+
2095
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>n+1</sub><tt
2096
+
2097
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2098
+
2099
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2100
+
2101
+ class="docutils literal"><span class="pre">)</span></tt></td>
2102
+ </tr>
2103
+ <tr>
2104
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REVERSE(t)</span></tt></td>
2105
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2106
+
2107
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>k-1</sub><tt
2108
+
2109
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2110
+
2111
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
2112
+
2113
+ class="docutils literal"><span class="pre">)</span></tt></td>
2114
+ </tr>
2115
+ <tr>
2116
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_HEAD(t)</span></tt></td>
2117
+ <td><em>t</em><sub>0</sub></td>
2118
+ </tr>
2119
+ <tr>
2120
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TAIL(t)</span></tt></td>
2121
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>1</sub><tt
2122
+
2123
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>2</sub><tt
2124
+
2125
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2126
+
2127
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
2128
+
2129
+ class="docutils literal"><span class="pre">)</span></tt></td>
2130
+ </tr>
2131
+ <tr>
2132
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_SIZE(t)</span></tt></td>
2133
+ <td><em>k+1</em></td>
2134
+ </tr>
2135
+ <tr>
2136
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_SUBSEQ(t,i,m)</span></tt></td>
2137
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i</sub><tt
2138
+
2139
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>i+1</sub><tt
2140
+
2141
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
2142
+
2143
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i+m-1</sub><tt
2144
+
2145
+ class="docutils literal"><span class="pre">)</span></tt></td>
2146
+ </tr>
2147
+ <tr>
2148
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TO_ARRAY(t)</span></tt></td>
2149
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em>
2150
+ <tt class="docutils literal"><span class="pre">,(</span></tt><em>t</em><sub>0</sub><tt
2151
+
2152
+ class="docutils literal"><span class="pre">,</span></tt><em>t</em><sub>1</sub><tt
2153
+
2154
+ class="docutils literal"><span class="pre">,</span></tt>...<em>t</em><sub>k</sub><tt
2155
+
2156
+ class="docutils literal"><span class="pre">))</span></tt></td>
2157
+ </tr>
2158
+ <tr>
2159
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TO_TUPLE(t)</span></tt></td>
2160
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
2161
+
2162
+ class="docutils literal"><span class="pre">,</span></tt> <em>t</em><sub>1</sub><tt
2163
+
2164
+ class="docutils literal"><span class="pre">,</span></tt>...<em>t</em><sub>k</sub><tt
2165
+
2166
+ class="docutils literal"><span class="pre">)</span></tt></td>
2167
+ </tr>
2168
+ <tr>
2169
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TRANSFORM(f,</span>
2170
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
2171
+ <td><tt class="docutils literal"><span class="pre">(f(</span></tt><em>r</em><tt
2172
+
2173
+ class="docutils literal"><span class="pre">,x,</span></tt><em>t</em><sub>0</sub><tt
2174
+
2175
+ class="docutils literal"><span class="pre">))</span> <span
2176
+
2177
+ class="pre">(f(</span></tt><em>r</em><tt class="docutils literal"><span
2178
+
2179
+ class="pre">,x,</span></tt><em>t</em><sub>1</sub><tt class="docutils literal"><span
2180
+
2181
+ class="pre">))</span></tt>...<tt class="docutils literal"><span
2182
+
2183
+ class="pre">(f(</span></tt><em>r</em><tt class="docutils literal"><span
2184
+
2185
+ class="pre">,x,</span></tt><em>t</em><sub>k</sub><tt class="docutils literal"><span
2186
+
2187
+ class="pre">))</span></tt></td>
2188
+ </tr>
2189
+ </tbody>
2190
+ </table>
2191
+ <p>It's worth noting that while there is no upper limit on the
2192
+ length of a sequence, operations such as <tt class="docutils literal"><span
2193
+
2194
+ class="pre">BOOST_PP_SEQ_ELEM</span></tt> that take numeric
2195
+ arguments will only work with values up to 256.</p>
2196
+ </div>
2197
+ <div class="section" id="tuples">
2198
+ <h3><a name="tuples">A.4.5.2   Tuples</a></h3>
2199
+ <p>A <strong>tuple</strong> is a very simple data structure for
2200
+ which the library provides random access and a few other basic
2201
+ operations. A tuple takes the form of a parenthesized,
2202
+ comma-separated list of <em>macro arguments</em>. For example,
2203
+ this is a three-element tuple:</p>
2204
+ <pre class="literal-block">#define TUPLE3 (f(12), a + 1, foo)
2205
+ </pre>
2206
+ <p>The operations in the library's <tt class="docutils literal"><span
2207
+
2208
+ class="pre">tuple/</span></tt> subdirectory can handle tuples
2209
+ of up to 25 elements. For example, a tuple's <tt class="docutils literal"><span
2210
+
2211
+ class="pre">N</span></tt>th element can be accessed via <tt class="docutils literal"><span
2212
+
2213
+ class="pre">BOOST_PP_TUPLE_ELEM</span></tt>, as follows:</p>
2214
+ <pre class="literal-block"> // length index tuple
2215
+ BOOST_PP_TUPLE_ELEM( 3 , 1 , TUPLE3) // a + 1
2216
+ </pre>
2217
+ <!-- @def gen_id(id = 'a', hdr = 'tuple'):
2218
+ example.wrap(''' #include <boost/preprocessor/%s.hpp> int const %s = 0; int const x =''' % (hdr,id), ';')
2219
+ compile('all', pop = 1)gen_id() -->
2220
+ <p>Notice that we had to pass the tuple's length as the second
2221
+ argument to <tt class="docutils literal"><span class="pre">BOOST_PP_TUPLE_ELEM</span></tt>;
2222
+ in fact, <em>all</em> tuple operations require explicit
2223
+ specification of the tuple's length. We're not going to summarize
2224
+ the other four operations in the "tuple" group here—you can
2225
+ consult the Preprocessor library's electronic documentation for
2226
+ more details. We note, however, that sequences can be transformed
2227
+ into tuples with <tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TO_TUPLE</span></tt>,
2228
+ and nonempty tuples can be transformed back into sequences with <tt
2229
+
2230
+ class="docutils literal"><span class="pre">BOOST_PP_TUPLE_TO_SEQ</span></tt>.</p>
2231
+ <p>The greatest strength of tuples is that they conveniently take
2232
+ the same representation as a macro argument list:</p>
2233
+ <pre class="literal-block">#define FIRST_OF_THREE(a1,a2,a3) a1
2234
+ #define SECOND_OF_THREE(a1,a2,a3) a2
2235
+ #define THIRD_OF_THREE(a1,a2,a3) a3
2236
+
2237
+ // uses tuple as an argument list
2238
+ # define SELECT(selector, tuple) <strong>selector tuple</strong>
2239
+
2240
+ SELECT(THIRD_OF_THREE, TUPLE3) // foo
2241
+ </pre>
2242
+ <!-- @gen_id('foo') --> </div>
2243
+ <div class="section" id="arrays">
2244
+ <h3><a name="arrays">A.4.5.3   Arrays</a></h3>
2245
+ <p>An <strong>array</strong> is just a tuple containing a
2246
+ non-negative integer and a tuple of that length:</p>
2247
+ <pre class="literal-block">#define ARRAY3 ( 3, TUPLE3 )
2248
+ </pre>
2249
+ <p>Because an array carries its length around with it, the library's
2250
+ interface for operating on arrays is much more convenient than the
2251
+ one used for tuples:</p>
2252
+ <pre class="literal-block">BOOST_PP_ARRAY_ELEM(1, ARRAY3) // a + 1
2253
+ </pre>
2254
+ <!-- @gen_id(hdr = 'array')
2255
+ del stack[-2:] -->
2256
+ <p>The facilities for manipulating arrays of up to 25 elements are
2257
+ all in the library's <tt class="docutils literal"><span class="pre">array/</span></tt>
2258
+ subdirectory. They are summarized in Table A.6, where <tt class="docutils literal"><span
2259
+
2260
+ class="pre">a</span></tt> is the array <tt class="docutils literal"><span
2261
+
2262
+ class="pre">(</span></tt><em>k</em><tt class="docutils literal"><span
2263
+
2264
+ class="pre">,</span> <span class="pre">(</span></tt><em>a</em><sub>0</sub><tt
2265
+
2266
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2267
+
2268
+ class="docutils literal"><span class="pre">,...</span></tt><em>a</em><sub>k-1</sub><tt
2269
+
2270
+ class="docutils literal"><span class="pre">))</span></tt>.</p>
2271
+ <table border="1" class="docutils">
2272
+ <caption>Preprocessor Array Operations</caption> <colgroup> <col
2273
+
2274
+ width="52%" /> <col width="48%" /> </colgroup>
2275
+ <thead valign="bottom">
2276
+ <tr>
2277
+ <th>Expression</th>
2278
+ <th>Result</th>
2279
+ </tr>
2280
+ </thead>
2281
+ <tbody valign="top">
2282
+ <tr>
2283
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_DATA(a)</span></tt></td>
2284
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>a</em><sub>0</sub><tt
2285
+
2286
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2287
+
2288
+ class="docutils literal"><span class="pre">,</span></tt>...
2289
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">)</span></tt></td>
2290
+ </tr>
2291
+ <tr>
2292
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_ELEM(i,a)</span></tt></td>
2293
+ <td><em>a</em><sub>i</sub></td>
2294
+ </tr>
2295
+ <tr>
2296
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_INSERT(a,</span>
2297
+ <span class="pre">i,</span> <span class="pre">tokens)</span></tt></td>
2298
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em><tt
2299
+
2300
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
2301
+
2302
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2303
+
2304
+ class="docutils literal"><span class="pre">,</span></tt>...<em>a</em><sub>i-1</sub><tt
2305
+
2306
+ class="docutils literal"><span class="pre">,</span> <span
2307
+
2308
+ class="pre">tokens,</span></tt> <em>a</em><sub>i</sub><tt
2309
+
2310
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>i+1</sub><tt
2311
+
2312
+ class="docutils literal"><span class="pre">,</span></tt>...
2313
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
2314
+ </tr>
2315
+ <tr>
2316
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_POP_BACK(a)</span></tt></td>
2317
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k-1</em><tt
2318
+
2319
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
2320
+
2321
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2322
+
2323
+ class="docutils literal"><span class="pre">,</span></tt>...
2324
+ <em>a</em><sub>k-2</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
2325
+ </tr>
2326
+ <tr>
2327
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_POP_FRONT(a)</span></tt></td>
2328
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k-1</em><tt
2329
+
2330
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>1</sub><tt
2331
+
2332
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>2</sub><tt
2333
+
2334
+ class="docutils literal"><span class="pre">,</span></tt>...
2335
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
2336
+ </tr>
2337
+ <tr>
2338
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_PUSH_BACK(a,</span>
2339
+ <span class="pre">tokens)</span></tt></td>
2340
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em><tt
2341
+
2342
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
2343
+
2344
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2345
+
2346
+ class="docutils literal"><span class="pre">,</span></tt>...
2347
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">,</span>
2348
+ <span class="pre">tokens))</span></tt></td>
2349
+ </tr>
2350
+ <tr>
2351
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_PUSH_FRONT(a,</span>
2352
+ <span class="pre">tokens)</span></tt></td>
2353
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em><tt
2354
+
2355
+ class="docutils literal"><span class="pre">,(tokens,</span></tt>
2356
+ <em>a</em><sub>1</sub><tt class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>2</sub><tt
2357
+
2358
+ class="docutils literal"><span class="pre">,</span></tt>...
2359
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
2360
+ </tr>
2361
+ <tr>
2362
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_REMOVE(a,</span>
2363
+ <span class="pre">i)</span></tt></td>
2364
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k-1</em><tt
2365
+
2366
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
2367
+
2368
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2369
+
2370
+ class="docutils literal"><span class="pre">,</span></tt>...
2371
+ <em>a</em><sub>i-1</sub><tt class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>i+1</sub><tt
2372
+
2373
+ class="docutils literal"><span class="pre">,</span></tt>...
2374
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
2375
+ </tr>
2376
+ <tr>
2377
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_REPLACE(a,</span>
2378
+ <span class="pre">i,</span> <span class="pre">tokens)</span></tt></td>
2379
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k</em><tt
2380
+
2381
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
2382
+
2383
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
2384
+
2385
+ class="docutils literal"><span class="pre">,</span></tt>...
2386
+ <em>a</em><sub>i-1</sub><tt class="docutils literal"><span class="pre">,</span>
2387
+ <span class="pre">tokens,</span></tt> <em>a</em><sub>i+1</sub><tt
2388
+
2389
+ class="docutils literal"><span class="pre">,</span></tt>...
2390
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
2391
+ </tr>
2392
+ <tr>
2393
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_REVERSE(a)</span></tt></td>
2394
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k</em><tt
2395
+
2396
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>k-1</sub><tt
2397
+
2398
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>k-2</sub><tt
2399
+
2400
+ class="docutils literal"><span class="pre">,</span></tt>...
2401
+ <em>a</em><sub>1</sub><tt class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>0</sub><tt
2402
+
2403
+ class="docutils literal"><span class="pre">))</span></tt></td>
2404
+ </tr>
2405
+ <tr>
2406
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_SIZE(a)</span></tt></td>
2407
+ <td><em>k</em></td>
2408
+ </tr>
2409
+ </tbody>
2410
+ </table>
2411
+ </div>
2412
+ <div class="section" id="lists">
2413
+ <h3><a name="lists">A.4.5.4   Lists</a></h3>
2414
+ <p>A <strong>list</strong> is a two-element tuple whose first
2415
+ element is the first element of the list, and whose second element
2416
+ is a list of the remaining elements, or <tt class="docutils literal"><span
2417
+
2418
+ class="pre">BOOST_PP_NIL</span></tt> if there are no remaining
2419
+ elements. Lists have access characteristics similar to those of a
2420
+ runtime linked list. Here is a three-element list:</p>
2421
+ <pre class="literal-block">#define LIST3 (<strong>f(12)</strong>, (<strong>a + 1</strong>, (<strong>foo</strong>, BOOST_PP_NIL)))
2422
+ </pre>
2423
+ <!-- @ignore() -->
2424
+ <p>The facilities for manipulating lists are all in the library's <tt
2425
+
2426
+ class="docutils literal"><span class="pre">list/</span></tt>
2427
+ subdirectory. Because the operations are a subset of those
2428
+ provided for sequences, we're not going to summarize them here—it
2429
+ should be easy to understand the list operations by reading the
2430
+ documentation on the basis of our coverage of sequences.</p>
2431
+ <p>Like sequences, lists have no fixed upper length bound. Unlike
2432
+ sequences, lists can also be empty. It's rare to need more than 25
2433
+ elements in a preprocessor data structure, and lists tend to be
2434
+ slower to manipulate and harder to read than any of the other
2435
+ structures, so they should normally be used only as a last resort.</p>
2436
+ </div>
2437
+ </div>
2438
+ </div>
2439
+ <div class="section" id="exercise">
2440
+ <h1><a name="exercise">A.5   Exercise</a></h1>
2441
+ <dl class="docutils">
2442
+ <dt>A-0</dt>
2443
+ <dd>Fully preprocessor-ize the <tt class="docutils literal"><span class="pre">tiny</span></tt>
2444
+ type sequence implemented in Chapter 5 so that all boilerplate code
2445
+ is eliminated and the maximum size of a <tt class="docutils literal"><span
2446
+
2447
+ class="pre">tiny</span></tt> sequence can be adjusted by
2448
+ changing <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>.</dd>
2449
+ </dl>
2450
+ <!-- on hold:
2451
+ It isn't uncommon to need token-wise arithmetic operations forpurposes other than invoking Preprocessor Library repetitionmacros. For example, let's write a metafunction to generate
2452
+ function types from "signature" type sequences that specify thefunction's return and parameter types:: template <unsigned Size, class Signature>
2453
+ struct to_function_impl; template <class Signature> struct to_function
2454
+ : to_function_impl<mpl::size<Signature>::type, Signature> {};The challenge now is to implement ``to_function_impl``. For
2455
+ ``Size == 3``, an appropriate specialization might look like this:: template <class Signature> struct to_function_impl<3,Signature>
2456
+ { typedef mpl::begin<Signature>::type i0; typedef mpl::deref<i0>::type t0;
2457
+ typedef mpl::next<i0>::type i1; typedef mpl::deref<i1>::type t1; typedef mpl::next<i1>::type i2;
2458
+ typedef mpl::deref<i2>::type t2; typedef t0 type(t1,t2); };
2459
+ A local macro to generate a single ``to_function_impl``specialization would look something like this:
2460
+ .. parsed-literal:: #define to_function_impl_spec(size) \\ template <class Signature> \\
2461
+ struct to_function_impl<3,Signature> \\ { \\ typedef mpl::begin<Signature>::type i0; \\ typedef mpl::deref<i0>::type t0; \\
2462
+ \\ BOOST_PP_REPEAT_FROM_TO(1, size, to_function_t, ~) \\ \\ typedef t0 type(BOOST_PP_ENUM_SHIFTED_PARAMS(size,t)); \\
2463
+ }; #define to_function_t(z, n, unused) \\ typedef mpl::next<BOOST_PP_CAT(i,\ **BOOST_PP_DEC(n)**)>::type \\
2464
+ BOOST_PP_CAT(i,n); \\ \\ typedef mpl::deref<BOOST_PP_CAT(i,n)>::type BOOST_PP_CAT(t,n);
2465
+ We've used some new library macros above; here is a brief rundown:* ``BOOST_PP_REPEAT_FROM_TO`` is just like ``BOOST_PP_REPEAT``, except that it accepts an initial repetition index. Since every
2466
+ function has a return type, we don't need to worry about the case where ``Size == 0``.* ``BOOST_PP_ENUM_SHIFTED_PARAMS`` is just like
2467
+ ``BOOST_PP_ENUM_PARAMS``, except that repetition indices start at ``1`` instead of ``0``.* ``BOOST_PP_CAT`` implements token pasting; its two arguments are
2468
+ "glued" together into a single token. Since this is a general-purpose macro, it sits in ``cat.hpp`` at the top level of the library's directory tree. [#paste]_
2469
+ .. [#paste] The preprocessor's built-in token-pasting operator, ``##``, often yields surprising results by taking effect before its arguments have been expanded. By contrast, ``BOOST_PP_CAT`` delays concatenation until after its arguments have been fully
2470
+ evaluated.* Finally, though it only performs trivial arithmetic, ``BOOST_PP_DEC`` plays a crucial role in generating an
2471
+ appropriate prior iterator identifier for our own code in ``to_function_t``.If we didn't have ``BOOST_PP_REPEAT_FROM_TO`` at our disposal in
2472
+ the previous example, we might've had to use ``BOOST_PP_REPEAT``,which always starts iterating at ``0``. Consequently``to_function_t`` would've been responsible for producing thedeclarations of ``i0`` and ``t0`` as well as those of the other
2473
+ nested types. To manage that, it would need a way to selectdifferent expansions depending on the value of ``n``.In its ``control/`` directory, the Preprocessor Library supplies a
2474
+ macro ``BOOST_PP_IF(c,t,f)`` that fulfills a similar role to theone filled by ``mpl::if_``. Rewriting the example accordingly, weget:
2475
+ .. parsed-literal:: #define to_function_impl_spec(size) \\ template <class Signature> \\
2476
+ struct to_function_impl<3,Signature> \\ { \\ BOOST_PP_REPEAT_FROM_TO(1, size, to_function_t, ~) \\ \\
2477
+ typedef t0 type(BOOST_PP_ENUM_SHIFTED_PARAMS(size,t)); \\ }; #define to_function_t(z, n, unused) \\
2478
+ typedef BOOST_PP_IF( \\ n, \\ mpl::next<BOOST_PP_CAT(i,BOOST_PP_DEC(n))>::type, \\ typedef mpl::begin<Signature>::type i0; \\
2479
+ ) \\ BOOST_PP_CAT(i,n); \\ \\ typedef mpl::deref<BOOST_PP_CAT(i,n)>::type BOOST_PP_CAT(t,n);
2480
+ Although the formulation above will work, it does unnecessary workwhen ``n == 0``, evaluating the "true" branch of the conditionalonly to discard it. -->
2481
+ </div>
2482
+ </div>
2483
+ <hr class="docutils footer" />
2484
+ <div class="footer"> Generated on: 2005-10-17 19:34 UTC. Generated by <a class="reference"
2485
+
2486
+ href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference"
2487
+
2488
+ href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>
2489
+ source. </div>
2490
+ </body>
2491
+ </html>
2492
+ <!--
2493
+ FILE ARCHIVED ON 19:59:10 Mar 30, 2013 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 21:06:19 May 19, 2015. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
2494
+ ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)).-->