windows-pr 1.2.4 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (629) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +453 -449
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +26 -0
  5. data/MANIFEST +68 -68
  6. data/README +156 -154
  7. data/Rakefile +42 -42
  8. data/appveyor.yml +21 -0
  9. data/doc/conversion_guide.txt +37 -37
  10. data/lib/windows/clipboard.rb +61 -61
  11. data/lib/windows/com.rb +192 -192
  12. data/lib/windows/com/accessibility.rb +16 -16
  13. data/lib/windows/com/automation.rb +149 -149
  14. data/lib/windows/com/variant.rb +24 -24
  15. data/lib/windows/console.rb +114 -114
  16. data/lib/windows/debug.rb +35 -35
  17. data/lib/windows/device_io.rb +248 -248
  18. data/lib/windows/directory.rb +27 -27
  19. data/lib/windows/error.rb +504 -504
  20. data/lib/windows/eventlog.rb +80 -80
  21. data/lib/windows/file.rb +264 -264
  22. data/lib/windows/file_mapping.rb +25 -25
  23. data/lib/windows/filesystem.rb +15 -15
  24. data/lib/windows/gdi/bitmap.rb +65 -65
  25. data/lib/windows/gdi/device_context.rb +46 -46
  26. data/lib/windows/gdi/metafile.rb +40 -40
  27. data/lib/windows/gdi/painting_drawing.rb +115 -115
  28. data/lib/windows/handle.rb +23 -23
  29. data/lib/windows/library.rb +44 -44
  30. data/lib/windows/limits.rb +34 -34
  31. data/lib/windows/mailslot.rb +24 -24
  32. data/lib/windows/memory.rb +128 -128
  33. data/lib/windows/msvcrt/buffer.rb +75 -75
  34. data/lib/windows/msvcrt/directory.rb +31 -31
  35. data/lib/windows/msvcrt/file.rb +47 -47
  36. data/lib/windows/msvcrt/io.rb +73 -73
  37. data/lib/windows/msvcrt/string.rb +182 -182
  38. data/lib/windows/msvcrt/time.rb +169 -169
  39. data/lib/windows/national.rb +580 -580
  40. data/lib/windows/network/management.rb +525 -525
  41. data/lib/windows/network/snmp.rb +92 -92
  42. data/lib/windows/network/winsock.rb +128 -128
  43. data/lib/windows/nio.rb +50 -50
  44. data/lib/windows/ntfs/winternl.rb +117 -117
  45. data/lib/windows/path.rb +143 -143
  46. data/lib/windows/pipe.rb +42 -42
  47. data/lib/windows/process.rb +176 -176
  48. data/lib/windows/registry.rb +171 -171
  49. data/lib/windows/security.rb +479 -479
  50. data/lib/windows/security/authentication.rb +32 -32
  51. data/lib/windows/security/sspi.rb +153 -153
  52. data/lib/windows/service.rb +142 -142
  53. data/lib/windows/shell.rb +171 -171
  54. data/lib/windows/socket.rb +86 -86
  55. data/lib/windows/sound.rb +39 -39
  56. data/lib/windows/synchronize.rb +133 -133
  57. data/lib/windows/system_info.rb +229 -229
  58. data/lib/windows/thread.rb +64 -64
  59. data/lib/windows/time.rb +48 -48
  60. data/lib/windows/tool_helper.rb +36 -36
  61. data/lib/windows/unicode.rb +155 -155
  62. data/lib/windows/volume.rb +61 -61
  63. data/lib/windows/window.rb +81 -81
  64. data/lib/windows/window/classes.rb +59 -59
  65. data/lib/windows/window/dialog.rb +91 -91
  66. data/lib/windows/window/menu.rb +102 -102
  67. data/lib/windows/window/message.rb +297 -297
  68. data/lib/windows/window/properties.rb +20 -20
  69. data/lib/windows/window/timer.rb +19 -19
  70. data/lib/windows/wsa.rb +102 -102
  71. data/test/helper.rb +1 -0
  72. data/test/tc_clipboard.rb +41 -41
  73. data/test/tc_com.rb +32 -32
  74. data/test/tc_com_automation.rb +15 -15
  75. data/test/tc_console.rb +108 -108
  76. data/test/tc_debug.rb +48 -48
  77. data/test/tc_device_io.rb +29 -29
  78. data/test/tc_directory.rb +25 -25
  79. data/test/tc_error.rb +38 -38
  80. data/test/tc_eventlog.rb +58 -58
  81. data/test/tc_file.rb +68 -68
  82. data/test/tc_file_mapping.rb +38 -38
  83. data/test/tc_filesystem.rb +27 -27
  84. data/test/tc_gdi_bitmap.rb +25 -25
  85. data/test/tc_gdi_metafile.rb +23 -23
  86. data/test/tc_handle.rb +43 -35
  87. data/test/tc_library.rb +37 -37
  88. data/test/tc_limits.rb +33 -33
  89. data/test/tc_mailslot.rb +22 -22
  90. data/test/tc_memory.rb +44 -44
  91. data/test/tc_msvcrt_buffer.rb +63 -63
  92. data/test/tc_msvcrt_directory.rb +96 -96
  93. data/test/tc_msvcrt_file.rb +80 -80
  94. data/test/tc_msvcrt_io.rb +48 -48
  95. data/test/tc_msvcrt_string.rb +94 -94
  96. data/test/tc_msvcrt_time.rb +19 -19
  97. data/test/tc_national.rb +38 -38
  98. data/test/tc_network_management.rb +32 -32
  99. data/test/tc_network_snmp.rb +31 -31
  100. data/test/tc_network_winsock.rb +34 -34
  101. data/test/tc_nio.rb +32 -32
  102. data/test/tc_ntfs_winternl.rb +48 -48
  103. data/test/tc_path.rb +90 -90
  104. data/test/tc_pipe.rb +52 -52
  105. data/test/tc_process.rb +24 -24
  106. data/test/tc_registry.rb +29 -29
  107. data/test/tc_security.rb +104 -104
  108. data/test/tc_security_authentication.rb +34 -34
  109. data/test/tc_security_sspi.rb +23 -23
  110. data/test/tc_service.rb +57 -57
  111. data/test/tc_shell.rb +34 -34
  112. data/test/tc_socket.rb +30 -30
  113. data/test/tc_sound.rb +37 -37
  114. data/test/tc_synchronize.rb +75 -75
  115. data/test/tc_system_info.rb +33 -33
  116. data/test/tc_thread.rb +29 -29
  117. data/test/tc_time.rb +32 -32
  118. data/test/tc_tool_helper.rb +29 -29
  119. data/test/tc_unicode.rb +83 -83
  120. data/test/tc_volume.rb +47 -47
  121. data/test/tc_window.rb +45 -45
  122. data/test/tc_window_classes.rb +33 -33
  123. data/test/tc_window_dialog.rb +33 -33
  124. data/test/tc_window_menu.rb +29 -29
  125. data/test/tc_window_message.rb +33 -33
  126. data/test/tc_window_properties.rb +29 -29
  127. data/test/tc_window_timer.rb +29 -29
  128. data/test/tc_wsa.rb +19 -19
  129. data/vendor/bundle/ruby/2.2.0/bin/rake +23 -0
  130. data/vendor/bundle/ruby/2.2.0/bin/rake.bat +6 -0
  131. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/History.rdoc +1176 -0
  132. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/Manifest.txt +26 -0
  133. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/README.rdoc +656 -0
  134. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/Rakefile +72 -0
  135. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/design_rationale.rb +52 -0
  136. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/hoe/minitest.rb +26 -0
  137. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest.rb +815 -0
  138. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/assertions.rb +674 -0
  139. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/autorun.rb +13 -0
  140. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/benchmark.rb +424 -0
  141. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/expectations.rb +284 -0
  142. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/hell.rb +17 -0
  143. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/mock.rb +232 -0
  144. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/parallel.rb +69 -0
  145. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/pride.rb +4 -0
  146. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/pride_plugin.rb +142 -0
  147. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/spec.rb +331 -0
  148. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/test.rb +284 -0
  149. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/lib/minitest/unit.rb +45 -0
  150. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/metametameta.rb +90 -0
  151. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/test_minitest_benchmark.rb +137 -0
  152. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/test_minitest_mock.rb +512 -0
  153. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/test_minitest_reporter.rb +281 -0
  154. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/test_minitest_spec.rb +967 -0
  155. data/vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/test_minitest_test.rb +1983 -0
  156. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/CONTRIBUTING.rdoc +36 -0
  157. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/Gemfile +3 -0
  158. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/History.rdoc +2228 -0
  159. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/MIT-LICENSE +21 -0
  160. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/README.rdoc +157 -0
  161. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/Rakefile +29 -0
  162. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/appveyor.yml +24 -0
  163. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/bin/console +7 -0
  164. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/bin/setup +6 -0
  165. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/command_line_usage.rdoc +158 -0
  166. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/example/Rakefile1 +38 -0
  167. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/example/Rakefile2 +35 -0
  168. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/example/a.c +6 -0
  169. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/example/b.c +6 -0
  170. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/example/main.c +11 -0
  171. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/glossary.rdoc +42 -0
  172. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/jamis.rb +591 -0
  173. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/proto_rake.rdoc +127 -0
  174. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/rake.1 +141 -0
  175. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/rakefile.rdoc +624 -0
  176. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/rational.rdoc +151 -0
  177. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/README.md +4 -0
  178. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.4.14.rdoc +23 -0
  179. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.4.15.rdoc +35 -0
  180. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.5.0.rdoc +53 -0
  181. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.5.3.rdoc +78 -0
  182. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.5.4.rdoc +46 -0
  183. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.6.0.rdoc +141 -0
  184. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.7.0.rdoc +119 -0
  185. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.7.1.rdoc +59 -0
  186. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.7.2.rdoc +121 -0
  187. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.7.3.rdoc +47 -0
  188. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.0.rdoc +114 -0
  189. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.2.rdoc +165 -0
  190. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.3.rdoc +112 -0
  191. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.4.rdoc +147 -0
  192. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.5.rdoc +53 -0
  193. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.6.rdoc +37 -0
  194. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.8.7.rdoc +55 -0
  195. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.0.rdoc +112 -0
  196. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.1.rdoc +52 -0
  197. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  198. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.2.rdoc +49 -0
  199. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.3.rdoc +102 -0
  200. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.4.rdoc +60 -0
  201. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.5.rdoc +55 -0
  202. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-0.9.6.rdoc +64 -0
  203. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-10.0.0.rdoc +178 -0
  204. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-10.0.1.rdoc +58 -0
  205. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-10.0.2.rdoc +53 -0
  206. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-10.0.3.rdoc +191 -0
  207. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/doc/release_notes/rake-10.1.0.rdoc +61 -0
  208. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/exe/rake +27 -0
  209. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake.rb +71 -0
  210. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/application.rb +784 -0
  211. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/backtrace.rb +23 -0
  212. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/clean.rb +76 -0
  213. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/cloneable.rb +16 -0
  214. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/contrib/compositepublisher.rb +21 -0
  215. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/contrib/ftptools.rb +137 -0
  216. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/contrib/sshpublisher.rb +60 -0
  217. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/cpu_counter.rb +106 -0
  218. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/default_loader.rb +14 -0
  219. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/dsl_definition.rb +194 -0
  220. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/early_time.rb +21 -0
  221. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/ext/core.rb +25 -0
  222. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/ext/fixnum.rb +18 -0
  223. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/ext/pathname.rb +25 -0
  224. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/ext/string.rb +175 -0
  225. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/file_creation_task.rb +24 -0
  226. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/file_list.rb +436 -0
  227. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/file_task.rb +46 -0
  228. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/file_utils.rb +139 -0
  229. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/file_utils_ext.rb +144 -0
  230. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/invocation_chain.rb +56 -0
  231. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/invocation_exception_mixin.rb +16 -0
  232. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/late_time.rb +17 -0
  233. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/linked_list.rb +111 -0
  234. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/loaders/makefile.rb +53 -0
  235. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/multi_task.rb +13 -0
  236. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/name_space.rb +38 -0
  237. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/packagetask.rb +210 -0
  238. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/phony.rb +15 -0
  239. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/private_reader.rb +20 -0
  240. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/promise.rb +99 -0
  241. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/pseudo_status.rb +29 -0
  242. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/rake_module.rb +38 -0
  243. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/rake_test_loader.rb +21 -0
  244. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/rule_recursion_overflow_error.rb +19 -0
  245. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/scope.rb +42 -0
  246. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/task.rb +391 -0
  247. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/task_argument_error.rb +7 -0
  248. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/task_arguments.rb +103 -0
  249. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/task_manager.rb +316 -0
  250. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/tasklib.rb +11 -0
  251. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/testtask.rb +212 -0
  252. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/thread_history_display.rb +48 -0
  253. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/thread_pool.rb +162 -0
  254. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/trace_output.rb +22 -0
  255. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/version.rb +9 -0
  256. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/lib/rake/win32.rb +50 -0
  257. data/vendor/bundle/ruby/2.2.0/gems/rake-11.2.2/rake.gemspec +30 -0
  258. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/CHANGES +174 -0
  259. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/Gemfile +4 -0
  260. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/Gemfile.lock +24 -0
  261. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/MANIFEST +10 -0
  262. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/README +129 -0
  263. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/Rakefile +185 -0
  264. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/appveyor.yml +42 -0
  265. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/ext/win32/api.c +1092 -0
  266. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/api.rb +40 -0
  267. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby21_32/win32/api.so +0 -0
  268. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby21_64/win32/api.so +0 -0
  269. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby22_32/win32/api.so +0 -0
  270. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby22_64/win32/api.so +0 -0
  271. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby23_32/win32/api.so +0 -0
  272. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby23_64/win32/api.so +0 -0
  273. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby2_32/win32/api.so +0 -0
  274. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/lib/win32/ruby2_64/win32/api.so +0 -0
  275. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/test/test_win32_api.rb +145 -0
  276. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/test/test_win32_api_callback.rb +74 -0
  277. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/test/test_win32_api_function.rb +66 -0
  278. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/bin/devkit +23 -0
  279. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/bin/devkit.bat +6 -0
  280. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/bin/rake +23 -0
  281. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/bin/rake.bat +6 -0
  282. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/CHANGELOG +55 -0
  283. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/LICENSE +339 -0
  284. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/README.md +73 -0
  285. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/Rakefile +8 -0
  286. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/colorize.gemspec +35 -0
  287. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/lib/colorize.rb +12 -0
  288. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/lib/colorize/class_methods.rb +116 -0
  289. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/lib/colorize/instance_methods.rb +135 -0
  290. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/colorize-0.7.7/test/test_colorize.rb +161 -0
  291. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/Gemfile +4 -0
  292. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/LICENSE.txt +22 -0
  293. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/README.md +34 -0
  294. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/Rakefile +1 -0
  295. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/Rspec-example-matchers.txt +184 -0
  296. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/bin/devkit +87 -0
  297. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/devkit.gemspec +27 -0
  298. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit.rb +18 -0
  299. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/core.rb +53 -0
  300. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/identity.rb +78 -0
  301. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/ssh_identity.rb +53 -0
  302. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/lib/devkit/version.rb +3 -0
  303. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit/core_spec.rb +46 -0
  304. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit/identity_spec.rb +1 -0
  305. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit/ssh_identity_spec.rb +1 -0
  306. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/devkit_spec.rb +5 -0
  307. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/devkit-0.1.0/spec/spec_helper.rb +8 -0
  308. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/AUTHORS +3 -0
  309. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/COPYING +339 -0
  310. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/Changelog.md +415 -0
  311. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/Gemfile +9 -0
  312. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/INSTALL +59 -0
  313. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/LICENSE +7 -0
  314. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/README.rdoc +74 -0
  315. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/Rakefile +30 -0
  316. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/TODO +6 -0
  317. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/ansi_colors.rb +38 -0
  318. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/asking_for_arrays.rb +18 -0
  319. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/basic_usage.rb +75 -0
  320. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/color_scheme.rb +32 -0
  321. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/get_character.rb +12 -0
  322. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/limit.rb +12 -0
  323. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/menus.rb +65 -0
  324. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/overwrite.rb +19 -0
  325. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/page_and_wrap.rb +322 -0
  326. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/password.rb +7 -0
  327. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/repeat_entry.rb +21 -0
  328. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/trapping_eof.rb +22 -0
  329. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/examples/using_readline.rb +17 -0
  330. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/highline.gemspec +37 -0
  331. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline.rb +1048 -0
  332. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/color_scheme.rb +134 -0
  333. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/compatibility.rb +16 -0
  334. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/import.rb +41 -0
  335. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/menu.rb +381 -0
  336. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/question.rb +480 -0
  337. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/simulate.rb +48 -0
  338. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/style.rb +192 -0
  339. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/lib/highline/version.rb +4 -0
  340. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/setup.rb +1360 -0
  341. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/site/highline.css +65 -0
  342. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/site/images/logo.png +0 -0
  343. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/site/index.html +58 -0
  344. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/string_methods.rb +32 -0
  345. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_color_scheme.rb +96 -0
  346. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_highline.rb +1402 -0
  347. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_import.rb +52 -0
  348. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_menu.rb +439 -0
  349. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_simulator.rb +23 -0
  350. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_string_highline.rb +38 -0
  351. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/highline-1.7.8/test/tc_style.rb +578 -0
  352. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/BSDL +22 -0
  353. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/COPYING +57 -0
  354. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/Gemfile +9 -0
  355. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/LEGAL +4 -0
  356. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/README.rdoc +19 -0
  357. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/Rakefile +16 -0
  358. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/benchmarks/bm_yhpg.rb +59 -0
  359. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/benchmarks/helper.rb +8 -0
  360. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/lib/power_assert.rb +338 -0
  361. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/lib/power_assert/enable_tracepoint_events.rb +82 -0
  362. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/lib/power_assert/version.rb +3 -0
  363. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/power_assert.gemspec +23 -0
  364. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/test/helper.rb +10 -0
  365. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/power_assert-0.3.0/test/test_power_assert.rb +512 -0
  366. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/CONTRIBUTING.rdoc +38 -0
  367. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/History.rdoc +719 -0
  368. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/MIT-LICENSE +21 -0
  369. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/Manifest.txt +154 -0
  370. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/README.rdoc +157 -0
  371. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/Rakefile +82 -0
  372. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/bin/rake +33 -0
  373. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/command_line_usage.rdoc +158 -0
  374. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/Rakefile1 +38 -0
  375. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/Rakefile2 +35 -0
  376. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/a.c +6 -0
  377. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/b.c +6 -0
  378. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/example/main.c +11 -0
  379. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/glossary.rdoc +42 -0
  380. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/jamis.rb +591 -0
  381. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/proto_rake.rdoc +127 -0
  382. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/rake.1 +141 -0
  383. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/rakefile.rdoc +624 -0
  384. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/rational.rdoc +151 -0
  385. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.4.14.rdoc +23 -0
  386. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.4.15.rdoc +35 -0
  387. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.5.0.rdoc +53 -0
  388. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.5.3.rdoc +78 -0
  389. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.5.4.rdoc +46 -0
  390. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.6.0.rdoc +141 -0
  391. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.0.rdoc +119 -0
  392. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.1.rdoc +59 -0
  393. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.2.rdoc +121 -0
  394. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.7.3.rdoc +47 -0
  395. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.0.rdoc +114 -0
  396. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.2.rdoc +165 -0
  397. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.3.rdoc +112 -0
  398. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.4.rdoc +147 -0
  399. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.5.rdoc +53 -0
  400. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.6.rdoc +37 -0
  401. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.8.7.rdoc +55 -0
  402. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.0.rdoc +112 -0
  403. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.1.rdoc +52 -0
  404. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  405. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.2.rdoc +49 -0
  406. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.3.rdoc +102 -0
  407. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.4.rdoc +60 -0
  408. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.5.rdoc +55 -0
  409. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-0.9.6.rdoc +64 -0
  410. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.0.rdoc +178 -0
  411. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.1.rdoc +58 -0
  412. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.2.rdoc +53 -0
  413. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.0.3.rdoc +191 -0
  414. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/doc/release_notes/rake-10.1.0.rdoc +61 -0
  415. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake.rb +73 -0
  416. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb +787 -0
  417. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/backtrace.rb +23 -0
  418. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/clean.rb +76 -0
  419. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/cloneable.rb +16 -0
  420. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/contrib/compositepublisher.rb +21 -0
  421. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/contrib/ftptools.rb +137 -0
  422. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/contrib/sshpublisher.rb +60 -0
  423. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/cpu_counter.rb +120 -0
  424. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/default_loader.rb +14 -0
  425. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/dsl_definition.rb +194 -0
  426. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/early_time.rb +21 -0
  427. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_creation_task.rb +24 -0
  428. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_list.rb +436 -0
  429. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_task.rb +46 -0
  430. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/file_utils.rb +123 -0
  431. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/invocation_chain.rb +56 -0
  432. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/invocation_exception_mixin.rb +16 -0
  433. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/late_time.rb +17 -0
  434. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/linked_list.rb +111 -0
  435. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/loaders/makefile.rb +53 -0
  436. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/multi_task.rb +13 -0
  437. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/name_space.rb +38 -0
  438. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/packagetask.rb +199 -0
  439. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/phony.rb +15 -0
  440. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/private_reader.rb +20 -0
  441. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/promise.rb +99 -0
  442. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/pseudo_status.rb +29 -0
  443. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rake_module.rb +38 -0
  444. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rake_test_loader.rb +22 -0
  445. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  446. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/scope.rb +42 -0
  447. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task.rb +391 -0
  448. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task_argument_error.rb +7 -0
  449. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task_arguments.rb +102 -0
  450. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/task_manager.rb +316 -0
  451. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/tasklib.rb +11 -0
  452. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/testtask.rb +204 -0
  453. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/thread_history_display.rb +48 -0
  454. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/thread_pool.rb +163 -0
  455. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/trace_output.rb +22 -0
  456. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/version.rb +7 -0
  457. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/win32.rb +50 -0
  458. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/rakelib/test_times.rake +25 -0
  459. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/file_creation.rb +34 -0
  460. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/helper.rb +134 -0
  461. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/support/rakefile_definitions.rb +476 -0
  462. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/support/ruby_runner.rb +34 -0
  463. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_private_reader.rb +42 -0
  464. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake.rb +40 -0
  465. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_application.rb +659 -0
  466. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_application_options.rb +468 -0
  467. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_backtrace.rb +119 -0
  468. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_clean.rb +61 -0
  469. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_cpu_counter.rb +68 -0
  470. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_definitions.rb +84 -0
  471. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_directory_task.rb +76 -0
  472. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_dsl.rb +40 -0
  473. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_early_time.rb +31 -0
  474. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_creation_task.rb +56 -0
  475. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_list.rb +687 -0
  476. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_list_path_map.rb +15 -0
  477. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_task.rb +197 -0
  478. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_file_utils.rb +318 -0
  479. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_ftp_file.rb +74 -0
  480. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_functional.rb +484 -0
  481. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_invocation_chain.rb +64 -0
  482. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_late_time.rb +18 -0
  483. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_linked_list.rb +84 -0
  484. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_makefile_loader.rb +46 -0
  485. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_multi_task.rb +64 -0
  486. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_name_space.rb +57 -0
  487. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_package_task.rb +79 -0
  488. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_path_map.rb +168 -0
  489. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_path_map_explode.rb +34 -0
  490. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_path_map_partial.rb +18 -0
  491. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_pseudo_status.rb +21 -0
  492. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_rake_test_loader.rb +20 -0
  493. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_reduce_compat.rb +26 -0
  494. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_require.rb +40 -0
  495. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_rules.rb +388 -0
  496. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_scope.rb +44 -0
  497. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task.rb +430 -0
  498. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_argument_parsing.rb +119 -0
  499. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_arguments.rb +134 -0
  500. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_manager.rb +178 -0
  501. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_manager_argument_resolution.rb +19 -0
  502. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_task_with_arguments.rb +172 -0
  503. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_test_task.rb +130 -0
  504. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_thread_pool.rb +145 -0
  505. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_top_level_functions.rb +71 -0
  506. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_rake_win32.rb +72 -0
  507. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_thread_history_display.rb +101 -0
  508. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/test/test_trace_output.rb +52 -0
  509. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/COPYING +64 -0
  510. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/GPL +339 -0
  511. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/LGPL +502 -0
  512. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/PSFL +271 -0
  513. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/README.md +101 -0
  514. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/Rakefile +71 -0
  515. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test-unit.rb +34 -0
  516. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit.rb +505 -0
  517. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/assertion-failed-error.rb +25 -0
  518. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/assertions.rb +2218 -0
  519. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/attribute-matcher.rb +26 -0
  520. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/attribute.rb +158 -0
  521. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/auto-runner-loader.rb +17 -0
  522. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/autorunner.rb +536 -0
  523. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/code-snippet-fetcher.rb +58 -0
  524. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector.rb +73 -0
  525. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/descendant.rb +19 -0
  526. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/dir.rb +108 -0
  527. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/load.rb +202 -0
  528. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/objectspace.rb +34 -0
  529. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/collector/xml.rb +249 -0
  530. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/color-scheme.rb +198 -0
  531. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/color.rb +134 -0
  532. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/data.rb +262 -0
  533. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/diff.rb +746 -0
  534. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/error.rb +158 -0
  535. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/exception-handler.rb +82 -0
  536. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/failure.rb +169 -0
  537. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/fault-location-detector.rb +100 -0
  538. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/fixture.rb +295 -0
  539. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/notification.rb +136 -0
  540. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/omission.rb +195 -0
  541. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/pending.rb +154 -0
  542. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/priority.rb +192 -0
  543. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/runner/console.rb +59 -0
  544. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/runner/emacs.rb +8 -0
  545. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/runner/xml.rb +15 -0
  546. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/test-suite-creator.rb +89 -0
  547. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/testcase.rb +811 -0
  548. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/testresult.rb +132 -0
  549. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/testsuite.rb +175 -0
  550. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/console/outputlevel.rb +15 -0
  551. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/console/testrunner.rb +693 -0
  552. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  553. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/testrunner.rb +53 -0
  554. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/testrunnermediator.rb +114 -0
  555. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  556. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/ui/xml/testrunner.rb +224 -0
  557. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/backtracefilter.rb +59 -0
  558. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/method-owner-finder.rb +28 -0
  559. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/observable.rb +90 -0
  560. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/output.rb +31 -0
  561. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/util/procwrapper.rb +48 -0
  562. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/lib/test/unit/version.rb +5 -0
  563. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/adder.rb +13 -0
  564. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/subtracter.rb +12 -0
  565. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/test_adder.rb +20 -0
  566. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/test_subtracter.rb +20 -0
  567. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/sample/test_user.rb +23 -0
  568. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test-descendant.rb +178 -0
  569. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test-load.rb +442 -0
  570. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test_dir.rb +406 -0
  571. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/collector/test_objectspace.rb +100 -0
  572. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header-label.csv +3 -0
  573. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header-label.tsv +3 -0
  574. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header.csv +3 -0
  575. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/header.tsv +3 -0
  576. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/no-header.csv +2 -0
  577. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/no-header.tsv +2 -0
  578. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/fixtures/plus.csv +3 -0
  579. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/run-test.rb +22 -0
  580. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-assertions.rb +2160 -0
  581. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-attribute-matcher.rb +38 -0
  582. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-attribute.rb +123 -0
  583. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-code-snippet.rb +37 -0
  584. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-color-scheme.rb +82 -0
  585. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-color.rb +47 -0
  586. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-data.rb +303 -0
  587. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-diff.rb +518 -0
  588. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-emacs-runner.rb +60 -0
  589. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-error.rb +26 -0
  590. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-failure.rb +33 -0
  591. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-fault-location-detector.rb +163 -0
  592. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-fixture.rb +713 -0
  593. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-notification.rb +33 -0
  594. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-omission.rb +81 -0
  595. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-pending.rb +70 -0
  596. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-priority.rb +173 -0
  597. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-case.rb +1171 -0
  598. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-result.rb +113 -0
  599. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-suite-creator.rb +97 -0
  600. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/test-test-suite.rb +150 -0
  601. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/testunit-test-util.rb +31 -0
  602. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/ui/test_testrunmediator.rb +20 -0
  603. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test-method-owner-finder.rb +38 -0
  604. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test-output.rb +11 -0
  605. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test_backtracefilter.rb +52 -0
  606. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test_observable.rb +102 -0
  607. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/gems/test-unit-3.1.9/test/util/test_procwrapper.rb +36 -0
  608. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/specifications/colorize-0.7.7.gemspec +38 -0
  609. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/specifications/devkit-0.1.0.gemspec +46 -0
  610. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/specifications/highline-1.7.8.gemspec +37 -0
  611. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/specifications/power_assert-0.3.0.gemspec +41 -0
  612. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/specifications/rake-11.1.2.gemspec +43 -0
  613. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/vendor/bundle/ruby/2.2.0/specifications/test-unit-3.1.9.gemspec +47 -0
  614. data/vendor/bundle/ruby/2.2.0/gems/win32-api-1.6.0-universal-mingw32/win32-api.gemspec +27 -0
  615. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/CHANGES +68 -0
  616. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/MANIFEST +9 -0
  617. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/README +96 -0
  618. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/Rakefile +47 -0
  619. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/lib/windows/api.rb +503 -0
  620. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/lib/windows/wide_string.rb +60 -0
  621. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/test/test_wide_string.rb +59 -0
  622. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/test/test_windows_api.rb +171 -0
  623. data/vendor/bundle/ruby/2.2.0/gems/windows-api-0.4.4/windows-api.gemspec +26 -0
  624. data/vendor/bundle/ruby/2.2.0/specifications/minitest-5.9.0.gemspec +39 -0
  625. data/vendor/bundle/ruby/2.2.0/specifications/rake-11.2.2.gemspec +43 -0
  626. data/vendor/bundle/ruby/2.2.0/specifications/win32-api-1.6.0-universal-mingw32.gemspec +39 -0
  627. data/vendor/bundle/ruby/2.2.0/specifications/windows-api-0.4.4.gemspec +37 -0
  628. data/windows-pr.gemspec +33 -31
  629. metadata +548 -17
