foundational_lib 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (529) hide show
  1. checksums.yaml +7 -0
  2. data/Articles/1.html +524 -0
  3. data/Articles/10.html +63 -0
  4. data/Articles/11.html +153 -0
  5. data/Articles/12.html +15 -0
  6. data/Articles/13.html +14 -0
  7. data/Articles/14.html +299 -0
  8. data/Articles/15.html +125 -0
  9. data/Articles/16.html +908 -0
  10. data/Articles/2.html +83 -0
  11. data/Articles/3.html +46 -0
  12. data/Articles/4.html +108 -0
  13. data/Articles/5.html +186 -0
  14. data/Articles/6.html +49 -0
  15. data/Articles/7.html +25 -0
  16. data/Articles/8.html +128 -0
  17. data/Articles/9.html +72 -0
  18. data/Articles/convert_html_to_markdown.sh +8 -0
  19. data/Articles/css.css +54 -0
  20. data/Articles/format.rb +95 -0
  21. data/Articles/index.html +34 -0
  22. data/Articles_MD/1.html.md +451 -0
  23. data/Articles_MD/10.html.md +57 -0
  24. data/Articles_MD/11.html.md +231 -0
  25. data/Articles_MD/12.html.md +16 -0
  26. data/Articles_MD/13.html.md +15 -0
  27. data/Articles_MD/14.html.md +280 -0
  28. data/Articles_MD/15.html.md +135 -0
  29. data/Articles_MD/16.html.md +840 -0
  30. data/Articles_MD/17.html.md +838 -0
  31. data/Articles_MD/2.html.md +82 -0
  32. data/Articles_MD/3.html.md +163 -0
  33. data/Articles_MD/4.html.md +137 -0
  34. data/Articles_MD/5.html.md +175 -0
  35. data/Articles_MD/6.html.md +47 -0
  36. data/Articles_MD/7.html.md +24 -0
  37. data/Articles_MD/8.html.md +71 -0
  38. data/Articles_MD/9.html.md +68 -0
  39. data/Articles_MD/index.html.md +25 -0
  40. data/DOCS.md +11153 -0
  41. data/GENERATE_CUSTOM_FOUNDATIONALLIB.rb +89 -0
  42. data/LICENSE.md +16 -0
  43. data/NOTE.md +29 -0
  44. data/README.md +120 -0
  45. data/custom_library_example.h +13999 -0
  46. data/docs/Doxyfile +2746 -0
  47. data/docs/LICENSE +21 -0
  48. data/docs/Makefile +39 -0
  49. data/docs/custom-alternative.css +54 -0
  50. data/docs/custom.css +57 -0
  51. data/docs/doxygen-awesome-darkmode-toggle.js +157 -0
  52. data/docs/doxygen-awesome-fragment-copy-button.js +85 -0
  53. data/docs/doxygen-awesome-interactive-toc.js +81 -0
  54. data/docs/doxygen-awesome-paragraph-link.js +51 -0
  55. data/docs/doxygen-awesome-sidebar-only-darkmode-toggle.css +40 -0
  56. data/docs/doxygen-awesome-sidebar-only.css +116 -0
  57. data/docs/doxygen-awesome-tabs.js +90 -0
  58. data/docs/doxygen-awesome.css +2669 -0
  59. data/docs/doxygen-custom/custom-alternative.css +54 -0
  60. data/docs/doxygen-custom/custom.css +57 -0
  61. data/docs/doxygen-custom/header.html +90 -0
  62. data/docs/doxygen-custom/toggle-alternative-theme.js +12 -0
  63. data/docs/header.html +90 -0
  64. data/docs/html/html/annotated.html +145 -0
  65. data/docs/html/html/annotated_dup.js +10 -0
  66. data/docs/html/html/bc_s.png +0 -0
  67. data/docs/html/html/bdwn.png +0 -0
  68. data/docs/html/html/classes.html +149 -0
  69. data/docs/html/html/closed.png +0 -0
  70. data/docs/html/html/custom-alternative.css +54 -0
  71. data/docs/html/html/custom.css +57 -0
  72. data/docs/html/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +141 -0
  73. data/docs/html/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js +4 -0
  74. data/docs/html/html/doc.png +0 -0
  75. data/docs/html/html/doxygen-awesome-darkmode-toggle.js +157 -0
  76. data/docs/html/html/doxygen-awesome-fragment-copy-button.js +85 -0
  77. data/docs/html/html/doxygen-awesome-interactive-toc.js +81 -0
  78. data/docs/html/html/doxygen-awesome-paragraph-link.js +51 -0
  79. data/docs/html/html/doxygen-awesome-sidebar-only-darkmode-toggle.css +40 -0
  80. data/docs/html/html/doxygen-awesome-sidebar-only.css +116 -0
  81. data/docs/html/html/doxygen-awesome-tabs.js +90 -0
  82. data/docs/html/html/doxygen-awesome.css +2669 -0
  83. data/docs/html/html/doxygen.css +1793 -0
  84. data/docs/html/html/doxygen.svg +26 -0
  85. data/docs/html/html/dynsections.js +121 -0
  86. data/docs/html/html/files.html +140 -0
  87. data/docs/html/html/files_dup.js +4 -0
  88. data/docs/html/html/folderclosed.png +0 -0
  89. data/docs/html/html/folderopen.png +0 -0
  90. data/docs/html/html/foundationallib_8h.html +17294 -0
  91. data/docs/html/html/foundationallib_8h.js +445 -0
  92. data/docs/html/html/foundationallib_8h__incl.map +15 -0
  93. data/docs/html/html/foundationallib_8h__incl.md5 +1 -0
  94. data/docs/html/html/foundationallib_8h__incl.svg +202 -0
  95. data/docs/html/html/foundationallib_8h_source.html +9125 -0
  96. data/docs/html/html/functions.html +188 -0
  97. data/docs/html/html/functions_vars.html +188 -0
  98. data/docs/html/html/globals.html +158 -0
  99. data/docs/html/html/globals_b.html +137 -0
  100. data/docs/html/html/globals_c.html +173 -0
  101. data/docs/html/html/globals_d.html +185 -0
  102. data/docs/html/html/globals_defs.html +361 -0
  103. data/docs/html/html/globals_dup.js +19 -0
  104. data/docs/html/html/globals_e.html +221 -0
  105. data/docs/html/html/globals_f.html +560 -0
  106. data/docs/html/html/globals_func.html +158 -0
  107. data/docs/html/html/globals_func.js +19 -0
  108. data/docs/html/html/globals_func_b.html +137 -0
  109. data/docs/html/html/globals_func_c.html +173 -0
  110. data/docs/html/html/globals_func_d.html +179 -0
  111. data/docs/html/html/globals_func_e.html +218 -0
  112. data/docs/html/html/globals_func_f.html +341 -0
  113. data/docs/html/html/globals_func_g.html +140 -0
  114. data/docs/html/html/globals_func_i.html +188 -0
  115. data/docs/html/html/globals_func_j.html +137 -0
  116. data/docs/html/html/globals_func_l.html +152 -0
  117. data/docs/html/html/globals_func_m.html +152 -0
  118. data/docs/html/html/globals_func_p.html +374 -0
  119. data/docs/html/html/globals_func_r.html +194 -0
  120. data/docs/html/html/globals_func_s.html +386 -0
  121. data/docs/html/html/globals_func_u.html +140 -0
  122. data/docs/html/html/globals_func_w.html +140 -0
  123. data/docs/html/html/globals_g.html +140 -0
  124. data/docs/html/html/globals_i.html +188 -0
  125. data/docs/html/html/globals_j.html +137 -0
  126. data/docs/html/html/globals_l.html +152 -0
  127. data/docs/html/html/globals_m.html +152 -0
  128. data/docs/html/html/globals_p.html +374 -0
  129. data/docs/html/html/globals_r.html +194 -0
  130. data/docs/html/html/globals_s.html +389 -0
  131. data/docs/html/html/globals_type.html +144 -0
  132. data/docs/html/html/globals_u.html +140 -0
  133. data/docs/html/html/globals_vars.html +135 -0
  134. data/docs/html/html/globals_w.html +140 -0
  135. data/docs/html/html/graph_legend.html +194 -0
  136. data/docs/html/html/graph_legend.md5 +1 -0
  137. data/docs/html/html/graph_legend.svg +117 -0
  138. data/docs/html/html/index.html +134 -0
  139. data/docs/html/html/jquery.js +35 -0
  140. data/docs/html/html/logo.drawio.svg +1 -0
  141. data/docs/html/html/menu.js +51 -0
  142. data/docs/html/html/menudata.js +75 -0
  143. data/docs/html/html/nav_f.png +0 -0
  144. data/docs/html/html/nav_g.png +0 -0
  145. data/docs/html/html/nav_h.png +0 -0
  146. data/docs/html/html/navtree.css +146 -0
  147. data/docs/html/html/navtree.js +546 -0
  148. data/docs/html/html/navtreedata.js +57 -0
  149. data/docs/html/html/navtreeindex0.js +253 -0
  150. data/docs/html/html/navtreeindex1.js +253 -0
  151. data/docs/html/html/navtreeindex2.js +18 -0
  152. data/docs/html/html/open.png +0 -0
  153. data/docs/html/html/resize.js +140 -0
  154. data/docs/html/html/search/all_0.html +37 -0
  155. data/docs/html/html/search/all_0.js +12 -0
  156. data/docs/html/html/search/all_1.html +37 -0
  157. data/docs/html/html/search/all_1.js +4 -0
  158. data/docs/html/html/search/all_10.html +37 -0
  159. data/docs/html/html/search/all_10.js +6 -0
  160. data/docs/html/html/search/all_11.html +37 -0
  161. data/docs/html/html/search/all_11.js +5 -0
  162. data/docs/html/html/search/all_12.html +37 -0
  163. data/docs/html/html/search/all_12.js +4 -0
  164. data/docs/html/html/search/all_13.html +37 -0
  165. data/docs/html/html/search/all_13.js +5 -0
  166. data/docs/html/html/search/all_2.html +37 -0
  167. data/docs/html/html/search/all_2.js +17 -0
  168. data/docs/html/html/search/all_3.html +37 -0
  169. data/docs/html/html/search/all_3.js +21 -0
  170. data/docs/html/html/search/all_4.html +37 -0
  171. data/docs/html/html/search/all_4.js +34 -0
  172. data/docs/html/html/search/all_5.html +37 -0
  173. data/docs/html/html/search/all_5.js +147 -0
  174. data/docs/html/html/search/all_6.html +37 -0
  175. data/docs/html/html/search/all_6.js +5 -0
  176. data/docs/html/html/search/all_7.html +37 -0
  177. data/docs/html/html/search/all_7.js +22 -0
  178. data/docs/html/html/search/all_8.html +37 -0
  179. data/docs/html/html/search/all_8.js +4 -0
  180. data/docs/html/html/search/all_9.html +37 -0
  181. data/docs/html/html/search/all_9.js +4 -0
  182. data/docs/html/html/search/all_a.html +37 -0
  183. data/docs/html/html/search/all_a.js +9 -0
  184. data/docs/html/html/search/all_b.html +37 -0
  185. data/docs/html/html/search/all_b.js +9 -0
  186. data/docs/html/html/search/all_c.html +37 -0
  187. data/docs/html/html/search/all_c.js +4 -0
  188. data/docs/html/html/search/all_d.html +37 -0
  189. data/docs/html/html/search/all_d.js +83 -0
  190. data/docs/html/html/search/all_e.html +37 -0
  191. data/docs/html/html/search/all_e.js +25 -0
  192. data/docs/html/html/search/all_f.html +37 -0
  193. data/docs/html/html/search/all_f.js +91 -0
  194. data/docs/html/html/search/classes_0.html +37 -0
  195. data/docs/html/html/search/classes_0.js +5 -0
  196. data/docs/html/html/search/classes_1.html +37 -0
  197. data/docs/html/html/search/classes_1.js +5 -0
  198. data/docs/html/html/search/classes_2.html +37 -0
  199. data/docs/html/html/search/classes_2.js +5 -0
  200. data/docs/html/html/search/classes_3.html +37 -0
  201. data/docs/html/html/search/classes_3.js +4 -0
  202. data/docs/html/html/search/close.svg +31 -0
  203. data/docs/html/html/search/defines_0.html +37 -0
  204. data/docs/html/html/search/defines_0.js +4 -0
  205. data/docs/html/html/search/defines_1.html +37 -0
  206. data/docs/html/html/search/defines_1.js +4 -0
  207. data/docs/html/html/search/defines_2.html +37 -0
  208. data/docs/html/html/search/defines_2.js +74 -0
  209. data/docs/html/html/search/files_0.html +37 -0
  210. data/docs/html/html/search/files_0.js +4 -0
  211. data/docs/html/html/search/functions_0.html +37 -0
  212. data/docs/html/html/search/functions_0.js +11 -0
  213. data/docs/html/html/search/functions_1.html +37 -0
  214. data/docs/html/html/search/functions_1.js +4 -0
  215. data/docs/html/html/search/functions_2.html +37 -0
  216. data/docs/html/html/search/functions_2.js +16 -0
  217. data/docs/html/html/search/functions_3.html +37 -0
  218. data/docs/html/html/search/functions_3.js +18 -0
  219. data/docs/html/html/search/functions_4.html +37 -0
  220. data/docs/html/html/search/functions_4.js +31 -0
  221. data/docs/html/html/search/functions_5.html +37 -0
  222. data/docs/html/html/search/functions_5.js +72 -0
  223. data/docs/html/html/search/functions_6.html +37 -0
  224. data/docs/html/html/search/functions_6.js +5 -0
  225. data/docs/html/html/search/functions_7.html +37 -0
  226. data/docs/html/html/search/functions_7.js +21 -0
  227. data/docs/html/html/search/functions_8.html +37 -0
  228. data/docs/html/html/search/functions_8.js +4 -0
  229. data/docs/html/html/search/functions_9.html +37 -0
  230. data/docs/html/html/search/functions_9.js +9 -0
  231. data/docs/html/html/search/functions_a.html +37 -0
  232. data/docs/html/html/search/functions_a.js +9 -0
  233. data/docs/html/html/search/functions_b.html +37 -0
  234. data/docs/html/html/search/functions_b.js +83 -0
  235. data/docs/html/html/search/functions_c.html +37 -0
  236. data/docs/html/html/search/functions_c.js +23 -0
  237. data/docs/html/html/search/functions_d.html +37 -0
  238. data/docs/html/html/search/functions_d.js +87 -0
  239. data/docs/html/html/search/functions_e.html +37 -0
  240. data/docs/html/html/search/functions_e.js +5 -0
  241. data/docs/html/html/search/functions_f.html +37 -0
  242. data/docs/html/html/search/functions_f.js +5 -0
  243. data/docs/html/html/search/mag_sel.svg +74 -0
  244. data/docs/html/html/search/nomatches.html +13 -0
  245. data/docs/html/html/search/search.css +257 -0
  246. data/docs/html/html/search/search.js +816 -0
  247. data/docs/html/html/search/search_l.png +0 -0
  248. data/docs/html/html/search/search_m.png +0 -0
  249. data/docs/html/html/search/search_r.png +0 -0
  250. data/docs/html/html/search/searchdata.js +33 -0
  251. data/docs/html/html/search/typedefs_0.html +37 -0
  252. data/docs/html/html/search/typedefs_0.js +4 -0
  253. data/docs/html/html/search/typedefs_1.html +37 -0
  254. data/docs/html/html/search/typedefs_1.js +5 -0
  255. data/docs/html/html/search/typedefs_2.html +37 -0
  256. data/docs/html/html/search/typedefs_2.js +4 -0
  257. data/docs/html/html/search/variables_0.html +37 -0
  258. data/docs/html/html/search/variables_0.js +4 -0
  259. data/docs/html/html/search/variables_1.html +37 -0
  260. data/docs/html/html/search/variables_1.js +4 -0
  261. data/docs/html/html/search/variables_2.html +37 -0
  262. data/docs/html/html/search/variables_2.js +5 -0
  263. data/docs/html/html/search/variables_3.html +37 -0
  264. data/docs/html/html/search/variables_3.js +5 -0
  265. data/docs/html/html/search/variables_4.html +37 -0
  266. data/docs/html/html/search/variables_4.js +4 -0
  267. data/docs/html/html/search/variables_5.html +37 -0
  268. data/docs/html/html/search/variables_5.js +4 -0
  269. data/docs/html/html/search/variables_6.html +37 -0
  270. data/docs/html/html/search/variables_6.js +4 -0
  271. data/docs/html/html/search/variables_7.html +37 -0
  272. data/docs/html/html/search/variables_7.js +5 -0
  273. data/docs/html/html/search/variables_8.html +37 -0
  274. data/docs/html/html/search/variables_8.js +5 -0
  275. data/docs/html/html/search/variables_9.html +37 -0
  276. data/docs/html/html/search/variables_9.js +5 -0
  277. data/docs/html/html/search/variables_a.html +37 -0
  278. data/docs/html/html/search/variables_a.js +4 -0
  279. data/docs/html/html/splitbar.png +0 -0
  280. data/docs/html/html/struct_dict.html +195 -0
  281. data/docs/html/html/struct_dict.js +6 -0
  282. data/docs/html/html/struct_dict_key_value.html +197 -0
  283. data/docs/html/html/struct_dict_key_value.js +6 -0
  284. data/docs/html/html/struct_frozen_dict.html +195 -0
  285. data/docs/html/html/struct_frozen_dict.js +6 -0
  286. data/docs/html/html/struct_frozen_set.html +195 -0
  287. data/docs/html/html/struct_frozen_set.js +6 -0
  288. data/docs/html/html/struct_set.html +195 -0
  289. data/docs/html/html/struct_set.js +6 -0
  290. data/docs/html/html/struct_set_key.html +179 -0
  291. data/docs/html/html/struct_set_key.js +5 -0
  292. data/docs/html/html/struct_thread_data.html +291 -0
  293. data/docs/html/html/struct_thread_data.js +12 -0
  294. data/docs/html/html/sync_off.png +0 -0
  295. data/docs/html/html/sync_on.png +0 -0
  296. data/docs/html/html/tab_a.png +0 -0
  297. data/docs/html/html/tab_b.png +0 -0
  298. data/docs/html/html/tab_h.png +0 -0
  299. data/docs/html/html/tab_s.png +0 -0
  300. data/docs/html/html/tabs.css +1 -0
  301. data/docs/html/html/toggle-alternative-theme.js +12 -0
  302. data/docs/img/screenshot.png +0 -0
  303. data/docs/img/testimage.png +0 -0
  304. data/docs/img/theme-variants-base.drawio.svg +117 -0
  305. data/docs/img/theme-variants-sidebar-only.drawio.svg +102 -0
  306. data/docs/logo.drawio.svg +1 -0
  307. data/docs/package.json +34 -0
  308. data/docs/src/foundationallib.h +13061 -0
  309. data/docs/toggle-alternative-theme.js +12 -0
  310. data/example_of_transpilation_comments.txt +167 -0
  311. data/foundationallib.gemspec +14 -0
  312. data/foundationallib.h +13999 -0
  313. data/platforms/README.md +17 -0
  314. data/platforms/header_and_separate_compilation_unit/Makefile +18 -0
  315. data/platforms/header_and_separate_compilation_unit/foundationallib_noninline.c +13014 -0
  316. data/platforms/header_and_separate_compilation_unit/foundationallib_noninline.h +316 -0
  317. data/platforms/header_and_separate_compilation_unit/foundationallib_noninline.o +0 -0
  318. data/platforms/header_and_separate_compilation_unit/non_inline_example +0 -0
  319. data/platforms/header_and_separate_compilation_unit/non_inline_example.c +11 -0
  320. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/Makefile +18 -0
  321. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/foundationallib_noninline.c +13014 -0
  322. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/foundationallib_noninline.h +317 -0
  323. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/foundationallib_noninline.o +0 -0
  324. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/non_inline_example +0 -0
  325. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/non_inline_example.c +11 -0
  326. data/platforms/header_and_separate_compilation_unit_all_safe_funcs/wont_compile.c +8 -0
  327. data/tests/decoupled_thorough_tests +0 -0
  328. data/tests/decoupled_thorough_tests.c +95 -0
  329. data/tests/decoupled_thorough_tests.exe +0 -0
  330. data/tests/decoupled_thorough_tests32 +0 -0
  331. data/tests/deps_for_testing +9 -0
  332. data/tests/deps_for_testing.sh +23 -0
  333. data/tests/destination_file.txt +1 -0
  334. data/tests/ex_ample.txt +1 -0
  335. data/tests/existing_file.txt +127 -0
  336. data/tests/lib_and_tests +0 -0
  337. data/tests/lib_and_tests.c +15920 -0
  338. data/tests/lib_and_tests.exe +0 -0
  339. data/tests/lib_and_tests32 +0 -0
  340. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_append_string_to_array.c +33 -0
  341. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_append_string_to_array_no_initial_alloc.c +51 -0
  342. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_array_total_string_length.c +25 -0
  343. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_arraydup.c +33 -0
  344. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_calculate_average_in_int_array.c +70 -0
  345. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_calculate_sum_in_int_array.c +47 -0
  346. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_common_prefix_length.c +23 -0
  347. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_common_suffix_length.c +23 -0
  348. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_concatenate_five_strings.c +32 -0
  349. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_concatenate_four_strings.c +39 -0
  350. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_concatenate_string_array.c +28 -0
  351. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_concatenate_strings.c +47 -0
  352. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_concatenate_three_strings.c +43 -0
  353. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_count_occurrences_of_substr.c +21 -0
  354. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_count_occurrences_of_substr_len.c +66 -0
  355. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_add.c +49 -0
  356. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_del_key.c +26 -0
  357. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_del_keys.c +69 -0
  358. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_del_values.c +69 -0
  359. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_destructor.c +69 -0
  360. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_get.c +69 -0
  361. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_get_check.c +75 -0
  362. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_hash.c +18 -0
  363. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_iter.c +69 -0
  364. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_new_instance.c +69 -0
  365. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_reserve_more.c +21 -0
  366. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_resize.c +8 -0
  367. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_size.c +79 -0
  368. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_to_array.c +26 -0
  369. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dict_to_string.c +29 -0
  370. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_dup_format.c +58 -0
  371. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_ends_with.c +48 -0
  372. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_char_ptrs.c +55 -0
  373. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_chars.c +53 -0
  374. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_double_ptrs.c +50 -0
  375. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_doubles.c +35 -0
  376. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_float_ptrs.c +36 -0
  377. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_floats.c +45 -0
  378. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_int_ptrs.c +51 -0
  379. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ints.c +55 -0
  380. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_long_long_ptrs.c +27 -0
  381. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_long_longs.c +53 -0
  382. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_long_ptrs.c +66 -0
  383. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_longs.c +47 -0
  384. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_short_ptrs.c +36 -0
  385. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_shorts.c +52 -0
  386. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_size_t_ptrs.c +62 -0
  387. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_size_ts.c +62 -0
  388. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_uchar_ptrs.c +46 -0
  389. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_uchars.c +60 -0
  390. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_uint_ptrs.c +37 -0
  391. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_uints.c +36 -0
  392. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ulong_long_ptrs.c +56 -0
  393. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ulong_longs.c +46 -0
  394. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ulong_ptrs.c +38 -0
  395. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ulongs.c +37 -0
  396. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ushort_ptrs.c +30 -0
  397. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_array_of_ushorts.c +55 -0
  398. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_equal_strings.c +45 -0
  399. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_filter.c +59 -0
  400. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_filter_int.c +39 -0
  401. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_find_first_of.c +48 -0
  402. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_find_last_of.c +48 -0
  403. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_find_max_int_in_array.c +55 -0
  404. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_find_min_int_in_array.c +58 -0
  405. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_first_non_repeating_char.c +42 -0
  406. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_format_string.c +68 -0
  407. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_free_array.c +63 -0
  408. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_free_string_array.c +50 -0
  409. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_del_keys.c +28 -0
  410. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_del_values.c +64 -0
  411. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_destructor.c +23 -0
  412. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_get.c +27 -0
  413. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_get_check.c +32 -0
  414. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_new_instance.c +23 -0
  415. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_size.c +33 -0
  416. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_to_array.c +51 -0
  417. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_dict_to_string.c +48 -0
  418. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_del_keys.c +35 -0
  419. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_destructor.c +55 -0
  420. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_in.c +70 -0
  421. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_iter.c +71 -0
  422. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_new_instance.c +26 -0
  423. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_size.c +46 -0
  424. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_to_array.c +70 -0
  425. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_frozen_set_to_string.c +52 -0
  426. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_generate_range.c +62 -0
  427. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_index_of_char.c +77 -0
  428. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_int_to_string.c +54 -0
  429. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_alphanumeric.c +50 -0
  430. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_array_digit.c +67 -0
  431. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_array_lower.c +52 -0
  432. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_array_upper.c +28 -0
  433. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_numeric.c +36 -0
  434. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_string_alpha.c +43 -0
  435. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_string_digit.c +54 -0
  436. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_string_lower.c +50 -0
  437. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_string_space.c +48 -0
  438. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_string_upper.c +72 -0
  439. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_valid_integer.c +16 -0
  440. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_is_valid_utf8.c +46 -0
  441. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_join.c +53 -0
  442. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_last_index_of_char.c +15 -0
  443. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_list_comprehension.c +95 -0
  444. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_list_comprehension_multithreaded.c +41 -0
  445. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_longest_common_prefix.c +35 -0
  446. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_longest_common_suffix.c +61 -0
  447. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_map.c +46 -0
  448. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_map_int.c +59 -0
  449. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_prepend_string_to_array.c +68 -0
  450. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_prepend_string_to_array_no_initial_alloc.c +57 -0
  451. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_rand_number_from_range_inclusive_signed.c +41 -0
  452. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_rand_number_from_range_inclusive_unsigned.c +23 -0
  453. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reduce.c +49 -0
  454. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reduce_int.c +44 -0
  455. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reject_array.c +47 -0
  456. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_replace_all.c +73 -0
  457. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_replace_all_with_callback.c +46 -0
  458. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_replace_all_with_lens.c +61 -0
  459. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_replicate.c +56 -0
  460. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reverse_int_array.c +58 -0
  461. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reverse_string.c +58 -0
  462. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reverse_string_in_place.c +60 -0
  463. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_reverse_words.c +58 -0
  464. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_sample_strings.c +48 -0
  465. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_select_array.c +29 -0
  466. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_add.c +69 -0
  467. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_del_key.c +29 -0
  468. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_del_keys.c +35 -0
  469. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_destructor.c +31 -0
  470. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_hash.c +44 -0
  471. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_in.c +52 -0
  472. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_iter.c +69 -0
  473. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_new_instance.c +30 -0
  474. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_reserve_more.c +36 -0
  475. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_resize.c +37 -0
  476. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_size.c +42 -0
  477. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_to_array.c +41 -0
  478. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_set_to_string.c +81 -0
  479. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_shellescape.c +53 -0
  480. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_shuffle_strings_in_place.c +39 -0
  481. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_split.c +64 -0
  482. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_starts_with.c +39 -0
  483. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_str_to_double.c +32 -0
  484. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_array_uniq.c +60 -0
  485. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_array_uniq_adjacent.c +54 -0
  486. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_to_int.c +55 -0
  487. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_to_json.c +98 -0
  488. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_to_lowercase.c +73 -0
  489. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_to_title_case.c +80 -0
  490. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_string_to_uppercase.c +78 -0
  491. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_strip.c +84 -0
  492. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/src/test_trim_chars.c +85 -0
  493. data/tests/more/experimental/third_test_suite/non_production_ready_test_suite/test_every_relevant_function_in_a_separate_thorough_program/work_in_progress_code/testall.sh +15 -0
  494. data/tests/run_test_suite.sh +117 -0
  495. data/tests/source_file.txt +1 -0
  496. data/tests/test_log.txt +1047 -0
  497. data/tools/FUTURE +18 -0
  498. data/tools/HEADERS.h +316 -0
  499. data/tools/HEADERS_ONLY_FUNCTIONS.h +284 -0
  500. data/tools/HEADERS_WITH_PREFIX.h +33 -0
  501. data/tools/RSUB_LICENSE.txt +25 -0
  502. data/tools/benchmark_libc.c +263 -0
  503. data/tools/deprecated/GENERATE_CUSTOM_FOUNDATIONALLIB.sh.old +67 -0
  504. data/tools/deps_for_testing.sh +23 -0
  505. data/tools/documentation_generate +17 -0
  506. data/tools/foundationallib.h +13999 -0
  507. data/tools/funcs_c +15858 -0
  508. data/tools/funcs_c_with_tests.c +15920 -0
  509. data/tools/gen_video_new +444 -0
  510. data/tools/gen_video_new_times +41 -0
  511. data/tools/generate_promo_video_for_library.rb +19 -0
  512. data/tools/index.html +147 -0
  513. data/tools/lib.html +20 -0
  514. data/tools/lib2.html +22 -0
  515. data/tools/lib3.html +22 -0
  516. data/tools/lynx.rb +145 -0
  517. data/tools/make_image_of_docs +741 -0
  518. data/tools/pic.png +0 -0
  519. data/tools/pic2.png +0 -0
  520. data/tools/pic3.png +0 -0
  521. data/tools/play_with_string_replace_functions.c +236 -0
  522. data/tools/rsub +0 -0
  523. data/tools/rsub.c +501 -0
  524. data/tools/run_lib +365 -0
  525. data/tools/update +44 -0
  526. data/tools/with_tests +0 -0
  527. data/tools/with_tests32 +0 -0
  528. data/transpile_slow_scripting_into_c.rb +225 -0
  529. metadata +693 -0
