inkcpp_rb 0.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 (273) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +1 -0
  4. data/Gemfile +10 -0
  5. data/Gemfile.lock +84 -0
  6. data/LICENSE +7 -0
  7. data/README.md +3 -0
  8. data/Rakefile +16 -0
  9. data/bin/console +15 -0
  10. data/bin/setup +10 -0
  11. data/bin/tapioca +29 -0
  12. data/ext/inkcpp_rb/extconf.rb +19 -0
  13. data/ext/inkcpp_rb/inkcpp/.clang-format +99 -0
  14. data/ext/inkcpp_rb/inkcpp/.github/FUNDING.yml +1 -0
  15. data/ext/inkcpp_rb/inkcpp/.github/workflows/build.yml +344 -0
  16. data/ext/inkcpp_rb/inkcpp/.github/workflows/release.yml +49 -0
  17. data/ext/inkcpp_rb/inkcpp/.gitignore +25 -0
  18. data/ext/inkcpp_rb/inkcpp/.gitmodules +9 -0
  19. data/ext/inkcpp_rb/inkcpp/CMakeLists.txt +170 -0
  20. data/ext/inkcpp_rb/inkcpp/CODE_OF_CONDUCT.md +76 -0
  21. data/ext/inkcpp_rb/inkcpp/CONTRIBUTING.md +55 -0
  22. data/ext/inkcpp_rb/inkcpp/Config.cmake.in +2 -0
  23. data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/CMakeLists.txt +13 -0
  24. data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/main.c +38 -0
  25. data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/main.cpp +40 -0
  26. data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/test.ink +8 -0
  27. data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/test.ink.json +1 -0
  28. data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example.zip +0 -0
  29. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/InkCPP_DEMO.zip +0 -0
  30. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/CreateThread.png +0 -0
  31. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/HandleChoice.png +0 -0
  32. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/ListElementOf.png +0 -0
  33. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/MinimalRuntime.png +0 -0
  34. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/MinimalThread.png +0 -0
  35. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/ObseverChange.png +0 -0
  36. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/TagListGetValue.png +0 -0
  37. data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/YieldResume.png +0 -0
  38. data/ext/inkcpp_rb/inkcpp/Doxyfile +2825 -0
  39. data/ext/inkcpp_rb/inkcpp/LICENSE.txt +22 -0
  40. data/ext/inkcpp_rb/inkcpp/Minimal.runsettings +8 -0
  41. data/ext/inkcpp_rb/inkcpp/README.md +192 -0
  42. data/ext/inkcpp_rb/inkcpp/inkcpp/CMakeLists.txt +67 -0
  43. data/ext/inkcpp_rb/inkcpp/inkcpp/array.h +481 -0
  44. data/ext/inkcpp_rb/inkcpp/inkcpp/avl_array.h +833 -0
  45. data/ext/inkcpp_rb/inkcpp/inkcpp/casting.h +93 -0
  46. data/ext/inkcpp_rb/inkcpp/inkcpp/choice.cpp +54 -0
  47. data/ext/inkcpp_rb/inkcpp/inkcpp/collections/restorable.cpp +124 -0
  48. data/ext/inkcpp_rb/inkcpp/inkcpp/collections/restorable.h +406 -0
  49. data/ext/inkcpp_rb/inkcpp/inkcpp/container_operations.cpp +52 -0
  50. data/ext/inkcpp_rb/inkcpp/inkcpp/container_operations.h +34 -0
  51. data/ext/inkcpp_rb/inkcpp/inkcpp/executioner.h +179 -0
  52. data/ext/inkcpp_rb/inkcpp/inkcpp/functional.cpp +86 -0
  53. data/ext/inkcpp_rb/inkcpp/inkcpp/functions.cpp +54 -0
  54. data/ext/inkcpp_rb/inkcpp/inkcpp/functions.h +40 -0
  55. data/ext/inkcpp_rb/inkcpp/inkcpp/globals_impl.cpp +289 -0
  56. data/ext/inkcpp_rb/inkcpp/inkcpp/globals_impl.h +149 -0
  57. data/ext/inkcpp_rb/inkcpp/inkcpp/header.cpp +44 -0
  58. data/ext/inkcpp_rb/inkcpp/inkcpp/include/choice.h +106 -0
  59. data/ext/inkcpp_rb/inkcpp/inkcpp/include/functional.h +327 -0
  60. data/ext/inkcpp_rb/inkcpp/inkcpp/include/globals.h +196 -0
  61. data/ext/inkcpp_rb/inkcpp/inkcpp/include/list.h +187 -0
  62. data/ext/inkcpp_rb/inkcpp/inkcpp/include/runner.h +291 -0
  63. data/ext/inkcpp_rb/inkcpp/inkcpp/include/snapshot.h +61 -0
  64. data/ext/inkcpp_rb/inkcpp/inkcpp/include/story.h +219 -0
  65. data/ext/inkcpp_rb/inkcpp/inkcpp/include/story_ptr.h +233 -0
  66. data/ext/inkcpp_rb/inkcpp/inkcpp/include/traits.h +270 -0
  67. data/ext/inkcpp_rb/inkcpp/inkcpp/include/types.h +169 -0
  68. data/ext/inkcpp_rb/inkcpp/inkcpp/list_impl.cpp +79 -0
  69. data/ext/inkcpp_rb/inkcpp/inkcpp/list_impl.h +39 -0
  70. data/ext/inkcpp_rb/inkcpp/inkcpp/list_operations.cpp +276 -0
  71. data/ext/inkcpp_rb/inkcpp/inkcpp/list_operations.h +356 -0
  72. data/ext/inkcpp_rb/inkcpp/inkcpp/list_table.cpp +841 -0
  73. data/ext/inkcpp_rb/inkcpp/inkcpp/list_table.h +450 -0
  74. data/ext/inkcpp_rb/inkcpp/inkcpp/numeric_operations.cpp +40 -0
  75. data/ext/inkcpp_rb/inkcpp/inkcpp/numeric_operations.h +529 -0
  76. data/ext/inkcpp_rb/inkcpp/inkcpp/operation_bases.h +164 -0
  77. data/ext/inkcpp_rb/inkcpp/inkcpp/operations.h +100 -0
  78. data/ext/inkcpp_rb/inkcpp/inkcpp/output.cpp +528 -0
  79. data/ext/inkcpp_rb/inkcpp/inkcpp/output.h +153 -0
  80. data/ext/inkcpp_rb/inkcpp/inkcpp/platform.h +22 -0
  81. data/ext/inkcpp_rb/inkcpp/inkcpp/random.h +38 -0
  82. data/ext/inkcpp_rb/inkcpp/inkcpp/runner_impl.cpp +1396 -0
  83. data/ext/inkcpp_rb/inkcpp/inkcpp/runner_impl.h +336 -0
  84. data/ext/inkcpp_rb/inkcpp/inkcpp/simple_restorable_stack.h +335 -0
  85. data/ext/inkcpp_rb/inkcpp/inkcpp/snapshot_impl.cpp +182 -0
  86. data/ext/inkcpp_rb/inkcpp/inkcpp/snapshot_impl.h +91 -0
  87. data/ext/inkcpp_rb/inkcpp/inkcpp/snapshot_interface.h +57 -0
  88. data/ext/inkcpp_rb/inkcpp/inkcpp/stack.cpp +618 -0
  89. data/ext/inkcpp_rb/inkcpp/inkcpp/stack.h +243 -0
  90. data/ext/inkcpp_rb/inkcpp/inkcpp/story_impl.cpp +361 -0
  91. data/ext/inkcpp_rb/inkcpp/inkcpp/story_impl.h +92 -0
  92. data/ext/inkcpp_rb/inkcpp/inkcpp/story_ptr.cpp +75 -0
  93. data/ext/inkcpp_rb/inkcpp/inkcpp/string_operations.cpp +125 -0
  94. data/ext/inkcpp_rb/inkcpp/inkcpp/string_operations.h +67 -0
  95. data/ext/inkcpp_rb/inkcpp/inkcpp/string_table.cpp +149 -0
  96. data/ext/inkcpp_rb/inkcpp/inkcpp/string_table.h +47 -0
  97. data/ext/inkcpp_rb/inkcpp/inkcpp/string_utils.h +207 -0
  98. data/ext/inkcpp_rb/inkcpp/inkcpp/system.cpp +39 -0
  99. data/ext/inkcpp_rb/inkcpp/inkcpp/tuple.hpp +151 -0
  100. data/ext/inkcpp_rb/inkcpp/inkcpp/value.cpp +279 -0
  101. data/ext/inkcpp_rb/inkcpp/inkcpp/value.h +666 -0
  102. data/ext/inkcpp_rb/inkcpp/inkcpp_c/CMakeLists.txt +62 -0
  103. data/ext/inkcpp_rb/inkcpp/inkcpp_c/include/inkcpp.h +393 -0
  104. data/ext/inkcpp_rb/inkcpp/inkcpp_c/inkcpp.cpp +344 -0
  105. data/ext/inkcpp_rb/inkcpp/inkcpp_c/inkcpp_c.pc.in +10 -0
  106. data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/ExternalFunction.c +56 -0
  107. data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Globals.c +98 -0
  108. data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Lists.c +73 -0
  109. data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Observer.c +36 -0
  110. data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Snapshot.c +65 -0
  111. data/ext/inkcpp_rb/inkcpp/inkcpp_cl/CMakeLists.txt +49 -0
  112. data/ext/inkcpp_rb/inkcpp/inkcpp_cl/inkcpp_cl.cpp +215 -0
  113. data/ext/inkcpp_rb/inkcpp/inkcpp_cl/test.cpp +209 -0
  114. data/ext/inkcpp_rb/inkcpp/inkcpp_cl/test.h +8 -0
  115. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/CMakeLists.txt +37 -0
  116. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_emitter.cpp +446 -0
  117. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_emitter.h +70 -0
  118. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_stream.cpp +166 -0
  119. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_stream.h +79 -0
  120. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/command.cpp +107 -0
  121. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/compiler.cpp +96 -0
  122. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/emitter.cpp +62 -0
  123. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/emitter.h +104 -0
  124. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/include/compilation_results.h +22 -0
  125. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/include/compiler.h +44 -0
  126. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/json.hpp +24596 -0
  127. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/json_compiler.cpp +411 -0
  128. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/json_compiler.h +62 -0
  129. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/list_data.cpp +47 -0
  130. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/list_data.h +70 -0
  131. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/reporter.cpp +107 -0
  132. data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/reporter.h +55 -0
  133. data/ext/inkcpp_rb/inkcpp/inkcpp_py/CMakeLists.txt +19 -0
  134. data/ext/inkcpp_rb/inkcpp/inkcpp_py/example.py +78 -0
  135. data/ext/inkcpp_rb/inkcpp/inkcpp_py/src/module.cpp +317 -0
  136. data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/conftest.py +53 -0
  137. data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_ExternalFunctions.py +35 -0
  138. data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Globals.py +40 -0
  139. data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Lists.py +43 -0
  140. data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Observer.py +27 -0
  141. data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Snapshot.py +57 -0
  142. data/ext/inkcpp_rb/inkcpp/inkcpp_py/unreal_example.ink +71 -0
  143. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Array.cpp +115 -0
  144. data/ext/inkcpp_rb/inkcpp/inkcpp_test/CMakeLists.txt +117 -0
  145. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Callstack.cpp +392 -0
  146. data/ext/inkcpp_rb/inkcpp/inkcpp_test/EmptyStringForDivert.cpp +36 -0
  147. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ExternalFunctionsExecuteProperly.cpp +34 -0
  148. data/ext/inkcpp_rb/inkcpp/inkcpp_test/FallbackFunction.cpp +77 -0
  149. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Globals.cpp +73 -0
  150. data/ext/inkcpp_rb/inkcpp/inkcpp_test/InkyJson.cpp +34 -0
  151. data/ext/inkcpp_rb/inkcpp/inkcpp_test/LabelCondition.cpp +60 -0
  152. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Lists.cpp +144 -0
  153. data/ext/inkcpp_rb/inkcpp/inkcpp_test/LookaheadSafe.cpp +46 -0
  154. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Main.cpp +7 -0
  155. data/ext/inkcpp_rb/inkcpp/inkcpp_test/MoveTo.cpp +95 -0
  156. data/ext/inkcpp_rb/inkcpp/inkcpp_test/NewLines.cpp +76 -0
  157. data/ext/inkcpp_rb/inkcpp/inkcpp_test/NoEarlyTags.cpp +33 -0
  158. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Observer.cpp +245 -0
  159. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Pointer.cpp +191 -0
  160. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Restorable.cpp +294 -0
  161. data/ext/inkcpp_rb/inkcpp/inkcpp_test/SpaceAfterBracketChoice.cpp +45 -0
  162. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Stack.cpp +224 -0
  163. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Tags.cpp +131 -0
  164. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ThirdTierChoiceAfterBrackets.cpp +38 -0
  165. data/ext/inkcpp_rb/inkcpp/inkcpp_test/UTF8.cpp +56 -0
  166. data/ext/inkcpp_rb/inkcpp/inkcpp_test/Value.cpp +210 -0
  167. data/ext/inkcpp_rb/inkcpp/inkcpp_test/catch.hpp +17970 -0
  168. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/AHF.ink +7 -0
  169. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ChoiceBracketStory.ink +7 -0
  170. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/EmptyStringForDivert.ink +13 -0
  171. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ExternalFunctionsExecuteProperly.ink +11 -0
  172. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/FallBack.ink +15 -0
  173. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/GlobalStory.ink +9 -0
  174. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/LabelConditionStory.ink +5 -0
  175. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/LinesStory.ink +42 -0
  176. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ListLogicStory.ink +40 -0
  177. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ListStory.ink +8 -0
  178. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/LookaheadSafe.ink +14 -0
  179. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/MoveTo.ink +36 -0
  180. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/NoEarlyTags.ink +19 -0
  181. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ObserverStory.ink +8 -0
  182. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/SimpleStoryFlow.ink +65 -0
  183. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/TagsStory.ink +22 -0
  184. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/TheIntercept.ink +1686 -0
  185. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ThirdTierChoiceAfterBracketsStory.ink +13 -0
  186. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/UTF-8-demo.txt +212 -0
  187. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/UTF8Story.ink +218 -0
  188. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/simple-1.1.1-inklecate.json +154 -0
  189. data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/simple-1.1.1-inky.json +160 -0
  190. data/ext/inkcpp_rb/inkcpp/notes/ArchitectureNotes.md +54 -0
  191. data/ext/inkcpp_rb/inkcpp/notes/ListNotes.md +69 -0
  192. data/ext/inkcpp_rb/inkcpp/notes/OperationNotes.md +35 -0
  193. data/ext/inkcpp_rb/inkcpp/notes/TagsNotes.md +24 -0
  194. data/ext/inkcpp_rb/inkcpp/notes/WhitespaceNotes.md +28 -0
  195. data/ext/inkcpp_rb/inkcpp/proofing/README.md +3 -0
  196. data/ext/inkcpp_rb/inkcpp/proofing/inkcpp_runtime_driver +12 -0
  197. data/ext/inkcpp_rb/inkcpp/pyproject.toml +63 -0
  198. data/ext/inkcpp_rb/inkcpp/setup.py +166 -0
  199. data/ext/inkcpp_rb/inkcpp/shared/CMakeLists.txt +14 -0
  200. data/ext/inkcpp_rb/inkcpp/shared/private/command.h +172 -0
  201. data/ext/inkcpp_rb/inkcpp/shared/private/header.h +46 -0
  202. data/ext/inkcpp_rb/inkcpp/shared/public/config.h +53 -0
  203. data/ext/inkcpp_rb/inkcpp/shared/public/system.h +307 -0
  204. data/ext/inkcpp_rb/inkcpp/shared/public/version.h +14 -0
  205. data/ext/inkcpp_rb/inkcpp/tests/TestAllSequenceTypes.ink +59 -0
  206. data/ext/inkcpp_rb/inkcpp/tests/TestArithmetic.ink +17 -0
  207. data/ext/inkcpp_rb/inkcpp/tests/TestBasicStringLiterals.ink +8 -0
  208. data/ext/inkcpp_rb/inkcpp/tests/TestBasicTunnel.ink +10 -0
  209. data/ext/inkcpp_rb/inkcpp/tests/TestBlanksInInlineSequences.ink +51 -0
  210. data/ext/inkcpp_rb/inkcpp/tests/TestCallStackEvaluation.ink +15 -0
  211. data/ext/inkcpp_rb/inkcpp/tests/TestChoiceCount.ink +15 -0
  212. data/ext/inkcpp_rb/inkcpp/tests/TestChoiceDivertsToDone.ink +6 -0
  213. data/ext/inkcpp_rb/inkcpp/tests/TestChoiceWithBracketsOnly.ink +9 -0
  214. data/ext/inkcpp_rb/inkcpp/tests/TestCompareDivertTargets.ink +26 -0
  215. data/ext/inkcpp_rb/inkcpp/tests/TestComplexTunnels.ink +22 -0
  216. data/ext/inkcpp_rb/inkcpp/tests/TestConditionalChoiceInWeave.ink +19 -0
  217. data/ext/inkcpp_rb/inkcpp/tests/TestTunnelOnwardsAfterTunnel.ink +17 -0
  218. data/ext/inkcpp_rb/inkcpp/unreal/CMakeLists.txt +51 -0
  219. data/ext/inkcpp_rb/inkcpp/unreal/UE_example.ink +92 -0
  220. data/ext/inkcpp_rb/inkcpp/unreal/blueprint_filter.js +377 -0
  221. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Resources/Icon128.png +0 -0
  222. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkAsset.cpp +47 -0
  223. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkChoice.cpp +40 -0
  224. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkList.cpp +86 -0
  225. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkRuntime.cpp +265 -0
  226. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkThread.cpp +239 -0
  227. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkVar.cpp +143 -0
  228. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/TagList.cpp +95 -0
  229. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/inkcpp.cpp +13 -0
  230. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkAsset.h +50 -0
  231. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkChoice.h +58 -0
  232. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkDelegates.h +139 -0
  233. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkList.h +102 -0
  234. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkRuntime.h +177 -0
  235. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkSnapshot.h +30 -0
  236. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkThread.h +215 -0
  237. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkVar.h +245 -0
  238. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/TagList.h +77 -0
  239. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/inkcpp.h +217 -0
  240. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/inkcpp.Build.cs +62 -0
  241. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/InkAssetFactory.cpp +237 -0
  242. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/InkAssetFactory.h +43 -0
  243. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/inkcpp_editor.cpp +13 -0
  244. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/inklecate_cmd.cpp.in +24 -0
  245. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Public/inkcpp_editor.h +9 -0
  246. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/inkcpp_editor.Build.cs +61 -0
  247. data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/inkcpp.uplugin +44 -0
  248. data/ext/inkcpp_rb/inkcpp/unreal/render.css +1 -0
  249. data/ext/inkcpp_rb/inkcpp_rb.cpp +321 -0
  250. data/inkcpp_rb.gemspec +54 -0
  251. data/rbi/inkcpp_rb.rbi +211 -0
  252. data/sorbet/config +4 -0
  253. data/sorbet/rbi/annotations/.gitattributes +1 -0
  254. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  255. data/sorbet/rbi/gems/.gitattributes +1 -0
  256. data/sorbet/rbi/gems/benchmark@0.4.0.rbi +618 -0
  257. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  258. data/sorbet/rbi/gems/minitest@5.25.4.rbi +1547 -0
  259. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  260. data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  261. data/sorbet/rbi/gems/prism@1.3.0.rbi +40040 -0
  262. data/sorbet/rbi/gems/rake-compiler@1.2.8.rbi +9 -0
  263. data/sorbet/rbi/gems/rake@13.2.1.rbi +3033 -0
  264. data/sorbet/rbi/gems/rbi@0.2.2.rbi +4527 -0
  265. data/sorbet/rbi/gems/rice@4.3.3.rbi +44 -0
  266. data/sorbet/rbi/gems/spoom@1.5.0.rbi +4932 -0
  267. data/sorbet/rbi/gems/tapioca@0.16.7.rbi +3611 -0
  268. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  269. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  270. data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
  271. data/sorbet/tapioca/config.yml +13 -0
  272. data/sorbet/tapioca/require.rb +4 -0
  273. metadata +400 -0
