foundational_lib2 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
data/tools/lib.html ADDED
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <style type='text/css'>
5
+ body { font-family: Monospace; font-size: 18px; }
6
+
7
+ .highlight table td { padding: 5px; } .highlight table pre { margin: 0; } .highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #5e5d83; font-style: italic; } .highlight .cm { color: #5e5d83; font-style: italic; } .highlight .c1 { color: #5e5d83; font-style: italic; } .highlight .cp { color: #465457; font-weight: bold; } .highlight .cs { color: #465457; font-weight: bold; font-style: italic; } .highlight .err { color: #f8f8f2; background-color: #403d3d; } .highlight .gi { color: rgb(0, 127, 0); } .highlight .gd { color: red; } .highlight .ge { color: #1b1d1e; font-style: italic; } .highlight .gr { color: red; } .highlight .gt { color: red; } .highlight .gh { color: #403d3d; } .highlight .go { color: #403d3d; } .highlight .gp { color: blue; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #465457; } .highlight .k, .highlight .kv { color: red; font-weight: bold; } .highlight .kd { color: red; font-weight: bold; } .highlight .kp { color: red; } .highlight .kc { color: red; } .highlight .kr { color: red; } .highlight .kt { color: red; } .highlight .kn { color: #f8f8f2; font-weight: bold; } .highlight .ow { color: #f8f8f2; font-weight: bold; } .highlight .o { color: #f8f8f2; font-weight: bold; } .highlight .mf { color: #af87ff; } .highlight .mh { color: #af87ff; } .highlight .il { color: #af87ff; } .highlight .mi { color: #af87ff; } .highlight .mo { color: #af87ff; } .highlight .m, .highlight .mb, .highlight .mx { color: #af87ff; } .highlight .se { color: #af87ff; } .highlight .sb { color: red; font-weight: bold; } .highlight .sc { color: red; font-weight: bold; } .highlight .sd { color: red; font-weight: bold; } .highlight .s2 { color: red; font-weight: bold; } .highlight .sh { color: red; font-weight: bold; } .highlight .si { color: red; font-weight: bold; } .highlight .sx { color: red; font-weight: bold; } .highlight .sr { color: red; font-weight: bold; } .highlight .s1 { color: red; font-weight: bold; } .highlight .ss { color: red; font-weight: bold; } .highlight .s, .highlight .sa, .highlight .dl { color: red; font-weight: bold; } .highlight .na { color: rgb(0, 127, 0); } .highlight .nc { color: #f8f8f2; } .highlight .nd { color: #f8f8f2; } .highlight .ne { color: #f8f8f2; } .highlight .nf, .highlight .fm { color: #f8f8f2; } .highlight .no { color: blue; } .highlight .bp { color: #f8f8f2; } .highlight .nb { color: #f8f8f2; } .highlight .ni { color: #f8f8f2; } .highlight .nn { color: #f8f8f2; } .highlight .vc { color: #f8f8f2; } .highlight .vg { color: #f8f8f2; } .highlight .vi { color: #f8f8f2; } .highlight .nv, .highlight .vm { color: #f8f8f2; } .highlight .w { color: #f8f8f2; } .highlight .nl { color: #f8f8f2; font-weight: bold; } .highlight .nt { color: #f8f8f2; } .highlight { color: #f8f8f2; background-color: #1b1d1e; }
8
+ </style>
9
+ </head>
10
+
11
+ <body>
12
+ <!--<h1>284 functions in library as far:</h1>
13
+ <h1>My personal philosophy behind this is in the `Articles' folder. It is well worth the read, and it is extremely unequivocal and strong.</h1>-->
14
+
15
+ <div class=highlight style='background-color: black;'>
16
+ <span class="kt">char</span> <span class="o">**</span><span class="nf">list_files_with_pattern</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">directory</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">len</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">**</span><span class="nf">read_file_into_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">delim</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">num_lines</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">**</span><span class="nf">split</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">output_size</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">delim</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">max_times</span><span class="p">,</span> <span class="kt">int</span> <span class="n">keep_delim_in_result</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">backticks</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">command</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">dict_to_string</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="kt">int</span> <span class="n">pointer_or_string</span><span class="p">)</span> <span class="cm">/* 0 = pointer, 1 = string */</span><span class="p">;</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">dup_format</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">format</span><span class="p">,</span> <span class="p">...);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">frozen_dict_to_string</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="kt">int</span> <span class="n">pointer_or_string</span><span class="p">)</span> <span class="cm">/* 0 = pointer, 1 = string */</span><span class="p">;</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">frozen_set_to_string</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenSet</span> <span class="o">*</span><span class="n">frozen_set</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">int_to_string</span><span class="p">(</span><span class="kt">long</span> <span class="kt">long</span> <span class="kt">int</span> <span class="n">number</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">join</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">count</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">delimiter</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">longest_common_prefix</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">strings</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">count</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">longest_common_suffix</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">strings</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">count</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">read_file_into_string</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">reduce_filesystem_files_as_strings</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">directory</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">out_file</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="n">reduce_function</span><span class="p">)(</span><span class="kt">char</span> <span class="o">*</span><span class="n">value1</span><span class="p">,</span> <span class="p">...));</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">replace_all</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">find</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">replace</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">replace_all_with_callback</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_substring</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="n">callback</span><span class="p">)(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="p">),</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data_for_callback</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">replace_count</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">find</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">replace</span><span class="p">,</span> <span class="k">const</span> <span class="kt">size_t</span> <span class="n">matches_max</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">replace_first</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">find</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">replace</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">reverse_string</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">set_to_string</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">shellescape</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">input</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">string_to_json</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">input_string</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">string_to_lowercase</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">string_to_title_case</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">string_to_uppercase</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">strip</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">);</span><br/><span class="kt">char</span> <span class="o">*</span><span class="nf">uint_to_string</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">number</span><span class="p">);</span><br/><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="nf">sample_strings</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">strings</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">)</span> <span class="cm">/* Does not dynamically allocate memory. */</span><span class="p">;</span><br/><span class="kt">double</span> <span class="nf">average_of_int_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">append_data_to_array</span><span class="p">(</span><span class="kt">void</span> <span class="o">**</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_current_alloc_size</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">data_size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">append_data_to_array_no_initial_alloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">**</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_current_alloc_size</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">data_size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">append_string_to_array</span><span class="p">(</span><span class="kt">char</span> <span class="o">***</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_current_alloc_size</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">append_string_to_array_no_initial_alloc</span><span class="p">(</span><span class="kt">char</span> <span class="o">***</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_current_alloc_size</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">append_string_to_file</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">content</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">append_string_to_string</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">string</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">string_length</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">string_alloc_size</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string_to_get_appended</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">string_to_get_appended_length</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">copy_file</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">source_filename</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">destination_filename</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">dict_add</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">dict_resize</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">dict_to_array</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">keys</span><span class="p">,</span> <span class="kt">void</span> <span class="o">***</span><span class="n">values</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size_of_keys_and_values</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">download_website</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">website</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">string</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">str_alloc_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">byte_max_cutoff</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">user_agent</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">download_websites</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">websites_to_download</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">num_websites</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">outputs</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">**</span><span class="n">lens</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">byte_limit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">aggressive_stop_on_error</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">file_exists</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">filter_filesystem_files_as_strings</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">directory</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">filter_function</span><span class="p">)(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">));</span><br/><span class="kt">int</span> <span class="nf">filter_ints</span><span class="p">(</span><span class="kt">int</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_size</span><span class="p">,</span> <span class="kt">int</span> <span class="o">*</span><span class="n">destination</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">condition</span><span class="p">)(</span><span class="kt">int</span><span class="p">));</span><br/><span class="kt">int</span> <span class="nf">find_max_int_in_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">find_min_int_in_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">frozen_set_in</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenSet</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">frozen_set_to_array</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenSet</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">keys</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size_of_keys</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">get_file_size</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">map_filesystem_files_as_strings</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">directory</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="n">map_function</span><span class="p">)(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">file_string_data</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">string_size</span><span class="p">));</span><br/><span class="kt">int</span> <span class="nf">memory_has_subchunk</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">memory</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">memory_length</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">subchunk</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">subchunk_length</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">prepend_string_to_array</span><span class="p">(</span><span class="kt">char</span> <span class="o">***</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_current_alloc_size</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">prepend_string_to_array_no_initial_alloc</span><span class="p">(</span><span class="kt">char</span> <span class="o">***</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">array_current_alloc_size</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">read_files_into_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">files_to_open</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">num_files</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">outputs</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">**</span><span class="n">lens</span><span class="p">,</span> <span class="kt">int</span> <span class="n">aggressive_stop_on_error</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">reduce_ints</span><span class="p">(</span><span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">operation</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">));</span><br/><span class="kt">int</span> <span class="nf">remove_file</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">replace_all_with_lens</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_len</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">find</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">find_len</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">replace</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">replace_len</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">output</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">new_len</span><span class="p">,</span> <span class="kt">int</span> <span class="o">*</span><span class="n">should_free_after_use</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">matches_max</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">num_matches</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">replace_memory</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">find</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">find_len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">replace</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">replace_len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">**</span><span class="n">output</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">output_length_without_nullt</span><span class="p">,</span> <span class="kt">int</span> <span class="o">*</span><span class="n">should_free_after_use</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">matches_max</span> <span class="cm">/* 0 for unlimited replacement */</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">num_matches_found</span><span class="p">,</span> <span class="kt">int</span> <span class="n">should_nullt</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">set_add</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">set_in</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">set_resize</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">set_to_array</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">keys</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size_of_keys</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">shuffle_strings_in_place</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">strings</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">string_array_uniq</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">output</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">output_size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">string_array_uniq_adjacent</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">first_array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">new_array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">new_size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">string_has_substr</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">string_length</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">substring</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">substring_length</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">string_to_int</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">sum_of_int_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">write_file</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">content</span><span class="p">);</span><br/><span class="kt">int</span> <span class="nf">write_to_file_with_mode</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filename</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">content</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">content_length</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">mode</span><span class="p">);</span><br/><span class="kt">long</span> <span class="nf">rand_number_from_range_inclusive_signed</span><span class="p">(</span><span class="kt">signed</span> <span class="kt">long</span> <span class="n">min</span><span class="p">,</span> <span class="kt">signed</span> <span class="kt">long</span> <span class="n">max</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="o">*</span><span class="nf">generate_range</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">start</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">end</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">step</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">range_size</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">array_total_string_length</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">count</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">common_prefix_length</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str1</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str2</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">common_suffix_length</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str1</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str2</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">count_occurrences_of_adjacent_data_in_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">array_of_adjacent_values</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">array_length</span><span class="p">,</span> <span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">memory</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">memory_length</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">count_occurrences_of_data_in_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">**</span><span class="n">array_of_pointers</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">array_length</span><span class="p">,</span> <span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">memory</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">memory_length</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">count_occurrences_of_string_in_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">array</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">array_length</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">count_occurrences_of_substr</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">substring</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">count_occurrences_of_substr_len</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">string_length</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">substring</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">substring_length</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">dict_hash</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">capacity</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">dict_size</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">filter</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">destination</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">dest_size</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">condition</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="p">));</span><br/><span class="kt">size_t</span> <span class="nf">frozen_dict_size</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="n">dict</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">frozen_dict_to_array</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="kt">char</span> <span class="o">***</span><span class="n">keys</span><span class="p">,</span> <span class="kt">void</span> <span class="o">***</span><span class="n">values</span><span class="p">,</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">size_of_keys_and_values</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">frozen_set_size</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenSet</span> <span class="o">*</span><span class="n">set</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">set_hash</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">capacity</span><span class="p">);</span><br/><span class="kt">size_t</span> <span class="nf">set_size</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">);</span><br/><span class="kt">ssize_t</span> <span class="nf">find_first_of</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">char_set</span><span class="p">);</span><br/><span class="kt">ssize_t</span> <span class="nf">find_last_of</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">char_set</span><span class="p">);</span><br/><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="nf">dict_new_instance</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span><br/><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="nf">frozen_dict_new_instance</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">num_pairs</span><span class="p">,</span> <span class="p">...);</span><br/><span class="k">struct</span> <span class="n">FrozenSet</span> <span class="o">*</span><span class="nf">frozen_set_new_instance</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">num_args</span><span class="p">,</span> <span class="p">...);</span><br/><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="nf">set_new_instance</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span><br/><span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">rand_number_from_range_inclusive_unsigned</span><span class="p">(</span><span class="kt">unsigned</span> <span class="kt">long</span> <span class="n">min</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="n">max</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">arraydup</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">num_mem</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">dict_get</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">frozen_dict_get</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">list_comprehension</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">input_array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">transform_func</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">),</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">filter_func</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">),</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">result_size</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">list_comprehension_multithreaded</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">input_array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">array_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">transform_func</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">),</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">filter_func</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">),</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">result_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">thread_count</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">memory_locate</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">haystack</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">haystack_len</span><span class="p">,</span> <span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">needle</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">needle_len</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">reject_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">condition</span><span class="p">)(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="p">),</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">result_size</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">replicate</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">repetitions</span><span class="p">);</span><br/><span class="kt">void</span> <span class="o">*</span><span class="nf">select_array</span><span class="p">(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">source</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">source_size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">condition</span><span class="p">)(</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="p">),</span> <span class="kt">size_t</span> <span class="o">*</span><span class="n">result_size</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">dict_del_key</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">dict_destructor</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">dict_iter</span><span class="p">(</span><span class="k">struct</span> <span class="n">Dict</span> <span class="o">*</span><span class="n">dict</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">callback</span><span class="p">)(</span><span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">frozen_dict_destructor</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="n">dict</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">frozen_dict_iter</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenDict</span> <span class="o">*</span><span class="n">frozen_dict</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">callback</span><span class="p">)(</span><span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">value</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">frozen_set_del_keys</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">keys</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">frozen_set_destructor</span><span class="p">(</span><span class="k">struct</span> <span class="n">FrozenSet</span> <span class="o">*</span><span class="n">frozen_set</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">frozen_set_iter</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">callback</span><span class="p">)(</span><span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">int_to_string_with_buffer</span><span class="p">(</span><span class="kt">long</span> <span class="kt">long</span> <span class="kt">int</span> <span class="n">number</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">buffer</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">map</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">transform</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">map_ints</span><span class="p">(</span><span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">transform</span><span class="p">)(</span><span class="kt">int</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">reduce</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">elem_size</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">operation</span><span class="p">)(</span><span class="kt">void</span> <span class="o">*</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">reverse_int_array_in_place</span><span class="p">(</span><span class="kt">int</span> <span class="o">*</span><span class="n">array</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">reverse_string_in_place</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">set_del_key</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">set_del_keys</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">keys</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">set_destructor</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">);</span><br/><span class="kt">void</span> <span class="nf">set_iter</span><span class="p">(</span><span class="k">struct</span> <span class="n">Set</span> <span class="o">*</span><span class="n">set</span><span class="p">,</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">callback</span><span class="p">)(</span><span class="kt">char</span> <span class="o">*</span><span class="n">key</span><span class="p">));</span><br/><span class="kt">void</span> <span class="nf">utoa</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">unsigned_value</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">output</span><span class="p">);</span><br/><br/>
17
+
18
+ <div style='color:white;padding-top:50px;padding-bottom:50px;font-family:Serif;'><center>And many, many more</center></div>
19
+ </div>
20
+ </body></html>
data/tools/lib2.html ADDED
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <style type='text/css'>
5
+ body { font-family: Monospace; }
6
+
7
+ .highlight table td { padding: 5px; } .highlight table pre { margin: 0; } .highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #5e5d83; font-style: italic; } .highlight .cm { color: #5e5d83; font-style: italic; } .highlight .c1 { color: #5e5d83; font-style: italic; } .highlight .cp { color: #465457; font-weight: bold; } .highlight .cs { color: #465457; font-weight: bold; font-style: italic; } .highlight .err { color: #f8f8f2; background-color: #403d3d; } .highlight .gi { color: rgb(0, 127, 0); } .highlight .gd { color: red; } .highlight .ge { color: #1b1d1e; font-style: italic; } .highlight .gr { color: red; } .highlight .gt { color: red; } .highlight .gh { color: #403d3d; } .highlight .go { color: #403d3d; } .highlight .gp { color: blue; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #465457; } .highlight .k, .highlight .kv { color: red; font-weight: bold; } .highlight .kd { color: red; font-weight: bold; } .highlight .kp { color: red; } .highlight .kc { color: red; } .highlight .kr { color: red; } .highlight .kt { color: red; } .highlight .kn { color: #f8f8f2; font-weight: bold; } .highlight .ow { color: #f8f8f2; font-weight: bold; } .highlight .o { color: #f8f8f2; font-weight: bold; } .highlight .mf { color: #af87ff; } .highlight .mh { color: #af87ff; } .highlight .il { color: #af87ff; } .highlight .mi { color: #af87ff; } .highlight .mo { color: #af87ff; } .highlight .m, .highlight .mb, .highlight .mx { color: #af87ff; } .highlight .se { color: #af87ff; } .highlight .sb { color: red; font-weight: bold; } .highlight .sc { color: red; font-weight: bold; } .highlight .sd { color: red; font-weight: bold; } .highlight .s2 { color: red; font-weight: bold; } .highlight .sh { color: red; font-weight: bold; } .highlight .si { color: red; font-weight: bold; } .highlight .sx { color: red; font-weight: bold; } .highlight .sr { color: red; font-weight: bold; } .highlight .s1 { color: red; font-weight: bold; } .highlight .ss { color: red; font-weight: bold; } .highlight .s, .highlight .sa, .highlight .dl { color: red; font-weight: bold; } .highlight .na { color: rgb(0, 127, 0); } .highlight .nc { color: #f8f8f2; } .highlight .nd { color: #f8f8f2; } .highlight .ne { color: #f8f8f2; } .highlight .nf, .highlight .fm { color: #f8f8f2; } .highlight .no { color: blue; } .highlight .bp { color: #f8f8f2; } .highlight .nb { color: #f8f8f2; } .highlight .ni { color: #f8f8f2; } .highlight .nn { color: #f8f8f2; } .highlight .vc { color: #f8f8f2; } .highlight .vg { color: #f8f8f2; } .highlight .vi { color: #f8f8f2; } .highlight .nv, .highlight .vm { color: #f8f8f2; } .highlight .w { color: #f8f8f2; } .highlight .nl { color: #f8f8f2; font-weight: bold; } .highlight .nt { color: #f8f8f2; } .highlight { color: #f8f8f2; background-color: #1b1d1e; }
8
+ </style>
9
+ </head>
10
+
11
+ <body>
12
+ <!--<h1>284 functions in library as far:</h1>
13
+ <h1>My personal philosophy behind this is in the `Articles' folder. It is well worth the read, and it is extremely unequivocal and strong.</h1>-->
14
+
15
+ <div class=highlight style='background-color: black;'>
16
+ <style type="text/css">
17
+ .highlight table td { padding: 5px; } .highlight table pre { margin: 0; } .highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #5e5d83; font-style: italic; } .highlight .cm { color: #5e5d83; font-style: italic; } .highlight .c1 { color: #5e5d83; font-style: italic; } .highlight .cp { color: #465457; font-weight: bold; } .highlight .cs { color: #465457; font-weight: bold; font-style: italic; } .highlight .err { color: #f8f8f2; background-color: #403d3d; } .highlight .gi { color: rgb(0, 127, 0); } .highlight .gd { color: red; } .highlight .ge { color: #1b1d1e; font-style: italic; } .highlight .gr { color: red; } .highlight .gt { color: red; } .highlight .gh { color: #403d3d; } .highlight .go { color: #403d3d; } .highlight .gp { color: blue; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #465457; } .highlight .k, .highlight .kv { color: red; font-weight: bold; } .highlight .kd { color: red; font-weight: bold; } .highlight .kp { color: red; } .highlight .kc { color: red; } .highlight .kr { color: red; } .highlight .kt { color: red; } .highlight .kn { color: #f8f8f2; font-weight: bold; } .highlight .ow { color: #f8f8f2; font-weight: bold; } .highlight .o { color: #f8f8f2; font-weight: bold; } .highlight .mf { color: #af87ff; } .highlight .mh { color: #af87ff; } .highlight .il { color: #af87ff; } .highlight .mi { color: #af87ff; } .highlight .mo { color: #af87ff; } .highlight .m, .highlight .mb, .highlight .mx { color: #af87ff; } .highlight .se { color: #af87ff; } .highlight .sb { color: red; font-weight: bold; } .highlight .sc { color: red; font-weight: bold; } .highlight .sd { color: red; font-weight: bold; } .highlight .s2 { color: red; font-weight: bold; } .highlight .sh { color: red; font-weight: bold; } .highlight .si { color: red; font-weight: bold; } .highlight .sx { color: red; font-weight: bold; } .highlight .sr { color: red; font-weight: bold; } .highlight .s1 { color: red; font-weight: bold; } .highlight .ss { color: red; font-weight: bold; } .highlight .s, .highlight .sa, .highlight .dl { color: red; font-weight: bold; } .highlight .na { color: rgb(0, 127, 0); } .highlight .nc { color: #f8f8f2; } .highlight .nd { color: #f8f8f2; } .highlight .ne { color: #f8f8f2; } .highlight .nf, .highlight .fm { color: #f8f8f2; } .highlight .no { color: blue; } .highlight .bp { color: #f8f8f2; } .highlight .nb { color: #f8f8f2; } .highlight .ni { color: #f8f8f2; } .highlight .nn { color: #f8f8f2; } .highlight .vc { color: #f8f8f2; } .highlight .vg { color: #f8f8f2; } .highlight .vi { color: #f8f8f2; } .highlight .nv, .highlight .vm { color: #f8f8f2; } .highlight .w { color: #f8f8f2; } .highlight .nl { color: #f8f8f2; font-weight: bold; } .highlight .nt { color: #f8f8f2; } .highlight { color: #f8f8f2; background-color: #1b1d1e; }
18
+ </style>
19
+ <br/><span class="cm">/*<br/>&nbsp;*&nbsp;&nbsp;&nbsp;One is more capable of using a computer in general this way,<br/>&nbsp;*&nbsp;&nbsp;&nbsp;with less power usage, quicker compilation time, interactive<br/>&nbsp;*&nbsp;&nbsp;&nbsp;script creation and maximally-quick program execution.<br/>&nbsp;*<br/>&nbsp;*&nbsp;&nbsp;&nbsp;The best of all worlds, truly.<br/>&nbsp;*/</span><br/><span class="kt">void</span> <span class="nf">nice_easy_c_code</span><span class="p">()</span><br/><span class="p">{</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">file</span> <span class="o">=</span> <span class="s">"Line one</span><span class="se">\n</span><span class="s">Line two line two</span><span class="se">\n</span><span class="s">Line 3</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">**</span><span class="n">lines</span> <span class="o">=</span> <span class="n">split</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">size</span><span class="p">,</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="mi">0</span> <span class="cm">/* max count */</span><span class="p">,</span> <span class="mi">1</span> <span class="cm">/* keep delims in? */</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="mi">4</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">equal_strings</span><span class="p">(</span><span class="s">"Line one</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">equal_strings</span><span class="p">(</span><span class="s">"Line two line two</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">]));</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">equal_strings</span><span class="p">(</span><span class="s">"Line 3</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">lines</span><span class="p">[</span><span class="mi">2</span><span class="p">]));</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">equal_strings</span><span class="p">(</span><span class="s">""</span><span class="p">,</span> <span class="n">lines</span><span class="p">[</span><span class="mi">3</span><span class="p">]));</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="cm">/* See how nice this C code is? It's so easy to do things. */</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="cm">&nbsp;&nbsp;&nbsp;&nbsp;/* Strip the line, get rid of newline */</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">stripped</span> <span class="o">=</span> <span class="n">strip</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span><br/><br/><span class="cm">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Turn it into printable json */</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">json</span> <span class="o">=</span> <span class="n">string_to_json</span><span class="p">(</span><span class="n">stripped</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">stripped</span><span class="p">);</span><br/><br/><span class="cm">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Show it on screen */</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="n">json</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">json</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">lines</span><span class="p">);</span><br/><span class="p">}</span><br/><br/><span class="cm">/* A more UNIX-centric example - but don't worry, Foundationallib is very cross-platform. */</span><br/><span class="kt">void</span> <span class="nf">do_things_on_a_unix_system_in_a_more_powerful_sort_of_c</span><span class="p">()</span><br/><span class="p">{</span><br/><span class="cp">#ifdef __unix__<br/></span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">output</span> <span class="o">=</span> <span class="n">backticks</span><span class="p">(</span><span class="s">"cd /tmp; pwd"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">size</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">equal_strings</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s">"/tmp</span><span class="se">\n</span><span class="s">"</span><span class="p">));</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">output_replicated</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">replicate</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="n">FOUNDATIONAL_LIB_STRLEN</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="cm">/* omit newline here */</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">),</span> <span class="mi">100</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="n">output_replicated</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">output</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">output_replicated</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="s">"Getting input works (popen) works - output is '/tmp' on UNIX."</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="cm">/* See how nice this C code is? It's so easy to do things. */</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="n">file_exists</span><span class="p">(</span><span class="s">"/usr/share/dict/words"</span><span class="p">))</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="s">"Reading words file into array."</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">size_t</span> <span class="n">lines</span><span class="p">;</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Lines have "\n" at end.</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">**</span><span class="n">words_file_lines</span> <span class="o">=</span> <span class="n">read_file_into_array</span><span class="p">(</span><span class="s">"/usr/share/dict/words"</span><span class="p">,</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">lines</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">assert</span><span class="p">(</span><span class="n">lines</span> <span class="o">&gt;</span> <span class="mi">1000</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">printf</span><span class="p">(</span><span class="s">"/usr/share/dict/words is %zu lines and we can efficiently play around with it in a more easy fashion than Python.</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">lines</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="s">"Shuffling words"</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Shuffle all 100,000+ (or however many is in your words file) words in the dictionary in place.</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">shuffle_strings_in_place</span><span class="p">(</span><span class="n">words_file_lines</span><span class="p">,</span> <span class="n">lines</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">const</span> <span class="kt">size_t</span> <span class="n">number_of_random_words_to_show_on_screen</span> <span class="o">=</span> <span class="n">rand_number_from_range_inclusive_unsigned</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="mi">120</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">number_of_random_words_to_show_on_screen</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Get rid of the newline.</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">word2</span> <span class="o">=</span> <span class="n">strip</span><span class="p">(</span><span class="n">words_file_lines</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Make the words ready to be printed to stdout.</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">word3</span> <span class="o">=</span> <span class="n">string_to_json</span><span class="p">(</span><span class="n">word2</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">word2</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Print the word to stdout</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">printf</span><span class="p">(</span><span class="s">"Randomly chosen word is %s.</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">word3</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">word3</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// No need to free the words, you can use free_array() or free_string_array()</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free_string_array</span><span class="p">(</span><span class="n">words_file_lines</span><span class="p">,</span> <span class="n">lines</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><span class="cp">#endif<br/></span><span class="p">}</span><br/><br/>
20
+ </div>
21
+
22
+ </body></html>
data/tools/lib3.html ADDED
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <style type='text/css'>
5
+ body { font-family: Monospace; }
6
+
7
+ .highlight table td { padding: 5px; } .highlight table pre { margin: 0; } .highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #5e5d83; font-style: italic; } .highlight .cm { color: #5e5d83; font-style: italic; } .highlight .c1 { color: #5e5d83; font-style: italic; } .highlight .cp { color: #465457; font-weight: bold; } .highlight .cs { color: #465457; font-weight: bold; font-style: italic; } .highlight .err { color: #f8f8f2; background-color: #403d3d; } .highlight .gi { color: rgb(0, 127, 0); } .highlight .gd { color: red; } .highlight .ge { color: #1b1d1e; font-style: italic; } .highlight .gr { color: red; } .highlight .gt { color: red; } .highlight .gh { color: #403d3d; } .highlight .go { color: #403d3d; } .highlight .gp { color: blue; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #465457; } .highlight .k, .highlight .kv { color: red; font-weight: bold; } .highlight .kd { color: red; font-weight: bold; } .highlight .kp { color: red; } .highlight .kc { color: red; } .highlight .kr { color: red; } .highlight .kt { color: red; } .highlight .kn { color: #f8f8f2; font-weight: bold; } .highlight .ow { color: #f8f8f2; font-weight: bold; } .highlight .o { color: #f8f8f2; font-weight: bold; } .highlight .mf { color: #af87ff; } .highlight .mh { color: #af87ff; } .highlight .il { color: #af87ff; } .highlight .mi { color: #af87ff; } .highlight .mo { color: #af87ff; } .highlight .m, .highlight .mb, .highlight .mx { color: #af87ff; } .highlight .se { color: #af87ff; } .highlight .sb { color: red; font-weight: bold; } .highlight .sc { color: red; font-weight: bold; } .highlight .sd { color: red; font-weight: bold; } .highlight .s2 { color: red; font-weight: bold; } .highlight .sh { color: red; font-weight: bold; } .highlight .si { color: red; font-weight: bold; } .highlight .sx { color: red; font-weight: bold; } .highlight .sr { color: red; font-weight: bold; } .highlight .s1 { color: red; font-weight: bold; } .highlight .ss { color: red; font-weight: bold; } .highlight .s, .highlight .sa, .highlight .dl { color: red; font-weight: bold; } .highlight .na { color: rgb(0, 127, 0); } .highlight .nc { color: #f8f8f2; } .highlight .nd { color: #f8f8f2; } .highlight .ne { color: #f8f8f2; } .highlight .nf, .highlight .fm { color: #f8f8f2; } .highlight .no { color: blue; } .highlight .bp { color: #f8f8f2; } .highlight .nb { color: #f8f8f2; } .highlight .ni { color: #f8f8f2; } .highlight .nn { color: #f8f8f2; } .highlight .vc { color: #f8f8f2; } .highlight .vg { color: #f8f8f2; } .highlight .vi { color: #f8f8f2; } .highlight .nv, .highlight .vm { color: #f8f8f2; } .highlight .w { color: #f8f8f2; } .highlight .nl { color: #f8f8f2; font-weight: bold; } .highlight .nt { color: #f8f8f2; } .highlight { color: #f8f8f2; background-color: #1b1d1e; }
8
+ </style>
9
+ </head>
10
+
11
+ <body>
12
+ <!--<h1>283 functions in library as far:</h1>
13
+ <h1>My personal philosophy behind this is in the `Articles' folder. It is well worth the read, and it is extremely unequivocal and strong.</h1>-->
14
+
15
+ <div class=highlight style='background-color: black;'>
16
+ <style type="text/css">
17
+ .highlight table td { padding: 5px; } .highlight table pre { margin: 0; } .highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #5e5d83; font-style: italic; } .highlight .cm { color: #5e5d83; font-style: italic; } .highlight .c1 { color: #5e5d83; font-style: italic; } .highlight .cp { color: #465457; font-weight: bold; } .highlight .cs { color: #465457; font-weight: bold; font-style: italic; } .highlight .err { color: #f8f8f2; background-color: #403d3d; } .highlight .gi { color: rgb(0, 127, 0); } .highlight .gd { color: red; } .highlight .ge { color: #1b1d1e; font-style: italic; } .highlight .gr { color: red; } .highlight .gt { color: red; } .highlight .gh { color: #403d3d; } .highlight .go { color: #403d3d; } .highlight .gp { color: blue; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #465457; } .highlight .k, .highlight .kv { color: red; font-weight: bold; } .highlight .kd { color: red; font-weight: bold; } .highlight .kp { color: red; } .highlight .kc { color: red; } .highlight .kr { color: red; } .highlight .kt { color: red; } .highlight .kn { color: #f8f8f2; font-weight: bold; } .highlight .ow { color: #f8f8f2; font-weight: bold; } .highlight .o { color: #f8f8f2; font-weight: bold; } .highlight .mf { color: #af87ff; } .highlight .mh { color: #af87ff; } .highlight .il { color: #af87ff; } .highlight .mi { color: #af87ff; } .highlight .mo { color: #af87ff; } .highlight .m, .highlight .mb, .highlight .mx { color: #af87ff; } .highlight .se { color: #af87ff; } .highlight .sb { color: red; font-weight: bold; } .highlight .sc { color: red; font-weight: bold; } .highlight .sd { color: red; font-weight: bold; } .highlight .s2 { color: red; font-weight: bold; } .highlight .sh { color: red; font-weight: bold; } .highlight .si { color: red; font-weight: bold; } .highlight .sx { color: red; font-weight: bold; } .highlight .sr { color: red; font-weight: bold; } .highlight .s1 { color: red; font-weight: bold; } .highlight .ss { color: red; font-weight: bold; } .highlight .s, .highlight .sa, .highlight .dl { color: red; font-weight: bold; } .highlight .na { color: rgb(0, 127, 0); } .highlight .nc { color: #f8f8f2; } .highlight .nd { color: #f8f8f2; } .highlight .ne { color: #f8f8f2; } .highlight .nf, .highlight .fm { color: #f8f8f2; } .highlight .no { color: blue; } .highlight .bp { color: #f8f8f2; } .highlight .nb { color: #f8f8f2; } .highlight .ni { color: #f8f8f2; } .highlight .nn { color: #f8f8f2; } .highlight .vc { color: #f8f8f2; } .highlight .vg { color: #f8f8f2; } .highlight .vi { color: #f8f8f2; } .highlight .nv, .highlight .vm { color: #f8f8f2; } .highlight .w { color: #f8f8f2; } .highlight .nl { color: #f8f8f2; font-weight: bold; } .highlight .nt { color: #f8f8f2; } .highlight { color: #f8f8f2; background-color: #1b1d1e; }
18
+ </style>
19
+ <span class="cm">/* Networking features are disabled by default. Use -DFOUNDATIONAL_LIB_NETWORK_FUNCTIONS_ENABLED=1 */</span><br/><br/><span class="cm">/* Example - Download all the popular sites anywhere. */</span><br/><span class="kt">void</span> <span class="nf">test_downloading</span><span class="p">()</span><br/><span class="p">{</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">const</span> <span class="kt">int</span> <span class="n">byte_limit</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">const</span> <span class="kt">int</span> <span class="n">how_many_to_download</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">size_t</span> <span class="n">alloc_size</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">site</span> <span class="o">=</span> <span class="s">"https://www.google.com/"</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">download_website</span><span class="p">(</span><span class="n">site</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">string</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">alloc_size</span><span class="p">,</span> <span class="mi">0</span> <span class="cm">/* byte limit - no limit for how much (0) */</span><span class="p">,</span> <span class="nb">NULL</span> <span class="cm">/* ua - pretend to be chrome by default. */</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">printf</span><span class="p">(</span><span class="s">"size is %zu</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">FOUNDATIONAL_LIB_STRLEN</span><span class="p">(</span><span class="n">string</span><span class="p">));</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">string</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Array of 100 websites</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">websites</span><span class="p">[</span><span class="mi">100</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.google.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.youtube.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.facebook.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.twitter.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.instagram.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.linkedin.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.reddit.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.pinterest.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.tumblr.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.snapchat.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.twitch.tv"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.netflix.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.amazon.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.ebay.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.paypal.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.microsoft.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.apple.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.ibm.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.oracle.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.cnn.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.bbc.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.nytimes.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.washingtonpost.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.nationalgeographic.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.wikipedia.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.imdb.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.forbes.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.bloomberg.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.wsj.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.cnbc.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.espn.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.nba.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.nfl.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.mlb.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.nhl.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.etsy.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.walmart.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.target.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.bestbuy.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.craigslist.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.reddit.com/r/all"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.quora.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.stackoverflow.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.github.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.gitlab.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.bitbucket.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.ubuntu.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.debian.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.centos.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.docker.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.hub.docker.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.aws.amazon.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.azure.microsoft.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.gcp.google.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.heroku.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.wordpress.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.blogger.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.medium.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.trello.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.openai.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.slack.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.zoom.us"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.skype.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.whatsapp.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.telegram.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.viber.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.spotify.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.apple.com/music"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.soundcloud.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.last.fm"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.goodreads.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.coursera.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.udacity.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.edx.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.khanacademy.org"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.codecademy.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.stackexchange.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.aljazeera.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.reuters.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.apnews.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.buzzfeed.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.huffpost.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.techcrunch.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.engadget.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.mashable.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.vox.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.theverge.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.polygon.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.gamespot.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.ign.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.ea.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.ubisoft.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.activision.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.riotgames.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.nintendo.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.playstation.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">"https://www.xbox.com"</span><span class="p">,</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;};<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">shuffle_strings_in_place</span><span class="p">((</span><span class="kt">char</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">websites</span><span class="p">,</span> <span class="mi">100</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">char</span> <span class="o">**</span><span class="n">outputs</span><span class="p">;</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">size_t</span> <span class="o">*</span><span class="n">lens</span><span class="p">;</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="s">"Downloading"</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Pretends to be Chrome by default.</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">download_websites</span><span class="p">(</span><span class="n">websites</span><span class="p">,</span> <span class="n">how_many_to_download</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">outputs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">lens</span><span class="p">,</span><span class="n">byte_limit</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">puts</span><span class="p">(</span><span class="s">"Downloaded"</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">print_size_t_array</span><span class="p">(</span><span class="n">lens</span><span class="p">,</span> <span class="n">how_many_to_download</span><span class="p">);</span><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">how_many_to_download</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">printf</span><span class="p">(</span><span class="s">"The webpage is %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">outputs</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free_string_array</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">how_many_to_download</span><span class="p">);</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">free</span><span class="p">(</span><span class="n">lens</span><span class="p">);</span><br/><span class="p">}</span><br/>
20
+ </div>
21
+
22
+ </body></html>