inkcpp_rb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,177 @@
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 "CoreMinimal.h"
10
+ #include "GameFramework/Actor.h"
11
+ #include "Misc/Optional.h"
12
+
13
+ #include "InkDelegates.h"
14
+ #include "InkSnapshot.h"
15
+
16
+ #include "ink/types.h"
17
+ #include "ink/globals.h"
18
+
19
+
20
+ #include "InkRuntime.generated.h"
21
+
22
+ class UInkThread;
23
+ struct FInkVar;
24
+ namespace ink::runtime { class story; }
25
+
26
+ /** Instanciated story with global variable storage and access, used to instanciate new threads.
27
+ * @ingroup unreal
28
+ */
29
+ UCLASS()
30
+ class INKCPP_API AInkRuntime : public AActor
31
+ {
32
+ GENERATED_BODY()
33
+
34
+ public:
35
+ // Sets default values for this actor's properties
36
+ AInkRuntime();
37
+ ~AInkRuntime();
38
+
39
+ UFUNCTION(BlueprintCallable, Category = "Ink")
40
+ /**
41
+ * Create a new Thread. If a Snapshot is set/loaded create Threads like there was before
42
+ * if you want to create a fresh Thread despite an existing LoadedSnapshot enter the starting path
43
+ *
44
+ * @blueprint
45
+ */
46
+ UInkThread* Start(TSubclassOf<UInkThread> type, FString path = "", bool runImmediately = true);
47
+
48
+ UFUNCTION(BlueprintCallable, Category = "Ink")
49
+ /**
50
+ * Create a new Thread in existing memory, for more details \see AInkRuntime::Start()
51
+ *
52
+ * @blueprint
53
+ */
54
+ UInkThread* StartExisting(UInkThread* thread, FString path = "", bool runImmediately = true);
55
+
56
+ UFUNCTION(BlueprintCallable, Category="Ink")
57
+ /** creates a snapshot of the current runtime state.
58
+ * can be loladed with @ref #LoadSnapshot()
59
+ *
60
+ * @blueprint
61
+ */
62
+ FInkSnapshot Snapshot();
63
+
64
+ UFUNCTION(BlueprintCallable, Category = "Ink")
65
+ /**
66
+ * Loads a snapshot file, therfore deletes globals and invalidate all current Threads
67
+ * After this Start and StartExisting will load the corresponding Threads (on at a time)
68
+ *
69
+ * @blueprint
70
+ */
71
+ void LoadSnapshot(const FInkSnapshot& snapshot);
72
+
73
+
74
+ UFUNCTION(BlueprintCallable, Category="Ink")
75
+ /** Marks a thread as "exclusive".
76
+ * As long as it is running, no other threads will update.
77
+ * @see #PopExclusiveThread()
78
+ *
79
+ * @blueprint
80
+ */
81
+ void PushExclusiveThread(UInkThread* Thread);
82
+
83
+ UFUNCTION(BlueprintCallable, Category="Ink")
84
+ /** Removes a thread from the exclusive stack.
85
+ * @see #PushExclusiveThread()
86
+ *
87
+ * @blueprint
88
+ */
89
+ void PopExclusiveThread(UInkThread* Thread);
90
+
91
+ UFUNCTION(BlueprintCallable, Category="Ink")
92
+ /** register a "tag function"
93
+ * This function is executed if context or a tag in a special format apears
94
+ * @see @ref TagFunction
95
+ *
96
+ * @blueprint
97
+ */
98
+ void RegisterTagFunction(FName functionName, const FTagFunctionDelegate & function);
99
+
100
+ /** @private for interanl use */
101
+ void HandleTagFunction(UInkThread* Caller, const TArray<FString>& Params);
102
+
103
+ UFUNCTION(BlueprintCallable, Category="Ink")
104
+ /** Access a variable from the ink runtime.
105
+ * variables are shared between all threads in the same runtime.
106
+ * @param name of variable in ink script
107
+ *
108
+ * @blueprint
109
+ */
110
+ FInkVar GetGlobalVariable(const FString& name);
111
+
112
+ UFUNCTION(BlueprintCallable, Category="Ink")
113
+ /** Sets a global variable inside the ink runtime.
114
+ * @param name of variable in ink script
115
+ * @param value new value for the variable
116
+ *
117
+ * @blueprint
118
+ */
119
+ void SetGlobalVariable(const FString& name, const FInkVar& value);
120
+
121
+ UFUNCTION(BlueprintCallable, Category="Ink")
122
+ /** Gets a ping if variable changes
123
+ * @see #ObserverVariableEvent() #ObserverVariableChange()
124
+ *
125
+ * @blueprint
126
+ */
127
+ void ObserverVariable(const FString& variableName, const FVariableCallbackDelegate& callback);
128
+
129
+ UFUNCTION(BlueprintCallable, Category="Ink")
130
+ /** On variable change provides new value
131
+ * @see #ObserverVariable() #ObserverVariableChange()
132
+ *
133
+ * @blueprint
134
+ */
135
+ void ObserverVariableEvent(const FString& variableName, const FVariableCallbackDelegateNewValue& callback);
136
+
137
+ UFUNCTION(BlueprintCallable, Category="Ink")
138
+ /** On variable change provides old and new value.
139
+ * @see #ObserverVariableEvent() #ObserverVariable()
140
+ * @attention if the varibale set for the firs time, the old value has value type @ref
141
+ * EInkVarType::None
142
+ *
143
+ * @blueprint
144
+ */
145
+ void ObserverVariableChange(const FString& variableName, const FVariableCallbackDelegateNewOldValue& callback);
146
+
147
+ protected:
148
+ /** Called when the game starts or when spawned */
149
+ virtual void BeginPlay() override;
150
+
151
+ public:
152
+ // Called every frame
153
+ /** @private */
154
+ virtual void Tick(float DeltaTime) override;
155
+
156
+ // Story asset used in this level
157
+ UPROPERTY(EditAnywhere, Category="Ink")
158
+ /** @private */
159
+ class UInkAsset* InkAsset;
160
+
161
+ private:
162
+ ink::runtime::story* mpRuntime;
163
+ ink::runtime::globals mpGlobals;
164
+
165
+ UPROPERTY()
166
+ TArray<UInkThread*> mThreads;
167
+
168
+ TMap<FName, FGlobalTagFunctionMulticastDelegate> mGlobalTagFunctions;
169
+
170
+ UPROPERTY()
171
+ TArray<UInkThread*> mExclusiveStack;
172
+
173
+ // UPROPERTY(EditDefaultsOnly, Category="Ink")
174
+ TOptional<FInkSnapshot> mSnapshot;
175
+ // snapshot generates data when re-constructing the globals to allow reconstructing the threads
176
+ ink::runtime::snapshot* mpSnapshot;
177
+ };
@@ -0,0 +1,30 @@
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 "InkSnapshot.generated.h"
10
+
11
+ /** A serelizable snapshot of a runtime state
12
+ * Can be used as variable in a USaveGame to be stored and reloaded
13
+ * @ingroup unreal
14
+ */
15
+ USTRUCT(BlueprintType)
16
+ struct INKCPP_API FInkSnapshot
17
+ {
18
+ GENERATED_BODY()
19
+ FInkSnapshot() {}
20
+
21
+ /** @private */
22
+ FInkSnapshot(const char* snap_data, size_t snap_len)
23
+ : data(reinterpret_cast<const uint8*>(snap_data), snap_len)
24
+ {}
25
+ UPROPERTY(BlueprintReadWrite, SaveGame, Category = "ink|SaveGame")
26
+ /** Raw data used to restore runtime state.
27
+ * not needed if a USaveGame is used.
28
+ */
29
+ TArray<uint8> data;
30
+ };
@@ -0,0 +1,215 @@
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 "CoreMinimal.h"
10
+ #include "UObject/NoExportTypes.h"
11
+
12
+ #include "InkVar.h"
13
+ #include "InkDelegates.h"
14
+
15
+
16
+ #include "ink/runner.h"
17
+ #include "ink/types.h"
18
+
19
+ #include "InkThread.generated.h"
20
+
21
+ class UTagList;
22
+ class AInkRuntime;
23
+ class UInkChoice;
24
+
25
+ /** Base class for all ink threads
26
+ * @ingroup unreal
27
+ */
28
+ UCLASS(Blueprintable)
29
+ class INKCPP_API UInkThread : public UObject
30
+ {
31
+ GENERATED_BODY()
32
+
33
+ public:
34
+ UInkThread();
35
+ ~UInkThread();
36
+
37
+ // Yields the thread immediately. Will wait until Resume().
38
+ UFUNCTION(BlueprintCallable, Category = "Ink")
39
+ /** Yields the thread immediatly.
40
+ * This will stop the execution (after finishing the current line).
41
+ * until @ref #Resume() is called.
42
+ *
43
+ * @ref #Yield() and @ref #Resume() working with a refernce counter.
44
+ * therfore a thread can be yield multiple times, and must then be resumed
45
+ * the same amount.
46
+ *
47
+ * @blueprint
48
+ */
49
+ void Yield();
50
+
51
+ UFUNCTION(BlueprintPure, Category = "Ink")
52
+ /** Checks if the thread is stopped.
53
+ * @retval true if the thread currently waiting to resume
54
+ * @see #Yield() #Resume()
55
+ *
56
+ * @blueprint
57
+ */
58
+ bool IsYielding();
59
+
60
+ UFUNCTION(BlueprintCallable, Category = "Ink")
61
+ /** Resumes yielded thread.
62
+ * @see #Yield()
63
+ *
64
+ * @blueprint
65
+ */
66
+ void Resume();
67
+
68
+ UFUNCTION(BlueprintCallable, Category = "Ink")
69
+ /** Kills thread at next possible moment
70
+ *
71
+ * @blueprint
72
+ */
73
+ void Stop();
74
+
75
+ UFUNCTION(BlueprintPure, Category = "Ink")
76
+
77
+ /** Access runtime the thread belongs to
78
+ * @return runtime of the thread
79
+ *
80
+ * @blueprint
81
+ */
82
+ AInkRuntime* GetRuntime() const { return mpRuntime; }
83
+
84
+ // Called before the thread begins executing
85
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ink")
86
+ /** triggered after initalizing the runner
87
+ *
88
+ * @blueprint
89
+ */
90
+ void OnStartup();
91
+
92
+ // Called when the thread has printed a new line
93
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ink")
94
+ /** triggerd if a new line of context is available
95
+ * @param line text of new line
96
+ * @param tags tags assoziated with this line
97
+ *
98
+ * @blueprint
99
+ */
100
+ void OnLineWritten(const FString& line, const UTagList* tags);
101
+
102
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ink")
103
+ /** triggered when a tag is encountered
104
+ * @param tag_name the tag found
105
+ *
106
+ * @blueprint
107
+ */
108
+ void OnTag(const FString& tag_name);
109
+
110
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ink")
111
+ /** triggered when reached a choice point.
112
+ * @param choices possible branches to choos for continue
113
+ * @see #PickChoice()
114
+ *
115
+ * @blueprint
116
+ */
117
+ void OnChoice(const TArray<UInkChoice*>& choices);
118
+
119
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ink")
120
+ /** triggered when the thread reached the end of context
121
+ * @see AInkRuntime::StartExisting()
122
+ *
123
+ * @blueprint
124
+ */
125
+ void OnShutdown();
126
+
127
+ UFUNCTION(BlueprintCallable, Category = "Ink")
128
+ /** picks a choice to continue with
129
+ * @see UInkChoice::GetIndex()
130
+ * @retval false if the index is out of range
131
+ *
132
+ * @blueprint
133
+ */
134
+ bool PickChoice(int index);
135
+
136
+ // Registers a callback for a named "tag function"
137
+ UFUNCTION(BlueprintCallable, Category = "Ink")
138
+ /** Register a callback for a named "tag function"
139
+ * @see @ref TagFunction
140
+ *
141
+ * @blueprint
142
+ */
143
+ void RegisterTagFunction(FName functionName, const FTagFunctionDelegate& function);
144
+
145
+ UFUNCTION(BlueprintCallable, Category = "Ink")
146
+ /** register a external function.
147
+ * A function provides a return value
148
+ * @see if you do not want to return something #RegisterExternalEvent()
149
+ *
150
+ * @blueprint
151
+ */
152
+ void RegisterExternalFunction(
153
+ const FString& functionName, const FExternalFunctionDelegate& function,
154
+ bool lookaheadSafe = false
155
+ );
156
+
157
+ UFUNCTION(BlueprintCallable, Category = "Ink")
158
+ /** register external event.
159
+ * A event has the return type void.
160
+ * @see If you want to return a value use #RegisterExternalFunction()
161
+ *
162
+ * @blueprint
163
+ */
164
+ void RegisterExternalEvent(
165
+ const FString& functionName, const FExternalFunctionVoidDelegate& function,
166
+ bool lookaheadSafe = false
167
+ );
168
+
169
+
170
+ protected:
171
+ /** @private */
172
+ virtual void OnStartup_Implementation() {}
173
+
174
+ /** @private */
175
+ virtual void OnLineWritten_Implementation(const FString& line, UTagList* tags) {}
176
+
177
+ /** @private */
178
+ virtual void OnTag_Implementation(const FString& line) {}
179
+
180
+ /** @private */
181
+ virtual void OnChoice_Implementation(const TArray<UInkChoice*>& choices) {}
182
+
183
+ /** @private */
184
+ virtual void OnShutdown_Implementation() {}
185
+
186
+ private:
187
+ friend class AInkRuntime;
188
+
189
+ void Initialize(FString path, AInkRuntime* runtime, ink::runtime::runner thread);
190
+ bool Execute();
191
+ bool CanExecute() const;
192
+
193
+ bool ExecuteInternal();
194
+
195
+ void ExecuteTagMethod(const TArray<FString>& Params);
196
+
197
+ private:
198
+ ink::runtime::runner mpRunner;
199
+ UTagList* mpTags;
200
+ TArray<UInkChoice*> mCurrentChoices; /// @TODO: make accassible?
201
+
202
+ TMap<FName, FTagFunctionMulticastDelegate> mTagFunctions;
203
+
204
+ FString mStartPath;
205
+ bool mbHasRun;
206
+
207
+ int mnChoiceToChoose;
208
+ int mnYieldCounter;
209
+ bool mbInChoice;
210
+ bool mbKill;
211
+ bool mbInitialized;
212
+
213
+ UPROPERTY()
214
+ AInkRuntime* mpRuntime;
215
+ };
@@ -0,0 +1,245 @@
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
+ * Based on Copyright (c) 2020 David Colson
8
+ * UnrealInk @ https://github.com/DavidColson/UnrealInk
9
+ */
10
+ #pragma once
11
+
12
+ #include "CoreMinimal.h"
13
+ #include "Kismet/BlueprintFunctionLibrary.h"
14
+ #include "UObject/TextProperty.h"
15
+ #include "Containers/Union.h"
16
+ #include "Containers/StringConv.h"
17
+
18
+ #include "InkList.h"
19
+
20
+ #include "InkVar.generated.h"
21
+
22
+ /** Label for types possible contained in a @ref FInkVar
23
+ * @ingroup unreal
24
+ */
25
+ UENUM(BlueprintType)
26
+ enum class EInkVarType : uint8
27
+ {
28
+ Float, ///< contains a value of type float
29
+ Int, ///< contains a value of type int or uint
30
+ UInt, ///< @todo currenty not supported
31
+ Bool, ///< contains a boolean
32
+ String, ///< contains a string value
33
+ List, ///< contains a @ref UInkList
34
+ None ///< contains no value
35
+ };
36
+
37
+ namespace ink::runtime { struct value; }
38
+
39
+ /** A wrapper for passing around ink vars to and from ink itself.
40
+ * To access the values see @ref UInkVarLibrary
41
+ * @see UInkVarLibrary
42
+ * @ingroup unreal
43
+ */
44
+ USTRUCT(BlueprintType)
45
+ struct INKCPP_API FInkVar
46
+ {
47
+ GENERATED_BODY()
48
+
49
+ FInkVar() {}
50
+
51
+ /** @private */
52
+ FInkVar(float val) { value.SetSubtype<float>(val); }
53
+
54
+ /** @private */
55
+ FInkVar(int val) { value.SetSubtype<int>(val); }
56
+
57
+ /** @private */
58
+ FInkVar(unsigned val)
59
+ {
60
+ UE_LOG(InkCpp, Warning, TEXT("Converting unsigned to signed int, since missing blueprint support for unsigned type"));
61
+ value.SetSubtype<int>(val);
62
+ } // TODO: change if we find a way to support unsigned values in blueprints
63
+
64
+ /** @private */
65
+ FInkVar(bool val) { value.SetSubtype<bool>(val); }
66
+
67
+ /** @private */
68
+ FInkVar(FString val) {
69
+ value.SetSubtype<FString>(val);
70
+ BufferDecodedString();
71
+ }
72
+
73
+ /** @private */
74
+ FInkVar(UInkList& List) { value.SetSubtype<UInkList*>(&List); }
75
+
76
+ /** @private */
77
+ FInkVar(ink::runtime::value val);
78
+
79
+ /** @private */
80
+ ink::runtime::value to_value() const;
81
+
82
+
83
+ // allow changing via Editor, but not in controle flow, it is just a wrapper type to create a new one
84
+ // UPROPERTY(EditAnywhere, Category = "Ink")
85
+ /** @private */
86
+ TUnion<float, int, unsigned, bool, FString, UInkList*> value;
87
+
88
+ /** Keeps utf8 version of string alive to write it in runtime.
89
+ * @private
90
+ */
91
+ TArray<UTF8CHAR> utf8{};
92
+
93
+ /** Get the type contained in the value
94
+ * @retval EInkVarType::None if no value is contained (void)
95
+ * @private
96
+ */
97
+ EInkVarType type() const {
98
+ uint8 id = value.GetCurrentSubtypeIndex();
99
+ if(id >= static_cast<uint8>(EInkVarType::None))
100
+ { return EInkVarType::None; }
101
+ else
102
+ { return static_cast<EInkVarType>(id); }
103
+ }
104
+ private:
105
+ void BufferDecodedString() {
106
+ FTCHARToUTF8 Convert(*value.GetSubtype<FString>());
107
+ utf8.SetNum(Convert.Length() + 1);
108
+ UTF8CHAR* dst = utf8.GetData();
109
+ [this,&dst](const UTF8CHAR* src){
110
+ int i = 0;
111
+ while(*src) {
112
+ *dst++ = *src++;
113
+ }
114
+ *dst = static_cast<UTF8CHAR>(0);
115
+ }(reinterpret_cast<const UTF8CHAR*>(Convert.Get()));
116
+ }
117
+ };
118
+
119
+ /** Conversion Methods for @ref FInkVar
120
+ * @ingroup unreal
121
+ */
122
+ UCLASS()
123
+ class INKCPP_API UInkVarLibrary : public UBlueprintFunctionLibrary
124
+ {
125
+ GENERATED_BODY()
126
+
127
+ public:
128
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Var Type", BlueprintAutocast), Category = "Ink")
129
+ /** Get the type contained in the value
130
+ * @retval EInkVarType::None if no value is contained (void)
131
+ *
132
+ * @blueprint
133
+ */
134
+ static EInkVarType InkVarType(const FInkVar& InkVar);
135
+
136
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "String (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
137
+ /** Access String value
138
+ *
139
+ * @blueprint
140
+ */
141
+ static FString Conv_InkVarString(const FInkVar& InkVar);
142
+
143
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Int (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
144
+ /** Access Int/Uint value
145
+ * @todo suppurt unsigned int
146
+ *
147
+ * @blueprint
148
+ */
149
+ static int Conv_InkVarInt(const FInkVar& InkVar);
150
+
151
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Float (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
152
+ /** Access Float Value
153
+ *
154
+ * @blueprint
155
+ */
156
+ static float Conv_InkVarFloat(const FInkVar& InkVar);
157
+
158
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Name (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
159
+ /** Access String value as FName
160
+ *
161
+ * @blueprint
162
+ */
163
+ static FName Conv_InkVarName(const FInkVar& InkVar);
164
+
165
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Text (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
166
+ /** Access Strnig value as FText
167
+ *
168
+ * @blueprint
169
+ */
170
+ static FText Conv_InkVarText(const FInkVar& InkVar);
171
+
172
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Bool (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
173
+ /** Access bool value
174
+ *
175
+ * @blueprint */
176
+ static bool Conv_InkVarBool(const FInkVar& InkVar);
177
+
178
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "InkList (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
179
+ /** Access @ref UInkList "List" value
180
+ *
181
+ * @blueprint
182
+ */
183
+ static const UInkList* Conv_InkVarInkList(const FInkVar& InkVar);
184
+
185
+ // UFUNCTION(BlueprintPure, meta = (DisplayName = "UInt (Ink Var)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
186
+ // static unsigned Conv_InkVarUInt(const FInkVar& InkVar);
187
+
188
+
189
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (String)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
190
+ /** Convert string to @ref FInkVar
191
+ *
192
+ * @blueprint
193
+ */
194
+ static FInkVar Conv_StringInkVar(const FString& String);
195
+
196
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (Int)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
197
+ /** Convert int to @ref FInkVar
198
+ * @todo support unsigned values
199
+ *
200
+ * @blueprint
201
+ */
202
+ static FInkVar Conv_IntInkVar(int Number);
203
+
204
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (Float)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
205
+ /** Convert float to @ref FInkVar
206
+ *
207
+ * @blueprint
208
+ */
209
+ static FInkVar Conv_FloatInkVar(float Number);
210
+
211
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (Text)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
212
+ /** Convert FText to @ref FInkVar of type @ref EInkVarType::String "String"
213
+ *
214
+ * @blueprint
215
+ */
216
+ static FInkVar Conv_TextInkVar(const FText& Text);
217
+
218
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (Name)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
219
+ /** Convert FName to @ref FInkVar of type @ref EInkVarType::String "String"
220
+ *
221
+ * @blueprint
222
+ */
223
+ static FInkVar Conv_NameInkVar(const FName& Name);
224
+
225
+ UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (Bool)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
226
+ /** Convert bool to @ref FInkVar
227
+ *
228
+ * @blueprint
229
+ */
230
+ static FInkVar Conv_BoolInkVar(bool Boolean);
231
+
232
+ UFUNCTION(
233
+ BlueprintPure,
234
+ meta = (DisplayName = "Ink Var (InkList)", CompactNodeTitle = "->", BlueprintAutocast),
235
+ Category = "Ink"
236
+ )
237
+ /** Converts @ref UInkList "List" to @ref FInkVar
238
+ *
239
+ * @blueprint
240
+ */
241
+ static FInkVar Conv_ListInkVar(UInkList* List);
242
+
243
+ // UFUNCTION(BlueprintPure, meta = (DisplayName = "Ink Var (UInt)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Ink")
244
+ // static FInkVar Conv_UIntInkVar(unsigned Number);
245
+ };