@@ -0,0 +1,816 @@
1
+ /*
2
+ @licstart The following is the entire license notice for the JavaScript code in this file.
3
+
4
+ The MIT License (MIT)
5
+
6
+ Copyright (C) 1997-2020 by Dimitri van Heesch
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
10
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
11
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all copies or
15
+ substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+
23
+ @licend The above is the entire license notice for the JavaScript code in this file
24
+ */
25
+ function convertToId(search)
26
+ {
27
+ var result = '';
28
+ for (i=0;i<search.length;i++)
29
+ {
30
+ var c = search.charAt(i);
31
+ var cn = c.charCodeAt(0);
32
+ if (c.match(/[a-z0-9\u0080-\uFFFF]/))
33
+ {
34
+ result+=c;
35
+ }
36
+ else if (cn<16)
37
+ {
38
+ result+="_0"+cn.toString(16);
39
+ }
40
+ else
41
+ {
42
+ result+="_"+cn.toString(16);
43
+ }
44
+ }
45
+ return result;
46
+ }
47
+
48
+ function getXPos(item)
49
+ {
50
+ var x = 0;
51
+ if (item.offsetWidth)
52
+ {
53
+ while (item && item!=document.body)
54
+ {
55
+ x += item.offsetLeft;
56
+ item = item.offsetParent;
57
+ }
58
+ }
59
+ return x;
60
+ }
61
+
62
+ function getYPos(item)
63
+ {
64
+ var y = 0;
65
+ if (item.offsetWidth)
66
+ {
67
+ while (item && item!=document.body)
68
+ {
69
+ y += item.offsetTop;
70
+ item = item.offsetParent;
71
+ }
72
+ }
73
+ return y;
74
+ }
75
+
76
+ /* A class handling everything associated with the search panel.
77
+
78
+ Parameters:
79
+ name - The name of the global variable that will be
80
+ storing this instance. Is needed to be able to set timeouts.
81
+ resultPath - path to use for external files
82
+ */
83
+ function SearchBox(name, resultsPath, inFrame, label, extension)
84
+ {
85
+ if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
86
+ if (!extension || extension == "") { extension = ".html"; }
87
+
88
+ // ---------- Instance variables
89
+ this.name = name;
90
+ this.resultsPath = resultsPath;
91
+ this.keyTimeout = 0;
92
+ this.keyTimeoutLength = 500;
93
+ this.closeSelectionTimeout = 300;
94
+ this.lastSearchValue = "";
95
+ this.lastResultsPage = "";
96
+ this.hideTimeout = 0;
97
+ this.searchIndex = 0;
98
+ this.searchActive = false;
99
+ this.insideFrame = inFrame;
100
+ this.searchLabel = label;
101
+ this.extension = extension;
102
+
103
+ // ----------- DOM Elements
104
+
105
+ this.DOMSearchField = function()
106
+ { return document.getElementById("MSearchField"); }
107
+
108
+ this.DOMSearchSelect = function()
109
+ { return document.getElementById("MSearchSelect"); }
110
+
111
+ this.DOMSearchSelectWindow = function()
112
+ { return document.getElementById("MSearchSelectWindow"); }
113
+
114
+ this.DOMPopupSearchResults = function()
115
+ { return document.getElementById("MSearchResults"); }
116
+
117
+ this.DOMPopupSearchResultsWindow = function()
118
+ { return document.getElementById("MSearchResultsWindow"); }
119
+
120
+ this.DOMSearchClose = function()
121
+ { return document.getElementById("MSearchClose"); }
122
+
123
+ this.DOMSearchBox = function()
124
+ { return document.getElementById("MSearchBox"); }
125
+
126
+ // ------------ Event Handlers
127
+
128
+ // Called when focus is added or removed from the search field.
129
+ this.OnSearchFieldFocus = function(isActive)
130
+ {
131
+ this.Activate(isActive);
132
+ }
133
+
134
+ this.OnSearchSelectShow = function()
135
+ {
136
+ var searchSelectWindow = this.DOMSearchSelectWindow();
137
+ var searchField = this.DOMSearchSelect();
138
+
139
+ if (this.insideFrame)
140
+ {
141
+ var left = getXPos(searchField);
142
+ var top = getYPos(searchField);
143
+ left += searchField.offsetWidth + 6;
144
+ top += searchField.offsetHeight;
145
+
146
+ // show search selection popup
147
+ searchSelectWindow.style.display='block';
148
+ left -= searchSelectWindow.offsetWidth;
149
+ searchSelectWindow.style.left = left + 'px';
150
+ searchSelectWindow.style.top = top + 'px';
151
+ }
152
+ else
153
+ {
154
+ var left = getXPos(searchField);
155
+ var top = getYPos(searchField);
156
+ top += searchField.offsetHeight;
157
+
158
+ // show search selection popup
159
+ searchSelectWindow.style.display='block';
160
+ searchSelectWindow.style.left = left + 'px';
161
+ searchSelectWindow.style.top = top + 'px';
162
+ }
163
+
164
+ // stop selection hide timer
165
+ if (this.hideTimeout)
166
+ {
167
+ clearTimeout(this.hideTimeout);
168
+ this.hideTimeout=0;
169
+ }
170
+ return false; // to avoid "image drag" default event
171
+ }
172
+
173
+ this.OnSearchSelectHide = function()
174
+ {
175
+ this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
176
+ this.closeSelectionTimeout);
177
+ }
178
+
179
+ // Called when the content of the search field is changed.
180
+ this.OnSearchFieldChange = function(evt)
181
+ {
182
+ if (this.keyTimeout) // kill running timer
183
+ {
184
+ clearTimeout(this.keyTimeout);
185
+ this.keyTimeout = 0;
186
+ }
187
+
188
+ var e = (evt) ? evt : window.event; // for IE
189
+ if (e.keyCode==40 || e.keyCode==13)
190
+ {
191
+ if (e.shiftKey==1)
192
+ {
193
+ this.OnSearchSelectShow();
194
+ var win=this.DOMSearchSelectWindow();
195
+ for (i=0;i<win.childNodes.length;i++)
196
+ {
197
+ var child = win.childNodes[i]; // get span within a
198
+ if (child.className=='SelectItem')
199
+ {
200
+ child.focus();
201
+ return;
202
+ }
203
+ }
204
+ return;
205
+ }
206
+ else
207
+ {
208
+ window.frames.MSearchResults.postMessage("take_focus", "*");
209
+ }
210
+ }
211
+ else if (e.keyCode==27) // Escape out of the search field
212
+ {
213
+ this.DOMSearchField().blur();
214
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
215
+ this.DOMSearchClose().style.display = 'none';
216
+ this.lastSearchValue = '';
217
+ this.Activate(false);
218
+ return;
219
+ }
220
+
221
+ // strip whitespaces
222
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
223
+
224
+ if (searchValue != this.lastSearchValue) // search value has changed
225
+ {
226
+ if (searchValue != "") // non-empty search
227
+ {
228
+ // set timer for search update
229
+ this.keyTimeout = setTimeout(this.name + '.Search()',
230
+ this.keyTimeoutLength);
231
+ }
232
+ else // empty search field
233
+ {
234
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
235
+ this.DOMSearchClose().style.display = 'none';
236
+ this.lastSearchValue = '';
237
+ }
238
+ }
239
+ }
240
+
241
+ this.SelectItemCount = function(id)
242
+ {
243
+ var count=0;
244
+ var win=this.DOMSearchSelectWindow();
245
+ for (i=0;i<win.childNodes.length;i++)
246
+ {
247
+ var child = win.childNodes[i]; // get span within a
248
+ if (child.className=='SelectItem')
249
+ {
250
+ count++;
251
+ }
252
+ }
253
+ return count;
254
+ }
255
+
256
+ this.SelectItemSet = function(id)
257
+ {
258
+ var i,j=0;
259
+ var win=this.DOMSearchSelectWindow();
260
+ for (i=0;i<win.childNodes.length;i++)
261
+ {
262
+ var child = win.childNodes[i]; // get span within a
263
+ if (child.className=='SelectItem')
264
+ {
265
+ var node = child.firstChild;
266
+ if (j==id)
267
+ {
268
+ node.innerHTML='&#8226;';
269
+ }
270
+ else
271
+ {
272
+ node.innerHTML='&#160;';
273
+ }
274
+ j++;
275
+ }
276
+ }
277
+ }
278
+
279
+ // Called when an search filter selection is made.
280
+ // set item with index id as the active item
281
+ this.OnSelectItem = function(id)
282
+ {
283
+ this.searchIndex = id;
284
+ this.SelectItemSet(id);
285
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
286
+ if (searchValue!="" && this.searchActive) // something was found -> do a search
287
+ {
288
+ this.Search();
289
+ }
290
+ }
291
+
292
+ this.OnSearchSelectKey = function(evt)
293
+ {
294
+ var e = (evt) ? evt : window.event; // for IE
295
+ if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
296
+ {
297
+ this.searchIndex++;
298
+ this.OnSelectItem(this.searchIndex);
299
+ }
300
+ else if (e.keyCode==38 && this.searchIndex>0) // Up
301
+ {
302
+ this.searchIndex--;
303
+ this.OnSelectItem(this.searchIndex);
304
+ }
305
+ else if (e.keyCode==13 || e.keyCode==27)
306
+ {
307
+ this.OnSelectItem(this.searchIndex);
308
+ this.CloseSelectionWindow();
309
+ this.DOMSearchField().focus();
310
+ }
311
+ return false;
312
+ }
313
+
314
+ // --------- Actions
315
+
316
+ // Closes the results window.
317
+ this.CloseResultsWindow = function()
318
+ {
319
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
320
+ this.DOMSearchClose().style.display = 'none';
321
+ this.Activate(false);
322
+ }
323
+
324
+ this.CloseSelectionWindow = function()
325
+ {
326
+ this.DOMSearchSelectWindow().style.display = 'none';
327
+ }
328
+
329
+ // Performs a search.
330
+ this.Search = function()
331
+ {
332
+ this.keyTimeout = 0;
333
+
334
+ // strip leading whitespace
335
+ var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
336
+
337
+ var code = searchValue.toLowerCase().charCodeAt(0);
338
+ var idxChar = searchValue.substr(0, 1).toLowerCase();
339
+ if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
340
+ {
341
+ idxChar = searchValue.substr(0, 2);
342
+ }
343
+
344
+ var resultsPage;
345
+ var resultsPageWithSearch;
346
+ var hasResultsPage;
347
+
348
+ var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
349
+ if (idx!=-1)
350
+ {
351
+ var hexCode=idx.toString(16);
352
+ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
353
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
354
+ hasResultsPage = true;
355
+ }
356
+ else // nothing available for this search term
357
+ {
358
+ resultsPage = this.resultsPath + '/nomatches' + this.extension;
359
+ resultsPageWithSearch = resultsPage;
360
+ hasResultsPage = false;
361
+ }
362
+
363
+ window.frames.MSearchResults.location = resultsPageWithSearch;
364
+ var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
365
+
366
+ if (domPopupSearchResultsWindow.style.display!='block')
367
+ {
368
+ var domSearchBox = this.DOMSearchBox();
369
+ this.DOMSearchClose().style.display = 'inline-block';
370
+ if (this.insideFrame)
371
+ {
372
+ var domPopupSearchResults = this.DOMPopupSearchResults();
373
+ domPopupSearchResultsWindow.style.position = 'relative';
374
+ domPopupSearchResultsWindow.style.display = 'block';
375
+ var width = document.body.clientWidth - 8; // the -8 is for IE :-(
376
+ domPopupSearchResultsWindow.style.width = width + 'px';
377
+ domPopupSearchResults.style.width = width + 'px';
378
+ }
379
+ else
380
+ {
381
+ var domPopupSearchResults = this.DOMPopupSearchResults();
382
+ var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
383
+ var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
384
+ domPopupSearchResultsWindow.style.display = 'block';
385
+ left -= domPopupSearchResults.offsetWidth;
386
+ domPopupSearchResultsWindow.style.top = top + 'px';
387
+ domPopupSearchResultsWindow.style.left = left + 'px';
388
+ }
389
+ }
390
+
391
+ this.lastSearchValue = searchValue;
392
+ this.lastResultsPage = resultsPage;
393
+ }
394
+
395
+ // -------- Activation Functions
396
+
397
+ // Activates or deactivates the search panel, resetting things to
398
+ // their default values if necessary.
399
+ this.Activate = function(isActive)
400
+ {
401
+ if (isActive || // open it
402
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
403
+ )
404
+ {
405
+ this.DOMSearchBox().className = 'MSearchBoxActive';
406
+
407
+ var searchField = this.DOMSearchField();
408
+
409
+ if (searchField.value == this.searchLabel) // clear "Search" term upon entry
410
+ {
411
+ searchField.value = '';
412
+ this.searchActive = true;
413
+ }
414
+ }
415
+ else if (!isActive) // directly remove the panel
416
+ {
417
+ this.DOMSearchBox().className = 'MSearchBoxInactive';
418
+ this.DOMSearchField().value = this.searchLabel;
419
+ this.searchActive = false;
420
+ this.lastSearchValue = ''
421
+ this.lastResultsPage = '';
422
+ }
423
+ }
424
+ }
425
+
426
+ // -----------------------------------------------------------------------
427
+
428
+ // The class that handles everything on the search results page.
429
+ function SearchResults(name)
430
+ {
431
+ // The number of matches from the last run of <Search()>.
432
+ this.lastMatchCount = 0;
433
+ this.lastKey = 0;
434
+ this.repeatOn = false;
435
+
436
+ // Toggles the visibility of the passed element ID.
437
+ this.FindChildElement = function(id)
438
+ {
439
+ var parentElement = document.getElementById(id);
440
+ var element = parentElement.firstChild;
441
+
442
+ while (element && element!=parentElement)
443
+ {
444
+ if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
445
+ {
446
+ return element;
447
+ }
448
+
449
+ if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
450
+ {
451
+ element = element.firstChild;
452
+ }
453
+ else if (element.nextSibling)
454
+ {
455
+ element = element.nextSibling;
456
+ }
457
+ else
458
+ {
459
+ do
460
+ {
461
+ element = element.parentNode;
462
+ }
463
+ while (element && element!=parentElement && !element.nextSibling);
464
+
465
+ if (element && element!=parentElement)
466
+ {
467
+ element = element.nextSibling;
468
+ }
469
+ }
470
+ }
471
+ }
472
+
473
+ this.Toggle = function(id)
474
+ {
475
+ var element = this.FindChildElement(id);
476
+ if (element)
477
+ {
478
+ if (element.style.display == 'block')
479
+ {
480
+ element.style.display = 'none';
481
+ }
482
+ else
483
+ {
484
+ element.style.display = 'block';
485
+ }
486
+ }
487
+ }
488
+
489
+ // Searches for the passed string. If there is no parameter,
490
+ // it takes it from the URL query.
491
+ //
492
+ // Always returns true, since other documents may try to call it
493
+ // and that may or may not be possible.
494
+ this.Search = function(search)
495
+ {
496
+ if (!search) // get search word from URL
497
+ {
498
+ search = window.location.search;
499
+ search = search.substring(1); // Remove the leading '?'
500
+ search = unescape(search);
501
+ }
502
+
503
+ search = search.replace(/^ +/, ""); // strip leading spaces
504
+ search = search.replace(/ +$/, ""); // strip trailing spaces
505
+ search = search.toLowerCase();
506
+ search = convertToId(search);
507
+
508
+ var resultRows = document.getElementsByTagName("div");
509
+ var matches = 0;
510
+
511
+ var i = 0;
512
+ while (i < resultRows.length)
513
+ {
514
+ var row = resultRows.item(i);
515
+ if (row.className == "SRResult")
516
+ {
517
+ var rowMatchName = row.id.toLowerCase();
518
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
519
+
520
+ if (search.length<=rowMatchName.length &&
521
+ rowMatchName.substr(0, search.length)==search)
522
+ {
523
+ row.style.display = 'block';
524
+ matches++;
525
+ }
526
+ else
527
+ {
528
+ row.style.display = 'none';
529
+ }
530
+ }
531
+ i++;
532
+ }
533
+ document.getElementById("Searching").style.display='none';
534
+ if (matches == 0) // no results
535
+ {
536
+ document.getElementById("NoMatches").style.display='block';
537
+ }
538
+ else // at least one result
539
+ {
540
+ document.getElementById("NoMatches").style.display='none';
541
+ }
542
+ this.lastMatchCount = matches;
543
+ return true;
544
+ }
545
+
546
+ // return the first item with index index or higher that is visible
547
+ this.NavNext = function(index)
548
+ {
549
+ var focusItem;
550
+ while (1)
551
+ {
552
+ var focusName = 'Item'+index;
553
+ focusItem = document.getElementById(focusName);
554
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
555
+ {
556
+ break;
557
+ }
558
+ else if (!focusItem) // last element
559
+ {
560
+ break;
561
+ }
562
+ focusItem=null;
563
+ index++;
564
+ }
565
+ return focusItem;
566
+ }
567
+
568
+ this.NavPrev = function(index)
569
+ {
570
+ var focusItem;
571
+ while (1)
572
+ {
573
+ var focusName = 'Item'+index;
574
+ focusItem = document.getElementById(focusName);
575
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
576
+ {
577
+ break;
578
+ }
579
+ else if (!focusItem) // last element
580
+ {
581
+ break;
582
+ }
583
+ focusItem=null;
584
+ index--;
585
+ }
586
+ return focusItem;
587
+ }
588
+
589
+ this.ProcessKeys = function(e)
590
+ {
591
+ if (e.type == "keydown")
592
+ {
593
+ this.repeatOn = false;
594
+ this.lastKey = e.keyCode;
595
+ }
596
+ else if (e.type == "keypress")
597
+ {
598
+ if (!this.repeatOn)
599
+ {
600
+ if (this.lastKey) this.repeatOn = true;
601
+ return false; // ignore first keypress after keydown
602
+ }
603
+ }
604
+ else if (e.type == "keyup")
605
+ {
606
+ this.lastKey = 0;
607
+ this.repeatOn = false;
608
+ }
609
+ return this.lastKey!=0;
610
+ }
611
+
612
+ this.Nav = function(evt,itemIndex)
613
+ {
614
+ var e = (evt) ? evt : window.event; // for IE
615
+ if (e.keyCode==13) return true;
616
+ if (!this.ProcessKeys(e)) return false;
617
+
618
+ if (this.lastKey==38) // Up
619
+ {
620
+ var newIndex = itemIndex-1;
621
+ var focusItem = this.NavPrev(newIndex);
622
+ if (focusItem)
623
+ {
624
+ var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
625
+ if (child && child.style.display == 'block') // children visible
626
+ {
627
+ var n=0;
628
+ var tmpElem;
629
+ while (1) // search for last child
630
+ {
631
+ tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
632
+ if (tmpElem)
633
+ {
634
+ focusItem = tmpElem;
635
+ }
636
+ else // found it!
637
+ {
638
+ break;
639
+ }
640
+ n++;
641
+ }
642
+ }
643
+ }
644
+ if (focusItem)
645
+ {
646
+ focusItem.focus();
647
+ }
648
+ else // return focus to search field
649
+ {
650
+ parent.document.getElementById("MSearchField").focus();
651
+ }
652
+ }
653
+ else if (this.lastKey==40) // Down
654
+ {
655
+ var newIndex = itemIndex+1;
656
+ var focusItem;
657
+ var item = document.getElementById('Item'+itemIndex);
658
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
659
+ if (elem && elem.style.display == 'block') // children visible
660
+ {
661
+ focusItem = document.getElementById('Item'+itemIndex+'_c0');
662
+ }
663
+ if (!focusItem) focusItem = this.NavNext(newIndex);
664
+ if (focusItem) focusItem.focus();
665
+ }
666
+ else if (this.lastKey==39) // Right
667
+ {
668
+ var item = document.getElementById('Item'+itemIndex);
669
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
670
+ if (elem) elem.style.display = 'block';
671
+ }
672
+ else if (this.lastKey==37) // Left
673
+ {
674
+ var item = document.getElementById('Item'+itemIndex);
675
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
676
+ if (elem) elem.style.display = 'none';
677
+ }
678
+ else if (this.lastKey==27) // Escape
679
+ {
680
+ parent.searchBox.CloseResultsWindow();
681
+ parent.document.getElementById("MSearchField").focus();
682
+ }
683
+ else if (this.lastKey==13) // Enter
684
+ {
685
+ return true;
686
+ }
687
+ return false;
688
+ }
689
+
690
+ this.NavChild = function(evt,itemIndex,childIndex)
691
+ {
692
+ var e = (evt) ? evt : window.event; // for IE
693
+ if (e.keyCode==13) return true;
694
+ if (!this.ProcessKeys(e)) return false;
695
+
696
+ if (this.lastKey==38) // Up
697
+ {
698
+ if (childIndex>0)
699
+ {
700
+ var newIndex = childIndex-1;
701
+ document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
702
+ }
703
+ else // already at first child, jump to parent
704
+ {
705
+ document.getElementById('Item'+itemIndex).focus();
706
+ }
707
+ }
708
+ else if (this.lastKey==40) // Down
709
+ {
710
+ var newIndex = childIndex+1;
711
+ var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
712
+ if (!elem) // last child, jump to parent next parent
713
+ {
714
+ elem = this.NavNext(itemIndex+1);
715
+ }
716
+ if (elem)
717
+ {
718
+ elem.focus();
719
+ }
720
+ }
721
+ else if (this.lastKey==27) // Escape
722
+ {
723
+ parent.searchBox.CloseResultsWindow();
724
+ parent.document.getElementById("MSearchField").focus();
725
+ }
726
+ else if (this.lastKey==13) // Enter
727
+ {
728
+ return true;
729
+ }
730
+ return false;
731
+ }
732
+ }
733
+
734
+ function setKeyActions(elem,action)
735
+ {
736
+ elem.setAttribute('onkeydown',action);
737
+ elem.setAttribute('onkeypress',action);
738
+ elem.setAttribute('onkeyup',action);
739
+ }
740
+
741
+ function setClassAttr(elem,attr)
742
+ {
743
+ elem.setAttribute('class',attr);
744
+ elem.setAttribute('className',attr);
745
+ }
746
+
747
+ function createResults()
748
+ {
749
+ var results = document.getElementById("SRResults");
750
+ for (var e=0; e<searchData.length; e++)
751
+ {
752
+ var id = searchData[e][0];
753
+ var srResult = document.createElement('div');
754
+ srResult.setAttribute('id','SR_'+id);
755
+ setClassAttr(srResult,'SRResult');
756
+ var srEntry = document.createElement('div');
757
+ setClassAttr(srEntry,'SREntry');
758
+ var srLink = document.createElement('a');
759
+ srLink.setAttribute('id','Item'+e);
760
+ setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
761
+ setClassAttr(srLink,'SRSymbol');
762
+ srLink.innerHTML = searchData[e][1][0];
763
+ srEntry.appendChild(srLink);
764
+ if (searchData[e][1].length==2) // single result
765
+ {
766
+ srLink.setAttribute('href',searchData[e][1][1][0]);
767
+ if (searchData[e][1][1][1])
768
+ {
769
+ srLink.setAttribute('target','_parent');
770
+ }
771
+ var srScope = document.createElement('span');
772
+ setClassAttr(srScope,'SRScope');
773
+ srScope.innerHTML = searchData[e][1][1][2];
774
+ srEntry.appendChild(srScope);
775
+ }
776
+ else // multiple results
777
+ {
778
+ srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
779
+ var srChildren = document.createElement('div');
780
+ setClassAttr(srChildren,'SRChildren');
781
+ for (var c=0; c<searchData[e][1].length-1; c++)
782
+ {
783
+ var srChild = document.createElement('a');
784
+ srChild.setAttribute('id','Item'+e+'_c'+c);
785
+ setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
786
+ setClassAttr(srChild,'SRScope');
787
+ srChild.setAttribute('href',searchData[e][1][c+1][0]);
788
+ if (searchData[e][1][c+1][1])
789
+ {
790
+ srChild.setAttribute('target','_parent');
791
+ }
792
+ srChild.innerHTML = searchData[e][1][c+1][2];
793
+ srChildren.appendChild(srChild);
794
+ }
795
+ srEntry.appendChild(srChildren);
796
+ }
797
+ srResult.appendChild(srEntry);
798
+ results.appendChild(srResult);
799
+ }
800
+ }
801
+
802
+ function init_search()
803
+ {
804
+ var results = document.getElementById("MSearchSelectWindow");
805
+ for (var key in indexSectionLabels)
806
+ {
807
+ var link = document.createElement('a');
808
+ link.setAttribute('class','SelectItem');
809
+ link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
810
+ link.href='javascript:void(0)';
811
+ link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
812
+ results.appendChild(link);
813
+ }
814
+ searchBox.OnSelectItem(0);
815
+ }
816
+ /* @license-end */