@@ -0,0 +1,57 @@
1
+ import inkcpp_py as ink
2
+ import pytest
3
+
4
+ def check_end(runner):
5
+ assert runner.num_choices() == 3
6
+ runner.choose(2)
7
+ while runner.can_continue():
8
+ runner.getline()
9
+ assert runner.num_choices() == 2
10
+
11
+ class TestSnapshot:
12
+ def test_snapshot(self, assets, generate):
13
+ [story, glob, runner] = generate(assets['SimpleStoryFlow'])
14
+ runner2 = story.new_runner(glob)
15
+ runner.getline()
16
+ assert runner.num_choices() == 3
17
+ snap0 = runner.create_snapshot()
18
+
19
+ runner.choose(2)
20
+
21
+ snap1 = runner.create_snapshot()
22
+
23
+ cnt = 0
24
+ while runner.can_continue():
25
+ runner.getline()
26
+ cnt += 1
27
+
28
+ snap2 = runner.create_snapshot()
29
+
30
+ check_end(runner)
31
+
32
+ glob = story.new_globals_from_snapshot(snap0)
33
+ runner = story.new_runner_from_snapshot(snap0, glob, 0)
34
+ assert runner.num_choices() == 3
35
+ runner.choose(2)
36
+ cnt_x = 0
37
+ while runner.can_continue():
38
+ runner.getline()
39
+ cnt_x += 1
40
+ assert cnt_x == cnt
41
+
42
+ check_end(runner)
43
+
44
+ glob = story.new_globals_from_snapshot(snap1)
45
+ runner = story.new_runner_from_snapshot(snap1, glob, 0)
46
+ cnt_x = 0
47
+ while runner.can_continue():
48
+ runner.getline()
49
+ cnt_x += 1
50
+ assert cnt_x == cnt
51
+
52
+ check_end(runner)
53
+
54
+ glob = story.new_globals_from_snapshot(snap2)
55
+ runner = story.new_runner_from_snapshot(snap2, glob, 0)
56
+ assert not runner.can_continue()
57
+ check_end(runner)
@@ -0,0 +1,71 @@
1
+ ->Start
2
+ EXTERNAL SetBrightness(x)
3
+ === function SetBrightness(x) ===
4
+ ~ return
5
+
6
+ EXTERNAL GetGreeting()
7
+ === function GetGreeting() ===
8
+ ~ return "Hey, "
9
+
10
+ VAR brightness = 50
11
+
12
+ VAR date = "???"
13
+
14
+ LIST background = (a), b, c
15
+
16
+ === Start ===
17
+ {GetGreeting()}, your personal assistent here. # Story Start
18
+ Today is the {date}
19
+ Why we don't start with some customisation options:
20
+ * [Yes]
21
+ -> Settings ->
22
+ How The story looks now? much better :)
23
+ ->DONE
24
+ * [I Don't like you.]
25
+ Then Bye
26
+ ->DONE
27
+
28
+ === Settings ===
29
+
30
+ = All
31
+ Let Start with the color.
32
+ ->Color->
33
+ The illumination seems off?
34
+ ->Brightness->
35
+ And now some custom background :)
36
+ ->Background->
37
+ ->->
38
+
39
+ = Color
40
+ Which color do like?
41
+ + [Magenta # c:mag]
42
+ A wired choice ... # setColor_255_0_255
43
+ + [Cyan # c:cya]
44
+ A think this will be a intense experience. # setColor_0_255_255
45
+ + [Yellow # c:yel]
46
+ A delighting decision. # setColor_255_255_0
47
+ - Do You Like your decision?
48
+ + [Yes] ->->
49
+ + [No] -> Color
50
+
51
+ = Brightness
52
+ Do you like the Brightness level?
53
+ + [A bit more please.]
54
+ ~ brightness += 5
55
+ + [A bit less.]
56
+ ~ brightness -= 5
57
+ + [The settings {is fine| is now to my compliance!}]
58
+ ->->
59
+ - ~ SetBrightness(brightness)
60
+ ->Brightness
61
+
62
+ = Background
63
+ >> SetBg({background})
64
+ How do you like this image?
65
+ + {background < LIST_MAX(LIST_ALL(background))} [Mhe the next please.]
66
+ ~ background++
67
+ + {background > LIST_MIN(LIST_ALL(background))} [Can you show me the previous please?]
68
+ ~ background--
69
+ + [This is great]
70
+ ->->
71
+ - -> Background
@@ -0,0 +1,115 @@
1
+ #include "catch.hpp"
2
+
3
+ #include "..//inkcpp/array.h"
4
+
5
+ using namespace ink;
6
+ using ink::runtime::internal::allocated_restorable_array;
7
+
8
+ typedef allocated_restorable_array<uint32_t> test_array;
9
+
10
+ SCENARIO("a restorable array can hold values", "[array]")
11
+ {
12
+ GIVEN("an empty array")
13
+ {
14
+ const ink::size_t length = 10;
15
+ test_array array = test_array(length, 0, ~0);
16
+
17
+ THEN("the default values should be zero")
18
+ {
19
+ for (ink::size_t i = 0; i < length; i++)
20
+ {
21
+ REQUIRE(array[i] == 0);
22
+ }
23
+ }
24
+
25
+ WHEN("we assign a value")
26
+ {
27
+ array.set(3, 15);
28
+
29
+ THEN("the value should be set")
30
+ {
31
+ REQUIRE(array[3] == 15);
32
+ }
33
+
34
+ THEN("the other values should be zero still")
35
+ {
36
+ for (ink::size_t i = 0; i < length; i++)
37
+ {
38
+ if (i == 3)
39
+ continue;
40
+
41
+ REQUIRE(array[i] == 0);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ SCENARIO("a restorable array can save/restore/forget", "[array]")
49
+ {
50
+ GIVEN("a saved array with a few values")
51
+ {
52
+ // Load up the array
53
+ test_array array = test_array(5, 0, ~0);
54
+ array.set(0, 0);
55
+ array.set(1, 1);
56
+ array.set(2, 2);
57
+ array.set(3, 3);
58
+ array.set(4, 4);
59
+
60
+ // Save its state
61
+ array.save();
62
+
63
+ WHEN("we change some values")
64
+ {
65
+ array.set(0, 10);
66
+ array.set(1, 11);
67
+
68
+ THEN("the new values should be returned")
69
+ {
70
+ REQUIRE(array[0] == 10);
71
+ REQUIRE(array[1] == 11);
72
+ }
73
+
74
+ THEN("old values should be returned when not changed")
75
+ {
76
+ REQUIRE(array[2] == 2);
77
+ REQUIRE(array[3] == 3);
78
+ REQUIRE(array[4] == 4);
79
+ }
80
+
81
+ WHEN("we restore the array")
82
+ {
83
+ array.restore();
84
+
85
+ THEN("we should get our old values back")
86
+ {
87
+ REQUIRE(array[0] == 0);
88
+ REQUIRE(array[1] == 1);
89
+ }
90
+
91
+ WHEN("we save again")
92
+ {
93
+ array.save();
94
+
95
+ THEN("we shouldn't get the weird values")
96
+ {
97
+ REQUIRE(array[0] == 0);
98
+ REQUIRE(array[1] == 1);
99
+ }
100
+ }
101
+ }
102
+
103
+ WHEN("we forget the save")
104
+ {
105
+ array.forget();
106
+
107
+ THEN("we should still have the new values")
108
+ {
109
+ REQUIRE(array[0] == 10);
110
+ REQUIRE(array[1] == 11);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
@@ -0,0 +1,117 @@
1
+ add_executable(inkcpp_test catch.hpp Main.cpp
2
+ Array.cpp
3
+ Pointer.cpp
4
+ Stack.cpp
5
+ Callstack.cpp
6
+ Restorable.cpp
7
+ Value.cpp
8
+ Globals.cpp
9
+ Lists.cpp
10
+ Tags.cpp
11
+ NewLines.cpp
12
+ FallbackFunction.cpp
13
+ LabelCondition.cpp
14
+ Observer.cpp
15
+ InkyJson.cpp
16
+ SpaceAfterBracketChoice.cpp
17
+ ThirdTierChoiceAfterBrackets.cpp
18
+ NoEarlyTags.cpp
19
+ ExternalFunctionsExecuteProperly.cpp
20
+ LookaheadSafe.cpp
21
+ EmptyStringForDivert.cpp
22
+ MoveTo.cpp
23
+ )
24
+
25
+ target_link_libraries(inkcpp_test PUBLIC inkcpp inkcpp_compiler inkcpp_shared)
26
+ target_include_directories(inkcpp_test PRIVATE ../shared/private/)
27
+
28
+ # For https://en.cppreference.com/w/cpp/filesystem#Notes
29
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
30
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.1")
31
+ target_link_libraries(inkcpp_test PRIVATE stdc++fs)
32
+ endif()
33
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
34
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")
35
+ target_link_libraries(inkcpp_test PRIVATE stdc++fs)
36
+ endif()
37
+ endif()
38
+
39
+ add_test(NAME UnitTests COMMAND $<TARGET_FILE:inkcpp_test>)
40
+
41
+ if ($ENV{INKLECATE})
42
+ set(INKLECATE_CMD $ENV{INKLECATE})
43
+ else()
44
+ set(INKLECATE_CMD "inklecate")
45
+ endif()
46
+
47
+ string(TOUPPER "${INKCPP_INKLECATE}" inkcpp_inklecate_upper)
48
+ if((inkcpp_inklecate_upper STREQUAL "ALL") OR (inkcpp_inklecate_upper STREQUAL "OS"))
49
+ if(UNIX AND NOT APPLE)
50
+ FetchContent_GetProperties(inklecate_linux)
51
+ if(inklecate_linux_POPULATED)
52
+ set(INKLECATE_CMD "${inklecate_linux_SOURCE_DIR}/inklecate")
53
+ else()
54
+ message(FATAL_ERROR "inklecate download is not provided, please check if the download failed.
55
+ You may set INCPP_INKLECATE=NONE and provide inkcleate via your PATH or the INKLECATE enviroment variable.
56
+ You can also disable tests altogether by setting INKCPP_TEST=OFF")
57
+ endif(inklecate_linux_POPULATED)
58
+ elseif(APPLE)
59
+ if(inklecate_mac_POPULATED)
60
+ set(INKLECATE_CMD "${inklecate_mac_SOURCE_DIR}/inklecate")
61
+ else()
62
+ message(FATAL_ERROR "inklecate download is not provided, please check if the download failed.
63
+ You may set INCPP_INKLECATE=NONE and provide inkcleate via your PATH or the INKLECATE enviroment variable.
64
+ You can also disable tests altogether by setting INKCPP_TEST=OFF")
65
+ endif(inklecate_mac_POPULATED)
66
+ elseif(MSYS OR MINGW OR WIN32 OR CYGWIN)
67
+ if(inklecate_windows_POPULATED)
68
+ set(INKLECATE_CMD "${inklecate_windows_SOURCE_DIR}/inklecate")
69
+ else()
70
+ message(FATAL_ERROR "inklecate download is not provided, please check if the download failed.
71
+ You may set INCPP_INKLECATE=NONE and provide inkcleate via your PATH or the INKLECATE enviroment variable.
72
+ You can also disable tests altogether by setting INKCPP_TEST=OFF")
73
+ endif(inklecate_windows_POPULATED)
74
+ else()
75
+ message(FATAL_ERROR "Current os could not be identified, therfore inklecate must be provided explicit for the tests to work
76
+ please set INKCPP_INKLECATE=NONE and provide inklecate via your PATH or the INKLECATE enviroment variables.
77
+ Alternatily disable tests by setting INKCPP_TEST=OFF.")
78
+ endif()
79
+ endif((inkcpp_inklecate_upper STREQUAL "ALL") OR (inkcpp_inklecate_upper STREQUAL "OS"))
80
+
81
+ set(INK_TEST_RESOURCE_DIR "${PROJECT_BINARY_DIR}/ink")
82
+ file(MAKE_DIRECTORY "${INK_TEST_RESOURCE_DIR}")
83
+
84
+ target_compile_definitions(inkcpp_test PRIVATE
85
+ INK_TEST_RESOURCE_DIR="${INK_TEST_RESOURCE_DIR}/")
86
+
87
+ file(GLOB JSON_FILES "${CMAKE_CURRENT_SOURCE_DIR}/ink/*.json")
88
+ file(COPY ${JSON_FILES} DESTINATION ${INK_TEST_RESOURCE_DIR})
89
+
90
+ file(GLOB INK_FILES "${CMAKE_CURRENT_SOURCE_DIR}/ink/*.ink")
91
+ foreach(INK_FILE IN LISTS INK_FILES)
92
+ get_filename_component(INK_FILENAME ${INK_FILE} NAME_WE)
93
+ set(output "${INK_TEST_RESOURCE_DIR}/${INK_FILENAME}.bin")
94
+ add_custom_command(
95
+ OUTPUT ${output}
96
+ COMMAND $<TARGET_FILE:inkcpp_cl> -o "${output}" --inklecate "${INKLECATE_CMD}" "${INK_FILE}"
97
+ DEPENDS ${INK_FILE}
98
+ COMMENT "Compile test ink file '${INK_FILENAME}.ink' -> '${output}'"
99
+ )
100
+ list(APPEND INK_OUT_FILES ${output})
101
+ endforeach()
102
+ target_sources(inkcpp_test PRIVATE ${INK_OUT_FILES})
103
+
104
+ if(TARGET inkcpp_c)
105
+ file(GLOB TEST_FILES "${PROJECT_SOURCE_DIR}/inkcpp_c/tests/*.c")
106
+ foreach(TEST_FILE IN LISTS TEST_FILES)
107
+ get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE)
108
+ add_executable(${TEST_NAME} ${TEST_FILE})
109
+ target_link_libraries(${TEST_NAME} PRIVATE inkcpp_c)
110
+ target_compile_definitions(${TEST_NAME} PRIVATE
111
+ INK_TEST_RESOURCE_DIR="${INK_TEST_RESOURCE_DIR}/")
112
+ add_test(
113
+ NAME ${TEST_NAME}
114
+ COMMAND $<TARGET_FILE:${TEST_NAME}>
115
+ )
116
+ endforeach()
117
+ endif(TARGET inkcpp_c)