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,233 @@
1
+ /* Copyright (c) 2024 Julian Benda
2
+ *
3
+ * This file is part of inkCPP which is released under MIT license.
4
+ * See file LICENSE.txt or go to
5
+ * https://github.com/JBenda/inkcpp for full license details.
6
+ */
7
+ #pragma once
8
+
9
+ #include "system.h"
10
+
11
+ namespace ink::runtime
12
+ {
13
+ namespace internal
14
+ {
15
+ /** @private */
16
+ struct ref_block {
17
+ ref_block()
18
+ : references(0)
19
+ , valid(true)
20
+ {
21
+ }
22
+
23
+ size_t references;
24
+ bool valid;
25
+
26
+ static void remove_reference(ref_block*&);
27
+ };
28
+
29
+ /** @private */
30
+ class story_ptr_base
31
+ {
32
+ protected:
33
+ /** construct a new pointer with new instance block */
34
+ story_ptr_base(internal::ref_block* story);
35
+ /** construct a new pointer with existing instance block */
36
+ story_ptr_base(internal::ref_block* story, internal::ref_block* instance);
37
+ /** construct a new pointer basedd on existing story pointer */
38
+ story_ptr_base(const story_ptr_base&);
39
+
40
+ story_ptr_base& operator=(const story_ptr_base&) = delete;
41
+
42
+ /** increases reference count */
43
+ void add_reference();
44
+ /** decreses reference count
45
+ * @retval true if count reaches zero and object was removed
46
+ */
47
+ bool remove_reference();
48
+
49
+ /** switch lifetime block */
50
+ void set(const story_ptr_base& other);
51
+
52
+ /** checks if pointer is still alive */
53
+ inline bool is_valid() const
54
+ {
55
+ return _story_block != nullptr && _instance_block != nullptr && _story_block->valid
56
+ && _instance_block->valid;
57
+ }
58
+
59
+ /** checks if story still exists */
60
+ inline bool is_story_valid() const { return _story_block != nullptr && _story_block->valid; }
61
+
62
+ private:
63
+ // reference block for the parent story
64
+ ref_block* _story_block;
65
+
66
+ // reference block for this pointer
67
+ ref_block* _instance_block;
68
+ };
69
+ } // namespace internal
70
+
71
+ /**
72
+ * Pointer wrapper to an object whose lifetime is tied to a story object.
73
+ *
74
+ * A shared pointer whose lifetime is also tied to the lifetime of the parent
75
+ * story object. The referenced object will live until either
76
+ * 1) There are no more story_ptr's pointing to this object
77
+ * 2) The story object which owns this object dies
78
+ *
79
+ * @see story_interface
80
+ * @see runner_interface
81
+ * @see globals_interface
82
+ */
83
+ template<typename T>
84
+ class story_ptr : public internal::story_ptr_base
85
+ {
86
+ public:
87
+ /** constructor. internal use only.
88
+ * @private
89
+ */
90
+ story_ptr(T* ptr, internal::ref_block* story)
91
+ : story_ptr_base(story)
92
+ , _ptr(ptr)
93
+ {
94
+ add_reference();
95
+ }
96
+
97
+ /** casting constructor. internal use only
98
+ * @private
99
+ */
100
+ template<typename U>
101
+ story_ptr(T* ptr, const story_ptr<U>& other)
102
+ : story_ptr_base(other)
103
+ , _ptr(ptr)
104
+ {
105
+ add_reference();
106
+ }
107
+
108
+ /** pointer constructor. for nullptr only.
109
+ * @param ptr will be ignored, should be nullptr
110
+ */
111
+ story_ptr(T* ptr)
112
+ : story_ptr_base(nullptr, nullptr)
113
+ , _ptr(nullptr)
114
+ {
115
+ inkAssert(ptr == nullptr, "can not create story_ptr from existing pointer!");
116
+ }
117
+
118
+ // null constructor
119
+ story_ptr()
120
+ : story_ptr_base(nullptr, nullptr)
121
+ , _ptr(nullptr)
122
+ {
123
+ }
124
+
125
+ // destructor
126
+ ~story_ptr();
127
+
128
+ // == copy methods ==
129
+ /** copy constructor
130
+ * @param oth
131
+ */
132
+ story_ptr(const story_ptr<T>& oth);
133
+ /** copy assigment operator
134
+ * @param oth
135
+ */
136
+ story_ptr<T>& operator=(const story_ptr<T>& oth);
137
+
138
+ // == casting ==
139
+ /** pointer cast while keeping ref count
140
+ * @tparam U new pointer type, valid cast form T to U must be available
141
+ */
142
+ template<typename U>
143
+ story_ptr<U> cast()
144
+ {
145
+ // if cast fails, return null
146
+ #ifdef INK_ENABLE_UNREAL
147
+ // Unreal disables RTTI
148
+ U* casted = reinterpret_cast<U*>(_ptr);
149
+ #else
150
+ U* casted = dynamic_cast<U*>(_ptr);
151
+ #endif
152
+ if (casted == nullptr)
153
+ return nullptr;
154
+
155
+ // create new pointer with casted value but same instance blocks
156
+ return story_ptr<U>(casted, *this);
157
+ }
158
+
159
+ // == equality ==
160
+ /** implement operator== */
161
+ inline bool operator==(const story_ptr<T>& other) { return _ptr == other._ptr; }
162
+
163
+ // == validity ==
164
+ /** checks if optional contains a value */
165
+ bool is_valid() const { return story_ptr_base::is_valid() && _ptr; }
166
+
167
+ /** auto cast to bool with value from @ref #is_valid() */
168
+ inline operator bool() const { return is_valid(); }
169
+
170
+ // === dereference operators ==
171
+ /** access value as ptr
172
+ * @retval nullptr if value is not @ref #is_valid() "valid"
173
+ */
174
+ inline T* get() { return is_valid() ? _ptr : nullptr; }
175
+
176
+ /** access value as ptr
177
+ * @retval nullptr if value is not @ref #is_valid() "valid"
178
+ */
179
+ inline const T* get() const { return is_valid() ? _ptr : nullptr; }
180
+
181
+ /** implement operator-> */
182
+ inline T* operator->() { return get(); }
183
+
184
+ /** implement operator-> */
185
+ inline const T* operator->() const { return get(); }
186
+
187
+ /** implement operator* */
188
+ inline T& operator*() { return *get(); }
189
+
190
+ /** implement operator* */
191
+ inline const T& operator*() const { return *get(); }
192
+
193
+ private:
194
+ T* _ptr;
195
+ };
196
+
197
+ template<typename T>
198
+ story_ptr<T>::~story_ptr()
199
+ {
200
+ if (remove_reference()) {
201
+ delete _ptr;
202
+ _ptr = nullptr;
203
+ }
204
+ }
205
+
206
+ template<typename T>
207
+ story_ptr<T>::story_ptr(const story_ptr<T>& other)
208
+ : story_ptr_base(other)
209
+ , _ptr(other._ptr)
210
+ {
211
+ add_reference();
212
+ }
213
+
214
+ template<typename T>
215
+ story_ptr<T>& story_ptr<T>::operator=(const story_ptr<T>& other)
216
+ {
217
+ // Clear out any old data
218
+ if (remove_reference()) {
219
+ delete _ptr;
220
+ _ptr = nullptr;
221
+ }
222
+
223
+ // Set pointers
224
+ set(other);
225
+ _ptr = other._ptr;
226
+
227
+ // initialize
228
+ add_reference();
229
+
230
+ // return reference to self
231
+ return *this;
232
+ }
233
+ } // namespace ink::runtime
@@ -0,0 +1,270 @@
1
+ /* Copyright (c) 2024 Julian Benda
2
+ *
3
+ * This file is part of inkCPP which is released under MIT license.
4
+ * See file LICENSE.txt or go to
5
+ * https://github.com/JBenda/inkcpp for full license details.
6
+ */
7
+ #pragma once
8
+
9
+ #include "config.h"
10
+ #include "system.h"
11
+
12
+ #ifdef INK_ENABLE_STL
13
+ # include <string>
14
+ #endif
15
+
16
+ /** Util templates and implimentation of STL if STL is not available */
17
+ namespace ink::runtime::internal
18
+ {
19
+ template<typename... Ts>
20
+ constexpr size_t sizeof_largest_type()
21
+ {
22
+ size_t ret = 0;
23
+ return ((ret = sizeof(Ts) > ret ? sizeof(Ts) : ret), ...);
24
+ }
25
+
26
+ template<unsigned int N, typename Arg, typename... Args>
27
+ struct get_ith_type : /** @cond */ get_ith_type<N - 1, Args...> /** @endcond */ { /** @cond */
28
+ };
29
+
30
+ template<typename Arg, typename... Args>
31
+ struct get_ith_type<0, Arg, Args...> {
32
+ /** @endcond */
33
+ using type = Arg;
34
+ };
35
+
36
+ // constant and is_same from http://www.cppreference.com
37
+ template<typename T, T v>
38
+ struct constant {
39
+ static constexpr T value = v;
40
+ typedef T value_type;
41
+ typedef constant type; // using injected-class-name
42
+
43
+ constexpr operator value_type() const noexcept { return value; }
44
+
45
+ constexpr value_type operator()() const noexcept { return value; } // since c++14
46
+ };
47
+
48
+ struct false_type : constant<bool, false> {
49
+ };
50
+
51
+ struct true_type : constant<bool, true> {
52
+ };
53
+
54
+ template<typename B>
55
+ true_type test_ptr_conv(const volatile B*);
56
+ template<typename>
57
+ false_type test_ptr_conv(const volatile void*);
58
+ template<typename B, typename D>
59
+ auto test_is_base_of(int) -> decltype(test_ptr_conv<B>(static_cast<D*>(nullptr)));
60
+
61
+ // template<typename, typename> /// FIXME: needed?
62
+ // auto test_is_base_of(...) -> true_type;
63
+
64
+ template<class Base, class Derived>
65
+ struct is_base_of : constant<bool, decltype(test_is_base_of<Base, Derived>(0))::value> {
66
+ };
67
+
68
+ template<class T, class U>
69
+ struct is_same : false_type {
70
+ };
71
+
72
+ template<class T>
73
+ struct is_same<T, T> : true_type {
74
+ };
75
+
76
+ template<typename T>
77
+ struct is_pointer : false_type {
78
+ };
79
+
80
+ template<typename T>
81
+ struct is_pointer<T*> : true_type {
82
+ };
83
+
84
+ template<class T>
85
+ struct remove_cv {
86
+ typedef T type;
87
+ };
88
+
89
+ template<class T>
90
+ struct remove_cv<const T> {
91
+ typedef T type;
92
+ };
93
+
94
+ template<class T>
95
+ struct remove_cv<volatile T> {
96
+ typedef T type;
97
+ };
98
+
99
+ template<class T>
100
+ struct remove_cv<const volatile T> {
101
+ typedef T type;
102
+ };
103
+
104
+ template<class T>
105
+ struct remove_cvref {
106
+ typedef std::remove_cv_t<std::remove_reference_t<T>> type;
107
+ };
108
+
109
+ // == string testing (from me) ==
110
+
111
+ template<typename T>
112
+ struct is_string : false_type {
113
+ };
114
+
115
+ template<typename T>
116
+ struct is_string<T&> : is_string<T> {
117
+ };
118
+
119
+ template<typename T>
120
+ struct is_string<const T> : is_string<T> {
121
+ };
122
+
123
+ template<typename T>
124
+ struct is_string<const T*> : is_string<T*> {
125
+ };
126
+
127
+ template<typename T>
128
+ struct string_handler {
129
+ };
130
+
131
+ template<typename T>
132
+ struct string_handler<const T> : string_handler<T> {
133
+ };
134
+
135
+ template<typename T>
136
+ struct string_handler<const T*> : string_handler<T*> {
137
+ };
138
+
139
+ template<typename T>
140
+ struct string_handler<T&> : string_handler<T> {
141
+ };
142
+
143
+ #define MARK_AS_STRING(TYPE, LEN, SRC) \
144
+ template<> \
145
+ struct is_string<TYPE> : constant<bool, true> { \
146
+ }; \
147
+ template<> \
148
+ struct string_handler<TYPE> { \
149
+ static size_t length(const TYPE& x) { return static_cast<size_t>(LEN); } \
150
+ static void src_copy(const TYPE& x, char* output) \
151
+ { \
152
+ [&output](const char* src) { \
153
+ while (*src != '\0') \
154
+ *(output++) = *(src++); \
155
+ *output = 0; \
156
+ }(SRC); \
157
+ } \
158
+ }
159
+
160
+ inline size_t c_str_len(const char* c)
161
+ {
162
+ const char* i = c;
163
+ while (*i != 0)
164
+ i++;
165
+ return i - c;
166
+ }
167
+
168
+ MARK_AS_STRING(char*, c_str_len(x), x);
169
+ #ifdef INK_ENABLE_STL
170
+ MARK_AS_STRING(std::string, x.size(), x.c_str());
171
+ #endif
172
+ #ifdef INK_ENABLE_UNREAL
173
+ MARK_AS_STRING(FString, x.Len(), TCHAR_TO_UTF8(*x));
174
+ #endif
175
+
176
+ #undef MARK_AS_STRING
177
+
178
+ // function_traits from https://functionalcpp.wordpress.com/2013/08/05/function-traits/
179
+
180
+ template<class F>
181
+ struct function_traits;
182
+
183
+ // function pointer
184
+ template<class R, class... Args>
185
+ struct function_traits<R (*)(Args...)> : public function_traits<R(Args...)> {
186
+ };
187
+
188
+ template<class R, class... Args>
189
+ struct function_traits<R(Args...)> {
190
+ using return_type = R;
191
+
192
+ static constexpr unsigned int arity = sizeof...(Args);
193
+
194
+ template<unsigned int N>
195
+ struct argument {
196
+ static_assert(N < arity, "error: invalid parameter index.");
197
+ using type = typename get_ith_type<N, Args...>::type;
198
+ };
199
+ };
200
+
201
+ // member function pointer
202
+ template<class C, class R, class... Args>
203
+ struct function_traits<R (C::*)(Args...)> : public function_traits<R(C&, Args...)> {
204
+ };
205
+
206
+ // const member function pointer
207
+ template<class C, class R, class... Args>
208
+ struct function_traits<R (C::*)(Args...) const> : public function_traits<R(C&, Args...)> {
209
+ };
210
+
211
+ // member object pointer
212
+ template<class C, class R>
213
+ struct function_traits<R(C::*)> : public function_traits<R(C&)> {
214
+ };
215
+
216
+ // functor
217
+ template<class F>
218
+ struct function_traits {
219
+ private:
220
+ using call_type = function_traits<decltype(&F::operator())>;
221
+
222
+ public:
223
+ using return_type = typename call_type::return_type;
224
+
225
+ static constexpr unsigned int arity = call_type::arity - 1;
226
+
227
+ template<unsigned int N>
228
+ struct argument {
229
+ static_assert(N < arity, "error: invalid parameter index.");
230
+ using type = typename call_type::template argument<N + 1>::type;
231
+ };
232
+ };
233
+
234
+ // from https://stackoverflow.com/questions/17424477/implementation-c14-make-integer-sequence
235
+ // using aliases for cleaner syntax
236
+ template<class T>
237
+ using Invoke = typename T::type;
238
+
239
+ template<unsigned...>
240
+ struct seq {
241
+ using type = seq;
242
+ };
243
+
244
+ template<class S1, class S2>
245
+ struct concat;
246
+
247
+ template<unsigned... I1, unsigned... I2>
248
+ struct concat<seq<I1...>, seq<I2...>> : seq<I1..., (sizeof...(I1) + I2)...> {
249
+ };
250
+
251
+ template<class S1, class S2>
252
+ using Concat = Invoke<concat<S1, S2>>;
253
+
254
+ template<unsigned N>
255
+ struct gen_seq;
256
+ template<unsigned N>
257
+ using GenSeq = Invoke<gen_seq<N>>;
258
+
259
+ template<unsigned N>
260
+ struct gen_seq : Concat<GenSeq<N / 2>, GenSeq<N - N / 2>> {
261
+ };
262
+
263
+ template<>
264
+ struct gen_seq<0> : seq<> {
265
+ };
266
+
267
+ template<>
268
+ struct gen_seq<1> : seq<0> {
269
+ };
270
+ } // namespace ink::runtime::internal
@@ -0,0 +1,169 @@
1
+ /* Copyright (c) 2024 Julian Benda
2
+ *
3
+ * This file is part of inkCPP which is released under MIT license.
4
+ * See file LICENSE.txt or go to
5
+ * https://github.com/JBenda/inkcpp for full license details.
6
+ */
7
+ #pragma once
8
+
9
+ #include "list.h"
10
+ #include "story_ptr.h"
11
+ #include "system.h"
12
+
13
+ namespace ink::runtime
14
+ {
15
+ class globals_interface;
16
+ class runner_interface;
17
+ class snapshot;
18
+
19
+ /** alias for an managed @ref ink::runtime::globals_interface pointer */
20
+ using globals = story_ptr<globals_interface>;
21
+ /** alias for an managed @ref ink::runtime::runner_interface pointer */
22
+ using runner = story_ptr<runner_interface>;
23
+ /** alias for @ref ink::runtime::list_interface pointer */
24
+ using list = list_interface*;
25
+
26
+ /** A Ink variable
27
+ *
28
+ * Used for accassing, writing and observing global variables
29
+ * @ref ink::runtime::globals_interface::get()
30
+ * @ref ink::runtime::globals_interface::set()
31
+ * @ref ink::runtime::globals_interface::observe()
32
+ *
33
+ * and for the execution of extern functions
34
+ * @ref ink::runtime::runner_interface::bind()
35
+ */
36
+ struct value {
37
+ private:
38
+ union {
39
+ bool v_bool;
40
+ uint32_t v_uint32;
41
+ int32_t v_int32;
42
+ const char* v_string;
43
+ float v_float;
44
+ list v_list;
45
+ };
46
+
47
+ public:
48
+ /** Type labels for @ref ink::runtime::value */
49
+ enum class Type {
50
+ Bool, ///< containing bool
51
+ Uint32, ///< containing uint32_t
52
+ Int32, ///< containing int32_t
53
+ String, ///< contaning a const char*
54
+ Float, ///< containing a float
55
+ List ///< containing a @ref list_interface
56
+ } type; ///< Label of type currently contained in @ref value
57
+
58
+ value()
59
+ : v_int32{0}
60
+ , type{Type::Int32}
61
+ {
62
+ }
63
+
64
+ ///@{
65
+ /** Construct value from corresponding type */
66
+ value(bool v)
67
+ : v_bool{v}
68
+ , type{Type::Bool}
69
+ {
70
+ }
71
+
72
+ value(uint32_t v)
73
+ : v_uint32{v}
74
+ , type{Type::Uint32}
75
+ {
76
+ }
77
+
78
+ value(int32_t v)
79
+ : v_int32{v}
80
+ , type{Type::Int32}
81
+ {
82
+ }
83
+
84
+ value(const char* v)
85
+ : v_string{v}
86
+ , type{Type::String}
87
+ {
88
+ }
89
+
90
+ value(float v)
91
+ : v_float{v}
92
+ , type{Type::Float}
93
+ {
94
+ }
95
+
96
+ value(list_interface* list)
97
+ : v_list{list}
98
+ , type{Type::List}
99
+ {
100
+ }
101
+
102
+ value(const value& v)
103
+ : type{v.type}
104
+ {
105
+ switch (type) {
106
+ case Type::Bool: v_bool = v.v_bool; break;
107
+ case Type::Uint32: v_uint32 = v.v_uint32; break;
108
+ case Type::Int32: v_int32 = v.v_int32; break;
109
+ case Type::String: v_string = v.v_string; break;
110
+ case Type::Float: v_float = v.v_float; break;
111
+ case Type::List: v_list = v.v_list; break;
112
+ }
113
+ }
114
+
115
+ /// @}
116
+
117
+ /** Get value to corresponding type
118
+ * @tparam Ty #Type label of type to get
119
+ * @attention behavior if undefined if Ty != value.type
120
+ */
121
+ template<Type Ty>
122
+ const auto& get() const
123
+ {
124
+ static_assert(Ty != Ty, "No value getter for the selected type");
125
+ }
126
+ };
127
+
128
+ /** access #value::Type::Bool value */
129
+ template<>
130
+ inline const auto& value::get<value::Type::Bool>() const
131
+ {
132
+ return v_bool;
133
+ }
134
+
135
+ /** access #value::Type::Uint32 value */
136
+ template<>
137
+ inline const auto& value::get<value::Type::Uint32>() const
138
+ {
139
+ return v_uint32;
140
+ }
141
+
142
+ /** access #value::Type::Int32 value */
143
+ template<>
144
+ inline const auto& value::get<value::Type::Int32>() const
145
+ {
146
+ return v_int32;
147
+ }
148
+
149
+ /** access #value::Type::String value */
150
+ template<>
151
+ inline const auto& value::get<value::Type::String>() const
152
+ {
153
+ return v_string;
154
+ }
155
+
156
+ /** access #value::Type::Float value */
157
+ template<>
158
+ inline const auto& value::get<value::Type::Float>() const
159
+ {
160
+ return v_float;
161
+ }
162
+
163
+ /** access #value::Type::List value */
164
+ template<>
165
+ inline const auto& value::get<value::Type::List>() const
166
+ {
167
+ return v_list;
168
+ }
169
+ } // namespace ink::runtime