├── test ├── llvm │ ├── main.cpp │ ├── llvmexecutioncontext_test.cpp │ └── testmock.h ├── if.sb3 ├── Meow.wav ├── Pop.wav ├── step.sb3 ├── clones.sb3 ├── if_else.sb3 ├── image1.jpg ├── image1.png ├── image2.jpg ├── image2.png ├── sounds.sb3 ├── 2_frames.sb3 ├── 3_threads.sb3 ├── broadcasts.sb3 ├── if_empty.sb3 ├── load_test.sb3 ├── repeat10.sb3 ├── stop_all.sb3 ├── bubble_sort.sb3 ├── clone_limit.sb3 ├── file_manager.sb3 ├── forever_loop.sb3 ├── mouse_wheel.sb3 ├── repeat_empty.sb3 ├── repeat_until.sb3 ├── repeat_while.sb3 ├── custom_blocks.sb3 ├── default_project.sb3 ├── empty_project.sb3 ├── execution_order.sb3 ├── if_else_empty.sb3 ├── repeat_for_each.sb3 ├── resolve_id_test.sb3 ├── stop_all_bypass.sb3 ├── nested_statements.sb3 ├── when_greater_than.sb3 ├── when_key_pressed.sb3 ├── backdrop_broadcasts.sb3 ├── target_click_scripts.sb3 ├── top_level_reporter.sb3 ├── unsupported_blocks.sb3 ├── repeat_for_each_empty.sb3 ├── mocks │ ├── CMakeLists.txt │ ├── audioloudnessmock.h │ ├── audioinputmock.h │ ├── audiooutputmock.h │ ├── timermock.h │ ├── downloaderfactorymock.h │ ├── audioenginemock.h │ ├── projectdownloaderfactorymock.h │ ├── downloadermock.h │ ├── graphicseffectmock.h │ ├── compilercontextmock.h │ ├── randomgeneratormock.h │ ├── codebuilderfactorymock.h │ ├── clockmock.h │ ├── stacktimermock.h │ ├── extensionmock.h │ ├── monitorhandlermock.h │ ├── soundmock.h │ ├── projectdownloadermock.h │ ├── executablecodemock.h │ └── audioplayermock.h ├── stop_other_scripts_in_sprite.sb3 ├── regtest_projects │ ├── 186_crash_after_stop.sb3 │ ├── 395_reset_running_hats.sb3 │ ├── 437_load_double_values.sb3 │ ├── 257_double_broadcast_stop.sb3 │ ├── 394_stop_before_starting.sb3 │ ├── 448_null_monitor_dimension.sb3 │ ├── 256_broadcast_self_call_crash.sb3 │ ├── 567_duplicate_variable_list_id.sb3 │ ├── 563_broadcast_stops_wait_blocks.sb3 │ ├── 488_scientific_notation_conversion.sb3 │ ├── 547_stop_clone_threads_in_stop_all.sb3 │ ├── 578_broadcast_and_wait_case_insensitive.sb3 │ ├── 446_undefined_variable_or_list_field_crash.sb3 │ ├── 446_undefined_variable_or_list_input_crash.sb3 │ ├── 277_custom_block_call_running_broadcast_stop.sb3 │ └── 445_undefined_variable_or_list_monitor_crash.sb3 ├── rect │ └── CMakeLists.txt ├── clock │ ├── CMakeLists.txt │ └── clock_test.cpp ├── zip │ ├── CMakeLists.txt │ └── zip_test.cpp ├── promise │ ├── CMakeLists.txt │ └── promise_test.cpp ├── scratchconfiguration │ ├── extension1.cpp │ ├── extension2.cpp │ ├── extension3.cpp │ ├── extension1.h │ ├── extension2.h │ ├── extension3.h │ ├── extensionbase.cpp │ ├── extensionbase.h │ └── CMakeLists.txt ├── blocks │ └── util.h ├── randomgenerator │ └── CMakeLists.txt ├── engine │ └── CMakeLists.txt ├── script │ └── CMakeLists.txt ├── thread │ └── CMakeLists.txt ├── project │ └── CMakeLists.txt ├── timer │ ├── CMakeLists.txt │ └── timer_test.cpp ├── load_project │ └── CMakeLists.txt ├── assets │ ├── testasset.cpp │ ├── testasset.h │ └── CMakeLists.txt ├── executioncontext │ └── CMakeLists.txt ├── extensions │ ├── CMakeLists.txt │ ├── testextension.h │ ├── testextension.cpp │ └── iextension_test.cpp ├── scratch_classes │ ├── entity_test.cpp │ ├── testextension.h │ ├── testextension.cpp │ ├── stringptr_test.cpp │ ├── string_pool_test.cpp │ ├── broadcast_test.cpp │ └── drawable_test.cpp ├── compiler │ ├── CMakeLists.txt │ ├── compilercontext_test.cpp │ ├── compilerconstant_test.cpp │ ├── compilerlocalvariable_test.cpp │ └── compilervalue_test.cpp ├── network │ ├── downloaderfactory_test.cpp │ └── projectdownloaderfactory_test.cpp ├── test_api │ ├── CMakeLists.txt │ └── testextension.h ├── audio │ ├── audioplayer_test.cpp │ ├── audiooutput_test.cpp │ ├── audioinput_test.cpp │ └── audioengine_test.cpp ├── target_interfaces │ └── CMakeLists.txt ├── empty_project.json └── CMakeLists.txt ├── src ├── engine │ ├── promise_p.cpp │ ├── compilerconstant_p.cpp │ ├── promise_p.h │ ├── compilervalue_p.cpp │ ├── compilercontext_p.cpp │ ├── thread_p.cpp │ ├── script_p.cpp │ ├── compilerlocalvariable_p.cpp │ ├── compilerconstant_p.h │ ├── internal │ │ ├── llvm │ │ │ ├── instructions │ │ │ │ ├── instructiongroup.cpp │ │ │ │ ├── functions.h │ │ │ │ ├── instructionbuilder.h │ │ │ │ ├── procedures.h │ │ │ │ ├── logic.h │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── instructiongroup.h │ │ │ │ ├── string.h │ │ │ │ ├── processresult.h │ │ │ │ ├── comparison.h │ │ │ │ ├── variables.h │ │ │ │ └── control.h │ │ │ ├── llvmlocalvariableinfo.h │ │ │ ├── llvmloop.h │ │ │ ├── llvmifstatement.h │ │ │ ├── llvmtypes.h │ │ │ ├── llvmvariableptr.h │ │ │ ├── llvmlistptr.h │ │ │ ├── llvmconstantregister.h │ │ │ ├── CMakeLists.txt │ │ │ ├── llvmregister.h │ │ │ ├── llvminstructionlist.h │ │ │ ├── llvmcoroutine.h │ │ │ ├── llvmexecutioncontext.h │ │ │ └── llvmtypes.cpp │ │ ├── iclock.h │ │ ├── icodebuilderfactory.h │ │ ├── codebuilderfactory.h │ │ ├── timer.h │ │ ├── clock.cpp │ │ ├── clock.h │ │ ├── timer.cpp │ │ ├── stacktimer.h │ │ ├── randomgenerator.h │ │ ├── codebuilderfactory.cpp │ │ └── stacktimer.cpp │ ├── compilervalue_p.h │ ├── compilercontext_p.h │ ├── compilerlocalvariable_p.h │ ├── executioncontext_p.cpp │ ├── promise.cpp │ ├── compilerconstant.cpp │ ├── compilerlocalvariable.cpp │ ├── compilervalue.cpp │ ├── executioncontext_p.h │ ├── compilercontext.cpp │ ├── thread_p.h │ ├── script_p.h │ └── CMakeLists.txt ├── scratch │ ├── drawable_p.cpp │ ├── textbubble_p.cpp │ ├── target_p.cpp │ ├── list_p.cpp │ ├── costume_p.cpp │ ├── entity_p.cpp │ ├── stage_p.cpp │ ├── comment_p.cpp │ ├── input_p.cpp │ ├── block_p.cpp │ ├── inputvalue_p.cpp │ ├── stringptr.cpp │ ├── entity_p.h │ ├── string_pool_p.h │ ├── variable_p.cpp │ ├── broadcast_p.cpp │ ├── monitor_p.cpp │ ├── drawable_p.h │ ├── asset_p.cpp │ ├── broadcast_p.h │ ├── keyevent_p.h │ ├── textbubble_p.h │ ├── input_p.h │ ├── entity.cpp │ ├── list_p.h │ ├── stage_p.h │ ├── costume_p.h │ ├── inputvalue_p.h │ ├── sound_p.cpp │ ├── field_p.cpp │ ├── variable_p.h │ ├── comment_p.h │ ├── field_p.h │ ├── asset_p.h │ ├── blockprototype_p.h │ ├── keyevent.cpp │ ├── list_functions.h │ ├── sound_p.h │ ├── broadcast.cpp │ ├── drawable.cpp │ ├── sprite_p.h │ ├── monitor_p.h │ └── blockprototype_p.cpp ├── test │ ├── CMakeLists.txt │ ├── scriptbuilder_p.cpp │ └── scriptbuilder_p.h ├── audio │ ├── internal │ │ ├── audioloudnessstub.cpp │ │ ├── audioloudnessstub.h │ │ ├── audioenginestub.cpp │ │ ├── audioloudness.h │ │ ├── audioenginestub.h │ │ ├── audioengine.h │ │ ├── audioplayerstub.h │ │ ├── audioplayerstub.cpp │ │ └── audioplayer.h │ ├── iaudioloudness.h │ ├── iaudiooutput.h │ ├── iaudioinput.h │ ├── iaudioengine.h │ ├── audiooutput.h │ ├── audioinput.h │ ├── audiooutput.cpp │ ├── audioinput.cpp │ └── iaudioplayer.h ├── rect_p.cpp ├── internal │ ├── idownloader.h │ ├── idownloaderfactory.h │ ├── iprojectdownloaderfactory.h │ ├── projecturl.h │ ├── downloaderfactory.cpp │ ├── downloaderfactory.h │ ├── downloader.h │ ├── projectdownloaderfactory.h │ ├── reader_common.h │ ├── zipreader.h │ ├── CMakeLists.txt │ ├── iprojectdownloader.h │ ├── downloader.cpp │ ├── projectdownloaderfactory.cpp │ ├── projectdownloaderstub.h │ ├── projectdownloaderstub.cpp │ ├── scratch3reader.h │ └── zipreader.cpp ├── rect_p.h ├── test_export.h ├── blocks │ ├── blocks.h │ ├── customblocks.h │ ├── variableblocks.h │ └── soundblocks.h ├── CMakeLists.txt ├── scratchconfiguration_p.h └── scratchconfiguration_p.cpp ├── thirdparty └── cpp-unicodelib │ └── CMakeLists.txt ├── .gitmodules ├── .github ├── config.env └── workflows │ ├── build.yml │ ├── utests-minimal.yml │ └── utests.yml ├── include └── scratchcpp │ ├── string_pool.h │ ├── itimer.h │ ├── promise.h │ ├── imonitorhandler.h │ ├── igraphicseffect.h │ ├── compilerlocalvariable.h │ ├── broadcast.h │ ├── entity.h │ ├── compilerconstant.h │ ├── compilervalue.h │ ├── irandomgenerator.h │ ├── keyevent.h │ ├── valuedata.h │ ├── stringptr.h │ ├── compilercontext.h │ ├── costume.h │ ├── istacktimer.h │ ├── iextension.h │ ├── thread.h │ ├── drawable.h │ ├── field.h │ ├── script.h │ ├── textbubble.h │ ├── executioncontext.h │ ├── variable.h │ ├── comment.h │ ├── project.h │ ├── rect.h │ └── asset.h ├── docs ├── Home.md └── Getting started.md ├── .gitignore └── .clang-format /test/llvm/main.cpp: -------------------------------------------------------------------------------- 1 | #include "../common.h" 2 | -------------------------------------------------------------------------------- /test/if.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/if.sb3 -------------------------------------------------------------------------------- /test/Meow.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/Meow.wav -------------------------------------------------------------------------------- /test/Pop.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/Pop.wav -------------------------------------------------------------------------------- /test/step.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/step.sb3 -------------------------------------------------------------------------------- /test/clones.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/clones.sb3 -------------------------------------------------------------------------------- /test/if_else.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/if_else.sb3 -------------------------------------------------------------------------------- /test/image1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/image1.jpg -------------------------------------------------------------------------------- /test/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/image1.png -------------------------------------------------------------------------------- /test/image2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/image2.jpg -------------------------------------------------------------------------------- /test/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/image2.png -------------------------------------------------------------------------------- /test/sounds.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/sounds.sb3 -------------------------------------------------------------------------------- /test/2_frames.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/2_frames.sb3 -------------------------------------------------------------------------------- /test/3_threads.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/3_threads.sb3 -------------------------------------------------------------------------------- /test/broadcasts.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/broadcasts.sb3 -------------------------------------------------------------------------------- /test/if_empty.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/if_empty.sb3 -------------------------------------------------------------------------------- /test/load_test.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/load_test.sb3 -------------------------------------------------------------------------------- /test/repeat10.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/repeat10.sb3 -------------------------------------------------------------------------------- /test/stop_all.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/stop_all.sb3 -------------------------------------------------------------------------------- /test/bubble_sort.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/bubble_sort.sb3 -------------------------------------------------------------------------------- /test/clone_limit.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/clone_limit.sb3 -------------------------------------------------------------------------------- /test/file_manager.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/file_manager.sb3 -------------------------------------------------------------------------------- /test/forever_loop.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/forever_loop.sb3 -------------------------------------------------------------------------------- /test/mouse_wheel.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/mouse_wheel.sb3 -------------------------------------------------------------------------------- /test/repeat_empty.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/repeat_empty.sb3 -------------------------------------------------------------------------------- /test/repeat_until.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/repeat_until.sb3 -------------------------------------------------------------------------------- /test/repeat_while.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/repeat_while.sb3 -------------------------------------------------------------------------------- /test/custom_blocks.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/custom_blocks.sb3 -------------------------------------------------------------------------------- /test/default_project.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/default_project.sb3 -------------------------------------------------------------------------------- /test/empty_project.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/empty_project.sb3 -------------------------------------------------------------------------------- /test/execution_order.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/execution_order.sb3 -------------------------------------------------------------------------------- /test/if_else_empty.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/if_else_empty.sb3 -------------------------------------------------------------------------------- /test/repeat_for_each.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/repeat_for_each.sb3 -------------------------------------------------------------------------------- /test/resolve_id_test.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/resolve_id_test.sb3 -------------------------------------------------------------------------------- /test/stop_all_bypass.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/stop_all_bypass.sb3 -------------------------------------------------------------------------------- /test/nested_statements.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/nested_statements.sb3 -------------------------------------------------------------------------------- /test/when_greater_than.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/when_greater_than.sb3 -------------------------------------------------------------------------------- /test/when_key_pressed.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/when_key_pressed.sb3 -------------------------------------------------------------------------------- /test/backdrop_broadcasts.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/backdrop_broadcasts.sb3 -------------------------------------------------------------------------------- /test/target_click_scripts.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/target_click_scripts.sb3 -------------------------------------------------------------------------------- /test/top_level_reporter.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/top_level_reporter.sb3 -------------------------------------------------------------------------------- /test/unsupported_blocks.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/unsupported_blocks.sb3 -------------------------------------------------------------------------------- /test/repeat_for_each_empty.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/repeat_for_each_empty.sb3 -------------------------------------------------------------------------------- /test/mocks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(scratchcpp_mocks INTERFACE) 2 | target_include_directories(scratchcpp_mocks INTERFACE .) 3 | -------------------------------------------------------------------------------- /test/stop_other_scripts_in_sprite.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/stop_other_scripts_in_sprite.sb3 -------------------------------------------------------------------------------- /src/engine/promise_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "promise_p.h" 4 | 5 | using namespace libscratchcpp; 6 | -------------------------------------------------------------------------------- /src/scratch/drawable_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "drawable_p.h" 4 | 5 | using namespace libscratchcpp; 6 | -------------------------------------------------------------------------------- /src/scratch/textbubble_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "textbubble_p.h" 4 | 5 | using namespace libscratchcpp; 6 | -------------------------------------------------------------------------------- /src/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(scratchcpp 2 | PRIVATE 3 | scriptbuilder.cpp 4 | scriptbuilder_p.cpp 5 | scriptbuilder_p.h 6 | ) 7 | -------------------------------------------------------------------------------- /test/regtest_projects/186_crash_after_stop.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/186_crash_after_stop.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/395_reset_running_hats.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/395_reset_running_hats.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/437_load_double_values.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/437_load_double_values.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/257_double_broadcast_stop.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/257_double_broadcast_stop.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/394_stop_before_starting.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/394_stop_before_starting.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/448_null_monitor_dimension.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/448_null_monitor_dimension.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/256_broadcast_self_call_crash.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/256_broadcast_self_call_crash.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/567_duplicate_variable_list_id.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/567_duplicate_variable_list_id.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/563_broadcast_stops_wait_blocks.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/563_broadcast_stops_wait_blocks.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/488_scientific_notation_conversion.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/488_scientific_notation_conversion.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/547_stop_clone_threads_in_stop_all.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/547_stop_clone_threads_in_stop_all.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/578_broadcast_and_wait_case_insensitive.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/578_broadcast_and_wait_case_insensitive.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/446_undefined_variable_or_list_field_crash.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/446_undefined_variable_or_list_field_crash.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/446_undefined_variable_or_list_input_crash.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/446_undefined_variable_or_list_input_crash.sb3 -------------------------------------------------------------------------------- /src/scratch/target_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "target_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | TargetPrivate::TargetPrivate() 8 | { 9 | } 10 | -------------------------------------------------------------------------------- /test/regtest_projects/277_custom_block_call_running_broadcast_stop.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/277_custom_block_call_running_broadcast_stop.sb3 -------------------------------------------------------------------------------- /test/regtest_projects/445_undefined_variable_or_list_monitor_crash.sb3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scratchcpp/libscratchcpp/HEAD/test/regtest_projects/445_undefined_variable_or_list_monitor_crash.sb3 -------------------------------------------------------------------------------- /src/engine/compilerconstant_p.cpp: -------------------------------------------------------------------------------- 1 | #include "compilerconstant_p.h" 2 | 3 | using namespace libscratchcpp; 4 | 5 | CompilerConstantPrivate::CompilerConstantPrivate(const Value &value) : 6 | value(value) 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/scratch/list_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "list_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | ListPrivate::ListPrivate(const std::string &name) : 8 | name(name) 9 | { 10 | } 11 | -------------------------------------------------------------------------------- /test/rect/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | rect_test 3 | rect_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | rect_test 8 | GTest::gtest_main 9 | scratchcpp 10 | ) 11 | 12 | gtest_discover_tests(rect_test) 13 | -------------------------------------------------------------------------------- /src/scratch/costume_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "costume_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | CostumePrivate::CostumePrivate() : 8 | broadcast("", "", true) 9 | { 10 | } 11 | -------------------------------------------------------------------------------- /src/scratch/entity_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "entity_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | EntityPrivate::EntityPrivate(const std::string &id) : 8 | id(id) 9 | { 10 | } 11 | -------------------------------------------------------------------------------- /test/clock/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | clock_test 3 | clock_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | clock_test 8 | GTest::gtest_main 9 | scratchcpp 10 | ) 11 | 12 | gtest_discover_tests(clock_test) 13 | -------------------------------------------------------------------------------- /test/zip/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | zip_test 3 | zip_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | zip_test 8 | scratchcpp 9 | GTest::gtest_main 10 | zip 11 | ) 12 | 13 | gtest_discover_tests(zip_test) 14 | -------------------------------------------------------------------------------- /src/scratch/stage_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include 4 | 5 | #include "stage_p.h" 6 | 7 | using namespace libscratchcpp; 8 | 9 | StagePrivate::StagePrivate() 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /src/scratch/comment_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "comment_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | CommentPrivate::CommentPrivate(double x, double y) : 8 | x(x), 9 | y(y) 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /test/promise/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | promise_test 3 | promise_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | promise_test 8 | GTest::gtest_main 9 | scratchcpp 10 | ) 11 | 12 | gtest_discover_tests(promise_test) 13 | -------------------------------------------------------------------------------- /src/engine/promise_p.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #pragma once 4 | 5 | namespace libscratchcpp 6 | { 7 | 8 | struct PromisePrivate 9 | { 10 | bool isResolved = false; 11 | }; 12 | 13 | } // namespace libscratchcpp 14 | -------------------------------------------------------------------------------- /src/engine/compilervalue_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "compilervalue_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | CompilerValuePrivate::CompilerValuePrivate(Compiler::StaticType type) : 8 | type(type) 9 | { 10 | } 11 | -------------------------------------------------------------------------------- /src/scratch/input_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "input_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | InputPrivate::InputPrivate(const std::string &name, Input::Type type) : 8 | name(name), 9 | type(type) 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /test/scratchconfiguration/extension1.cpp: -------------------------------------------------------------------------------- 1 | #include "extension1.h" 2 | 3 | using namespace libscratchcpp; 4 | 5 | std::string Extension1::name() const 6 | { 7 | return "ext 1"; 8 | } 9 | 10 | Rgb Extension1::color() const 11 | { 12 | return rgb(0, 0, 0); 13 | } 14 | -------------------------------------------------------------------------------- /test/scratchconfiguration/extension2.cpp: -------------------------------------------------------------------------------- 1 | #include "extension2.h" 2 | 3 | using namespace libscratchcpp; 4 | 5 | std::string Extension2::name() const 6 | { 7 | return "ext 2"; 8 | } 9 | 10 | Rgb Extension2::color() const 11 | { 12 | return rgb(0, 0, 0); 13 | } 14 | -------------------------------------------------------------------------------- /test/scratchconfiguration/extension3.cpp: -------------------------------------------------------------------------------- 1 | #include "extension3.h" 2 | 3 | using namespace libscratchcpp; 4 | 5 | std::string Extension3::name() const 6 | { 7 | return "ext 3"; 8 | } 9 | 10 | Rgb Extension3::color() const 11 | { 12 | return rgb(0, 0, 0); 13 | } 14 | -------------------------------------------------------------------------------- /test/blocks/util.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace libscratchcpp 4 | { 5 | 6 | class IEngine; 7 | class IExtension; 8 | 9 | void registerBlocks(IEngine *engine, IExtension *extension); 10 | void setConditionReturnValue(bool newValue); 11 | 12 | } // namespace libscratchcpp 13 | -------------------------------------------------------------------------------- /test/randomgenerator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | randomgenerator_test 3 | randomgenerator_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | randomgenerator_test 8 | GTest::gtest_main 9 | scratchcpp 10 | ) 11 | 12 | gtest_discover_tests(randomgenerator_test) 13 | -------------------------------------------------------------------------------- /test/engine/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | engine_test 3 | engine_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | engine_test 8 | GTest::gtest_main 9 | GTest::gmock_main 10 | scratchcpp 11 | scratchcpp_mocks 12 | ) 13 | 14 | gtest_discover_tests(engine_test) 15 | -------------------------------------------------------------------------------- /test/script/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | script_test 3 | script_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | script_test 8 | GTest::gtest_main 9 | GTest::gmock_main 10 | scratchcpp 11 | scratchcpp_mocks 12 | ) 13 | 14 | gtest_discover_tests(script_test) 15 | -------------------------------------------------------------------------------- /test/thread/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | thread_test 3 | thread_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | thread_test 8 | GTest::gtest_main 9 | GTest::gmock_main 10 | scratchcpp 11 | scratchcpp_mocks 12 | ) 13 | 14 | gtest_discover_tests(thread_test) 15 | -------------------------------------------------------------------------------- /test/project/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | project_test 3 | project_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | project_test 8 | GTest::gtest_main 9 | GTest::gmock_main 10 | scratchcpp 11 | scratchcpp_mocks 12 | ) 13 | 14 | gtest_discover_tests(project_test) 15 | -------------------------------------------------------------------------------- /src/scratch/block_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "block_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | BlockPrivate::BlockPrivate(const std::string &opcode, bool isMonitorBlock) : 8 | opcode(opcode), 9 | isMonitorBlock(isMonitorBlock) 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /thirdparty/cpp-unicodelib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(cpp-unicodelib INTERFACE 2 | unicodelib_encodings.h 3 | unicodelib_names.h 4 | unicodelib.h 5 | ) 6 | 7 | target_include_directories(cpp-unicodelib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) 8 | install(TARGETS cpp-unicodelib DESTINATION include) 9 | -------------------------------------------------------------------------------- /src/engine/compilercontext_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "compilercontext_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | CompilerContextPrivate::CompilerContextPrivate(IEngine *engine, Target *target) : 8 | engine(engine), 9 | target(target) 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /test/timer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | timer_test 3 | timer_test.cpp 4 | stacktimer_test.cpp 5 | ) 6 | 7 | target_link_libraries( 8 | timer_test 9 | GTest::gtest_main 10 | GTest::gmock_main 11 | scratchcpp 12 | scratchcpp_mocks 13 | ) 14 | 15 | gtest_discover_tests(timer_test) 16 | -------------------------------------------------------------------------------- /src/audio/internal/audioloudnessstub.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "audioloudnessstub.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | AudioLoudnessStub::AudioLoudnessStub() 8 | { 9 | } 10 | 11 | int AudioLoudnessStub::getLoudness() const 12 | { 13 | return -1; 14 | } 15 | -------------------------------------------------------------------------------- /src/engine/thread_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "thread_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | ThreadPrivate::ThreadPrivate(Target *target, IEngine *engine, Script *script) : 8 | target(target), 9 | engine(engine), 10 | script(script) 11 | { 12 | } 13 | -------------------------------------------------------------------------------- /src/scratch/inputvalue_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "inputvalue_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | InputValuePrivate::InputValuePrivate() 8 | { 9 | } 10 | 11 | InputValuePrivate::InputValuePrivate(InputValue::Type type) : 12 | type(type) 13 | { 14 | } 15 | -------------------------------------------------------------------------------- /src/engine/script_p.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "script_p.h" 4 | 5 | using namespace libscratchcpp; 6 | 7 | ScriptPrivate::ScriptPrivate(Target *target, Block *topBlock, IEngine *engine) : 8 | target(target), 9 | topBlock(topBlock), 10 | engine(engine) 11 | { 12 | } 13 | -------------------------------------------------------------------------------- /src/scratch/stringptr.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include 4 | #include 5 | 6 | using namespace libscratchcpp; 7 | 8 | StringPtr::StringPtr(const std::string &str) 9 | { 10 | string_assign_cstring(this, str.c_str()); 11 | } 12 | -------------------------------------------------------------------------------- /test/load_project/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | load_project_test 3 | load_project_test.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | load_project_test 8 | GTest::gtest_main 9 | GTest::gmock_main 10 | scratchcpp 11 | scratchcpp_mocks 12 | ) 13 | 14 | gtest_discover_tests(load_project_test) 15 | -------------------------------------------------------------------------------- /test/mocks/audioloudnessmock.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include