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/run_lib ADDED
@@ -0,0 +1,365 @@
1
+ #!/usr/bin/env ruby
2
+ $dangerous_c_functions_to_fail_to_compile_if_detected = [
3
+ "gets", "fgets",
4
+ "strcpy", "strcat",
5
+ "sprintf", "vsprintf",
6
+ "scanf", "fscanf",
7
+ "system",
8
+ "chown", "chmod", "chgrp",
9
+ "alloca",
10
+ "execl", "execle", "execlp", "execv", "execve", "execvp",
11
+ "bcopy", "bzero",
12
+ ]
13
+
14
+ puts "Not using #{$dangerous_c_functions_to_fail_to_compile_if_detected.inspect}"
15
+
16
+ file_name = "funcs_c"
17
+ FILE_NAME = file_name
18
+ at_exit do
19
+ system "rm -f destination_file.txt ex_ample.txt existing_file.txt source_file.txt"
20
+ end
21
+
22
+ NETWORKING = false
23
+
24
+ if ARGV[0] == "short"
25
+ short = "short"
26
+ elsif ARGV[0] == "supershort"
27
+ short = "supershort"
28
+ else
29
+ short = ""
30
+ end
31
+
32
+
33
+ def format_file(file, suf = "")
34
+ #return
35
+
36
+ require "shellwords"
37
+
38
+ c = <<CMD
39
+ clang-format -i -style="{BasedOnStyle: LLVM, IndentWidth: 4, UseTab: Never, IndentCaseLabels: true, ColumnLimit: 500, BreakBeforeBraces: Allman}"
40
+ CMD
41
+ #"
42
+ c.strip!
43
+ file = file.shellescape
44
+ c << " " << file
45
+ c << suf
46
+ puts c
47
+ system c, exception: true
48
+ end
49
+
50
+ def fix(string)
51
+ string.gsub(/\n{3,}/, "\n\n").gsub(/\*\/\n+FOUN/m, "*/\nFOUN")
52
+ end
53
+
54
+ def write_file(a, b)
55
+ File.write(a, fix(b))
56
+ end
57
+
58
+ FORMAT = true
59
+
60
+ if FORMAT && short == ""
61
+ format_file file_name
62
+ end
63
+
64
+
65
+ VALGRIND = "valgrind --leak-check=full --show-leak-kinds=all --exit-on-first-error=yes --error-exitcode=1"
66
+ if FORMAT
67
+ system "which clang-format > /dev/null", exception: true
68
+ end
69
+ require "fileutils"
70
+
71
+ begin
72
+ FileUtils.cd "tools"
73
+ rescue StandardError
74
+ end
75
+
76
+ begin
77
+ FileUtils.mkdir_p "../platforms/header_and_separate_compilation_unit"
78
+ rescue StandardError
79
+ end
80
+
81
+ data = <<INTRO
82
+ /*
83
+ * 2023, Gregory Cohen <gregorycohennew@gmail.com>
84
+ *
85
+ *
86
+ * DONATION REQUEST: If this free software has helped you and you find
87
+ * it valuable, please consider making a donation to support the ongoing
88
+ * development and maintenance of this project. Your contribution helps
89
+ * ensure the availability of this library to the community and encourages
90
+ * further improvements.
91
+ *
92
+ *
93
+ * Donations can be made at:
94
+ * https://www.paypal.com/paypalme/cfoundationallib
95
+ *
96
+ *
97
+ *
98
+ * This code is in the public domain.
99
+ *
100
+ * You are free to use it for any commercial or noncommercial purpose.
101
+ *
102
+ */
103
+
104
+ #ifndef _FOUNDATIONAL_LIB_HEADER_GUARD
105
+ #define _FOUNDATIONAL_LIB_HEADER_GUARD
106
+
107
+ #ifdef _WIN32
108
+ #define _CRT_RAND_S
109
+ #endif
110
+
111
+ #include <stdint.h> /* FOR SIZE_MAX */
112
+ #include <ctype.h>
113
+ #include <stdarg.h>
114
+ #include <stdio.h>
115
+ #include <stdlib.h>
116
+ #include <string.h>
117
+ #include <errno.h>
118
+ #include <assert.h>
119
+
120
+ /* Make sure memmem() is defined in all cases to avoid warnings or errors. */
121
+ void *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen);
122
+
123
+ // structs (types)
124
+ struct Dict;
125
+ struct FrozenDict;
126
+ struct Set;
127
+ struct FrozenSet;
128
+
129
+ #ifndef FOUNDATIONAL_LIB_AGGRESSIVE_DIE_TYPE
130
+ /**
131
+ * @brief Type of the aggressive die variable.
132
+ *
133
+ * This macro defines the type of the aggressive die variable, which
134
+ * uses 1 byte of overhead by default. It can be configured as static
135
+ * or nonstatic based on user preference.
136
+ */
137
+ #define FOUNDATIONAL_LIB_AGGRESSIVE_DIE_TYPE unsigned char
138
+ #endif
139
+
140
+
141
+
142
+ INTRO
143
+
144
+ # C++ is more strict, so catch more possible errors
145
+ write_file file_name, fix(File.read(file_name))
146
+
147
+ def get_headers(foundational_lib_func_replacement, hg = true)
148
+ require "set"
149
+ malloc_func = false
150
+
151
+ current_func = ""
152
+
153
+ malloc_funcs = Set.new
154
+
155
+ file = File.read("funcs_c").gsub("static", "")
156
+
157
+ $dangerous_c_functions_to_fail_to_compile_if_detected.map do |i|
158
+ "(" + i + "\\([^\\n]+?\\)" + ")"
159
+ end.each do |q|
160
+ if match = file.match(/#{q}/mi)
161
+ raise match.to_s
162
+ end
163
+ end
164
+
165
+ if match = file.match(/^(size_t|void)/)
166
+ raise match.to_s
167
+ end
168
+ if match = file.match(/=\s*(malloc|realloc|calloc)\(/)
169
+ raise match.to_s
170
+ end
171
+ if match = file.match(/^\s*free\(/)
172
+ raise match.to_s
173
+ end
174
+
175
+ line_num = 0
176
+ match = file.gsub("char *", "").gsub("\n") do |i|
177
+ "\n#{line_num += 1}."
178
+ end.split("\n").grep(/ALLOC|CPY/).map do |i|
179
+ i.split("//")[0]
180
+ end.grep(/ [\*\-\+\/] /)
181
+ match -= match.grep(/FOUNDATIONAL_LIB_FUNC|#define|^.*\*\/\s*$|^\s*\d+\.\s*\* /)
182
+
183
+ match -= match.grep(/Safe/)
184
+
185
+ if match.size > 0
186
+ # If unsable allocation, fail to compile.
187
+ match.join("\n").gsub("()", "(char *)").split("\n").each_with_index do |i, index|
188
+ puts i
189
+ cmd = "micro +%s:80 %s" % [i.split(".", 2).first.to_i + 1, FILE_NAME]
190
+ puts cmd
191
+ system cmd
192
+ exit
193
+ puts "#{index} | #{i}"
194
+ end
195
+
196
+ exit if ARGV.first == "e"
197
+ end
198
+
199
+ file.split("\n").each_with_index do |line, index|
200
+ index += 1
201
+ if match = (line.match /(?:static inline|FOUNDATIONAL_LIB_FUNC) ([_0-9a-zA-Z\* ]+) ([\*_a-zA-Z0-9]+)\(.+/)
202
+ if match[2].match /test/
203
+ else
204
+ current_func = match[0].gsub("FOUNDATIONAL_LIB_FUNC", foundational_lib_func_replacement).split("{", 2)[0].strip
205
+ end
206
+ next
207
+ elsif line.match /FOUNDATIONAL_LIB_FUNC/
208
+ unless line.match /#ifndef|#define/
209
+ raise [index, line].inspect
210
+ end
211
+ end
212
+ if !malloc_func || ((line.match /FOUNDATIONAL_LIB_MEMORY_ALLOCATOR_/) && !line.match(/FOUNDATIONAL_LIB_MEMORY_ALLOCATOR_FREE|#ifndef|#ifdef|#define/))
213
+ # puts "%s" % [current_func, line.strip.clear]
214
+ unless current_func.strip == ""
215
+ malloc_funcs.add current_func + ";"
216
+ end
217
+ end
218
+ end
219
+ funcs = malloc_funcs.to_a.sort
220
+
221
+ # Remove internal functions like lib compare ushorts etc.
222
+ funcs -= funcs.grep(/FOUNDATIONAL/)
223
+
224
+ # raise(match.to_s) if match = funcs.grep(/FOUNDATIONAL/)
225
+
226
+ hg = ""
227
+ hge = ""
228
+ if hg
229
+ hg = "#ifndef _FOUNDATIONAL_LIB_HEADER_GUARD
230
+ #define _FOUNDATIONAL_LIB_HEADER_GUARD
231
+ "
232
+
233
+ hge = "#endif"
234
+ end
235
+
236
+ "
237
+ #{hg}
238
+ #include <ctype.h>
239
+ #include <stdarg.h>
240
+ #include <stdio.h>
241
+ #ifdef _WIN32
242
+ #define _CRT_RAND_S
243
+ #endif
244
+ #include <stdlib.h>
245
+
246
+
247
+ #include <string.h>
248
+
249
+
250
+ #include <errno.h>
251
+
252
+
253
+ #ifndef FOUNDATIONAL_LIB_AGGRESSIVE_DIE_TYPE
254
+ /**
255
+ * @brief Type of the aggressive die variable.
256
+ *
257
+ * This macro defines the type of the aggressive die variable, which
258
+ * uses 1 byte of overhead by default. It can be configured as static
259
+ * or nonstatic based on user preference.
260
+ */
261
+ #define FOUNDATIONAL_LIB_AGGRESSIVE_DIE_TYPE static unsigned char
262
+ #endif
263
+
264
+ struct Dict;
265
+ struct FrozenDict;
266
+ struct Set;
267
+ struct FrozenSet;
268
+ " << ($funcs = funcs.join("\n")) << "\n" << hge
269
+ end
270
+
271
+ # If even a single function is not documented, fail.
272
+ nondocs = []
273
+
274
+ File.read(file_name).gsub(/FOUNDATIONAL_LIB_([A-Z]+)\s*\nFOUNDATIONAL_LIB_FUNC [a-z]+ test[a-zA-Z0-9_]+/m) do |i|
275
+ raise i
276
+ end
277
+
278
+ File.read(file_name).gsub(/\}\s+(?:FOUNDATIONAL_LIB_[A-Z]+\s+)*(static inline|FOUNDATIONAL_LIB_FUNC)([^\n]+)/m) do |i|
279
+ nondocs << i
280
+ nil
281
+ end
282
+
283
+ nondocs -= nondocs.grep(/test/)
284
+ unless nondocs.size == 0
285
+ puts nondocs
286
+ raise "lacking docs"
287
+ end
288
+
289
+ main = nil
290
+
291
+ data2 = data + (File.read(file_name).gsub(/(int main|((FOUNDATIONAL_LIB_FUNC|static inline) (int|void|char) \**test.*?))\s*\(.*?\)\s*.*?\n\}/m) do |i|
292
+ if i.match /int main/
293
+ main = i
294
+ end
295
+
296
+ if i.match /#define/
297
+ raise i.to_s
298
+ end
299
+ ""
300
+ end)
301
+ raise if main.nil?
302
+ DELIM = "Philosophy of this is in"
303
+ data2 = data2.split(DELIM, 2)
304
+
305
+ data2[1].gsub!(/^.*[tT]est.*$/, "")
306
+
307
+ raise if data2[0].size < 100
308
+
309
+ #puts data2[0]
310
+ data2 = data2.join(DELIM)
311
+
312
+ data2 = data2.gsub("#include <assert.h>\n", "") + "\n#endif"
313
+
314
+ puts nondocs.sort
315
+ write_file "HEADERS.h", get_headers("")
316
+ write_file "HEADERS_ONLY_FUNCTIONS.h", $funcs + "\n"
317
+ write_file "HEADERS_WITH_PREFIX.h", get_headers("FOUNDATIONAL_LIB_FUNC")
318
+ write_file "foundationallib.h", data2
319
+ write_file "../foundationallib.h", data2
320
+
321
+ # If the person wants a module to link with,
322
+ # then we change the per compilation unit aggressive die variable
323
+ # (used to control error handling at runtime, it usually takes 1 byte
324
+ # per compilation unit), and make it global
325
+ # for the whole program - 1 byte of overhead to control error
326
+ # handling (actually, this can save on code,
327
+ # if aggressive die is set to true (1) )
328
+ #
329
+ # The variable will be defined in this file only, and not the header then.
330
+
331
+ regex = /(FOUNDATIONAL_LIB_PURE|FOUNDATIONAL_LIB_NOTHROW|FOUNDATIONAL_LIB_MALLOC|FOUNDATIONAL_LIB_WARN_UNUSED_RESULT|FOUNDATIONAL_LIB_NONNULL|FOUNDATIONAL_LIB_PRINTF_FUNC)\n/m
332
+ write_file("../platforms/header_and_separate_compilation_unit/foundationallib_noninline.c",
333
+ ("#include \"./foundationallib_noninline.h\"\n" + "#define FOUNDATIONAL_LIB_UNSAFE_FUNCTIONS_ENABLED 0\n\n" + data2.gsub(regex, " \\1 ").gsub(/static inline/, " ").gsub(/inline/, " ").gsub("#ifndef _FOUNDATIONAL_LIB_HEADER_GUARD\n#define _FOUNDATIONAL_LIB_HEADER_GUARD", "#if 1")))
334
+
335
+ write_file "../platforms/header_and_separate_compilation_unit/foundationallib_noninline.h", get_headers("")
336
+ format_file("../platforms/header_and_separate_compilation_unit/foundationallib_noninline.c", "&")
337
+
338
+ write_file("../platforms/header_and_separate_compilation_unit_all_safe_funcs/foundationallib_noninline.c",
339
+ ("#include \"./foundationallib_noninline.h\"\n" + "#define FOUNDATIONAL_LIB_UNSAFE_FUNCTIONS_ENABLED 0\n\n" + data2.gsub(regex, " \\1 ").gsub(/static inline/, " ").gsub(/inline/, " ").gsub("#ifndef _FOUNDATIONAL_LIB_HEADER_GUARD\n#define _FOUNDATIONAL_LIB_HEADER_GUARD", "#if 1")))
340
+
341
+ format_file("../platforms/header_and_separate_compilation_unit_all_safe_funcs/foundationallib_noninline.c", "&")
342
+ write_file "../platforms/header_and_separate_compilation_unit_all_safe_funcs/foundationallib_noninline.h", "#define FOUNDATIONAL_LIB_UNSAFE_FUNCTIONS_ENABLED 0\n\n" + get_headers("")
343
+
344
+ omit_list =/FOUNDATIONAL_LIB_PURE|FOUNDATIONAL_LIB_NOTHROW|FOUNDATIONAL_LIB_MALLOC|FOUNDATIONAL_LIB_WARN_UNUSED_RESULT|FOUNDATIONAL_LIB_NONNULL|FOUNDATIONAL_LIB_PRINTF_FUNC/m
345
+ write_file "../docs/src/foundationallib.h", data2.gsub(omit_list, "")
346
+ write_file wtests = file_name.sub(/_c.c$/, "") + "_with_tests.c", wtests_data = data.sub("struct FrozenSet;\n", "struct FrozenSet;\n\n#define test_foundationallib_test_error_handler(msg) perror(msg); exit(1);\n\n") + File.read(file_name) + "\n#endif"
347
+ write_file "../tests/lib_and_tests.c", wtests_data
348
+ puts "Copied."
349
+ if ARGV[0] == "norun"
350
+ puts "No run"
351
+ else
352
+ if NETWORKING
353
+ curl_flag = "-lcurl"
354
+ else
355
+ curl_flag = ""
356
+ end
357
+
358
+ # C++ is more strict, so catch more possible errors
359
+ cmd = "set -x; set -e;
360
+ gcc -DFOUNDATIONAL_LIB_LIBC_LOCKING_IO_OPERATIONS=0 -DFOUNDATIONAL_LIB_ASSERT_ARGUMENT_CHECKING=0 -O2 -pedantic -xc -m32 -g #{wtests} -o with_tests32 -Wall -Wextra -Werror -Wfatal-errors #{curl_flag} &&\\
361
+ g++ -DFOUNDATIONAL_LIB_ASSERT_ARGUMENT_CHECKING=1 -pedantic -xc++ -g #{wtests} -o with_tests -Wall -Wextra -Werror -Wfatal-errors #{curl_flag} &&\\
362
+ ./with_tests #{short} && #{VALGRIND} ./with_tests #{short}"
363
+ puts cmd
364
+ system cmd, exception: true
365
+ end
data/tools/update ADDED
@@ -0,0 +1,44 @@
1
+ #!/bin/bash
2
+ set -x
3
+ set -e
4
+
5
+ cd ../tools/..
6
+ for file in `find -name '*.c'`
7
+ do
8
+ clang-format -style="{BasedOnStyle: LLVM, IndentWidth: 4, UseTab: Never, IndentCaseLabels: true, ColumnLimit: 500, BreakBeforeBraces: Allman}" -i "$file"
9
+ done
10
+
11
+ cd ./tools
12
+
13
+ if test "$1" = "fast"; then
14
+ cond=true
15
+ echo Fast
16
+ else
17
+ echo Checking
18
+ ./run_lib 2>&1 | grep -q 'ERROR SUMMARY: 0 errors from 0 contexts'
19
+ fi
20
+
21
+ if [ $? -eq 0 ]; then
22
+ ./documentation_generate
23
+ ./make_image_of_docs
24
+ cd ../tests
25
+ ./run_test_suite.sh
26
+ cd ../tools
27
+ ruby lynx.rb
28
+ cd ..
29
+ ./GENERATE_CUSTOM_FOUNDATIONALLIB.rb foundationallib.h MY_COMPANY_ custom_library_example.h
30
+
31
+ cd platforms/header_and_separate_compilation_unit
32
+
33
+ make clean || true
34
+ make
35
+
36
+ ./non_inline_example
37
+
38
+ exit 0
39
+ else
40
+ echo Failed to run
41
+ exit 1
42
+ fi
43
+
44
+ exit 1
data/tools/with_tests ADDED
Binary file
Binary file
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ #
4
+ #
5
+ # transpile_slow_scripting_into_c.rb
6
+ # Usage: transpile_slow_into_c.rb <file-to-transpile> <out-file [/dev/stdout] by default>
7
+
8
+ # The output then has helpful comments to allow you to easily transpile the scripting language into fast C, either with ChatGPT or manually.
9
+ # This is an invaluable resource to help you speed up code - in general.
10
+ # And the C functions in this library are very very fast and tested.
11
+ #
12
+ # I would appreciate someone making this script longer and better to acommodate for more languages.
13
+ # That would be a great contribution. Please email me <gregorycohennew@gmail.com>.
14
+ #
15
+ #
16
+ # It would be great if this took an OpenAI API key and then used GPT4 to transpile.
17
+ # Could do a hell of a good and safe job - because these functions are really obvious how they work and have exceptional error handling.
18
+ #
19
+
20
+ def green(str = "", file = STDOUT)
21
+ if file.tty?
22
+ green = "\033[0;32m"
23
+ nc = "\033[0m" # No Color
24
+ file.puts green << str << nc << "\n"
25
+ else
26
+ file.puts str
27
+ end
28
+ end
29
+
30
+ if ARGV.size != 1 && ARGV.size != 2
31
+ GREEN = '\033[0;32m'
32
+ NC = '\033[0m' # No Color
33
+ green "transpile_slow_into_c.rb"
34
+ green
35
+ green "Usage: transpile_slow_into_c.rb <file-to-transpile> <out-file [/dev/stdout] by default>"
36
+ green
37
+ green
38
+ green "The output then has helpful comments to allow you to easily transpile the scripting language into fast C, either with ChatGPT or manually."
39
+ green "This is an invaluable resource to help you speed up code - in general."
40
+
41
+ green "And the C functions in this library are very very fast and tested."
42
+
43
+ green
44
+
45
+ green "I would appreciate someone making this script longer and better to acommodate for more languages."
46
+
47
+ green "That would be a great contribution. Please email me <gregorycohennew@gmail.com>."
48
+ green
49
+ green "It would be great if this took an OpenAI API key and then used GPT4 to transpile."
50
+ green "Could do a hell of a good and safe job - because these functions are really obvious how they work and have exceptional error handling."
51
+
52
+ exit 1
53
+ end
54
+ outfile = ARGV[1] || "/dev/stdout"
55
+ green("Writing to #{outfile}", file = STDERR)
56
+
57
+ H = File.read(`find -name HEADERS_ONLY_FUNCTIONS.h`.chomp("\n"))
58
+ H_LINES = H.split("\n")
59
+ $out = String.new
60
+
61
+ def puts(str = "")
62
+ $out << str << "\n"
63
+ end
64
+
65
+ $comments = 0
66
+ in_ = File.read(ARGV.first)
67
+
68
+ def tr(*a)
69
+ $comments += 1
70
+ first = a.shift.split(/\s+OR\s+/i)
71
+ rest = a.flatten
72
+ if rest.size > 1
73
+ q = "# "
74
+ q2 = q + " "
75
+ newline = "\n"
76
+ else
77
+ q = ""
78
+ q2 = ""
79
+ newline = " "
80
+ end
81
+
82
+ num = 0
83
+
84
+ first = first.map do |i|
85
+ res = String.new
86
+ if first.size > 1
87
+ #num += 1
88
+ #res << num.to_s << ". "
89
+ end
90
+ res + i + "()"
91
+ end.join(" or ")
92
+
93
+ num = 0
94
+
95
+ rest = rest.map do |i|
96
+ if i.class == Array
97
+ raise rest.to_s
98
+ end
99
+ res = String.new
100
+ if rest.size > 1
101
+ num += 1
102
+ res << num.to_s << ". "
103
+ end
104
+ res << i.chomp(";")
105
+
106
+ if rest.size > 1
107
+ res << "\n"
108
+ else
109
+ res << " "
110
+ end
111
+
112
+ res << q
113
+ end.join(" or ")
114
+
115
+ " # Transpile #{first} with | #{newline}" << q2 << (rest) << " as appropriate."
116
+ end
117
+
118
+ line_n = 0
119
+ in_.each_line do |line|
120
+ line_n += 1
121
+ if line_n == 2
122
+ require "shellwords"
123
+ puts "# Generated from #{File.basename __FILE__}"
124
+ nlines = "#\n" + `echo #{"Allows for easy transpilation from slow languages that hinder people's lives in many ways (scriping languages) into machine-efficient code that actually runs the same operations without wasting CPU power, electricity, money, time, user's (programmer's) programmatic interactivity (ability to quickly run and recompile near-instantly) or people's attention, and is somewhat ideal.".shellescape} | fmt -w 78`
125
+ nlines << "\n" << `echo #{"You can easily (manually, or with AI) transpile this code now into code that actually runs fast - and actually compiles quickly (C++, Crystal and Rust can't do this and are awful at it, especially the latter two - Zig maybe is good); is safe; has good error handling; and performs the intended operations, with ease.".shellescape} | fmt -w 78`
126
+ nlines.gsub! "\n", "\n# "
127
+
128
+ puts nlines
129
+ nlines = nil
130
+ end
131
+
132
+ newline = line.chomp("\n")
133
+ if newline.strip == ""
134
+ puts
135
+ next
136
+ end
137
+
138
+ if (newline.include? "length") || (newline.include? "size")
139
+ newline << tr("length or size", (["strlen()"] + H_LINES.grep(/_size\(/)))
140
+ end
141
+
142
+ if newline.include? "replace"
143
+ newline << tr("replace", H_LINES.grep(/replace_all\(/))
144
+ end
145
+ if newline.include? "uniq"
146
+ newline << tr("uniq", H_LINES.grep(/uniq\(/))
147
+ end
148
+
149
+ # PHP
150
+ if newline.include? "file_get_contents"
151
+ newline << tr("file_get_contents", H_LINES.grep(/read_file_into_array\(/))
152
+ end
153
+
154
+ # Python, Ruby
155
+ if newline.include? "readlines"
156
+ newline << tr("readlines", H_LINES.grep(/read_file_into_array\(/))
157
+ end
158
+
159
+ # Ruby
160
+ if newline.include? "File.read"
161
+ newline << tr("File.read", H_LINES.grep(/read_file_into_string\(/))
162
+ end
163
+
164
+ if newline.include? "sort"
165
+ newline << tr("sort", H_LINES.grep(/sort(?:ed)?_long_longs\(/)).chomp("\n").chomp(".") + " or similar functions depending on the type name"
166
+ end
167
+ if newline.include? "gsub!"
168
+ newline << tr("gsub!", H_LINES.grep(/replace_all.*\(/))
169
+ elsif newline.include? "gsub"
170
+ newline << tr("gsub", H_LINES.grep(/replace_all.*\(/))
171
+ end
172
+
173
+ if newline.include? "delete"
174
+ newline << tr("delete", H_LINES.grep(/del_key\(/))
175
+ end
176
+
177
+ if newline.include? "split"
178
+ newline << tr("split", H_LINES.grep(/split\(/))
179
+ end
180
+
181
+ if newline.include? "join"
182
+ newline << tr("join", H_LINES.grep(/join\(/))
183
+ end
184
+
185
+ if newline.include? "strip"
186
+ newline << tr("strip", H_LINES.grep(/strip\(/))
187
+ end
188
+ if newline.include? "map"
189
+ fs = H_LINES.grep(/filesystem.*\(/)
190
+ newline << tr("map", H_LINES.grep(/map.*\(/) - fs)
191
+ end
192
+
193
+ if newline.include? "start_with?"
194
+ newline << tr("start_with?", H_LINES.grep(/starts_with.*\(/))
195
+ end
196
+ if newline.include? "start_with"
197
+ newline << tr("start_with", H_LINES.grep(/starts_with.*\(/))
198
+ end
199
+
200
+ if newline.include? "end_with?"
201
+ newline << tr("end_with?", H_LINES.grep(/ends_with.*\(/))
202
+ end
203
+
204
+ if newline.include? "end_with"
205
+ newline << tr("end_with", H_LINES.grep(/ends_with.*\(/))
206
+ end
207
+ if newline.include? "starts_with"
208
+ newline << tr("starts_with", H_LINES.grep(/starts_with.*\(/))
209
+ end
210
+ if newline.include? "ends_with"
211
+ newline << tr("ends_with", H_LINES.grep(/ends_with.*\(/))
212
+ end
213
+
214
+ if newline.include? "count"
215
+ newline << tr("count", H_LINES.grep(/count.*\(/))
216
+ end
217
+
218
+ puts newline
219
+ end
220
+
221
+ File.open(outfile, "w") do |file|
222
+ file.puts $out
223
+ end
224
+
225
+ green("Wrote #{$comments} transpilation comments.", file = STDERR)