@@ -0,0 +1,4 @@
1
+ # A sample Gemfile
2
+ source "https://rubygems.org"
3
+
4
+ gemspec
@@ -0,0 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ win32-api (1.6.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ power_assert (0.3.0)
10
+ rake (11.1.2)
11
+ test-unit (3.1.9)
12
+ power_assert
13
+
14
+ PLATFORMS
15
+ x64-mingw32
16
+ x86-mingw32
17
+
18
+ DEPENDENCIES
19
+ rake
20
+ test-unit (>= 2.5.0)
21
+ win32-api!
22
+
23
+ BUNDLED WITH
24
+ 1.10.5
@@ -0,0 +1,10 @@
1
+ * CHANGES
2
+ * MANIFEST
3
+ * README
4
+ * Rakefile
5
+ * win32-api.gemspec
6
+ * ext/extconf.rb
7
+ * ext/win32/api.c
8
+ * test/test_win32_api.rb
9
+ * test/test_win32_api_callback.rb
10
+ * test/test_win32_api_function.rb
@@ -0,0 +1,129 @@
1
+ = Description
2
+ This is a drop-in replacement for the Win32API library currently part of
3
+ Ruby's standard library.
4
+
5
+ = Synopsis
6
+ require 'win32/api'
7
+ include Win32
8
+
9
+ # Typical example - Get user name
10
+ buf = 0.chr * 260
11
+ len = [buf.length].pack('L')
12
+
13
+ GetUserName = API.new('GetUserName', 'PP', 'I', 'advapi32')
14
+ GetUserName.call(buf, len)
15
+
16
+ puts buf.strip
17
+
18
+ # Callback example - Enumerate windows
19
+ EnumWindows = API.new('EnumWindows', 'KP', 'L', 'user32')
20
+ GetWindowText = API.new('GetWindowText', 'LPI', 'I', 'user32')
21
+ EnumWindowsProc = API::Callback.new('LP', 'I'){ |handle, param|
22
+ buf = "\0" * 200
23
+ GetWindowText.call(handle, buf, 200);
24
+ puts buf.strip unless buf.strip.empty?
25
+ buf.index(param).nil? ? true : false
26
+ }
27
+
28
+ EnumWindows.call(EnumWindowsProc, 'UEDIT32')
29
+
30
+ # Raw function pointer example - System beep
31
+ LoadLibrary = API.new('LoadLibrary', 'P', 'L')
32
+ GetProcAddress = API.new('GetProcAddress', 'LP', 'L')
33
+
34
+ hlib = LoadLibrary.call('user32')
35
+ addr = GetProcAddress.call(hlib, 'MessageBeep')
36
+ func = Win32::API::Function.new(addr, 'L', 'L')
37
+ func.call(0)
38
+
39
+ = Differences between win32-api and Win32API
40
+ * This library has callback support
41
+ * This library supports raw function pointers.
42
+ * This library supports a separate string type for const char* (S).
43
+ * Argument order change. The DLL name is now last, not first.
44
+ * Removed the 'N' and 'n' prototypes. Always use 'L' for longs now.
45
+ * Sensible default arguments for the prototype, return type and DLL name.
46
+ * Reader methods for the function name, effective function name, prototype,
47
+ return type and DLL.
48
+ * Removed the support for lower case prototype and return types. Always
49
+ use capital letters.
50
+
51
+ = Developer's Notes
52
+ [NOTE: Some of the information below is now out of date, but explains my
53
+ motivation at the time the project was originally created.]
54
+
55
+ The current Win32API library that ships with the standard library has been
56
+ slated for removal from Ruby 2.0 and it will not receive any updates in the
57
+ Ruby 1.8.x branch. I have far too many libraries invested in it to let it
58
+ die at this point.
59
+
60
+ In addition, the current Win32API library was written in the bad old Ruby
61
+ 1.6.x days, which means it doesn't use the newer allocation framework.
62
+ There were several other refactorings that I felt it needed to more closely
63
+ match how it was actually being used in practice.
64
+
65
+ The first order of business was changing the order of the arguments. By
66
+ moving the DLL name from first to last, I was able to provide reasonable
67
+ default arguments for the prototype, return type and the DLL. Only the
68
+ function name is required now.
69
+
70
+ There was a laundry list of other refactorings that were needed: sensical
71
+ instance variable names with proper accessors, removing support for lower
72
+ case prototype and return value characters that no one used in practice,
73
+ better naming conventions, the addition of RDoc ready comments and,
74
+ especially, callback and raw function pointer support.
75
+
76
+ Most importantly, we can now add, modify and fix any features that we feel
77
+ best benefit our end users.
78
+
79
+ = Multiple Binaries
80
+ As of win32-api 1.4.8 a binary gem is shipped that contains binaries for
81
+ both Ruby 1.8, Ruby 1.9, and 2.x. For Ruby 2.x, both 32 and 64 bit binaries
82
+ are included as of release 1.5.0.
83
+
84
+ The file under lib/win32 dynamically requires the correct binary based on
85
+ your version of Ruby.
86
+
87
+ = Documentation
88
+ The source file contains inline RDoc documentation. If you installed
89
+ this file as a gem, then you have the docs. Run "gem server" and point
90
+ your browser at http://localhost:8808 to see them.
91
+
92
+ = Warranty
93
+ This package is provided "as is" and without any express or
94
+ implied warranties, including, without limitation, the implied
95
+ warranties of merchantability and fitness for a particular purpose.
96
+
97
+ = Known Issues
98
+ Possible callback issues when dealing with multi-threaded applications.
99
+
100
+ Please submit any bug reports to the project page at
101
+ https://github.com/djberg96/win32-api
102
+
103
+ == Contributions
104
+ Although this library is free, please consider having your company
105
+ setup a gittip if used by your company professionally.
106
+
107
+ http://www.gittip.com/djberg96/
108
+
109
+ = Future Plans
110
+ I really don't have future plans for this library since you should use FFI
111
+ as your preferred C interface going forward. All of my own projects have
112
+ since been converted to either use FFI or an analogous OLE interface.
113
+
114
+ I will continue to maintain this library as long as there are folks out
115
+ there who are still using it, but I strongly encourage you to convert
116
+ your projects to FFI when possible.
117
+
118
+ = Copyright
119
+ (C) 2003-2015 Daniel J. Berger
120
+ (C) 2016 Hiroshi Hatake
121
+ All Rights Reserved
122
+
123
+ = License
124
+ Artistic 2.0
125
+
126
+ = Authors
127
+ Daniel J. Berger
128
+ Park Heesob
129
+ Hiroshi Hatake
@@ -0,0 +1,185 @@
1
+ require 'rake'
2
+ require 'rake/clean'
3
+ require 'rake/testtask'
4
+ require 'rbconfig'
5
+ include RbConfig
6
+
7
+ CLEAN.include(
8
+ '**/*.gem', # Gem files
9
+ '**/*.rbc', # Rubinius
10
+ '**/*.o', # C object file
11
+ '**/*.log', # Ruby extension build log
12
+ '**/Makefile', # C Makefile
13
+ '**/*.def', # Definition files
14
+ '**/*.exp',
15
+ '**/*.lib',
16
+ '**/*.pdb',
17
+ '**/*.obj',
18
+ '**/*.stackdump', # Junk that can happen on Windows
19
+ "**/*.#{CONFIG['DLEXT']}" # C shared object
20
+ )
21
+
22
+ CLOBBER.include('lib') # Generated when building binaries
23
+
24
+ make = CONFIG['host_os'] =~ /mingw|cygwin/i ? 'make' : 'nmake'
25
+
26
+ desc 'Build the ruby.exe.manifest if it does not already exist'
27
+ task :build_manifest do
28
+ version = CONFIG['host_os'].split('_')[1]
29
+
30
+ if version && version.to_i >= 80
31
+ unless File.exist?(File.join(CONFIG['bindir'], 'ruby.exe.manifest'))
32
+ Dir.chdir(CONFIG['bindir']) do
33
+ sh "mt -nologo -inputresource:ruby.exe;2 -out:ruby.exe.manifest"
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ desc "Build the win32-api library"
40
+ task :build => [:clean, :build_manifest] do
41
+ Dir.chdir('ext') do
42
+ ruby "extconf.rb"
43
+ sh make
44
+ cp 'api.so', 'win32' # For testing
45
+ end
46
+ end
47
+
48
+ namespace 'gem' do
49
+ require 'rubygems/package'
50
+
51
+ desc 'Build the win32-api gem'
52
+ task :create => [:clean] do
53
+ spec = eval(IO.read('win32-api.gemspec'))
54
+ if Gem::VERSION.to_f < 2.0
55
+ Gem::Builder.new(spec).build
56
+ else
57
+ Gem::Package.build(spec)
58
+ end
59
+ end
60
+
61
+ desc 'Build a binary gem'
62
+ task :binary, :ruby2_32, :ruby2_64, :ruby21, :ruby21_64, :ruby22, :ruby22_64, :ruby23_32, :ruby23_64 do |task, args|
63
+ # These are just what's on my system at the moment. Adjust as needed.
64
+ args.with_defaults(
65
+ :ruby2_32 => "c:/ruby200/bin/ruby",
66
+ :ruby2_64 => "c:/ruby200-x64/bin/ruby",
67
+ :ruby21_32 => "c:/ruby21/bin/ruby",
68
+ :ruby21_64 => "c:/ruby21-x64/bin/ruby",
69
+ :ruby22_32 => "c:/ruby22/bin/ruby",
70
+ :ruby22_64 => "c:/ruby22-x64/bin/ruby",
71
+ :ruby23_32 => "c:/ruby23/bin/ruby",
72
+ :ruby23_64 => "c:/ruby23-x64/bin/ruby"
73
+ )
74
+
75
+ Rake::Task[:clobber].invoke
76
+
77
+ args.each{ |key, rubyx|
78
+ # Adjust devkit paths as needed.
79
+ if `"#{rubyx}" -v` =~ /x64/i
80
+ ENV['PATH'] = "C:/Devkit64/bin;C:/Devkit64/mingw/bin;" + ENV['PATH']
81
+ else
82
+ ENV['PATH'] = "C:/Devkit/bin;C:/Devkit/mingw/bin;" + ENV['PATH']
83
+ end
84
+
85
+ mkdir_p "lib/win32/#{key}/win32"
86
+
87
+ Dir.chdir('ext') do
88
+ sh "make distclean" rescue nil
89
+ sh "#{rubyx} extconf.rb"
90
+ sh "make"
91
+ cp 'api.so', "../lib/win32/#{key}/win32/api.so"
92
+ end
93
+ }
94
+
95
+ text = <<HERE
96
+ require 'rbconfig'
97
+ begin
98
+ case RbConfig::CONFIG['MAJOR']
99
+ when '2'
100
+ if RbConfig::CONFIG['MINOR'] == '0'
101
+ if RbConfig::CONFIG['arch'] =~ /x64/i
102
+ require File.join(File.dirname(__FILE__), 'ruby2_64/win32/api')
103
+ else
104
+ require File.join(File.dirname(__FILE__), 'ruby2_32/win32/api')
105
+ end
106
+ end
107
+
108
+ if RbConfig::CONFIG['MINOR'] == '1'
109
+ if RbConfig::CONFIG['arch'] =~ /x64/i
110
+ require File.join(File.dirname(__FILE__), 'ruby21_64/win32/api')
111
+ else
112
+ require File.join(File.dirname(__FILE__), 'ruby21_32/win32/api')
113
+ end
114
+ end
115
+
116
+ if RbConfig::CONFIG['MINOR'] == '2'
117
+ if RbConfig::CONFIG['arch'] =~ /x64/i
118
+ require File.join(File.dirname(__FILE__), 'ruby22_64/win32/api')
119
+ else
120
+ require File.join(File.dirname(__FILE__), 'ruby22_32/win32/api')
121
+ end
122
+ end
123
+
124
+ if RbConfig::CONFIG['MINOR'] == '3'
125
+ if RbConfig::CONFIG['arch'] =~ /x64/i
126
+ require File.join(File.dirname(__FILE__), 'ruby23_64/win32/api')
127
+ else
128
+ require File.join(File.dirname(__FILE__), 'ruby23_32/win32/api')
129
+ end
130
+ end
131
+
132
+ end
133
+ rescue LoadError
134
+ require File.join(File.dirname(__FILE__), '../../ext/api')
135
+ end
136
+ HERE
137
+
138
+ File.open('lib/win32/api.rb', 'w'){ |fh| fh.puts text }
139
+
140
+ spec = eval(IO.read('win32-api.gemspec'))
141
+ spec.platform = Gem::Platform.new(['universal', 'mingw32'])
142
+ spec.extensions = nil
143
+ spec.files = spec.files.reject{ |f| f.include?('ext') }
144
+
145
+ if Gem::VERSION.to_f < 2.0
146
+ Gem::Builder.new(spec).build
147
+ else
148
+ require 'rubygems/package'
149
+ Gem::Package.build(spec)
150
+ end
151
+ end
152
+
153
+ desc 'Install the gem'
154
+ task :install => [:create] do
155
+ file = Dir["*.gem"].first
156
+ sh "gem install -l #{file}"
157
+ end
158
+ end
159
+
160
+ namespace 'test' do
161
+ Rake::TestTask.new(:all) do |test|
162
+ task :all => [:build]
163
+ test.libs << 'ext'
164
+ test.warning = true
165
+ test.verbose = true
166
+ end
167
+
168
+ Rake::TestTask.new(:callback) do |test|
169
+ task :callback => [:build]
170
+ test.test_files = FileList['test/test_win32_api_callback.rb']
171
+ test.libs << 'ext'
172
+ test.warning = true
173
+ test.verbose = true
174
+ end
175
+
176
+ Rake::TestTask.new(:function) do |test|
177
+ task :function => [:build]
178
+ test.test_files = FileList['test/test_win32_api_function.rb']
179
+ test.libs << 'ext'
180
+ test.warning = true
181
+ test.verbose = true
182
+ end
183
+ end
184
+
185
+ task :default => 'test:all'
@@ -0,0 +1,42 @@
1
+ version: '{build}'
2
+
3
+ platform: x64
4
+
5
+ install:
6
+ - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
7
+ - "%devkit64%\\devkitvars.bat"
8
+ - "%devkit32%\\devkitvars.bat"
9
+ - ruby --version
10
+ - gem --version
11
+ - bundle install
12
+ build: off
13
+ test_script:
14
+ - bundle exec rake gem:binary
15
+ - bundle exec rake test:all
16
+
17
+ environment:
18
+ matrix:
19
+ - ruby_version: "23-x64"
20
+ devkit64: C:\Ruby23-x64\DevKit
21
+ devkit32: C:\Ruby23\DevKit
22
+ - ruby_version: "23"
23
+ devkit64: C:\Ruby23-x64\DevKit
24
+ devkit32: C:\Ruby23\DevKit
25
+ - ruby_version: "22-x64"
26
+ devkit64: C:\Ruby23-x64\DevKit
27
+ devkit32: C:\Ruby23\DevKit
28
+ - ruby_version: "22"
29
+ devkit64: C:\Ruby23-x64\DevKit
30
+ devkit32: C:\Ruby23\DevKit
31
+ - ruby_version: "21-x64"
32
+ devkit64: C:\Ruby23-x64\DevKit
33
+ devkit32: C:\Ruby23\DevKit
34
+ - ruby_version: "21"
35
+ devkit64: C:\Ruby23-x64\DevKit
36
+ devkit32: C:\Ruby23\DevKit
37
+ - ruby_version: "200-x64"
38
+ devkit64: C:\Ruby23-x64\DevKit
39
+ devkit32: C:\Ruby23\DevKit
40
+ - ruby_version: "200"
41
+ devkit64: C:\Ruby23-x64\DevKit
42
+ devkit32: C:\Ruby23\DevKit
@@ -0,0 +1,1092 @@
1
+ #include <ruby.h>
2
+ #include <windows.h>
3
+
4
+ // Ruby 1.9.x
5
+ #ifndef RSTRING_PTR
6
+ #define RSTRING_PTR(s) (RSTRING(s)->ptr)
7
+ #endif
8
+ #ifndef RSTRING_LEN
9
+ #define RSTRING_LEN(s) (RSTRING(s)->len)
10
+ #endif
11
+
12
+ #ifndef RARRAY_PTR
13
+ #define RARRAY_PTR(a) (RARRAY(a)->ptr)
14
+ #endif
15
+ #ifndef RARRAY_LEN
16
+ #define RARRAY_LEN(a) (RARRAY(a)->len)
17
+ #endif
18
+
19
+ #if defined(HAVE_LONG_LONG) && SIZEOF_SIZE_T > SIZEOF_LONG
20
+ # define NUM2SIZET(x) ((size_t)NUM2ULL(x))
21
+ # define NUM2SSIZET(x) ((ssize_t)NUM2LL(x))
22
+ #else
23
+ # define NUM2SIZET(x) NUM2ULONG(x)
24
+ # define NUM2SSIZET(x) NUM2LONG(x)
25
+ #endif
26
+
27
+ #if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG)
28
+ # define SIZET2NUM(v) ULL2NUM(v)
29
+ # define SSIZET2NUM(v) LL2NUM(v)
30
+ #elif SIZEOF_SIZE_T == SIZEOF_LONG
31
+ # define SIZET2NUM(v) ULONG2NUM(v)
32
+ # define SSIZET2NUM(v) LONG2NUM(v)
33
+ #else
34
+ # define SIZET2NUM(v) UINT2NUM(v)
35
+ # define SSIZET2NUM(v) INT2NUM(v)
36
+ #endif
37
+
38
+
39
+ #define MAX_BUF 1024
40
+ #define WINDOWS_API_VERSION "1.6.0"
41
+
42
+ #define _T_VOID 0
43
+ #define _T_LONG 1
44
+ #define _T_POINTER 2
45
+ #define _T_INTEGER 3
46
+ #define _T_CALLBACK 4
47
+ #define _T_STRING 5
48
+
49
+ VALUE cAPIError, cAPIProtoError, cAPILoadError;
50
+ static VALUE ActiveCallback = Qnil;
51
+
52
+ typedef struct {
53
+ HANDLE library;
54
+ FARPROC function;
55
+ int return_type;
56
+ int prototype[20];
57
+ } Win32API;
58
+
59
+ static void api_free(Win32API* ptr){
60
+ if(ptr->library)
61
+ FreeLibrary(ptr->library);
62
+
63
+ if(ptr)
64
+ free(ptr);
65
+ }
66
+
67
+ static VALUE api_allocate(VALUE klass){
68
+ Win32API* ptr = malloc(sizeof(Win32API));
69
+ memset(ptr, 0, sizeof(*ptr));
70
+ return Data_Wrap_Struct(klass, 0, api_free, ptr);
71
+ }
72
+
73
+ /* Helper function that converts the error number returned by GetLastError()
74
+ * into a human readable string. Note that we always use English for error
75
+ * output because that's what Ruby itself does.
76
+ *
77
+ * Internal use only.
78
+ */
79
+ char* StringError(DWORD dwError){
80
+ LPVOID lpMsgBuf;
81
+ static char buf[MAX_PATH];
82
+ DWORD dwLen, dwLastError;
83
+
84
+ // Assume ASCII (English) error messages from the Windows API
85
+ dwLen = FormatMessageA(
86
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
87
+ FORMAT_MESSAGE_FROM_SYSTEM |
88
+ FORMAT_MESSAGE_IGNORE_INSERTS,
89
+ NULL,
90
+ dwError,
91
+ MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
92
+ (LPSTR)&lpMsgBuf,
93
+ 0,
94
+ NULL
95
+ );
96
+
97
+ dwLastError = GetLastError();
98
+
99
+ /* It appears that Windows doesn't necessarily ship with the DLL
100
+ * required to always use English error messages. Check for error
101
+ * ERROR_MUI_FILE_NOT_FOUND (15100) or ERROR_RESOURCE_LANG_NOT_FOUND (1815)
102
+ * and try again if necessary.
103
+ */
104
+ if(!dwLen && (dwLastError == 15100 || dwLastError == 1815)){
105
+ dwLen = FormatMessageA(
106
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
107
+ FORMAT_MESSAGE_FROM_SYSTEM |
108
+ FORMAT_MESSAGE_IGNORE_INSERTS,
109
+ NULL,
110
+ dwError,
111
+ 0,
112
+ (LPSTR)&lpMsgBuf,
113
+ 0,
114
+ NULL
115
+ );
116
+ }
117
+
118
+ if(!dwLen){
119
+ rb_raise(
120
+ cAPIError,
121
+ "Attempt to format message failed (error = '%lu')",
122
+ GetLastError()
123
+ );
124
+ }
125
+
126
+ memset(buf, 0, MAX_PATH);
127
+
128
+ // Remove \r\n at end of string.
129
+ #ifdef HAVE_STRNCPY_S
130
+ strncpy_s(buf, MAX_PATH, lpMsgBuf, dwLen - 2);
131
+ #else
132
+ strncpy(buf, lpMsgBuf, dwLen - 2);
133
+ #endif
134
+
135
+ LocalFree(lpMsgBuf);
136
+
137
+ return buf;
138
+ }
139
+
140
+ /*
141
+ * call-seq:
142
+ * Win32::API::Callback.new(prototype, return='L'){ |proto| ... }
143
+ *
144
+ * Creates and returns a new Win32::API::Callback object. The prototype
145
+ * arguments are yielded back to the block in the same order they were
146
+ * declared.
147
+ *
148
+ * The +prototype+ is the function prototype for the callback function. This
149
+ * is a string. The possible valid characters are 'I' (integer), 'L' (long),
150
+ * 'V' (void), 'P' (pointer) or 'S' (string). Unlike API objects, API::Callback
151
+ * objects do not have a default prototype.
152
+ *
153
+ * The +return+ argument is the return type for the callback function. The
154
+ * valid characters are the same as for the +prototype+. The default is
155
+ * 'L' (long).
156
+ *
157
+ * Example:
158
+ * require 'win32/api'
159
+ * include Win32
160
+ *
161
+ * EnumWindows = API.new('EnumWindows', 'KP', 'L', 'user32')
162
+ * GetWindowText = API.new('GetWindowText', 'LPI', 'I', 'user32')
163
+ *
164
+ * EnumWindowsProc = API::Callback.new('LP', 'I'){ |handle, param|
165
+ * buf = "\0" * 200
166
+ * GetWindowText.call(handle, buf, 200);
167
+ * puts buf.strip unless buf.strip.empty?
168
+ * buf.index(param).nil? ? true : false
169
+ * }
170
+ *
171
+ * EnumWindows.call(EnumWindowsProc, 'UEDIT32')
172
+ */
173
+ static VALUE callback_init(int argc, VALUE* argv, VALUE self)
174
+ {
175
+ void *find_callback(VALUE,int);
176
+ VALUE v_proto, v_return, v_proc;
177
+ int i;
178
+
179
+ rb_scan_args(argc, argv, "11&", &v_proto, &v_return, &v_proc);
180
+
181
+ /* Validate prototype characters */
182
+ for(i = 0; i < RSTRING_LEN(v_proto); i++){
183
+ switch(RSTRING_PTR(v_proto)[i]){
184
+ case 'I': case 'L': case 'P': case 'V': case 'S':
185
+ break;
186
+ default:
187
+ rb_raise(cAPIProtoError, "Illegal prototype '%c'",
188
+ RSTRING_PTR(v_proto)[i]
189
+ );
190
+ }
191
+ }
192
+
193
+ if(NIL_P(v_return) || RARRAY_LEN(v_return) == 0){
194
+ v_return = rb_str_new2("L");
195
+ }
196
+ else{
197
+ switch(*(TCHAR*)RSTRING_PTR(v_return)){
198
+ case 'I': case 'L': case 'P': case 'V': case 'S':
199
+ break;
200
+ default:
201
+ rb_raise(cAPIProtoError, "Illegal return type '%s'",
202
+ RSTRING_PTR(v_return)
203
+ );
204
+ }
205
+ }
206
+
207
+ rb_iv_set(self, "@function", v_proc);
208
+ rb_iv_set(self, "@prototype", v_proto);
209
+ rb_iv_set(self, "@return_type", v_return);
210
+ rb_iv_set(self, "@address", SIZET2NUM((LPARAM)find_callback(self,RSTRING_LEN(v_proto))));
211
+ ActiveCallback = self;
212
+
213
+ return self;
214
+ }
215
+
216
+ /*
217
+ * call-seq:
218
+ * Win32::API.new(function, prototype='V', return='L', dll='kernel32')
219
+ *
220
+ * Creates and returns a new Win32::API object. The +function+ is the name
221
+ * of the Windows function.
222
+ *
223
+ * The +prototype+ is the function prototype for +function+. This can be a
224
+ * string or an array of characters. The possible valid characters are 'I'
225
+ * (integer), 'L' (long), 'V' (void), 'P' (pointer), 'K' (callback) or 'S'
226
+ * (string).
227
+ *
228
+ * The default is void ('V').
229
+ *
230
+ * Constant (const char*) strings should use 'S'. Pass by reference string
231
+ * buffers should use 'P'. The former is faster, but cannot be modified.
232
+ *
233
+ * The +return+ argument is the return type for the function. The valid
234
+ * characters are the same as for the +prototype+. The default is 'L' (long).
235
+ *
236
+ * The +dll+ is the name of the DLL file that the function is exported from.
237
+ * The default is 'kernel32'.
238
+ *
239
+ * If the function cannot be found then an API::Error is raised (a subclass
240
+ * of RuntimeError).
241
+ *
242
+ * Example:
243
+ *
244
+ * require 'win32/api'
245
+ * include Win32
246
+ *
247
+ * buf = 0.chr * 260
248
+ * len = [buf.length].pack('L')
249
+ *
250
+ * GetUserName = API.new('GetUserName', 'PP', 'I', 'advapi32')
251
+ * GetUserName.call(buf, len)
252
+ *
253
+ * puts buf.strip
254
+ */
255
+ static VALUE api_init(int argc, VALUE* argv, VALUE self)
256
+ {
257
+ HMODULE hLibrary;
258
+ FARPROC fProc;
259
+ Win32API* ptr;
260
+ int i;
261
+ const char* first = "A";
262
+ const char* second = "W";
263
+ VALUE v_proc, v_proto, v_return, v_dll;
264
+
265
+ rb_scan_args(argc, argv, "13", &v_proc, &v_proto, &v_return, &v_dll);
266
+
267
+ Data_Get_Struct(self, Win32API, ptr);
268
+
269
+ // Convert a string prototype to an array of characters
270
+ if(rb_respond_to(v_proto, rb_intern("split")))
271
+ v_proto = rb_str_split(v_proto, "");
272
+
273
+ // Convert a nil or empty prototype to 'V' (void) automatically
274
+ if(NIL_P(v_proto) || RARRAY_LEN(v_proto) == 0){
275
+ v_proto = rb_ary_new();
276
+ rb_ary_push(v_proto, rb_str_new2("V"));
277
+ }
278
+
279
+ // Set an arbitrary limit of 20 parameters
280
+ if(RARRAY_LEN(v_proto) > 20)
281
+ rb_raise(rb_eArgError, "too many parameters: %ld", RARRAY_LEN(v_proto));
282
+
283
+ // Set the default dll to 'kernel32'
284
+ if(NIL_P(v_dll))
285
+ v_dll = rb_str_new2("kernel32");
286
+
287
+ // Set the default return type to 'L' (DWORD)
288
+ if(NIL_P(v_return))
289
+ v_return = rb_str_new2("L");
290
+
291
+ SafeStringValue(v_dll);
292
+ SafeStringValue(v_proc);
293
+
294
+ hLibrary = LoadLibrary(TEXT(RSTRING_PTR(v_dll)));
295
+
296
+ // The most likely cause of failure is a bad DLL load path
297
+ if(!hLibrary){
298
+ rb_raise(cAPILoadError, "LoadLibrary() function failed for '%s': %s",
299
+ RSTRING_PTR(v_dll),
300
+ StringError(GetLastError())
301
+ );
302
+ }
303
+
304
+ ptr->library = hLibrary;
305
+
306
+ /* Attempt to get the function. If it fails, try again with an 'A'
307
+ * appended. If that fails, try again with a 'W' appended. If that
308
+ * still fails, raise an API::LoadLibraryError.
309
+ */
310
+
311
+ fProc = GetProcAddress(hLibrary, TEXT(RSTRING_PTR(v_proc)));
312
+
313
+ // Skip the ANSI and Wide function checks for MSVCRT functions.
314
+ if(!fProc){
315
+ if(strstr(RSTRING_PTR(v_dll), "msvcr")){
316
+ rb_raise(
317
+ cAPILoadError,
318
+ "Unable to load function '%s'",
319
+ RSTRING_PTR(v_proc)
320
+ );
321
+ }
322
+ else{
323
+ VALUE v_ascii = rb_str_new3(v_proc);
324
+ v_ascii = rb_str_cat(v_ascii, first, 1);
325
+ fProc = GetProcAddress(hLibrary, TEXT(RSTRING_PTR(v_ascii)));
326
+
327
+ if(!fProc){
328
+ VALUE v_unicode = rb_str_new3(v_proc);
329
+ v_unicode = rb_str_cat(v_unicode, second, 1);
330
+ fProc = GetProcAddress(hLibrary, TEXT(RSTRING_PTR(v_unicode)));
331
+
332
+ if(!fProc){
333
+ rb_raise(
334
+ cAPILoadError,
335
+ "Unable to load function '%s', '%s', or '%s'",
336
+ RSTRING_PTR(v_proc),
337
+ RSTRING_PTR(v_ascii),
338
+ RSTRING_PTR(v_unicode)
339
+ );
340
+ }
341
+ else{
342
+ rb_iv_set(self, "@effective_function_name", v_unicode);
343
+ }
344
+ }
345
+ else{
346
+ rb_iv_set(self, "@effective_function_name", v_ascii);
347
+ }
348
+ }
349
+ }
350
+ else{
351
+ rb_iv_set(self, "@effective_function_name", v_proc);
352
+ }
353
+
354
+ ptr->function = fProc;
355
+
356
+ // Push the numeric prototypes onto our int array for later use.
357
+
358
+ for(i = 0; i < RARRAY_LEN(v_proto); i++){
359
+ SafeStringValue(RARRAY_PTR(v_proto)[i]);
360
+ switch(*(TCHAR*)StringValuePtr(RARRAY_PTR(v_proto)[i])){
361
+ case 'L':
362
+ ptr->prototype[i] = _T_LONG;
363
+ break;
364
+ case 'P':
365
+ ptr->prototype[i] = _T_POINTER;
366
+ break;
367
+ case 'I': case 'B':
368
+ ptr->prototype[i] = _T_INTEGER;
369
+ break;
370
+ case 'V':
371
+ ptr->prototype[i] = _T_VOID;
372
+ break;
373
+ case 'K':
374
+ ptr->prototype[i] = _T_CALLBACK;
375
+ break;
376
+ case 'S':
377
+ ptr->prototype[i] = _T_STRING;
378
+ break;
379
+ default:
380
+ rb_raise(cAPIProtoError, "Illegal prototype '%s'",
381
+ StringValuePtr(RARRAY_PTR(v_proto)[i])
382
+ );
383
+ }
384
+ }
385
+
386
+ // Store the return type for later use.
387
+
388
+ // Automatically convert empty strings or nil to type void.
389
+ if(NIL_P(v_return) || RSTRING_LEN(v_return) == 0){
390
+ v_return = rb_str_new2("V");
391
+ ptr->return_type = _T_VOID;
392
+ }
393
+ else{
394
+ SafeStringValue(v_return);
395
+ switch(*RSTRING_PTR(v_return)){
396
+ case 'L':
397
+ ptr->return_type = _T_LONG;
398
+ break;
399
+ case 'P':
400
+ ptr->return_type = _T_POINTER;
401
+ break;
402
+ case 'I': case 'B':
403
+ ptr->return_type = _T_INTEGER;
404
+ break;
405
+ case 'V':
406
+ ptr->return_type = _T_VOID;
407
+ break;
408
+ case 'S':
409
+ ptr->return_type = _T_STRING;
410
+ break;
411
+ default:
412
+ rb_raise(cAPIProtoError, "Illegal return type '%s'",
413
+ RSTRING_PTR(v_return)
414
+ );
415
+ }
416
+ }
417
+
418
+ rb_iv_set(self, "@dll_name", v_dll);
419
+ rb_iv_set(self, "@function_name", v_proc);
420
+ rb_iv_set(self, "@prototype", v_proto);
421
+ rb_iv_set(self, "@return_type", v_return);
422
+
423
+ return self;
424
+ }
425
+
426
+ /*
427
+ * call-seq:
428
+ *
429
+ * API::Function.new(address, prototype = 'V', return_type = 'L')
430
+ *
431
+ * Creates and returns an API::Function object. This object is similar to an
432
+ * API object, except that instead of a character function name you pass a
433
+ * function pointer address as the first argument, and there's no associated
434
+ * DLL file.
435
+ *
436
+ * Once you have your API::Function object you can then call it the same way
437
+ * you would an API object.
438
+ *
439
+ * Example:
440
+ *
441
+ * require 'win32/api'
442
+ * include Win32
443
+ *
444
+ * LoadLibrary = API.new('LoadLibrary', 'P', 'L')
445
+ * GetProcAddress = API.new('GetProcAddress', 'LP', 'L')
446
+ *
447
+ * # Play a system beep
448
+ * hlib = LoadLibrary.call('user32')
449
+ * addr = GetProcAddress.call(hlib, 'MessageBeep')
450
+ * func = Win32::API::Function.new(addr, 'L', 'L')
451
+ * func.call(0)
452
+ */
453
+ static VALUE func_init(int argc, VALUE* argv, VALUE self){
454
+ Win32API* ptr;
455
+ int i;
456
+ VALUE v_address, v_proto, v_return;
457
+
458
+ rb_scan_args(argc, argv, "12", &v_address, &v_proto, &v_return);
459
+
460
+ Data_Get_Struct(self, Win32API, ptr);
461
+
462
+ // Convert a string prototype to an array of characters
463
+ if(rb_respond_to(v_proto, rb_intern("split")))
464
+ v_proto = rb_str_split(v_proto, "");
465
+
466
+ // Convert a nil or empty prototype to 'V' (void) automatically
467
+ if(NIL_P(v_proto) || RARRAY_LEN(v_proto) == 0){
468
+ v_proto = rb_ary_new();
469
+ rb_ary_push(v_proto, rb_str_new2("V"));
470
+ }
471
+
472
+ // Set an arbitrary limit of 20 parameters
473
+ if(20 < RARRAY_LEN(v_proto))
474
+ rb_raise(rb_eArgError, "too many parameters: %li\n", RARRAY_LEN(v_proto));
475
+
476
+ // Set the default return type to 'L' (DWORD)
477
+ if(NIL_P(v_return))
478
+ v_return = rb_str_new2("L");
479
+
480
+ ptr->function = (FARPROC)NUM2SIZET(v_address);
481
+
482
+ // Push the numeric prototypes onto our int array for later use.
483
+
484
+ for(i = 0; i < RARRAY_LEN(v_proto); i++){
485
+ SafeStringValue(RARRAY_PTR(v_proto)[i]);
486
+ switch(*(char*)StringValuePtr(RARRAY_PTR(v_proto)[i])){
487
+ case 'L':
488
+ ptr->prototype[i] = _T_LONG;
489
+ break;
490
+ case 'P':
491
+ ptr->prototype[i] = _T_POINTER;
492
+ break;
493
+ case 'I': case 'B':
494
+ ptr->prototype[i] = _T_INTEGER;
495
+ break;
496
+ case 'V':
497
+ ptr->prototype[i] = _T_VOID;
498
+ break;
499
+ case 'K':
500
+ ptr->prototype[i] = _T_CALLBACK;
501
+ break;
502
+ case 'S':
503
+ ptr->prototype[i] = _T_STRING;
504
+ break;
505
+ default:
506
+ rb_raise(cAPIProtoError, "Illegal prototype '%s'",
507
+ StringValuePtr(RARRAY_PTR(v_proto)[i])
508
+ );
509
+ }
510
+ }
511
+
512
+ // Store the return type for later use.
513
+
514
+ // Automatically convert empty strings or nil to type void.
515
+ if(NIL_P(v_return) || RSTRING_LEN(v_return) == 0){
516
+ v_return = rb_str_new2("V");
517
+ ptr->return_type = _T_VOID;
518
+ }
519
+ else{
520
+ SafeStringValue(v_return);
521
+ switch(*RSTRING_PTR(v_return)){
522
+ case 'L':
523
+ ptr->return_type = _T_LONG;
524
+ break;
525
+ case 'P':
526
+ ptr->return_type = _T_POINTER;
527
+ break;
528
+ case 'I': case 'B':
529
+ ptr->return_type = _T_INTEGER;
530
+ break;
531
+ case 'V':
532
+ ptr->return_type = _T_VOID;
533
+ break;
534
+ case 'S':
535
+ ptr->return_type = _T_STRING;
536
+ break;
537
+ default:
538
+ rb_raise(cAPIProtoError, "Illegal return type '%s'",
539
+ RSTRING_PTR(v_return)
540
+ );
541
+ }
542
+ }
543
+
544
+ rb_iv_set(self, "@address", v_address);
545
+ rb_iv_set(self, "@prototype", v_proto);
546
+ rb_iv_set(self, "@return_type", v_return);
547
+
548
+ return self;
549
+ }
550
+
551
+ typedef struct {
552
+ uintptr_t params[20];
553
+ } CALLPARAM;
554
+
555
+
556
+ DWORD CallbackFunction(CALLPARAM param, VALUE callback)
557
+ {
558
+ VALUE v_proto, v_return, v_proc, v_retval;
559
+ VALUE argv[20];
560
+ int i, argc;
561
+ char *a_proto;
562
+ char *a_return;
563
+
564
+ if(callback && !NIL_P(callback)){
565
+ v_proto = rb_iv_get(callback, "@prototype");
566
+ a_proto = RSTRING_PTR(v_proto);
567
+
568
+ v_return = rb_iv_get(callback, "@return_type");
569
+ a_return = RSTRING_PTR(v_return);
570
+
571
+ v_proc = rb_iv_get(callback, "@function");
572
+ argc = RSTRING_LEN(v_proto);
573
+
574
+ for(i=0; i < RSTRING_LEN(v_proto); i++){
575
+ argv[i] = Qnil;
576
+ switch(a_proto[i]){
577
+ case 'L':
578
+ argv[i] = SIZET2NUM(param.params[i]);
579
+ break;
580
+ case 'P':
581
+ if(param.params[i])
582
+ argv[i] = rb_str_new2((char *)param.params[i]);
583
+ break;
584
+ case 'I':
585
+ argv[i] = INT2NUM(param.params[i]);
586
+ break;
587
+ default:
588
+ rb_raise(cAPIProtoError, "Illegal prototype '%c'", a_proto[i]);
589
+ }
590
+ }
591
+
592
+ v_retval = rb_funcall2(v_proc, rb_intern("call"), argc, argv);
593
+
594
+ /* Handle true and false explicitly, as some CALLBACK functions
595
+ * require TRUE or FALSE to break out of loops, etc.
596
+ */
597
+ if(v_retval == Qtrue)
598
+ return TRUE;
599
+ else if(v_retval == Qfalse)
600
+ return FALSE;
601
+
602
+ switch (*a_return) {
603
+ case 'I':
604
+ return NUM2INT(v_retval);
605
+ break;
606
+ case 'L':
607
+ return NUM2SIZET(v_retval);
608
+ break;
609
+ case 'S':
610
+ return (uintptr_t)RSTRING_PTR(v_retval);
611
+ break;
612
+ case 'P':
613
+ if(NIL_P(v_retval)){
614
+ return 0;
615
+ }
616
+ else if(FIXNUM_P(v_retval)){
617
+ return NUM2SIZET(v_retval);
618
+ }
619
+ else{
620
+ StringValue(v_retval);
621
+ rb_str_modify(v_retval);
622
+ return (uintptr_t)StringValuePtr(v_retval);
623
+ }
624
+ break;
625
+ }
626
+ }
627
+
628
+ return 0;
629
+ }
630
+
631
+ #define CALLBACK0(x) DWORD CALLBACK CallbackFunction0_##x() {\
632
+ CALLPARAM param = {{0}};\
633
+ param.params[0] = 0;\
634
+ return CallbackFunction(param,FuncTable[0][x]);\
635
+ }
636
+
637
+ #define CALLBACK1(x) DWORD CALLBACK CallbackFunction1_##x(DWORD p1) {\
638
+ CALLPARAM param = {{p1}};\
639
+ return CallbackFunction(param,FuncTable[1][x]);\
640
+ }
641
+
642
+ #define CALLBACK2(x) DWORD CALLBACK CallbackFunction2_##x(\
643
+ DWORD p1, DWORD p2){\
644
+ CALLPARAM param = {{p1,p2}};\
645
+ return CallbackFunction(param,FuncTable[2][x]);\
646
+ }
647
+
648
+ #define CALLBACK3(x) DWORD CALLBACK CallbackFunction3_##x(\
649
+ DWORD p1, DWORD p2, DWORD p3){\
650
+ CALLPARAM param = {{p1,p2,p3}};\
651
+ return CallbackFunction(param,FuncTable[3][x]);\
652
+ }
653
+
654
+ #define CALLBACK4(x) DWORD CALLBACK CallbackFunction4_##x(\
655
+ DWORD p1, DWORD p2, DWORD p3, DWORD p4){\
656
+ CALLPARAM param = {{p1,p2,p3,p4}};\
657
+ return CallbackFunction(param,FuncTable[4][x]);\
658
+ }
659
+
660
+ #define CALLBACK5(x) DWORD CALLBACK CallbackFunction5_##x(\
661
+ DWORD p1, DWORD p2, DWORD p3, DWORD p4, DWORD p5\
662
+ ){\
663
+ CALLPARAM param = {{p1,p2,p3,p4,p5}};\
664
+ return CallbackFunction(param,FuncTable[5][x]);\
665
+ }
666
+
667
+ #define CALLBACK6(x) DWORD CALLBACK CallbackFunction6_##x(\
668
+ DWORD p1, DWORD p2, DWORD p3, DWORD p4, DWORD p5, DWORD p6\
669
+ ){\
670
+ CALLPARAM param = {{p1,p2,p3,p4,p5,p6}};\
671
+ return CallbackFunction(param,FuncTable[6][x]);\
672
+ }
673
+
674
+ #define CALLBACK7(x) DWORD CALLBACK CallbackFunction7_##x(\
675
+ DWORD p1, DWORD p2, DWORD p3, DWORD p4, DWORD p5, DWORD p6, DWORD p7\
676
+ ){\
677
+ CALLPARAM param = {{p1,p2,p3,p4,p5,p6,p7}};\
678
+ return CallbackFunction(param,FuncTable[7][x]);\
679
+ }
680
+
681
+ #define CALLBACK8(x) DWORD CALLBACK CallbackFunction8_##x(\
682
+ DWORD p1, DWORD p2, DWORD p3, DWORD p4,\
683
+ DWORD p5, DWORD p6, DWORD p7, DWORD p8\
684
+ ){\
685
+ CALLPARAM param = {{p1,p2,p3,p4,p5,p6,p7,p8}};\
686
+ return CallbackFunction(param,FuncTable[8][x]);\
687
+ }
688
+
689
+ #define CALLBACK9(x) DWORD CALLBACK CallbackFunction9_##x(\
690
+ DWORD p1, DWORD p2, DWORD p3, DWORD p4, DWORD p5,\
691
+ DWORD p6, DWORD p7, DWORD p8, DWORD p9\
692
+ ){\
693
+ CALLPARAM param = {{p1,p2,p3,p4,p5,p6,p7,p8,p9}};\
694
+ return CallbackFunction(param,FuncTable[9][x]);\
695
+ }
696
+
697
+ #define DEFCALLBACK(x) CALLBACK##x(0)\
698
+ CALLBACK##x(1)\
699
+ CALLBACK##x(2)\
700
+ CALLBACK##x(3)\
701
+ CALLBACK##x(4)\
702
+ CALLBACK##x(5)\
703
+ CALLBACK##x(6)\
704
+ CALLBACK##x(7)\
705
+ CALLBACK##x(8)\
706
+ CALLBACK##x(9)
707
+
708
+ #define CF(x,y) CallbackFunction##x##_##y
709
+
710
+ static VALUE FuncTable[10][10];
711
+
712
+ DEFCALLBACK(0)
713
+ DEFCALLBACK(1)
714
+ DEFCALLBACK(2)
715
+ DEFCALLBACK(3)
716
+ DEFCALLBACK(4)
717
+ DEFCALLBACK(5)
718
+ DEFCALLBACK(6)
719
+ DEFCALLBACK(7)
720
+ DEFCALLBACK(8)
721
+ DEFCALLBACK(9)
722
+
723
+ void *CallbackTable[10][10] = {
724
+ {CF(0,0),CF(0,1),CF(0,2),CF(0,3),CF(0,4),CF(0,5),CF(0,6),CF(0,7),CF(0,8),CF(0,9)},
725
+ {CF(1,0),CF(1,1),CF(1,2),CF(1,3),CF(1,4),CF(1,5),CF(1,6),CF(1,7),CF(1,8),CF(1,9)},
726
+ {CF(2,0),CF(2,1),CF(2,2),CF(2,3),CF(2,4),CF(2,5),CF(2,6),CF(2,7),CF(2,8),CF(2,9)},
727
+ {CF(3,0),CF(3,1),CF(3,2),CF(3,3),CF(3,4),CF(3,5),CF(3,6),CF(3,7),CF(3,8),CF(3,9)},
728
+ {CF(4,0),CF(4,1),CF(4,2),CF(4,3),CF(4,4),CF(4,5),CF(4,6),CF(4,7),CF(4,8),CF(4,9)},
729
+ {CF(5,0),CF(5,1),CF(5,2),CF(5,3),CF(5,4),CF(5,5),CF(5,6),CF(5,7),CF(5,8),CF(5,9)},
730
+ {CF(6,0),CF(6,1),CF(6,2),CF(6,3),CF(6,4),CF(6,5),CF(6,6),CF(6,7),CF(6,8),CF(6,9)},
731
+ {CF(7,0),CF(7,1),CF(7,2),CF(7,3),CF(7,4),CF(7,5),CF(7,6),CF(7,7),CF(7,8),CF(7,9)},
732
+ {CF(8,0),CF(8,1),CF(8,2),CF(8,3),CF(8,4),CF(8,5),CF(8,6),CF(8,7),CF(8,8),CF(8,9)},
733
+ {CF(9,0),CF(9,1),CF(9,2),CF(9,3),CF(9,4),CF(9,5),CF(9,6),CF(9,7),CF(9,8),CF(9,9)}};
734
+
735
+
736
+ void *find_callback(VALUE obj,int len)
737
+ {
738
+ int i;
739
+ for(i=0;i<10;i++)
740
+ {
741
+ if(FuncTable[len][i]==0)
742
+ break;
743
+ }
744
+ if(i>=10)
745
+ rb_raise(cAPIError,"too many callbacks are defined.");
746
+ FuncTable[len][i] = obj;
747
+ return CallbackTable[len][i];
748
+ }
749
+
750
+ /*
751
+ * call-seq:
752
+ * Win32::API#call(arg1, arg2, ...)
753
+ *
754
+ * Calls the function pointer with the given arguments (if any). Note that,
755
+ * while this method will catch some prototype mismatches (raising a TypeError
756
+ * in the process), it is not fulproof. It is ultimately your job to make
757
+ * sure the arguments match the +prototype+ specified in the constructor.
758
+ *
759
+ * For convenience, nil is converted to NULL, true is converted to TRUE (1)
760
+ * and false is converted to FALSE (0).
761
+ */
762
+ static VALUE api_call(int argc, VALUE* argv, VALUE self){
763
+ VALUE v_proto, v_args, v_arg, v_return;
764
+ Win32API* ptr;
765
+ uintptr_t return_value;
766
+ int i = 0;
767
+ int len;
768
+
769
+ struct{
770
+ uintptr_t params[20];
771
+ } param;
772
+
773
+ Data_Get_Struct(self, Win32API, ptr);
774
+
775
+ rb_scan_args(argc, argv, "0*", &v_args);
776
+
777
+ v_proto = rb_iv_get(self, "@prototype");
778
+
779
+ // For void prototypes, allow either no args or an explicit nil
780
+ if(RARRAY_LEN(v_proto) != RARRAY_LEN(v_args)){
781
+ char* c = StringValuePtr(RARRAY_PTR(v_proto)[0]);
782
+ if(!strcmp(c, "V")){
783
+ rb_ary_push(v_args, Qnil);
784
+ }
785
+ else{
786
+ rb_raise(rb_eArgError,
787
+ "wrong number of parameters: expected %ld, got %ld",
788
+ RARRAY_LEN(v_proto), RARRAY_LEN(v_args)
789
+ );
790
+ }
791
+ }
792
+
793
+ len = RARRAY_LEN(v_proto);
794
+
795
+ for(i = 0; i < len; i++){
796
+ v_arg = RARRAY_PTR(v_args)[i];
797
+
798
+ // Convert nil to NULL. Otherwise convert as appropriate.
799
+ if(NIL_P(v_arg))
800
+ param.params[i] = (uintptr_t)NULL;
801
+ else if(v_arg == Qtrue)
802
+ param.params[i] = TRUE;
803
+ else if(v_arg == Qfalse)
804
+ param.params[i] = FALSE;
805
+ else
806
+ switch(ptr->prototype[i]){
807
+ case _T_LONG:
808
+ param.params[i] = NUM2SIZET(v_arg);
809
+ break;
810
+ case _T_INTEGER:
811
+ param.params[i] = NUM2INT(v_arg);
812
+ break;
813
+ case _T_POINTER:
814
+ if(FIXNUM_P(v_arg)){
815
+ param.params[i] = NUM2SIZET(v_arg);
816
+ }
817
+ else{
818
+ StringValue(v_arg);
819
+ rb_str_modify(v_arg);
820
+ param.params[i] = (uintptr_t)StringValuePtr(v_arg);
821
+ }
822
+ break;
823
+ case _T_CALLBACK:
824
+ ActiveCallback = v_arg;
825
+ param.params[i] = (LPARAM)NUM2SIZET(rb_iv_get(ActiveCallback, "@address"));;
826
+ break;
827
+ case _T_STRING:
828
+ param.params[i] = (uintptr_t)RSTRING_PTR(v_arg);
829
+ break;
830
+ default:
831
+ param.params[i] = NUM2SIZET(v_arg);
832
+ }
833
+ }
834
+
835
+ /* Call the function, get the return value */
836
+ if(strcmp(StringValuePtr(RARRAY_PTR(v_proto)[0]), "V") == 0 && len == 1)
837
+ {
838
+ return_value = ptr->function();
839
+ }
840
+ else
841
+ {
842
+ switch(len)
843
+ {
844
+ case 0:
845
+ return_value = ptr->function();
846
+ break;
847
+ case 1:
848
+ return_value = ptr->function(param.params[0]);
849
+ break;
850
+ case 2:
851
+ return_value = ptr->function(param.params[0], param.params[1]);
852
+ break;
853
+ case 3:
854
+ return_value = ptr->function(param.params[0], param.params[1],
855
+ param.params[2]);
856
+ break;
857
+ case 4:
858
+ return_value = ptr->function(param.params[0], param.params[1],
859
+ param.params[2], param.params[3]);
860
+ break;
861
+ case 5:
862
+ return_value = ptr->function(param.params[0], param.params[1],
863
+ param.params[2], param.params[3], param.params[4]);
864
+ break;
865
+ case 6:
866
+ return_value = ptr->function(param.params[0], param.params[1],
867
+ param.params[2], param.params[3], param.params[4], param.params[5]);
868
+ break;
869
+ case 7:
870
+ return_value = ptr->function(param.params[0], param.params[1],
871
+ param.params[2], param.params[3], param.params[4], param.params[5],
872
+ param.params[6]);
873
+ break;
874
+ case 8:
875
+ return_value = ptr->function(param.params[0], param.params[1],
876
+ param.params[2], param.params[3], param.params[4], param.params[5],
877
+ param.params[6], param.params[7]);
878
+ break;
879
+ case 9:
880
+ return_value = ptr->function(param.params[0], param.params[1],
881
+ param.params[2], param.params[3], param.params[4], param.params[5],
882
+ param.params[6], param.params[7], param.params[8]);
883
+ break;
884
+ case 10:
885
+ return_value = ptr->function(param.params[0], param.params[1],
886
+ param.params[2], param.params[3], param.params[4], param.params[5],
887
+ param.params[6], param.params[7], param.params[8], param.params[9]);
888
+ break;
889
+ case 11:
890
+ return_value = ptr->function(param.params[0], param.params[1],
891
+ param.params[2], param.params[3], param.params[4], param.params[5],
892
+ param.params[6], param.params[7], param.params[8], param.params[9],
893
+ param.params[10]);
894
+ break;
895
+ case 12:
896
+ return_value = ptr->function(param.params[0], param.params[1],
897
+ param.params[2], param.params[3], param.params[4], param.params[5],
898
+ param.params[6], param.params[7], param.params[8], param.params[9],
899
+ param.params[10], param.params[11]);
900
+ break;
901
+ case 13:
902
+ return_value = ptr->function(param.params[0], param.params[1],
903
+ param.params[2], param.params[3], param.params[4], param.params[5],
904
+ param.params[6], param.params[7], param.params[8], param.params[9],
905
+ param.params[10], param.params[11], param.params[12]);
906
+ break;
907
+ case 14:
908
+ return_value = ptr->function(param.params[0], param.params[1],
909
+ param.params[2], param.params[3], param.params[4], param.params[5],
910
+ param.params[6], param.params[7], param.params[8], param.params[9],
911
+ param.params[10], param.params[11], param.params[12], param.params[13]);
912
+ break;
913
+ case 15:
914
+ return_value = ptr->function(param.params[0], param.params[1],
915
+ param.params[2], param.params[3], param.params[4], param.params[5],
916
+ param.params[6], param.params[7], param.params[8], param.params[9],
917
+ param.params[10], param.params[11], param.params[12], param.params[13],
918
+ param.params[14]);
919
+ break;
920
+ case 16:
921
+ return_value = ptr->function(param.params[0], param.params[1],
922
+ param.params[2], param.params[3], param.params[4], param.params[5],
923
+ param.params[6], param.params[7], param.params[8], param.params[9],
924
+ param.params[10], param.params[11], param.params[12], param.params[13],
925
+ param.params[14], param.params[15]);
926
+ break;
927
+ case 17:
928
+ return_value = ptr->function(param.params[0], param.params[1],
929
+ param.params[2], param.params[3], param.params[4], param.params[5],
930
+ param.params[6], param.params[7], param.params[8], param.params[9],
931
+ param.params[10], param.params[11], param.params[12], param.params[13],
932
+ param.params[14], param.params[15], param.params[16]);
933
+ break;
934
+ case 18:
935
+ return_value = ptr->function(param.params[0], param.params[1],
936
+ param.params[2], param.params[3], param.params[4], param.params[5],
937
+ param.params[6], param.params[7], param.params[8], param.params[9],
938
+ param.params[10], param.params[11], param.params[12], param.params[13],
939
+ param.params[14], param.params[15], param.params[16], param.params[17]);
940
+ break;
941
+ case 19:
942
+ return_value = ptr->function(param.params[0], param.params[1],
943
+ param.params[2], param.params[3], param.params[4], param.params[5],
944
+ param.params[6], param.params[7], param.params[8], param.params[9],
945
+ param.params[10], param.params[11], param.params[12], param.params[13],
946
+ param.params[14], param.params[15], param.params[16], param.params[17],
947
+ param.params[18]);
948
+ break;
949
+ case 20:
950
+ return_value = ptr->function(param.params[0], param.params[1],
951
+ param.params[2], param.params[3], param.params[4], param.params[5],
952
+ param.params[6], param.params[7], param.params[8], param.params[9],
953
+ param.params[10], param.params[11], param.params[12], param.params[13],
954
+ param.params[14], param.params[15], param.params[16], param.params[17],
955
+ param.params[18], param.params[19]);
956
+ break;
957
+ default:
958
+ rb_raise(rb_eArgError,"number of parameters exceed 20!");
959
+ }
960
+ }
961
+
962
+ /* Return the appropriate type based on the return type specified
963
+ * in the constructor.
964
+ */
965
+ switch(ptr->return_type){
966
+ case _T_INTEGER:
967
+ v_return = INT2NUM(return_value);
968
+ break;
969
+ case _T_LONG:
970
+ v_return = SIZET2NUM(return_value);
971
+ break;
972
+ case _T_VOID:
973
+ v_return = Qnil;
974
+ break;
975
+ case _T_POINTER:
976
+ if(!return_value){
977
+ v_return = Qnil;
978
+ }
979
+ else{
980
+ VALUE v_efunc = rb_iv_get(self, "@effective_function_name");
981
+ char* efunc = RSTRING_PTR(v_efunc);
982
+ if(efunc[strlen(efunc)-1] == 'W'){
983
+ v_return = rb_str_new(
984
+ (TCHAR*)return_value,
985
+ wcslen((wchar_t*)return_value)*2
986
+ );
987
+ }
988
+ else{
989
+ v_return = rb_str_new2((TCHAR*)return_value);
990
+ }
991
+ }
992
+ break;
993
+ case _T_STRING:
994
+ {
995
+ VALUE v_efunc = rb_iv_get(self, "@effective_function_name");
996
+ char* efunc = RSTRING_PTR(v_efunc);
997
+
998
+ if(efunc[strlen(efunc)-1] == 'W'){
999
+ v_return = rb_str_new(
1000
+ (TCHAR*)return_value,
1001
+ wcslen((wchar_t*)return_value)*2
1002
+ );
1003
+ }
1004
+ else{
1005
+ v_return = rb_str_new2((TCHAR*)return_value);
1006
+ }
1007
+ }
1008
+ break;
1009
+ default:
1010
+ v_return = INT2NUM(0);
1011
+ }
1012
+
1013
+ return v_return;
1014
+ }
1015
+
1016
+ /*
1017
+ * Wraps the Windows API functions in a Ruby interface.
1018
+ */
1019
+ void Init_api(){
1020
+ VALUE mWin32, cAPI, cCallback, cFunction;
1021
+
1022
+ /* Modules and Classes */
1023
+
1024
+ /* The Win32 module serves as a namespace only */
1025
+ mWin32 = rb_define_module("Win32");
1026
+
1027
+ /* The API class encapsulates a function pointer to Windows API function */
1028
+ cAPI = rb_define_class_under(mWin32, "API", rb_cObject);
1029
+
1030
+ /* The API::Callback class encapsulates a Windows CALLBACK function */
1031
+ cCallback = rb_define_class_under(cAPI, "Callback", rb_cObject);
1032
+
1033
+ /* The API::Function class encapsulates a raw function pointer */
1034
+ cFunction = rb_define_class_under(cAPI, "Function", cAPI);
1035
+
1036
+ /* The API::Error class serves as a base class for other errors */
1037
+ cAPIError = rb_define_class_under(cAPI, "Error", rb_eRuntimeError);
1038
+
1039
+ /* The LoadError class is raised if a function cannot be found or loaded */
1040
+ cAPILoadError = rb_define_class_under(cAPI, "LoadLibraryError", cAPIError);
1041
+
1042
+ /* The PrototypeError class is raised if an invalid prototype is passed */
1043
+ cAPIProtoError = rb_define_class_under(cAPI, "PrototypeError", cAPIError);
1044
+
1045
+ /* Miscellaneous */
1046
+ rb_define_alloc_func(cAPI, api_allocate);
1047
+
1048
+ /* Win32::API Instance Methods */
1049
+ rb_define_method(cAPI, "initialize", api_init, -1);
1050
+ rb_define_method(cAPI, "call", api_call, -1);
1051
+
1052
+ /* Win32::API::Callback Instance Methods */
1053
+ rb_define_method(cCallback, "initialize", callback_init, -1);
1054
+
1055
+ /* Win32::API::Function Instance Methods */
1056
+ rb_define_method(cFunction, "initialize", func_init, -1);
1057
+
1058
+ /* The name of the DLL that exports the API function */
1059
+ rb_define_attr(cAPI, "dll_name", 1, 0);
1060
+
1061
+ /* The name of the function passed to the constructor */
1062
+ rb_define_attr(cAPI, "function_name", 1, 0);
1063
+
1064
+ /* The name of the actual function that is returned by the constructor.
1065
+ * For example, if you passed 'GetUserName' to the constructor, then the
1066
+ * effective function name would be either 'GetUserNameA' or 'GetUserNameW'.
1067
+ */
1068
+ rb_define_attr(cAPI, "effective_function_name", 1, 0);
1069
+
1070
+ /* The prototype, returned as an array of characters */
1071
+ rb_define_attr(cAPI, "prototype", 1, 0);
1072
+
1073
+ /* The return type, returned as a single character, S, P, L, I, V or B */
1074
+ rb_define_attr(cAPI, "return_type", 1, 0);
1075
+
1076
+ /* Win32::API::Callback Instance Methods */
1077
+
1078
+ /* The prototype, returned as an array of characters */
1079
+ rb_define_attr(cCallback, "prototype", 1, 0);
1080
+
1081
+ /* The return type, returned as a single character, S, P, L, I, V or B */
1082
+ rb_define_attr(cCallback, "return_type", 1, 0);
1083
+
1084
+ /* The numeric address of the function pointer */
1085
+ rb_define_attr(cCallback, "address", 1, 0);
1086
+ rb_define_attr(cFunction, "address", 1, 0);
1087
+
1088
+ /* Constants */
1089
+
1090
+ /* 1.6.0: The version of the win32-api library */
1091
+ rb_define_const(cAPI, "VERSION", rb_str_new2(WINDOWS_API_VERSION));
1092
+ }