├── .clang-tidy ├── .gitattributes ├── .gitignore ├── .gitmodules ├── .idea ├── .gitignore ├── .name ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── dictionaries │ └── Albert.xml ├── fbide_experimental.iml ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml ├── modules.xml └── vcs.xml ├── .travis.yml ├── .travis ├── build_fbide.sh ├── dev_cmd.bat ├── dist │ ├── wx-dist.7z │ └── yaml-dist.7z └── import_vs_env.sh ├── CMakeLists.txt ├── LICENCE ├── README.md ├── bin ├── ide │ ├── fbide.yaml │ ├── keywords.yaml │ ├── lang.en.yaml │ └── themes │ │ └── default.yaml └── samples │ └── flappyfb.bas ├── cmake ├── CompilerWarnings.cmake ├── PreventInSourceBuilds.cmake ├── Sanitizers.cmake ├── StandardProjectSettings.cmake └── StaticAnalyzers.cmake ├── cpp.hint ├── src ├── App │ ├── App.cpp │ ├── App.hpp │ ├── Manager.cpp │ └── Manager.hpp ├── CMakeLists.txt ├── Config │ ├── Config.cpp │ ├── Config.hpp │ ├── ConfigManager.cpp │ ├── ConfigManager.hpp │ ├── StyleEntry.cpp │ └── StyleEntry.hpp ├── Document │ ├── Document.cpp │ ├── Document.hpp │ ├── DocumentManager.cpp │ ├── DocumentManager.hpp │ ├── TypeManager.cpp │ └── TypeManager.hpp ├── Editor │ ├── TextDocument.cpp │ └── TextDocument.hpp ├── FB │ ├── Defaults.hpp │ ├── FBEditor.cpp │ ├── FBEditor.hpp │ └── Parser │ │ ├── SourceLexer.cpp │ │ ├── SourceLexer.hpp │ │ ├── SymbolTable.cpp │ │ ├── SymbolTable.hpp │ │ ├── Token.cpp │ │ └── Token.hpp ├── Log │ ├── LogManager.cpp │ └── LogManager.hpp ├── UI │ ├── CmdManager.cpp │ ├── CmdManager.hpp │ ├── IArtProvider.cpp │ ├── IArtProvider.hpp │ ├── MenuHandler.cpp │ ├── MenuHandler.hpp │ ├── PanelHandler.cpp │ ├── PanelHandler.hpp │ ├── StandardArtProvider.cpp │ ├── StandardArtProvider.hpp │ ├── ToolbarHandler.cpp │ ├── ToolbarHandler.hpp │ ├── UiManager.cpp │ ├── UiManager.hpp │ └── xpm │ │ ├── about.xpm │ │ ├── add.xpm │ │ ├── addbook.xpm │ │ ├── addsrc.xpm │ │ ├── arricon.xpm │ │ ├── bughlp.xpm │ │ ├── close.xpm │ │ ├── closefl.xpm │ │ ├── clrhist.xpm │ │ ├── clsall.xpm │ │ ├── colours.xpm │ │ ├── compile.xpm │ │ ├── compopt.xpm │ │ ├── compres.xpm │ │ ├── comprun.xpm │ │ ├── copy.xpm │ │ ├── cut.xpm │ │ ├── debug.xpm │ │ ├── dos.xpm │ │ ├── empty.xpm │ │ ├── envopt.xpm │ │ ├── explor.xpm │ │ ├── export.xpm │ │ ├── gobook.xpm │ │ ├── help.xpm │ │ ├── homepg.xpm │ │ ├── icon.xpm │ │ ├── insert.xpm │ │ ├── makefl.xpm │ │ ├── minall.xpm │ │ ├── newproj.xpm │ │ ├── newsrc.xpm │ │ ├── newtemp.xpm │ │ ├── next.xpm │ │ ├── openproj.xpm │ │ ├── opnproj.xpm │ │ ├── package.xpm │ │ ├── packman.xpm │ │ ├── paste.xpm │ │ ├── prev.xpm │ │ ├── print.xpm │ │ ├── projopt.xpm │ │ ├── rebuild.xpm │ │ ├── redo.xpm │ │ ├── remsrc.xpm │ │ ├── reopen.xpm │ │ ├── resrc.xpm │ │ ├── run.xpm │ │ ├── save.xpm │ │ ├── saveall.xpm │ │ ├── saveas.xpm │ │ ├── screen.xpm │ │ ├── search.xpm │ │ ├── srcagain.xpm │ │ ├── srchrep.xpm │ │ ├── temphlp.xpm │ │ ├── tile.xpm │ │ ├── toggle_log.xpm │ │ ├── toolbar.xpm │ │ ├── tools.xpm │ │ ├── tutor.xpm │ │ ├── undo.xpm │ │ ├── update.xpm │ │ ├── view-fullscreen-4.xpm │ │ └── xpm_goto.xpm ├── Utils.hpp └── pch.h ├── third-party └── yaml-cpp │ ├── .clang-format │ ├── .codedocs │ ├── .gitignore │ ├── .travis.yml │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── WORKSPACE │ ├── appveyor.yml │ ├── docs │ ├── Breaking-Changes.md │ ├── How-To-Emit-YAML.md │ ├── How-To-Parse-A-Document-(Old-API).md │ ├── Strings.md │ ├── Tutorial.md │ ├── _config.yml │ └── index.md │ ├── include │ └── yaml-cpp │ │ ├── anchor.h │ │ ├── binary.h │ │ ├── contrib │ │ ├── anchordict.h │ │ └── graphbuilder.h │ │ ├── depthguard.h │ │ ├── dll.h │ │ ├── emitfromevents.h │ │ ├── emitter.h │ │ ├── emitterdef.h │ │ ├── emittermanip.h │ │ ├── emitterstyle.h │ │ ├── eventhandler.h │ │ ├── exceptions.h │ │ ├── mark.h │ │ ├── node │ │ ├── convert.h │ │ ├── detail │ │ │ ├── impl.h │ │ │ ├── iterator.h │ │ │ ├── iterator_fwd.h │ │ │ ├── memory.h │ │ │ ├── node.h │ │ │ ├── node_data.h │ │ │ ├── node_iterator.h │ │ │ └── node_ref.h │ │ ├── emit.h │ │ ├── impl.h │ │ ├── iterator.h │ │ ├── node.h │ │ ├── parse.h │ │ ├── ptr.h │ │ └── type.h │ │ ├── noexcept.h │ │ ├── null.h │ │ ├── ostream_wrapper.h │ │ ├── parser.h │ │ ├── stlemitter.h │ │ ├── traits.h │ │ └── yaml.h │ ├── install.txt │ ├── src │ ├── binary.cpp │ ├── collectionstack.h │ ├── contrib │ │ ├── graphbuilder.cpp │ │ ├── graphbuilderadapter.cpp │ │ ├── graphbuilderadapter.h │ │ ├── yaml-cpp.natvis │ │ └── yaml-cpp.natvis.md │ ├── convert.cpp │ ├── depthguard.cpp │ ├── directives.cpp │ ├── directives.h │ ├── emit.cpp │ ├── emitfromevents.cpp │ ├── emitter.cpp │ ├── emitterstate.cpp │ ├── emitterstate.h │ ├── emitterutils.cpp │ ├── emitterutils.h │ ├── exceptions.cpp │ ├── exp.cpp │ ├── exp.h │ ├── indentation.h │ ├── memory.cpp │ ├── node.cpp │ ├── node_data.cpp │ ├── nodebuilder.cpp │ ├── nodebuilder.h │ ├── nodeevents.cpp │ ├── nodeevents.h │ ├── null.cpp │ ├── ostream_wrapper.cpp │ ├── parse.cpp │ ├── parser.cpp │ ├── ptr_vector.h │ ├── regex_yaml.cpp │ ├── regex_yaml.h │ ├── regeximpl.h │ ├── scanner.cpp │ ├── scanner.h │ ├── scanscalar.cpp │ ├── scanscalar.h │ ├── scantag.cpp │ ├── scantag.h │ ├── scantoken.cpp │ ├── setting.h │ ├── simplekey.cpp │ ├── singledocparser.cpp │ ├── singledocparser.h │ ├── stream.cpp │ ├── stream.h │ ├── streamcharsource.h │ ├── stringsource.h │ ├── tag.cpp │ ├── tag.h │ └── token.h │ ├── test │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── create-emitter-tests.py │ ├── gtest-1.10.0 │ │ ├── .clang-format │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── BUILD.bazel │ │ ├── CMakeLists.txt │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── WORKSPACE │ │ ├── appveyor.yml │ │ ├── ci │ │ │ ├── build-linux-bazel.sh │ │ │ ├── build-platformio.sh │ │ │ ├── env-linux.sh │ │ │ ├── env-osx.sh │ │ │ ├── get-nprocessors.sh │ │ │ ├── install-linux.sh │ │ │ ├── install-osx.sh │ │ │ ├── install-platformio.sh │ │ │ ├── log-config.sh │ │ │ └── travis.sh │ │ ├── googlemock │ │ │ ├── CMakeLists.txt │ │ │ ├── CONTRIBUTORS │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── cmake │ │ │ │ ├── gmock.pc.in │ │ │ │ └── gmock_main.pc.in │ │ │ ├── docs │ │ │ │ ├── cheat_sheet.md │ │ │ │ ├── cook_book.md │ │ │ │ ├── for_dummies.md │ │ │ │ └── gmock_faq.md │ │ │ ├── include │ │ │ │ └── gmock │ │ │ │ │ ├── gmock-actions.h │ │ │ │ │ ├── gmock-cardinalities.h │ │ │ │ │ ├── gmock-function-mocker.h │ │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ │ ├── gmock-generated-actions.h.pump │ │ │ │ │ ├── gmock-generated-function-mockers.h │ │ │ │ │ ├── gmock-generated-function-mockers.h.pump │ │ │ │ │ ├── gmock-generated-matchers.h │ │ │ │ │ ├── gmock-generated-matchers.h.pump │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ ├── gmock-more-actions.h │ │ │ │ │ ├── gmock-more-matchers.h │ │ │ │ │ ├── gmock-nice-strict.h │ │ │ │ │ ├── gmock-spec-builders.h │ │ │ │ │ ├── gmock.h │ │ │ │ │ └── internal │ │ │ │ │ ├── custom │ │ │ │ │ ├── README.md │ │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ │ ├── gmock-generated-actions.h.pump │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ └── gmock-port.h │ │ │ │ │ ├── gmock-internal-utils.h │ │ │ │ │ ├── gmock-port.h │ │ │ │ │ └── gmock-pp.h │ │ │ ├── scripts │ │ │ │ ├── fuse_gmock_files.py │ │ │ │ ├── generator │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README │ │ │ │ │ ├── README.cppclean │ │ │ │ │ ├── cpp │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── ast.py │ │ │ │ │ │ ├── gmock_class.py │ │ │ │ │ │ ├── gmock_class_test.py │ │ │ │ │ │ ├── keywords.py │ │ │ │ │ │ ├── tokenize.py │ │ │ │ │ │ └── utils.py │ │ │ │ │ └── gmock_gen.py │ │ │ │ ├── gmock-config.in │ │ │ │ ├── gmock_doctor.py │ │ │ │ ├── upload.py │ │ │ │ └── upload_gmock.py │ │ │ ├── src │ │ │ │ ├── gmock-all.cc │ │ │ │ ├── gmock-cardinalities.cc │ │ │ │ ├── gmock-internal-utils.cc │ │ │ │ ├── gmock-matchers.cc │ │ │ │ ├── gmock-spec-builders.cc │ │ │ │ ├── gmock.cc │ │ │ │ └── gmock_main.cc │ │ │ └── test │ │ │ │ ├── BUILD.bazel │ │ │ │ ├── gmock-actions_test.cc │ │ │ │ ├── gmock-cardinalities_test.cc │ │ │ │ ├── gmock-function-mocker_nc.cc │ │ │ │ ├── gmock-function-mocker_nc_test.py │ │ │ │ ├── gmock-function-mocker_test.cc │ │ │ │ ├── gmock-generated-actions_test.cc │ │ │ │ ├── gmock-generated-function-mockers_test.cc │ │ │ │ ├── gmock-generated-matchers_test.cc │ │ │ │ ├── gmock-internal-utils_test.cc │ │ │ │ ├── gmock-matchers_test.cc │ │ │ │ ├── gmock-more-actions_test.cc │ │ │ │ ├── gmock-nice-strict_test.cc │ │ │ │ ├── gmock-port_test.cc │ │ │ │ ├── gmock-pp-string_test.cc │ │ │ │ ├── gmock-pp_test.cc │ │ │ │ ├── gmock-spec-builders_test.cc │ │ │ │ ├── gmock_all_test.cc │ │ │ │ ├── gmock_ex_test.cc │ │ │ │ ├── gmock_leak_test.py │ │ │ │ ├── gmock_leak_test_.cc │ │ │ │ ├── gmock_link2_test.cc │ │ │ │ ├── gmock_link_test.cc │ │ │ │ ├── gmock_link_test.h │ │ │ │ ├── gmock_output_test.py │ │ │ │ ├── gmock_output_test_.cc │ │ │ │ ├── gmock_output_test_golden.txt │ │ │ │ ├── gmock_stress_test.cc │ │ │ │ ├── gmock_test.cc │ │ │ │ └── gmock_test_utils.py │ │ ├── googletest │ │ │ ├── CMakeLists.txt │ │ │ ├── CONTRIBUTORS │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── cmake │ │ │ │ ├── Config.cmake.in │ │ │ │ ├── gtest.pc.in │ │ │ │ ├── gtest_main.pc.in │ │ │ │ ├── internal_utils.cmake │ │ │ │ └── libgtest.la.in │ │ │ ├── docs │ │ │ │ ├── advanced.md │ │ │ │ ├── faq.md │ │ │ │ ├── pkgconfig.md │ │ │ │ ├── primer.md │ │ │ │ ├── pump_manual.md │ │ │ │ └── samples.md │ │ │ ├── include │ │ │ │ └── gtest │ │ │ │ │ ├── gtest-death-test.h │ │ │ │ │ ├── gtest-matchers.h │ │ │ │ │ ├── gtest-message.h │ │ │ │ │ ├── gtest-param-test.h │ │ │ │ │ ├── gtest-printers.h │ │ │ │ │ ├── gtest-spi.h │ │ │ │ │ ├── gtest-test-part.h │ │ │ │ │ ├── gtest-typed-test.h │ │ │ │ │ ├── gtest.h │ │ │ │ │ ├── gtest_pred_impl.h │ │ │ │ │ ├── gtest_prod.h │ │ │ │ │ └── internal │ │ │ │ │ ├── custom │ │ │ │ │ ├── README.md │ │ │ │ │ ├── gtest-port.h │ │ │ │ │ ├── gtest-printers.h │ │ │ │ │ └── gtest.h │ │ │ │ │ ├── gtest-death-test-internal.h │ │ │ │ │ ├── gtest-filepath.h │ │ │ │ │ ├── gtest-internal.h │ │ │ │ │ ├── gtest-param-util.h │ │ │ │ │ ├── gtest-port-arch.h │ │ │ │ │ ├── gtest-port.h │ │ │ │ │ ├── gtest-string.h │ │ │ │ │ ├── gtest-type-util.h │ │ │ │ │ └── gtest-type-util.h.pump │ │ │ ├── samples │ │ │ │ ├── prime_tables.h │ │ │ │ ├── sample1.cc │ │ │ │ ├── sample1.h │ │ │ │ ├── sample10_unittest.cc │ │ │ │ ├── sample1_unittest.cc │ │ │ │ ├── sample2.cc │ │ │ │ ├── sample2.h │ │ │ │ ├── sample2_unittest.cc │ │ │ │ ├── sample3-inl.h │ │ │ │ ├── sample3_unittest.cc │ │ │ │ ├── sample4.cc │ │ │ │ ├── sample4.h │ │ │ │ ├── sample4_unittest.cc │ │ │ │ ├── sample5_unittest.cc │ │ │ │ ├── sample6_unittest.cc │ │ │ │ ├── sample7_unittest.cc │ │ │ │ ├── sample8_unittest.cc │ │ │ │ └── sample9_unittest.cc │ │ │ ├── scripts │ │ │ │ ├── common.py │ │ │ │ ├── fuse_gtest_files.py │ │ │ │ ├── gen_gtest_pred_impl.py │ │ │ │ ├── gtest-config.in │ │ │ │ ├── pump.py │ │ │ │ ├── release_docs.py │ │ │ │ ├── upload.py │ │ │ │ └── upload_gtest.py │ │ │ ├── src │ │ │ │ ├── gtest-all.cc │ │ │ │ ├── gtest-death-test.cc │ │ │ │ ├── gtest-filepath.cc │ │ │ │ ├── gtest-internal-inl.h │ │ │ │ ├── gtest-matchers.cc │ │ │ │ ├── gtest-port.cc │ │ │ │ ├── gtest-printers.cc │ │ │ │ ├── gtest-test-part.cc │ │ │ │ ├── gtest-typed-test.cc │ │ │ │ ├── gtest.cc │ │ │ │ └── gtest_main.cc │ │ │ └── test │ │ │ │ ├── BUILD.bazel │ │ │ │ ├── googletest-break-on-failure-unittest.py │ │ │ │ ├── googletest-break-on-failure-unittest_.cc │ │ │ │ ├── googletest-catch-exceptions-test.py │ │ │ │ ├── googletest-catch-exceptions-test_.cc │ │ │ │ ├── googletest-color-test.py │ │ │ │ ├── googletest-color-test_.cc │ │ │ │ ├── googletest-death-test-test.cc │ │ │ │ ├── googletest-death-test_ex_test.cc │ │ │ │ ├── googletest-env-var-test.py │ │ │ │ ├── googletest-env-var-test_.cc │ │ │ │ ├── googletest-filepath-test.cc │ │ │ │ ├── googletest-filter-unittest.py │ │ │ │ ├── googletest-filter-unittest_.cc │ │ │ │ ├── googletest-json-outfiles-test.py │ │ │ │ ├── googletest-json-output-unittest.py │ │ │ │ ├── googletest-list-tests-unittest.py │ │ │ │ ├── googletest-list-tests-unittest_.cc │ │ │ │ ├── googletest-listener-test.cc │ │ │ │ ├── googletest-message-test.cc │ │ │ │ ├── googletest-options-test.cc │ │ │ │ ├── googletest-output-test-golden-lin.txt │ │ │ │ ├── googletest-output-test.py │ │ │ │ ├── googletest-output-test_.cc │ │ │ │ ├── googletest-param-test-invalid-name1-test.py │ │ │ │ ├── googletest-param-test-invalid-name1-test_.cc │ │ │ │ ├── googletest-param-test-invalid-name2-test.py │ │ │ │ ├── googletest-param-test-invalid-name2-test_.cc │ │ │ │ ├── googletest-param-test-test.cc │ │ │ │ ├── googletest-param-test-test.h │ │ │ │ ├── googletest-param-test2-test.cc │ │ │ │ ├── googletest-port-test.cc │ │ │ │ ├── googletest-printers-test.cc │ │ │ │ ├── googletest-shuffle-test.py │ │ │ │ ├── googletest-shuffle-test_.cc │ │ │ │ ├── googletest-test-part-test.cc │ │ │ │ ├── googletest-test2_test.cc │ │ │ │ ├── googletest-throw-on-failure-test.py │ │ │ │ ├── googletest-throw-on-failure-test_.cc │ │ │ │ ├── googletest-uninitialized-test.py │ │ │ │ ├── googletest-uninitialized-test_.cc │ │ │ │ ├── gtest-typed-test2_test.cc │ │ │ │ ├── gtest-typed-test_test.cc │ │ │ │ ├── gtest-typed-test_test.h │ │ │ │ ├── gtest-unittest-api_test.cc │ │ │ │ ├── gtest_all_test.cc │ │ │ │ ├── gtest_assert_by_exception_test.cc │ │ │ │ ├── gtest_environment_test.cc │ │ │ │ ├── gtest_help_test.py │ │ │ │ ├── gtest_help_test_.cc │ │ │ │ ├── gtest_json_test_utils.py │ │ │ │ ├── gtest_list_output_unittest.py │ │ │ │ ├── gtest_list_output_unittest_.cc │ │ │ │ ├── gtest_main_unittest.cc │ │ │ │ ├── gtest_no_test_unittest.cc │ │ │ │ ├── gtest_pred_impl_unittest.cc │ │ │ │ ├── gtest_premature_exit_test.cc │ │ │ │ ├── gtest_prod_test.cc │ │ │ │ ├── gtest_repeat_test.cc │ │ │ │ ├── gtest_skip_environment_check_output_test.py │ │ │ │ ├── gtest_skip_in_environment_setup_test.cc │ │ │ │ ├── gtest_skip_test.cc │ │ │ │ ├── gtest_sole_header_test.cc │ │ │ │ ├── gtest_stress_test.cc │ │ │ │ ├── gtest_test_macro_stack_footprint_test.cc │ │ │ │ ├── gtest_test_utils.py │ │ │ │ ├── gtest_testbridge_test.py │ │ │ │ ├── gtest_testbridge_test_.cc │ │ │ │ ├── gtest_throw_on_failure_ex_test.cc │ │ │ │ ├── gtest_unittest.cc │ │ │ │ ├── gtest_xml_outfile1_test_.cc │ │ │ │ ├── gtest_xml_outfile2_test_.cc │ │ │ │ ├── gtest_xml_outfiles_test.py │ │ │ │ ├── gtest_xml_output_unittest.py │ │ │ │ ├── gtest_xml_output_unittest_.cc │ │ │ │ ├── gtest_xml_test_utils.py │ │ │ │ ├── production.cc │ │ │ │ └── production.h │ │ ├── library.json │ │ └── platformio.ini │ ├── handler_test.h │ ├── integration │ │ ├── emitter_test.cpp │ │ ├── encoding_test.cpp │ │ ├── error_messages_test.cpp │ │ ├── gen_emitter_test.cpp │ │ ├── handler_spec_test.cpp │ │ ├── handler_test.cpp │ │ ├── load_node_test.cpp │ │ └── node_spec_test.cpp │ ├── main.cpp │ ├── mock_event_handler.h │ ├── node │ │ └── node_test.cpp │ ├── ostream_wrapper_test.cpp │ ├── parser_test.cpp │ ├── regex_test.cpp │ └── specexamples.h │ ├── util │ ├── CMakeLists.txt │ ├── api.cpp │ ├── parse.cpp │ ├── read.cpp │ └── sandbox.cpp │ ├── yaml-cpp-config.cmake.in │ └── yaml-cpp.pc.in └── wxSTC ├── CMakeLists.txt ├── include ├── private.h └── stc.h └── src ├── PlatWX.cpp ├── PlatWX.h ├── PlatWXcocoa.h ├── PlatWXcocoa.mm ├── README.txt ├── ScintillaWX.cpp ├── ScintillaWX.h ├── scintilla ├── License.txt ├── README.txt ├── include │ ├── Compat.h │ ├── ILexer.h │ ├── ILoader.h │ ├── Platform.h │ ├── SciLexer.h │ ├── Sci_Position.h │ ├── Scintilla.h │ ├── Scintilla.iface │ └── ScintillaWidget.h ├── lexlib │ ├── Accessor.cxx │ ├── Accessor.h │ ├── CatalogueModules.h │ ├── CharacterCategory.cxx │ ├── CharacterCategory.h │ ├── CharacterSet.cxx │ ├── CharacterSet.h │ ├── DefaultLexer.cxx │ ├── DefaultLexer.h │ ├── LexAccessor.h │ ├── LexerBase.cxx │ ├── LexerBase.h │ ├── LexerModule.cxx │ ├── LexerModule.h │ ├── LexerNoExceptions.cxx │ ├── LexerNoExceptions.h │ ├── LexerSimple.cxx │ ├── LexerSimple.h │ ├── OptionSet.h │ ├── PropSetSimple.cxx │ ├── PropSetSimple.h │ ├── SparseState.h │ ├── StringCopy.h │ ├── StyleContext.cxx │ ├── StyleContext.h │ ├── SubStyles.h │ ├── WordList.cxx │ └── WordList.h └── src │ ├── AutoComplete.cxx │ ├── AutoComplete.h │ ├── CallTip.cxx │ ├── CallTip.h │ ├── CaseConvert.cxx │ ├── CaseConvert.h │ ├── CaseFolder.cxx │ ├── CaseFolder.h │ ├── Catalogue.cxx │ ├── Catalogue.h │ ├── CellBuffer.cxx │ ├── CellBuffer.h │ ├── CharClassify.cxx │ ├── CharClassify.h │ ├── ContractionState.cxx │ ├── ContractionState.h │ ├── DBCS.cxx │ ├── DBCS.h │ ├── Decoration.cxx │ ├── Decoration.h │ ├── Document.cxx │ ├── Document.h │ ├── EditModel.cxx │ ├── EditModel.h │ ├── EditView.cxx │ ├── EditView.h │ ├── Editor.cxx │ ├── Editor.h │ ├── ElapsedPeriod.h │ ├── ExternalLexer.cxx │ ├── ExternalLexer.h │ ├── FontQuality.h │ ├── Indicator.cxx │ ├── Indicator.h │ ├── IntegerRectangle.h │ ├── KeyMap.cxx │ ├── KeyMap.h │ ├── LineMarker.cxx │ ├── LineMarker.h │ ├── MarginView.cxx │ ├── MarginView.h │ ├── Partitioning.h │ ├── PerLine.cxx │ ├── PerLine.h │ ├── Position.h │ ├── PositionCache.cxx │ ├── PositionCache.h │ ├── RESearch.cxx │ ├── RESearch.h │ ├── RunStyles.cxx │ ├── RunStyles.h │ ├── SciTE.properties │ ├── ScintillaBase.cxx │ ├── ScintillaBase.h │ ├── Selection.cxx │ ├── Selection.h │ ├── SparseVector.h │ ├── SplitVector.h │ ├── Style.cxx │ ├── Style.h │ ├── UniConversion.cxx │ ├── UniConversion.h │ ├── UniqueString.cxx │ ├── UniqueString.h │ ├── ViewStyle.cxx │ ├── ViewStyle.h │ ├── XPM.cxx │ └── XPM.h ├── stc.cpp └── stc_i18n.cpp /.clang-tidy: -------------------------------------------------------------------------------- 1 | --- 2 | Checks: '*,-llvm-*,-fuchsia-*,-google-*,-zircon-*,-abseil-*,-modernize-use-trailing-return-type,-llvmlibc-callee-namespace,-misc-non-private-member-variables-in-classes,-cppcoreguidelines-owning-memory,-readability-convert-member-functions-to-static' 3 | WarningsAsErrors: '*' 4 | HeaderFilterRegex: '' 5 | FormatStyle: none 6 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.7z filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Global 2 | .DS_Store 3 | 4 | # Paths 5 | build/ 6 | 7 | # IDEs 8 | .vs/ 9 | xcuserdata/ 10 | timeline.xctimeline 11 | playground.xcworkspace 12 | 13 | # artefacts 14 | *.dll 15 | *.a 16 | *.o 17 | *.lib 18 | *.obj 19 | *.pch 20 | *.gch 21 | *~ 22 | *.d 23 | *.out 24 | *.exe 25 | *.ilk 26 | *.pdb 27 | *.manifest 28 | *.dylib 29 | *.so 30 | bin/fbide 31 | 32 | # cmake 33 | CMakeLists.txt.user 34 | CMakeCache.txt 35 | CMakeFiles 36 | CMakeScripts 37 | Testing 38 | Makefile 39 | cmake_install.cmake 40 | install_manifest.txt 41 | compile_commands.json 42 | CTestTestfile.cmake 43 | CMakeSettings.json 44 | _deps 45 | cmake-build-*/ 46 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/albeva/fbide/3b817fb67fe4960c59f3dd430438a59e8f06babb/.gitmodules -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /dataSources/ 6 | /dataSources.local.xml 7 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | fbide -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 27 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/dictionaries/Albert.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | albeva 5 | ctors 6 | fbide 7 | fblexer 8 | freebasic 9 | lexlib 10 | varaksin 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/fbide_experimental.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: windows 2 | language: cpp 3 | branches: 4 | only: 5 | - master 6 | 7 | install: 8 | - choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64" 9 | - export CXX= 10 | - export CXX_FOR_BUILD= 11 | - export CC= 12 | - export CC_FOR_BUILD= 13 | - source .travis/import_vs_env.sh "call .travis/dev_cmd.bat" 14 | - 7z x .travis/dist/wx-dist.7z 15 | - 7z x .travis/dist/yaml-dist.7z 16 | 17 | script: 18 | - ".travis/build_fbide.sh" 19 | 20 | after_success: 21 | - editbin.exe bin/fbide.exe /SUBSYSTEM:WINDOWS,5.01 /OSVERSION:5.1 22 | - rm bin/fbide.exe.manifest 23 | - 7z a fbide.7z ./bin/* 24 | 25 | before_deploy: 26 | - git config --local user.name "Albert Varaksin" 27 | - git config --local user.email "albeva@me.com" 28 | - export TRAVIS_TAG=fbide-0.5.0.$TRAVIS_BUILD_NUMBER 29 | - git tag $TRAVIS_TAG 30 | 31 | deploy: 32 | provider: releases 33 | api_key: 34 | secure: I2ibGKaUIZpgd1L+PDufqGuTrvfeYXRW4O0sgPoMe9FevI5icP+l8J2vKHZNDkmx7eRBRl8D7PJaEDk20txHtwlGWareqnIxecw6jjEU2GqopGVtPhtPCG+PYBOCZHTgsuQr8vOJd4Pn/V3j1kkmSRTLGkRgLk/Fr4fYxpgUhep/0ckuTU3js6W0DUnbJLzcb01bD/94A8uGG2GBX2b1WmgxFh+QqS9c2p/f4BYlPZgl+YaOgWIIfQzwLsF+61gaFdxp/VB0ij4tOZKIlNZdM81V360YyX1P2//cjGpgssmuJm2xCR99ixJRBvQCtLRpf5aI0MQKljG2Xbj6VhUEcpMcsQbpAkVAmF3ORmx8J6EH32NCRTcqTpj7Fd8d8qGq4P1KamIt7C7aCfUTNU2rzyTTKwMc6R34YT/VBbMiNAzbzvmWG0gw7HJICx5w1YfwXLrtCIF5sC+L1FvEBq4r3VN6WV2A5GD8F5CcRcCPXNedOdP09do9n854H0sefkXKj6zieDDP9bEApiIRHuo2BrhuLwo57jbpMGrxpRR8kSaRyqEUKtQYBWxEnW7j5Xsztml7A1SlbGup6NNXN33v0cdukgTRjbZhWBB8OQhyWZi9+FsrTyk4PqmQZWqm51cWiLM6FPVS5Kk/gnG7KSe3+1NK81fnNkeMNQvMKRsAbUI= 35 | file: fbide.7z 36 | prerelease: true 37 | on: 38 | repo: albeva/fbide 39 | skip_cleanup: 'true' 40 | -------------------------------------------------------------------------------- /.travis/build_fbide.sh: -------------------------------------------------------------------------------- 1 | mkdir fbide_build 2 | 3 | cmake -G "NMake Makefiles" \ 4 | -DCMAKE_BUILD_TYPE=Release \ 5 | -DYAML_DIST_PATH="$(pwd)/yaml-dist/share/cmake" \ 6 | -DWXWIN="$(pwd)/wx-dist" \ 7 | -S . -B fbide_build 8 | 9 | cd fbide_build 10 | nmake 11 | -------------------------------------------------------------------------------- /.travis/dev_cmd.bat: -------------------------------------------------------------------------------- 1 | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" -arch=x86 2 | -------------------------------------------------------------------------------- /.travis/dist/wx-dist.7z: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:17f9641cd01981997501cc5050273433385b2be6eb51092ba13d5ac3f9212e9a 3 | size 14808524 4 | -------------------------------------------------------------------------------- /.travis/dist/yaml-dist.7z: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cf58b8796b8ce4aad493c11d9ef283e380aea51006919bbfea245d2f3edcd4b2 3 | size 328020 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # fbide 2 | IDE for FreeBASIC 3 | 4 | [![Build Status](https://travis-ci.com/albeva/fbide.svg?branch=master)](https://travis-ci.com/albeva/fbide) 5 | 6 | Provides simple and intuitive way to run and hack with freebasic. 7 | -------------------------------------------------------------------------------- /bin/ide/fbide.yaml: -------------------------------------------------------------------------------- 1 | # App configuration 2 | App: 3 | Language: lang.en.yaml 4 | ShowSplash: true 5 | ShowToolbars: true 6 | MenuIcons: false 7 | 8 | # Editor configuration 9 | Editor: 10 | Theme: themes/default.yaml 11 | Keywords: keywords.yaml 12 | TabWidth: 4 13 | UseTabs: true 14 | TabIndents: true 15 | BackSpaceUnIndents: true 16 | Indent: 4 17 | EdgeColumn: 80 18 | EdgeMode: 1 # 0 ... 3 19 | EOLMode: 1 # 0 .. 2 20 | ViewEOL: false 21 | IndentationGuides: false 22 | ViewWhiteSpace: 2 # 0 ... 3 23 | CodePage: 65001 24 | IMEInteraction: 0 25 | CaretLineVisible: true 26 | UseHorizontalScrollBar: false 27 | WrapMode: false 28 | Types: 29 | plain: 30 | exts: [txt, md] 31 | freebasic: 32 | exts: [bas, bi] 33 | 34 | # Menus and toolbars 35 | Layout: 36 | Menus: 37 | - id: file 38 | items: [new, open, save, -, quit] 39 | - id: edit 40 | items: [undo, redo, -, cut, copy, paste] 41 | - id: view 42 | items: [toolbars, toolbars.toggle, fullscreen] 43 | - id: search 44 | items: [find, replace, goto] 45 | - id: help 46 | items: [about] 47 | Toolbars: 48 | - id: common 49 | items: [new, open, save, -, fullscreen] 50 | - id: edit 51 | items: [undo, redo, -, cut, copy, paste] 52 | - id: search 53 | items: [find, replace, goto] 54 | - id: build 55 | items: [compile, comprun, rebuild, run] 56 | -------------------------------------------------------------------------------- /bin/ide/themes/default.yaml: -------------------------------------------------------------------------------- 1 | Font: Consolas 2 | FontSize: 12 3 | Foreground: black 4 | Background: white 5 | Bold: false 6 | Italic: false 7 | Underline: false 8 | Visible: true 9 | Case: 0 10 | EOLFilled: false 11 | 12 | Comment: 13 | Foreground: grey 14 | Italic: true 15 | 16 | MultilineComment: 17 | Foreground: grey 18 | Italic: true 19 | 20 | String: 21 | Foreground: green 22 | 23 | Number: 24 | Foreground: blue 25 | 26 | Keyword1: 27 | Bold: true 28 | 29 | Keyword2: 30 | Foreground: purple 31 | Bold: true 32 | 33 | Keyword3: 34 | Foreground: brown 35 | Bold: true 36 | 37 | Keyword4: 38 | Foreground: magenta 39 | Bold: true 40 | 41 | Preprocessor: 42 | Background: '#eeeeee' 43 | 44 | Operator: 45 | Bold: true 46 | 47 | Identifier: 48 | -------------------------------------------------------------------------------- /bin/samples/flappyfb.bas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/albeva/fbide/3b817fb67fe4960c59f3dd430438a59e8f06babb/bin/samples/flappyfb.bas -------------------------------------------------------------------------------- /cmake/PreventInSourceBuilds.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # This function will prevent in-source builds 3 | function(AssureOutOfSourceBuilds) 4 | # make sure the user doesn't play dirty with symlinks 5 | get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH) 6 | get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH) 7 | 8 | # disallow in-source builds 9 | if("${srcdir}" STREQUAL "${bindir}") 10 | message("######################################################") 11 | message("Warning: in-source builds are disabled") 12 | message("Please create a separate build directory and run cmake from there") 13 | message("######################################################") 14 | message(FATAL_ERROR "Quitting configuration") 15 | endif() 16 | endfunction() 17 | 18 | assureoutofsourcebuilds() 19 | -------------------------------------------------------------------------------- /cmake/StandardProjectSettings.cmake: -------------------------------------------------------------------------------- 1 | # Set a default build type if none was specified 2 | if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 3 | message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified.") 4 | set(CMAKE_BUILD_TYPE 5 | RelWithDebInfo 6 | CACHE STRING "Choose the type of build." FORCE) 7 | # Set the possible values of build type for cmake-gui, ccmake 8 | set_property( 9 | CACHE CMAKE_BUILD_TYPE 10 | PROPERTY STRINGS 11 | "Debug" 12 | "Release" 13 | "MinSizeRel" 14 | "RelWithDebInfo") 15 | endif() 16 | 17 | # Generate compile_commands.json to make it easier to work with clang based tools 18 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 19 | 20 | option(ENABLE_IPO "Enable Interprocedural Optimization, aka Link Time Optimization (LTO)" OFF) 21 | 22 | if(ENABLE_IPO) 23 | include(CheckIPOSupported) 24 | check_ipo_supported( 25 | RESULT 26 | result 27 | OUTPUT 28 | output) 29 | if(result) 30 | set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) 31 | else() 32 | message(SEND_ERROR "IPO is not supported: ${output}") 33 | endif() 34 | endif() 35 | -------------------------------------------------------------------------------- /cmake/StaticAnalyzers.cmake: -------------------------------------------------------------------------------- 1 | option(ENABLE_CPPCHECK "Enable static analysis with cppcheck" OFF) 2 | option(ENABLE_CLANG_TIDY "Enable static analysis with clang-tidy" OFF) 3 | option(ENABLE_INCLUDE_WHAT_YOU_USE "Enable static analysis with include-what-you-use" OFF) 4 | 5 | if(ENABLE_CPPCHECK) 6 | find_program(CPPCHECK cppcheck) 7 | if(CPPCHECK) 8 | set(CMAKE_CXX_CPPCHECK 9 | ${CPPCHECK} 10 | --suppress=missingInclude 11 | --enable=all 12 | --inline-suppr 13 | --inconclusive 14 | -i 15 | ${CMAKE_SOURCE_DIR}/imgui/lib) 16 | else() 17 | message(SEND_ERROR "cppcheck requested but executable not found") 18 | endif() 19 | endif() 20 | 21 | if(ENABLE_CLANG_TIDY) 22 | find_program(CLANGTIDY clang-tidy) 23 | if(CLANGTIDY) 24 | set(CMAKE_CXX_CLANG_TIDY ${CLANGTIDY} -extra-arg=-Wno-unknown-warning-option) 25 | else() 26 | message(SEND_ERROR "clang-tidy requested but executable not found") 27 | endif() 28 | endif() 29 | 30 | if(ENABLE_INCLUDE_WHAT_YOU_USE) 31 | find_program(INCLUDE_WHAT_YOU_USE include-what-you-use) 32 | if(INCLUDE_WHAT_YOU_USE) 33 | set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${INCLUDE_WHAT_YOU_USE}) 34 | else() 35 | message(SEND_ERROR "include-what-you-use requested but executable not found") 36 | endif() 37 | endif() 38 | -------------------------------------------------------------------------------- /cpp.hint: -------------------------------------------------------------------------------- 1 | // Hint files help the Visual Studio IDE interpret Visual C++ identifiers 2 | // such as names of functions and macros. 3 | // For more information see https://go.microsoft.com/fwlink/?linkid=865984 4 | #define wxBEGIN_EVENT_TABLE(theClass, baseClass) const wxEventTable theClass::sm_eventTable = { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; const wxEventTable *theClass::GetEventTable() const { return &theClass::sm_eventTable; } wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); wxEventHashTable &theClass::GetEventHashTable() const { return theClass::sm_eventHashTable; } const wxEventTableEntry theClass::sm_eventTableEntries[] = { 5 | #define NON_COPYABLE(Class) Class(const Class&) = delete; Class& operator=(const Class&) = delete; Class(Class&&) = delete; Class& operator=(Class&&) = delete; 6 | -------------------------------------------------------------------------------- /src/App/App.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | 24 | namespace fbide { 25 | 26 | /** 27 | * App is the basic entry point into FBIde 28 | */ 29 | class App final : public wxApp { 30 | public: 31 | using wxApp::wxApp; 32 | 33 | bool OnInit() final; 34 | int OnExit() final; 35 | 36 | static void ExitFBIde(); 37 | 38 | private: 39 | [[nodiscard]] wxString GetExecutablePath() noexcept; 40 | [[nodiscard]] wxString ResolvePath(const wxString& path) noexcept; 41 | }; 42 | 43 | } 44 | 45 | DECLARE_APP(fbide::App) 46 | -------------------------------------------------------------------------------- /src/Config/StyleEntry.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #include "StyleEntry.hpp" 22 | #include "Config.hpp" 23 | using namespace fbide; 24 | 25 | StyleEntry::StyleEntry(const Config& style, const StyleEntry* parent) { 26 | if (parent != nullptr) { 27 | font = parent->font; 28 | } else { 29 | font = wxFont( 30 | style.Get(Defaults::Key::FontSize, Defaults::FontSize), 31 | wxFONTFAMILY_MODERN, 32 | wxFONTSTYLE_NORMAL, 33 | wxFONTWEIGHT_NORMAL, 34 | false, 35 | style.Get(Defaults::Key::FontName, wxEmptyString)); 36 | } 37 | 38 | #define INIT_FIELD(NAME, DEF) NAME = style.Get(#NAME, parent != nullptr ? parent->NAME : DEF); 39 | DEFAULT_EDITOR_STYLE(INIT_FIELD) 40 | #undef INIT_FIELD 41 | } 42 | -------------------------------------------------------------------------------- /src/Config/StyleEntry.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | #include "FB/Defaults.hpp" 24 | 25 | namespace fbide { 26 | 27 | class Config; 28 | 29 | struct StyleEntry { 30 | wxFont font; 31 | #define STYLE_ENTRY(name, value) decltype(value) name; 32 | DEFAULT_EDITOR_STYLE(STYLE_ENTRY) 33 | #undef STYLE_ENTRY 34 | 35 | explicit StyleEntry(const Config& style, const StyleEntry* parent = nullptr); 36 | }; 37 | 38 | } // namespace fbide 39 | -------------------------------------------------------------------------------- /src/Document/Document.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #include "Document.hpp" 22 | #include "Config/Config.hpp" 23 | #include "App/Manager.hpp" 24 | 25 | using namespace fbide; 26 | 27 | static int uniqueId = 0; // NOLINT 28 | 29 | Document::Document(const TypeManager::Type& type) : m_id(++uniqueId), m_type(type) { 30 | Document::SetDocumentTitle(""); 31 | } 32 | 33 | Document::~Document() = default; 34 | 35 | void Document::SetDocumentFileName(const wxString& filename) { 36 | m_filename = filename; 37 | } 38 | 39 | void Document::SetDocumentTitle(const wxString& title) { 40 | if (title.empty()) { 41 | m_title = GetLang("document.unnamed", { { "id", ""_wx << m_id } }); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Document/DocumentManager.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | 24 | namespace fbide { 25 | 26 | class DocumentManager final: public wxEvtHandler { 27 | NON_COPYABLE(DocumentManager) 28 | public: 29 | 30 | DocumentManager(); 31 | ~DocumentManager() final; 32 | 33 | private: 34 | void OnNew(wxCommandEvent& event); 35 | void OnOpen(wxCommandEvent& event); 36 | void OnSave(wxCommandEvent& event); 37 | 38 | wxDECLARE_EVENT_TABLE(); // NOLINT 39 | }; 40 | 41 | } // namespace fbide 42 | -------------------------------------------------------------------------------- /src/Editor/TextDocument.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | #include "Document/Document.hpp" 24 | 25 | namespace fbide { 26 | 27 | /** 28 | * Editor base class backed by a text document 29 | */ 30 | class TextDocument: public wxStyledTextCtrl, public Document { 31 | NON_COPYABLE(TextDocument) 32 | public: 33 | 34 | static const wxString TypeId; 35 | 36 | explicit TextDocument(const TypeManager::Type& type); 37 | ~TextDocument() override; 38 | 39 | /** 40 | * Instantiate the document 41 | */ 42 | void CreateDocument() override; 43 | 44 | /** 45 | * LoadDocument specified file. Will CreateDocument the instance 46 | */ 47 | void LoadDocument(const wxString& filename) override; 48 | 49 | /** 50 | * SaveDocument the document 51 | */ 52 | void SaveDocument(const wxString& filename) override; 53 | 54 | }; 55 | 56 | } // namespace fbide 57 | -------------------------------------------------------------------------------- /src/FB/FBEditor.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | #include "Editor/TextDocument.hpp" 24 | 25 | namespace fbide { 26 | 27 | struct StyleEntry; 28 | namespace FB::Parser { 29 | class SourceLexer; 30 | } 31 | 32 | class FBEditor final: public TextDocument { 33 | NON_COPYABLE(FBEditor) 34 | public: 35 | // Editor mime type 36 | static const wxString TypeId; 37 | 38 | explicit FBEditor(const TypeManager::Type& type); 39 | ~FBEditor() final; 40 | void CreateDocument() final; 41 | 42 | private: 43 | 44 | void OnCharAdded(wxStyledTextEvent &event); 45 | void OnModified(wxStyledTextEvent& event); 46 | 47 | void LoadConfiguration(const Config& config); 48 | void LoadTheme(); 49 | void LoadStyle(int nr, const StyleEntry&); 50 | 51 | std::unique_ptr m_sourceLexer; 52 | 53 | wxDECLARE_EVENT_TABLE(); // NOLINT 54 | }; 55 | 56 | } // namespace fbide 57 | -------------------------------------------------------------------------------- /src/FB/Parser/SourceLexer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #include "SourceLexer.hpp" 22 | using namespace fbide::FB::Parser; 23 | 24 | constexpr size_t DEFAULT_RESERVE = 25 * 500; 25 | 26 | SourceLexer::SourceLexer() { 27 | m_tokens.reserve(DEFAULT_RESERVE); 28 | } 29 | 30 | SourceLexer::~SourceLexer() = default; 31 | -------------------------------------------------------------------------------- /src/FB/Parser/SymbolTable.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #include "SymbolTable.hpp" 22 | using namespace fbide::FB::Parser; 23 | -------------------------------------------------------------------------------- /src/FB/Parser/SymbolTable.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | 23 | namespace fbide::FB::Parser { 24 | 25 | class SymbolTable { 26 | 27 | }; 28 | 29 | } // namespace fbide::FB::Parser 30 | -------------------------------------------------------------------------------- /src/FB/Parser/Token.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #include "Token.hpp" 22 | using namespace fbide::FB::Parser; 23 | -------------------------------------------------------------------------------- /src/Log/LogManager.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | #include "UI/PanelHandler.hpp" 24 | 25 | namespace fbide { 26 | 27 | class LogManager final: public Panel { 28 | NON_COPYABLE(LogManager) 29 | public: 30 | LogManager(); 31 | ~LogManager() final; 32 | 33 | wxWindow* ShowPanel() final; 34 | bool HidePanel() final; 35 | 36 | private: 37 | wxTextCtrl* m_textCtrl; 38 | std::unique_ptr m_log; 39 | }; 40 | 41 | } // namespace fbide 42 | -------------------------------------------------------------------------------- /src/UI/IArtProvider.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #include "IArtProvider.hpp" 22 | using namespace fbide; 23 | 24 | IArtProvider::~IArtProvider() = default; -------------------------------------------------------------------------------- /src/UI/IArtProvider.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | 24 | namespace fbide { 25 | 26 | /** 27 | * Art provider for the UI manager 28 | */ 29 | class IArtProvider { 30 | NON_COPYABLE(IArtProvider) 31 | public: 32 | IArtProvider() = default; 33 | virtual ~IArtProvider(); 34 | 35 | /** 36 | * Get bitmap 37 | */ 38 | virtual const wxBitmap& GetIcon(const wxString& name) = 0; 39 | 40 | /** 41 | * Get bitmap size 42 | */ 43 | virtual const wxSize& GetIconSize() = 0; 44 | }; 45 | 46 | } // namespace fbide 47 | -------------------------------------------------------------------------------- /src/UI/MenuHandler.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | 24 | namespace fbide { 25 | 26 | class Config; 27 | 28 | /** 29 | * Handle menus 30 | */ 31 | class MenuHandler final { 32 | NON_COPYABLE(MenuHandler) 33 | public: 34 | explicit MenuHandler(wxMenuBar* menu); 35 | ~MenuHandler() = default; 36 | 37 | // Load Configuration 38 | void Load(Config& node, wxMenu* parent = nullptr); 39 | 40 | // Get menu by ID 41 | wxMenu* GetMenu(const wxString& id); 42 | 43 | // Add new menu 44 | void Add(const wxString& id, wxMenu* menu, bool show = false); 45 | 46 | // Add a new item to the menu 47 | void AddItem(wxMenu* parent, const wxString& id); 48 | 49 | private: 50 | StringMap m_map; 51 | wxMenuBar* m_mbar; 52 | }; 53 | 54 | } // namespace fbide 55 | -------------------------------------------------------------------------------- /src/UI/StandardArtProvider.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | #include "pch.h" 23 | #include "IArtProvider.hpp" 24 | 25 | namespace fbide { 26 | 27 | /** 28 | * fbide standard art provider 29 | */ 30 | class StandardArtProvider final: public IArtProvider { 31 | NON_COPYABLE(StandardArtProvider) 32 | public: 33 | StandardArtProvider() = default; 34 | ~StandardArtProvider() final = default; 35 | 36 | /** 37 | * Get bitmap 38 | */ 39 | const wxBitmap& GetIcon(const wxString& name) final; 40 | 41 | /** 42 | * Get bitmap size 43 | */ 44 | const wxSize& GetIconSize() final; 45 | }; 46 | 47 | } // namespace fbide 48 | -------------------------------------------------------------------------------- /src/UI/xpm/about.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *about[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #9B8800", 8 | "o c #C8B000", 9 | "O c #DBC100", 10 | "+ c #FFE000", 11 | "@ c #FFEC60", 12 | "# c None", 13 | "$ c #FFF082", 14 | "% c #FFF6B2", 15 | "& c gray100", 16 | /* pixels */ 17 | "##### ######", 18 | "### &%%%% ####", 19 | "##.&$$$$+++o ###", 20 | "# &$@@++++++o ##", 21 | "# $@ +++ ++ ##", 22 | " &$ && + && +o #", 23 | " %$ && + && +o #", 24 | " %$ &. + .& +o #", 25 | " %$+ +++ +Oo #", 26 | " %$++++++++OOX #", 27 | "# $+ Oo ##", 28 | "# $+++ +OOX ##", 29 | "## OOOOOOOoX ###", 30 | "### ooooX ####", 31 | "##### ######", 32 | "################" 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/add.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *add[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c gray6", 6 | ". c #353535", 7 | "X c #5B5B5B", 8 | "o c #318D00", 9 | "O c #3BA300", 10 | "+ c #3FB300", 11 | "@ c #44C000", 12 | "# c #50E000", 13 | "$ c None", 14 | "% c #94FF94", 15 | "& c #D6FFBF", 16 | /* pixels */ 17 | "$$$$$$$$$$$$$$$$", 18 | "$$$$$$X...$$$$$$", 19 | "$$$$$X&%%@ $$$$$", 20 | "$$$$$.%#@O $$$$$", 21 | "$$$$$.%@@O $$$$$", 22 | "$$X...%@@O $$", 23 | "$X&%%%&@@@&%%@ $", 24 | "$.%#@@@@@@@@@O $", 25 | "$.%@@@@@@@@@+O $", 26 | "$.@OOO@@@OOOOo $", 27 | "$$ %@@O $$", 28 | "$$$$$ %@@O $$$$$", 29 | "$$$$$ %@+O $$$$$", 30 | "$$$$$ @OOo $$$$$", 31 | "$$$$$$ $$$$$$", 32 | "$$$$$$$$$$$$$$$$" 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/addbook.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *addbook[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 16 1", 5 | " c black", 6 | ". c gray6", 7 | "X c #353535", 8 | "o c #7A4D00", 9 | "O c #686868", 10 | "+ c #3FB000", 11 | "@ c #9E6400", 12 | "# c #AC6D00", 13 | "$ c #C67E00", 14 | "% c #9F8B67", 15 | "& c #D69A2E", 16 | "* c #FFB737", 17 | "= c None", 18 | "- c #8FFF8F", 19 | "; c #FFDFA5", 20 | ": c #FFE8BD", 21 | /* pixels */ 22 | "====O ", 23 | "==== :;*******$ ", 24 | "====XXX$$$$$$$@ ", 25 | "===X+++.$$$$$$@ ", 26 | "===X+-+.$$$$$$@ ", 27 | "=OXX+-+...$$$$@ ", 28 | "O++++-++++.$$$@ ", 29 | "X+-------+.#$$@ ", 30 | "X++++-++++.#$$@ ", 31 | "=...+-+...#$$$@ ", 32 | "===.+-+.##$$$$@ ", 33 | "===.+++.#$$$$$@ ", 34 | "====...#$$$$$$@ ", 35 | "==== &%$$$$$$$@ ", 36 | "==== $%@@@@@@@o ", 37 | "==== " 38 | }; 39 | -------------------------------------------------------------------------------- /src/UI/xpm/addsrc.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *addsrc[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 17 1", 5 | " c black", 6 | ". c gray6", 7 | "X c #2F2F2F", 8 | "o c #353535", 9 | "O c #656565", 10 | "+ c #686868", 11 | "@ c #3FB000", 12 | "# c gray59", 13 | "$ c #B2B2B2", 14 | "% c gray72", 15 | "& c None", 16 | "* c #8FFF8F", 17 | "= c gray81", 18 | "- c #D0D0D0", 19 | "; c #DFDFDF", 20 | ": c #F3F3F3", 21 | "> c gray100", 22 | /* pixels */ 23 | "&&&&+ ", 24 | "&&&& >::::::::;X", 25 | "&&&&ooo;;;;;;;%X", 26 | "&&&o@@@.;;;;;-%X", 27 | "&&&o@*@.;OO;O-%X", 28 | "&+oo@*@...;---%X", 29 | "+@@@@*@@@@.O--%X", 30 | "o@*******@.$--%X", 31 | "o@@@@*@@@@.$O-%X", 32 | "&...@*@...$---%X", 33 | "&&&.@*@.OO-O-=%X", 34 | "&&&.@@@.$---==%X", 35 | "&&&&...OO-O=O=%X", 36 | "&&&& $$---====%X", 37 | "&&&& -%%%%%%%%#X", 38 | "&&&& XXXXXXXXXX " 39 | }; 40 | -------------------------------------------------------------------------------- /src/UI/xpm/arricon.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *arricon[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 22 1", 5 | " c black", 6 | ". c #4B4B4B", 7 | "X c #656565", 8 | "o c #686868", 9 | "O c #3675D0", 10 | "+ c #6595DB", 11 | "@ c #888888", 12 | "# c #B1B1B1", 13 | "$ c #87ADE3", 14 | "% c #9DBCE8", 15 | "& c #CECECE", 16 | "* c gray81", 17 | "= c #D1D0CF", 18 | "- c #D0D0D0", 19 | "; c gray82", 20 | ": c gray85", 21 | "> c gray87", 22 | ", c #DFDFDF", 23 | "< c #E0E0DF", 24 | "1 c gray88", 25 | "2 c #E1E1E1", 26 | "3 c #F1F1F0", 27 | /* pixels */ 28 | "o ", 29 | " %$$$+++++++++O ", 30 | " o ", 31 | " 3<<<<<<<<<<:-# ", 32 | " 3,,,,,,,11:--# ", 33 | " 3,@X,,@X<:@X*# ", 34 | " 3,X.11X.:-X.-# ", 35 | " 3,,,111:**---# ", 36 | " 3,,,,1:*-----# ", 37 | " 3,,,1:-------# ", 38 | " 31@X:*@X--@X-# ", 39 | " 3,X.**X.--X.-# ", 40 | " 31:----------# ", 41 | " 3:*-------***# ", 42 | " =############# ", 43 | " " 44 | }; 45 | -------------------------------------------------------------------------------- /src/UI/xpm/bughlp.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *bughlp[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c black", 6 | ". c #555555", 7 | "X c #DA00FE", 8 | "o c #EB32FF", 9 | "O c #F668FF", 10 | "+ c None", 11 | "@ c #F886FF", 12 | "# c #FC98FF", 13 | "$ c #FFB3FF", 14 | "% c #FCB4FE", 15 | "& c #FFF5FF", 16 | /* pixels */ 17 | "++++++++++++++ +", 18 | "+++++++++++++ @ ", 19 | "++++++++++++ %X ", 20 | "+++++++++++ %OX ", 21 | "++++++++++ %OoX ", 22 | "+++++++++ %OoX +", 23 | "+ ++++++ %OoX ++", 24 | " & ++++ %OoX +++", 25 | " $$ ++ %OoX ++++", 26 | " $O$ %OoX +++++", 27 | ".OOo##OoX ++++++", 28 | "+ ooooXX +++++++", 29 | "++ ooXX ++++++++", 30 | "+++ XX +++++++++", 31 | "++++ ++++++++++", 32 | "++++++++++++++++" 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/close.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char * close[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 7 1", 5 | " c black", 6 | ". c #A50000", 7 | "X c #D30000", 8 | "o c red", 9 | "O c #FF6F6F", 10 | "+ c #FF7D7D", 11 | "@ c None", 12 | /* pixels */ 13 | "@@@@@@@@@@@@@@@@", 14 | "@@@@ @@@@@@ @@@@", 15 | "@@@ + @@@@ + @@@", 16 | "@@ +OO @@ +Oo @@", 17 | "@ +OooO +OoX. @", 18 | "@@ OoooooOoX. @@", 19 | "@@@ OoooooX. @@@", 20 | "@@@@ oooooo @@@@", 21 | "@@@@ oooooo @@@@", 22 | "@@@ +OoooooX @@@", 23 | "@@ +OoXoooooX @@", 24 | "@ +OoX. XooX. @", 25 | "@@ oX. @@ XX. @@", 26 | "@@@ . @@@@ . @@@", 27 | "@@@@ @@@@@@ @@@@", 28 | "@@@@@@@@@@@@@@@@" 29 | }; 30 | -------------------------------------------------------------------------------- /src/UI/xpm/closefl.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *closefl[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 18 1", 5 | " c black", 6 | ". c gray6", 7 | "X c #2F2F2F", 8 | "o c #353535", 9 | "O c #656565", 10 | "+ c #686868", 11 | "@ c #EF100F", 12 | "# c #F0403F", 13 | "$ c #F07A78", 14 | "% c gray59", 15 | "& c #B2B2B2", 16 | "* c gray72", 17 | "= c None", 18 | "- c gray81", 19 | "; c #D0D0D0", 20 | ": c #DFDFDF", 21 | "> c #F3F3F3", 22 | ", c gray100", 23 | /* pixels */ 24 | "====+XXXXXXX ", 25 | "==== ,>>>>>>>>:X", 26 | "=oo= >oo::::::*X", 27 | "o@@o o#@.::::;*X", 28 | "o@$@o@$@.OO:O;*X", 29 | "o@$$@$$@.&:;;;*X", 30 | "=o@$$$@.O:OO;;*X", 31 | "=o@$$$@.&:;;;;*X", 32 | "o@$$@$$@.OO;O;*X", 33 | "o@$@ @$@.&;;;;*X", 34 | "o@@. @@.O;O;-*X", 35 | "=..= >..&;;;--*X", 36 | "==== >;OO;O-O-*X", 37 | "==== >;;;;----*X", 38 | "==== ;********%X", 39 | "==== XXXXXXXXXX " 40 | }; 41 | -------------------------------------------------------------------------------- /src/UI/xpm/clrhist.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *clrhist[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 30 1", 5 | " c black", 6 | ". c #1B3810", 7 | "X c #686868", 8 | "o c #759967", 9 | "O c #759E68", 10 | "+ c #769E68", 11 | "@ c #79A56A", 12 | "# c #7AA56A", 13 | "$ c #7CAC6D", 14 | "% c #7CAD6D", 15 | "& c #7DAC6C", 16 | "* c #7DAE6C", 17 | "= c #80B56E", 18 | "- c #81B46F", 19 | "; c #82B46E", 20 | ": c #82B46F", 21 | "> c #82B56F", 22 | ", c #84BD6F", 23 | "< c #83BD71", 24 | "1 c #84BC70", 25 | "2 c #84BC71", 26 | "3 c #85BD71", 27 | "4 c #87BE73", 28 | "5 c #87C372", 29 | "6 c #88C372", 30 | "7 c #88C472", 31 | "8 c #8AC873", 32 | "9 c #8FCA79", 33 | "0 c #94D77C", 34 | "q c None", 35 | /* pixels */ 36 | "qqqqqqX Xqqqqqqq", 37 | "qqqqqq q qqqqqqq", 38 | "qqqqq qqqqqq", 39 | "qqqX 00999 qqqq", 40 | "qq 0009444## qqq", 41 | "q 0094444##oo qq", 42 | "q 094444##ooo qq", 43 | "q ........... qq", 44 | "qq 85,-$#Ooo qqq", 45 | "qq 854-$#Ooo qqq", 46 | "qq 75,>$#Ooo qqq", 47 | "qq 754>$#Ooo qqq", 48 | "qq 85,**#Ooo qqq", 49 | "qq 85,>*#Ooo qqq", 50 | "qq 874>*#Ooo qqq", 51 | "qqq qqqq" 52 | }; 53 | -------------------------------------------------------------------------------- /src/UI/xpm/clsall.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *clsall[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 14 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #3675D0", 8 | "o c #6595DB", 9 | "O c #EF100F", 10 | "+ c #F0403F", 11 | "@ c #F07A78", 12 | "# c #B1B1B1", 13 | "$ c #87ADE3", 14 | "% c #9DBCE8", 15 | "& c #D1D0CF", 16 | "* c #D0D0D0", 17 | "= c #DFDFDF", 18 | "- c #F1F1F0", 19 | /* pixels */ 20 | ". ", 21 | " %$$$oooooooooX ", 22 | " .............. ", 23 | " -===========*# ", 24 | " -==== =** *# ", 25 | " -=== OO * +O # ", 26 | " -*** O@O O@O # ", 27 | " &### O@@O@@O # ", 28 | "...... O@@@O .. ", 29 | " %$$$o O@@@O oX ", 30 | " .... O@@O@@O . ", 31 | " -=== O@O O@O # ", 32 | " -=== OO * OO # ", 33 | " -**** *** *# ", 34 | " &############# ", 35 | " " 36 | }; 37 | -------------------------------------------------------------------------------- /src/UI/xpm/colours.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *colours[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "4 1 16 1", 5 | " c black", 6 | ". c #800000", 7 | "X c #008000", 8 | "o c #808000", 9 | "O c navy", 10 | "+ c #800080", 11 | "@ c #008080", 12 | "# c #C0C0C0", 13 | "$ c #808080", 14 | "% c red", 15 | "& c green", 16 | "* c yellow", 17 | "= c blue", 18 | "- c magenta", 19 | "; c cyan", 20 | ": c gray100", 21 | /* pixels */ 22 | " $#:" 23 | }; 24 | -------------------------------------------------------------------------------- /src/UI/xpm/compopt.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *compopt[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 21 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #FFA200", 8 | "o c #B1B1B1", 9 | "O c None", 10 | "+ c #CECECE", 11 | "@ c gray81", 12 | "# c #D1D0CF", 13 | "$ c #D0D0D0", 14 | "% c gray82", 15 | "& c #D2D2D2", 16 | "* c #D5D5D5", 17 | "= c gainsboro", 18 | "- c #DDDDDD", 19 | "; c #DFDFDF", 20 | ": c #E0E0DF", 21 | "> c gray88", 22 | ", c #E1E1E0", 23 | "< c #E1E1E1", 24 | "1 c #F1F1F0", 25 | "2 c gray100", 26 | /* pixels */ 27 | "OOOOOOOOOOOOOOOO", 28 | "O. O", 29 | "O XXXXXXXXXXXX O", 30 | "O . O", 31 | "O 1::::::::,:o O", 32 | "O 1; *o O", 33 | "O 1; 222222 @o O", 34 | "O 1; $o O", 35 | "O 1;;;;;$@$$$o O", 36 | "O 1; $o O", 37 | "O 1, 222222 $o O", 38 | "O 1; $o O", 39 | "O 1$@$$$$$@@@o O", 40 | "O $ooooooooooo O", 41 | "O O", 42 | "OOOOOOOOOOOOOOOO" 43 | }; 44 | -------------------------------------------------------------------------------- /src/UI/xpm/compres.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *compres[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 22 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #499935", 8 | "o c #5ABD42", 9 | "O c #4681C1", 10 | "+ c #5AA5F7", 11 | "@ c #74B6FA", 12 | "# c #BE5825", 13 | "$ c #F77331", 14 | "% c #94DC78", 15 | "& c #FB9654", 16 | "* c #FFB270", 17 | "= c #C7C733", 18 | "- c #FFFF42", 19 | "; c None", 20 | ": c #98CBFE", 21 | "> c #D6FFB5", 22 | ", c #FFD0A7", 23 | "< c #FFFF9F", 24 | "1 c #C6E3FF", 25 | "2 c #EDFFDE", 26 | "3 c #FFFFEA", 27 | /* pixels */ 28 | ";;;;;;;;. ;;;", 29 | ";;;;;;;; 1:@ ;;;", 30 | ";;;;. :@+ ;;;", 31 | ";;;; 2>% :@+ ;;;", 32 | ";;;; >%o :@+ ;;;", 33 | ";;;; >%o :@+ ", 34 | ". >%o :@+ 3< ", 35 | " ,*& >%o :@+ <- ", 36 | " *&$ >%o :@+ <- ", 37 | " *&$ >%o :@+ <- ", 38 | " *&$ >%o :@+ <- ", 39 | " *&$ >%o :@+ <- ", 40 | " *&$ >%o :@+ <- ", 41 | " &$# %oX @+O -= ", 42 | " ", 43 | ";;;;;;;;;;;;;;;;" 44 | }; 45 | -------------------------------------------------------------------------------- /src/UI/xpm/copy.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *copy[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 44 1", 5 | " c black", 6 | ". c #888A85", 7 | "X c #898B86", 8 | "o c #8A8C87", 9 | "O c #8C8E89", 10 | "+ c #8D8F8A", 11 | "@ c #8E9189", 12 | "# c #8F908B", 13 | "$ c #989A95", 14 | "% c #989A96", 15 | "& c #9A9B97", 16 | "* c #C3C4C3", 17 | "= c #C4C4C3", 18 | "- c #C6C6C5", 19 | "; c #C7C7C6", 20 | ": c #C8C8C7", 21 | "> c gray83", 22 | ", c #E3E3E2", 23 | "< c #E3E4E2", 24 | "1 c #EAEAEA", 25 | "2 c gray92", 26 | "3 c #ECECEC", 27 | "4 c #EDEDEC", 28 | "5 c #EEEEED", 29 | "6 c #EEEEEE", 30 | "7 c #EFEFEE", 31 | "8 c #F0F0EF", 32 | "9 c gray95", 33 | "0 c #F3F3F2", 34 | "q c #F3F3F3", 35 | "w c #F4F4F3", 36 | "e c #F4F4F4", 37 | "r c #F6F6F5", 38 | "t c #F7F7F6", 39 | "y c #F8F8F7", 40 | "u c #F9F9F9", 41 | "i c #FAFAF9", 42 | "p c gray98", 43 | "a c #FBFBFB", 44 | "s c #FCFCFB", 45 | "d c #FEFEFD", 46 | "f c #FEFEFE", 47 | "g c gray100", 48 | "h c None", 49 | /* pixels */ 50 | "+XX.XX.....Ohhhh", 51 | "Xgggggggggg.hhhh", 52 | "Xg77777777g.hhhh", 53 | "Xg8;%.XXX.X.XXX+", 54 | "Xg88ogggggggggg.", 55 | "Xg8;Xg88888888g.", 56 | "Xg87og8--;-;-8g.", 57 | "Xg7-Xg88888888g.", 58 | "Xg77og8-;;;;88gX", 59 | "Xg1=Xg8888888a8X", 60 | "Xa41og8-;;;-7t-.", 61 | "X8q8og88888+o+o.", 62 | "OooXXg8877a%at%<..h", 65 | "hhhhoX...X...Xhh" 66 | }; 67 | -------------------------------------------------------------------------------- /src/UI/xpm/debug.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *debug[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 10 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #B77DFE", 8 | "o c None", 9 | "O c #C799FF", 10 | "+ c #D7B4FF", 11 | "@ c #DEC3FF", 12 | "# c #E5CCFF", 13 | "$ c #E9DAFB", 14 | "% c #F4F4F4", 15 | /* pixels */ 16 | "oooooooooooooo o", 17 | "ooooooooooooo @ ", 18 | "oooooooooooo $X ", 19 | "ooooooooooo $+X ", 20 | "oooooooooo $+OX ", 21 | "ooooooooo $+OX o", 22 | "o oooooo $+OX oo", 23 | " % oooo $+OX ooo", 24 | " ## oo $+OX oooo", 25 | " #+# $+OX ooooo", 26 | ".++O##+OX oooooo", 27 | "o OOOOXX ooooooo", 28 | "oo OOXX oooooooo", 29 | "ooo XX ooooooooo", 30 | "oooo oooooooooo", 31 | "oooooooooooooooo" 32 | }; 33 | -------------------------------------------------------------------------------- /src/UI/xpm/empty.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *empty[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 1 1", 5 | " c None", 6 | /* pixels */ 7 | " ", 8 | " ", 9 | " ", 10 | " ", 11 | " ", 12 | " ", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ", 22 | " " 23 | }; 24 | -------------------------------------------------------------------------------- /src/UI/xpm/envopt.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *envopt[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 10 1", 5 | " c black", 6 | ". c #686868", 7 | "X c gray61", 8 | "o c #A4A4A4", 9 | "O c #B9B9B9", 10 | "+ c None", 11 | "@ c gray79", 12 | "# c gray85", 13 | "$ c #E1E1E1", 14 | "% c gray92", 15 | /* pixels */ 16 | "++ +++++++++++", 17 | "+.%$# ++++++++++", 18 | " %$#@O ++ +", 19 | " $#@Oo +++++++++", 20 | " #@OoX ++ +", 21 | "+ OoX ++++++++++", 22 | "++ +++++++++++", 23 | "++++++++++++++++", 24 | "++++++++++++++++", 25 | "++ +++++++++++", 26 | "+.%$# ++++++++++", 27 | " %$#@O ++ +", 28 | " $#@Oo +++++++++", 29 | " #@OoX ++ +", 30 | "+ OoX ++++++++++", 31 | "++ +++++++++++" 32 | }; 33 | -------------------------------------------------------------------------------- /src/UI/xpm/explor.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *explor[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 8 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #BE8200", 8 | "o c #DB9600", 9 | "O c #FFAE00", 10 | "+ c #FFCC5D", 11 | "@ c None", 12 | "# c #FFEBBD", 13 | /* pixels */ 14 | "@ @@@@@@@@@@@@", 15 | ".#++ @@@@@@", 16 | " +OO+++++O @@@@@", 17 | " +OOOOOOOo @@@@@", 18 | " +OOOOOOOo @@@@@", 19 | " +OOOOOOOo @@@@@", 20 | " OoooooooX @@@@@", 21 | " @@@@@", 22 | "@@@@@@@@@@@@@@@@", 23 | "@@@@@ @@@@. @", 24 | "@@@@@@ @ @ +++ @", 25 | "@@@@@ @@@@ @", 26 | "@@@@@@@@@@@@@@@@", 27 | "@@@@@ @@@@. @", 28 | "@@@@@@ @ @ +++ @", 29 | "@@@@@ @@@@ @" 30 | }; 31 | -------------------------------------------------------------------------------- /src/UI/xpm/export.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *xpm_export[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 16 1", 5 | " c black", 6 | ". c #2F2F2F", 7 | "X c #686868", 8 | "o c #3675D0", 9 | "O c #6595DB", 10 | "+ c gray59", 11 | "@ c gray72", 12 | "# c None", 13 | "$ c #87ADE3", 14 | "% c #9DBCE8", 15 | "& c #BAD0EF", 16 | "* c #D0D0D0", 17 | "= c #DFDFDF", 18 | "- c #CADBF3", 19 | "; c #F3F3F3", 20 | ": c gray100", 21 | /* pixels */ 22 | "X....... ####", 23 | " :;;;;;;;;=.####", 24 | " ;====++++.#####", 25 | " ;===+....## ###", 26 | " ;==+.##### & ##", 27 | " ;==+.# && #", 28 | " ;==+.# -&&&%%$ ", 29 | " ;==+.# &%%%%$$O", 30 | " ;==+.# %OOO$$o ", 31 | " ;==+.# $O #", 32 | " ;==+.##### O ##", 33 | " ;=***....## ###", 34 | " ;****;;;;.#####", 35 | " ;***#####+.####", 36 | " *@@@@@@@@+.####", 37 | " .......... ####" 38 | }; 39 | -------------------------------------------------------------------------------- /src/UI/xpm/gobook.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *gobook[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 23 1", 5 | " c black", 6 | ". c #7A4D00", 7 | "X c #686868", 8 | "o c #005886", 9 | "O c #0072AE", 10 | "+ c #0082C6", 11 | "@ c #0098E6", 12 | "# c #9E6400", 13 | "$ c #C67E00", 14 | "% c #9F8B67", 15 | "& c #D89B2E", 16 | "* c #FFB737", 17 | "= c gray59", 18 | "- c gray72", 19 | "; c #BBBBBB", 20 | ": c None", 21 | "> c #FFDFA5", 22 | ", c #FFE8BD", 23 | "< c #C8C8C8", 24 | "1 c gray81", 25 | "2 c #D0D0D0", 26 | "3 c #DFDFDF", 27 | "4 c #F3F3F3", 28 | /* pixels */ 29 | "::X ::", 30 | ":: ,>o@+Oo&*$ ::", 31 | ":: 44o@+Oo<3# ::", 32 | ":: 33o@+Oo;;# ::", 33 | ":: 33o@+Oo;-# ::", 34 | ":: 33o@+Oo;-# ::", 35 | ":: 33o@+Oo;-# ::", 36 | ":: 33o@+Oo;;# ::", 37 | ":: 33o@+Oo;-# ::", 38 | ":: 33o+OOo;-# ::", 39 | ":: 33ooooo;-# ::", 40 | ":: 111;;;;;-# ::", 41 | ":: 11111111;# ::", 42 | ":: ;-;;----=# ::", 43 | ":: $%#######. ::", 44 | ":: ::" 45 | }; 46 | -------------------------------------------------------------------------------- /src/UI/xpm/help.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *help[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 7 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #FFD048", 8 | "o c #FFD459", 9 | "O c #FFDC75", 10 | "+ c None", 11 | "@ c #FFF5D6", 12 | /* pixels */ 13 | "+++++ +++++", 14 | "++++ @@@@@@ ++++", 15 | "+++ @OOOOOOO +++", 16 | "++.@oX OoX +++", 17 | "++ OX +++ OX +++", 18 | "+++ +++ OoX +++", 19 | "+++++++ OoX ++++", 20 | "++++++.OoX +++++", 21 | "+++++ @XX ++++++", 22 | "+++++ OX +++++++", 23 | "++++++ +++++++", 24 | "++++++++++++++++", 25 | "++++++ +++++++", 26 | "+++++.@O +++++++", 27 | "+++++ OX +++++++", 28 | "++++++ ++++++++" 29 | }; 30 | -------------------------------------------------------------------------------- /src/UI/xpm/homepg.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *homepg[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 12 1", 5 | " c black", 6 | ". c #3D92FF", 7 | "X c #61A7FF", 8 | "o c #71B0FF", 9 | "O c #DBB600", 10 | "+ c #FFA125", 11 | "@ c #FFBB60", 12 | "# c #FFD300", 13 | "$ c #FFE45D", 14 | "% c None", 15 | "& c #99C5FF", 16 | "* c #B5D5FF", 17 | /* pixels */ 18 | "%%%%%%%%%%%%%%%%", 19 | "%%%%% %%%%%", 20 | "%%%% *&&&&& %%%%", 21 | "%%% &ooooooo %%%", 22 | "%% &ooooooooX %%", 23 | "% &oo. oooX %", 24 | " *oo. OOOO oXX. ", 25 | " &o. O##### X.. ", 26 | " &. O####### .. ", 27 | "% O## ##O %", 28 | "%%% $# @@ #O %%%", 29 | "%%% $# @@ #O %%%", 30 | "%%% $# @@ #O %%%", 31 | "%%% #O ++ OO %%%", 32 | "%%% %%%", 33 | "%%%%%%%%%%%%%%%%" 34 | }; 35 | -------------------------------------------------------------------------------- /src/UI/xpm/icon.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *icon[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 16 1", 5 | " c black", 6 | ". c #2F2F2F", 7 | "X c gray35", 8 | "o c #686868", 9 | "O c #3675D0", 10 | "+ c #6595DB", 11 | "@ c gray59", 12 | "# c #989898", 13 | "$ c gray72", 14 | "% c #87ADE3", 15 | "& c #9DBCE8", 16 | "* c #BAD0EF", 17 | "= c #DFDFDF", 18 | "- c #CADBF3", 19 | "; c #F3F3F3", 20 | ": c gray100", 21 | /* pixels */ 22 | "o ....... ", 23 | " :;;;;;;;;;;;;=.", 24 | " ;============$.", 25 | " ;============$.", 26 | " ;==#XXXXXXX==$.", 27 | " ;==XO++++%X==$.", 28 | " ;==X+-%%%*X==$.", 29 | " ;==X+%%%&*X==$.", 30 | " ;==X+%%&&*X==$.", 31 | " ;==X+%&&&*X==$.", 32 | " ;==X%****-X==$.", 33 | " ;==XXXXXXXX==$.", 34 | " ;============$.", 35 | " ;============$.", 36 | " =$$$$$$$$$$$$@.", 37 | " .......... " 38 | }; 39 | -------------------------------------------------------------------------------- /src/UI/xpm/insert.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *insert[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 16 1", 5 | " c black", 6 | ". c #2F2F2F", 7 | "X c #686868", 8 | "o c #3675D0", 9 | "O c #6595DB", 10 | "+ c gray59", 11 | "@ c gray72", 12 | "# c None", 13 | "$ c #87ADE3", 14 | "% c #9DBCE8", 15 | "& c #BAD0EF", 16 | "* c #D0D0D0", 17 | "= c #DFDFDF", 18 | "- c #CADBF3", 19 | "; c #F3F3F3", 20 | ": c gray100", 21 | /* pixels */ 22 | "###X....... #", 23 | "### :;;;;;;;;=.#", 24 | "### =@@@@@===@.#", 25 | "### @==@.#", 26 | "######### @==@.#", 27 | "X ## @==@.#", 28 | " -&&&% ## @==@.#", 29 | " &%%$O ## @==@.#", 30 | " &%$$O ## @==@.#", 31 | " %OOOo ## @==@.#", 32 | " ## @==@.#", 33 | "######### @==@.#", 34 | "### @==@.#", 35 | "### :;;;;;===@.#", 36 | "### *@@@@@@@@+.#", 37 | "### .......... #" 38 | }; 39 | -------------------------------------------------------------------------------- /src/UI/xpm/makefl.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *makefl[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 19 1", 5 | " c black", 6 | ". c #2F2F2F", 7 | "X c #47566F", 8 | "o c #686868", 9 | "O c #626F87", 10 | "+ c #6F7F9A", 11 | "@ c #FFA200", 12 | "# c gray59", 13 | "$ c gray72", 14 | "% c None", 15 | "& c #8B9EC0", 16 | "* c #A5B5D1", 17 | "= c #B6C4DC", 18 | "- c gray81", 19 | "; c #DFDFDF", 20 | ": c #CCD7EA", 21 | "> c #D9E3F3", 22 | ", c #F3F3F3", 23 | "< c gray100", 24 | /* pixels */ 25 | "%o....... %%%", 26 | "% >::::::::=.%%%", 27 | "% :========&.%%%", 28 | "% :=======*&.%%%", 29 | "% :=X=XX=X*&.%%%", 30 | "% :=====***&.%%%", 31 | "% :=XX=Xo %", 32 | "% :====* @@@@@ %", 33 | "% :=X=XX %", 34 | "% :==*** <,,,; %", 35 | "% :=XXX* ,;;;$ %", 36 | "% :=**** ,;--$ %", 37 | "% :*XX*X -$$$# %", 38 | "% :***** %", 39 | "% *&&&&&&++O.%%%", 40 | "% .......... %%%" 41 | }; 42 | -------------------------------------------------------------------------------- /src/UI/xpm/minall.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *minall[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 7 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #3675D0", 8 | "o c #6595DB", 9 | "O c None", 10 | "+ c #87ADE3", 11 | "@ c #9DBCE8", 12 | /* pixels */ 13 | "OOOOOOOOOOOOOOOO", 14 | "OOOOOOOOOOOOOOOO", 15 | ". OOO", 16 | " @+++ooooooX OOO", 17 | " OOO", 18 | "OOOOOOOOOOOOOOOO", 19 | "O. OO", 20 | "O @+++ooooooX OO", 21 | "O OO", 22 | "OOOOOOOOOOOOOOOO", 23 | "OO. O", 24 | "OO @+++ooooooX O", 25 | "OO O", 26 | "OOOOOOOOOOOOOOOO", 27 | "OOOOOOOOOOOOOOOO", 28 | "OOOOOOOOOOOOOOOO" 29 | }; 30 | -------------------------------------------------------------------------------- /src/UI/xpm/newproj.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *newproj[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 41 1", 5 | " c black", 6 | ". c #4F2B00", 7 | "X c #59482C", 8 | "o c #64461F", 9 | "O c #78561F", 10 | "+ c #786039", 11 | "@ c #686868", 12 | "# c #805A00", 13 | "$ c #906D42", 14 | "% c #9B835C", 15 | "& c #C88E00", 16 | "* c #FF9E00", 17 | "= c #D1AF78", 18 | "- c #FFBB4C", 19 | "; c #FFCE7D", 20 | ": c #ACA59A", 21 | "> c #BCB0A5", 22 | ", c None", 23 | "< c #CDAE87", 24 | "1 c #D5B287", 25 | "2 c #D6B387", 26 | "3 c #D1B992", 27 | "4 c #E0BE87", 28 | "5 c #E0BC91", 29 | "6 c #EDC99E", 30 | "7 c #FFD796", 31 | "8 c #E0C8A1", 32 | "9 c #E0C9A2", 33 | "0 c #EAD2AC", 34 | "q c #ECD8A6", 35 | "w c #EAD9BD", 36 | "e c #F7DFB9", 37 | "r c #EAE3D8", 38 | "t c #F7E6CA", 39 | "y c #FFEBC8", 40 | "u c #F6ECD3", 41 | "i c #F5E9DE", 42 | "p c #EAE5E1", 43 | "a c #FBEFE5", 44 | "s c #FBF4E9", 45 | "d c #FFF8ED", 46 | /* pixels */ 47 | ",@ ,", 48 | " p:dsssssssai>u ", 49 | " rXtwwwww0003+q ", 50 | " rXe000000093+q ", 51 | " rXe0%0%%0%93+q ", 52 | " #.e000009993+q ", 53 | " y#60%%0%%993+q ", 54 | " 7y#500099993+q ", 55 | " 7;y#$0%%9%93+q ", 56 | " 7;-y#2999883Oq ", 57 | " 7;--y#$9%96=OO ", 58 | ", ;---y#2999=o ,", 59 | ", ;----y#2%4=# ,", 60 | ",, *****y#4<# ,,", 61 | ",,, &&&&&# ,,,", 62 | ",,,,, ,,,,," 63 | }; 64 | -------------------------------------------------------------------------------- /src/UI/xpm/newsrc.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *newsrc[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 66 1", 5 | " c black", 6 | ". c #8C8C7C", 7 | "X c #969677", 8 | "o c #9F9F72", 9 | "O c #AFAE6A", 10 | "+ c #E6DD36", 11 | "@ c #F9EF1E", 12 | "# c #FFF302", 13 | "$ c #FFF303", 14 | "% c #FFF309", 15 | "& c #FFF30A", 16 | "* c #FFF30D", 17 | "= c #EDE436", 18 | "- c #F6EC24", 19 | "; c #F4EB28", 20 | ": c #FAEF22", 21 | "> c #FAF022", 22 | ", c #FBF23C", 23 | "< c #FCF43A", 24 | "1 c #F7EF46", 25 | "2 c #F7EF5D", 26 | "3 c #FBF345", 27 | "4 c #FBF346", 28 | "5 c #FCF343", 29 | "6 c #FDF440", 30 | "7 c #FAF24D", 31 | "8 c #FAF24E", 32 | "9 c #F7F069", 33 | "0 c #F7F06A", 34 | "q c #F8F163", 35 | "w c #F8F167", 36 | "e c #FDF667", 37 | "r c #FDF56B", 38 | "t c #FDF668", 39 | "y c #FDF66A", 40 | "u c #FDF66E", 41 | "i c #FDF771", 42 | "p c #FDF772", 43 | "a c #818181", 44 | "s c gray62", 45 | "d c #F4EF96", 46 | "f c #F2EE9B", 47 | "g c #F3EF9B", 48 | "h c #F2EE9C", 49 | "j c #F5F092", 50 | "k c #F5F09A", 51 | "l c #F1EEB1", 52 | "z c #F0EDB4", 53 | "x c #F3F0B1", 54 | "c c #FEFAB5", 55 | "v c #FEFAB8", 56 | "b c #FEFABB", 57 | "n c #FEFBBF", 58 | "m c #EFEEE0", 59 | "M c #EEEEE2", 60 | "N c #EAEAEA", 61 | "B c gray92", 62 | "V c #ECECEC", 63 | "C c gray93", 64 | "Z c #EEEEEE", 65 | "A c #EFEFEF", 66 | "S c gray94", 67 | "D c #F1F1F1", 68 | "F c gray95", 69 | "G c gray100", 70 | "H c None", 71 | /* pixels */ 72 | "saaaaaaaa.oO=%#H", 73 | "aGGGGGGGGf081;*#", 74 | "aGVNNNVVz0 c #F3F3F3", 22 | ", c gray100", 23 | /* pixels */ 24 | "O *", 25 | " :=====@=====$ *", 26 | " =$$$$$X$$+++# *", 27 | " =$$$$$X$$+++# *", 28 | " =$$$$$X$$+++# *", 29 | " @XXXXXXXXXXX. *", 30 | " =$$$$$X$$$$$# *", 31 | " =$$$O ", 32 | " =$$$ ,>>>>>>>; ", 33 | " $### >;oo;oo-& ", 34 | " >;;;;---& ", 35 | "***** >;o-ooo-& ", 36 | "***** >;------& ", 37 | "***** ;&&&&&&&% ", 38 | "***** ", 39 | "****************" 40 | }; 41 | -------------------------------------------------------------------------------- /src/UI/xpm/prev.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *prev[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 8 1", 5 | " c black", 6 | ". c #369800", 7 | "X c #39A100", 8 | "o c #3FB000", 9 | "O c #00DD00", 10 | "+ c #46C500", 11 | "@ c None", 12 | "# c #8FFF8F", 13 | /* pixels */ 14 | "@@@@@@@@@ @@@@@@", 15 | "@@@@@@@@ # @@@@@", 16 | "@@@@@@@ #O+ @@@@", 17 | "@@@@@@ #O+X. @@@", 18 | "@@@@@ #O+X. @@@@", 19 | "@@@@ #O+X. @@@@@", 20 | "@@@ #O+o. @@@@@@", 21 | "@@ #O+oo @@@@@@@", 22 | "@@@ ++ooo @@@@@@", 23 | "@@@@ ++ooo @@@@@", 24 | "@@@@@ +oooX @@@@", 25 | "@@@@@@ ooXX. @@@", 26 | "@@@@@@@ XX. @@@@", 27 | "@@@@@@@@ . @@@@@", 28 | "@@@@@@@@@ @@@@@@", 29 | "@@@@@@@@@@@@@@@@" 30 | }; 31 | -------------------------------------------------------------------------------- /src/UI/xpm/print.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *print[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c black", 6 | ". c #2F2F2F", 7 | "X c #656565", 8 | "o c #686868", 9 | "O c gray59", 10 | "+ c gray72", 11 | "@ c None", 12 | "# c #D0D0D0", 13 | "$ c #DFDFDF", 14 | "% c #F3F3F3", 15 | "& c gray100", 16 | /* pixels */ 17 | "@@o....... @@", 18 | "@@ &%%%%%%%%$.@@", 19 | "@@ %$$$$$$$$+.@@", 20 | "@@ %$$$$$$$#+.@@", 21 | "@@ %$X$XX$X#+.@@", 22 | "@@ %$$$$$###+.@@", 23 | "@@ %$XX$XX##+.@@", 24 | "@@ %$$$$####+.@@", 25 | "o ", 26 | " &%%%%%%%%%%%%$ ", 27 | " %$$$$$$$$$$$$+ ", 28 | " $++++++++++++O ", 29 | " ", 30 | " O++++++++++++% ", 31 | " +%%%%%%%%%%%%& ", 32 | "@ @" 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/projopt.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *projopt[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 12 1", 5 | " c black", 6 | ". c #64461F", 7 | "X c #686868", 8 | "o c #805A00", 9 | "O c #C88E00", 10 | "+ c #FF9E00", 11 | "@ c #FFBB4C", 12 | "# c #FFCE7D", 13 | "$ c None", 14 | "% c #FFD796", 15 | "& c #FFEBC8", 16 | "* c gray100", 17 | /* pixels */ 18 | "$ $", 19 | "X&%%%%%%%%%%%%@ ", 20 | " %###########@O ", 21 | " %#@@ @@+O ", 22 | " %#@ ****** @+O ", 23 | " %#@@ @@+O ", 24 | " %#@@@@@@@@@@+O ", 25 | " %#@@ @@+O ", 26 | " %#@ ****** @+O ", 27 | " %#@@ @@+O ", 28 | " %#@@@@@@@@@@+o ", 29 | "$ #@@@@@@@@@+. $", 30 | "$ #@@@@@@@+++o $", 31 | "$$ +++++++OOo $$", 32 | "$$$ OOOOOo $$$", 33 | "$$$$$ $$$$$" 34 | }; 35 | -------------------------------------------------------------------------------- /src/UI/xpm/rebuild.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *rebuild[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 9 1", 5 | " c black", 6 | ". c #686868", 7 | "X c gray59", 8 | "o c gray72", 9 | "O c None", 10 | "+ c gray81", 11 | "@ c #DFDFDF", 12 | "# c #F3F3F3", 13 | "$ c gray100", 14 | /* pixels */ 15 | ". OO. ", 16 | " $###@ OO $###@ ", 17 | " #@@@o OO #@@@o ", 18 | " #@++o OO #@++o ", 19 | " #@++o OO #@++o ", 20 | " +oooX OO +oooX ", 21 | " OO ", 22 | "OOOOOOOOOOOOOOOO", 23 | "OOOOOOOOOOOOOOOO", 24 | ". OO. ", 25 | " $###@ OO $###@ ", 26 | " #@@@o OO #@@@o ", 27 | " #@++o OO #@++o ", 28 | " #@++o OO #@++o ", 29 | " +oooX OO +oooX ", 30 | " OO " 31 | }; 32 | -------------------------------------------------------------------------------- /src/UI/xpm/redo.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *redo[] = { 3 | "16 16 45 1", 4 | " c None", 5 | ". c None", 6 | "+ c #4E9A06", 7 | "@ c #AEF36C", 8 | "# c #8F9B0C", 9 | "$ c #A9DE49", 10 | "% c #AEF16A", 11 | "& c #B3F573", 12 | "* c #A6EF61", 13 | "= c #73D216", 14 | "- c #ACD945", 15 | "; c #AFEF67", 16 | "> c #A1E950", 17 | ", c #A4DE24", 18 | "' c #9BD622", 19 | ") c #A9D846", 20 | "! c #B1EF65", 21 | "~ c #A5DF26", 22 | "{ c #97DD2A", 23 | "] c #AFD71A", 24 | "^ c #75D318", 25 | "/ c #9DC230", 26 | "( c #B1ED60", 27 | "_ c #C8D009", 28 | ": c #77D014", 29 | "< c #8AE234", 30 | "[ c #559F0C", 31 | "} c #B1E963", 32 | "| c #BAE031", 33 | "1 c #CBD417", 34 | "2 c #A1DA23", 35 | "3 c #D9DE23", 36 | "4 c #529D0A", 37 | "5 c #CDD624", 38 | "6 c #93A10B", 39 | "7 c #CCD41E", 40 | "8 c #BEE246", 41 | "9 c #99A605", 42 | "0 c #B3D937", 43 | "a c #B8DD3A", 44 | "b c #AFC723", 45 | "c c #919D05", 46 | "d c #5AA80F", 47 | "e c #C0D62C", 48 | "f c #9A9902", 49 | ".........+......", 50 | ".........++.....", 51 | ".........+@+....", 52 | "......++++@@+...", 53 | "....+#$%@&*=@+..", 54 | "...+-;>,,',==@+.", 55 | "..+)!~{'']===^@+", 56 | ".+/(~]]_:^===<+.", 57 | ".[}|1'22223=<+..", 58 | ".4!56+++++7<+...", 59 | ".+89+....+<+....", 60 | ".+0+.....++.....", 61 | ".+a+.....+......", 62 | ".+bc+...........", 63 | ".+def+..........", 64 | "..+++..........."}; 65 | -------------------------------------------------------------------------------- /src/UI/xpm/remsrc.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *remsrc[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 17 1", 5 | " c black", 6 | ". c gray6", 7 | "X c #2F2F2F", 8 | "o c #353535", 9 | "O c #656565", 10 | "+ c #686868", 11 | "@ c #3FB000", 12 | "# c gray59", 13 | "$ c #B2B2B2", 14 | "% c gray72", 15 | "& c None", 16 | "* c #8FFF8F", 17 | "= c gray81", 18 | "- c #D0D0D0", 19 | "; c #DFDFDF", 20 | ": c #F3F3F3", 21 | "> c gray100", 22 | /* pixels */ 23 | "&&&&+ ", 24 | "&&&& >::::::::;X", 25 | "&&&& :;;;;;;;;%X", 26 | "&&&& :;OO;O;O-%X", 27 | "&&&& :;;;;;;;-%X", 28 | "&+oooooooo;OO-%X", 29 | "+@@@@@@@@@.---%X", 30 | "o@*******@.$O-%X", 31 | "o@@@@@@@@@.$--%X", 32 | "&.........$OO-%X", 33 | "&&&& $$$$$---=%X", 34 | "&&&& :;OO-O-O=%X", 35 | "&&&& :-----=-=%X", 36 | "&&&& :----====%X", 37 | "&&&& -%%%%%%%%#X", 38 | "&&&& XXXXXXXXXX " 39 | }; 40 | -------------------------------------------------------------------------------- /src/UI/xpm/reopen.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *reopen[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 12 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #45C837", 8 | "o c #7CD872", 9 | "O c #C88E00", 10 | "+ c #FF9E00", 11 | "@ c #FFBB4C", 12 | "# c #FFCE7D", 13 | "$ c None", 14 | "% c #A0E399", 15 | "& c #FFD796", 16 | "* c #FFEBC8", 17 | /* pixels */ 18 | "$$$$$$$$$$$$$$$$", 19 | "$$$$$$$$$$ $$$$$", 20 | "$$$$$$$$$.% $$$$", 21 | "$$$$$$$$$ %% $$$", 22 | " $$$ %o% $$", 23 | " * $ %%%%%oooX $", 24 | " &* %oo ooX $$", 25 | " &#* o $$ oX $$$", 26 | " &#@* $$ X $$$$", 27 | " &#@@* $$$ $$$$$", 28 | "$ #@@@* $$$$$$$$", 29 | "$ #@@@@* $$$$$$$", 30 | "$$ +++++* $$$$$$", 31 | "$$$ OOOOO $$$$$", 32 | "$$$$$ $$$$$", 33 | "$$$$$$$$$$$$$$$$" 34 | }; 35 | -------------------------------------------------------------------------------- /src/UI/xpm/resrc.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *resrc[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 23 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #6666CD", 8 | "o c #7F7FFF", 9 | "O c #008000", 10 | "+ c #00BB00", 11 | "@ c #3FBF7F", 12 | "# c #66CC65", 13 | "$ c #7FFF7F", 14 | "% c #4BE498", 15 | "& c #990000", 16 | "* c #993300", 17 | "= c #BC0000", 18 | "- c #BF3F00", 19 | "; c #D65B3D", 20 | ": c #CC6633", 21 | "> c #E77339", 22 | ", c #D15353", 23 | "< c #FF6666", 24 | "1 c None", 25 | "2 c #A4A4FF", 26 | "3 c #BEFFBE", 27 | "4 c #FF8383", 28 | /* pixels */ 29 | ". 1111111", 30 | " 222222o 1111111", 31 | " 2oooooX 1111111", 32 | " 2o. 1111", 33 | " 2o %%%%+3$ 1111", 34 | " 2o %@@@O$# 1111", 35 | " 2o %@. 1", 36 | " 2o %@ ;->>=4< 1", 37 | " oX %@ ;*::&<, 1", 38 | " +O -*::&<, 1", 39 | "111 3$ >:::&<, 1", 40 | "111 $# >:::&<, 1", 41 | "111 =&&&&<, 1", 42 | "111111 4<<<<<, 1", 43 | "111111 <,,,,,, 1", 44 | "111111 1" 45 | }; 46 | -------------------------------------------------------------------------------- /src/UI/xpm/run.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *run[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 23 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #FFA200", 8 | "o c #B1B1B1", 9 | "O c None", 10 | "+ c #CECECE", 11 | "@ c gray81", 12 | "# c #D1D0CF", 13 | "$ c #D0D0D0", 14 | "% c gray82", 15 | "& c #D2D2D2", 16 | "* c #D5D5D5", 17 | "= c gray84", 18 | "- c #D7D7D7", 19 | "; c gainsboro", 20 | ": c #DDDDDD", 21 | "> c gray87", 22 | ", c #DFDFDF", 23 | "< c #E0E0DF", 24 | "1 c gray88", 25 | "2 c #E1E1E0", 26 | "3 c #E1E1E1", 27 | "4 c #F1F1F0", 28 | /* pixels */ 29 | "OOOOOOOOOOOOOOOO", 30 | "O. O", 31 | "O XXXXXXXXXXXX O", 32 | "O . O", 33 | "O 4<<<<<<<,< c #A3B9FF", 22 | ", c #A3BAFF", 23 | "< c #A3BBFF", 24 | "1 c #A3BCFF", 25 | "2 c #A3BDFF", 26 | "3 c #A3BEFF", 27 | "4 c #A3BFFF", 28 | "5 c #A3C0FF", 29 | "6 c #A3C2FF", 30 | "7 c #A3C3FF", 31 | "8 c #A3C4FF", 32 | "9 c #A3C5FF", 33 | "0 c #A3C6FF", 34 | "q c #A3C7FF", 35 | "w c #A3C8FF", 36 | "e c #D0D0D0", 37 | "r c #DFDFDF", 38 | "t c #CFDBFF", 39 | "y c #F3F3F3", 40 | "u c gray100", 41 | /* pixels */ 42 | "@ ", 43 | " ut@yyyyyyyy@t: ", 44 | " t: rrrrrrrr 6 ", 45 | " t: rrrrrrre 6 ", 46 | " t: rrrreeee 6; ", 47 | " t: rrreeeee 6; ", 48 | " t: eeeeeeee 6; ", 49 | " t: eeeeeeee 6; ", 50 | " t: 6; ", 51 | " t<<<333366668; ", 52 | " t<<<$OOOO%888; ", 53 | " t<<$&&&OOO%q8; ", 54 | " t3 c #C1C1C1", 22 | ", c #CECECE", 23 | "< c #D1D0CF", 24 | "1 c gray85", 25 | "2 c #DFDFDF", 26 | "3 c #E0E0DF", 27 | "4 c gray88", 28 | "5 c #E1E1E1", 29 | "6 c #F1F1F0", 30 | /* pixels */ 31 | ". ", 32 | " -===OOOOOOOOOo ", 33 | " #++++++++++++X ", 34 | " #............X ", 35 | " 622.::::::*&&@ ", 36 | " 623.:::::*&&&@ ", 37 | " 623.::::*&&&&@ ", 38 | " 622.:::*&&&&&@ ", 39 | " 622.::*&&&&&&@ ", 40 | " 622.:*&&&&&&&@ ", 41 | " 652.*%&&&&&&&@ ", 42 | " 652.&%&&&&&&&@ ", 43 | " 651.%&&&&&&&&@ ", 44 | " 61,.%&&&&&&&&@ ", 45 | " <%%%@@@@@@@@@@ ", 46 | " " 47 | }; 48 | -------------------------------------------------------------------------------- /src/UI/xpm/srcagain.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *srcagain[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 46 1", 5 | " c black", 6 | ". c gray6", 7 | "X c #2F2F2F", 8 | "o c #656565", 9 | "O c #686868", 10 | "+ c #6F6F6F", 11 | "@ c #549EB7", 12 | "# c #A66D00", 13 | "$ c #FFC96B", 14 | "% c gray56", 15 | "& c gray72", 16 | "* c None", 17 | "= c #80C7DE", 18 | "- c #81C7DE", 19 | "; c #8CCCE0", 20 | ": c #8CD2E9", 21 | "> c #92CEE2", 22 | ", c #91D0E4", 23 | "< c #97D0E2", 24 | "1 c #97D1E2", 25 | "2 c #95D1E5", 26 | "3 c #97D7EC", 27 | "4 c #98D7EB", 28 | "5 c #9DD9ED", 29 | "6 c #AAD8E7", 30 | "7 c #AAD9E6", 31 | "8 c #AAD9E7", 32 | "9 c #ADDDEA", 33 | "0 c #AEDCEA", 34 | "q c #AEDDEA", 35 | "w c #B0DCE8", 36 | "e c #B1DCE8", 37 | "r c #B5DFEB", 38 | "t c #B5E0EC", 39 | "y c gray81", 40 | "u c #D0D0D0", 41 | "i c #DFDFDF", 42 | "p c #C3E3EC", 43 | "a c #C3E4EC", 44 | "s c #C6E7EF", 45 | "d c #D0E9EF", 46 | "f c #D1E9EF", 47 | "g c #D0EAF0", 48 | "h c #E9F4F4", 49 | "j c #F3F3F3", 50 | "k c gray100", 51 | /* pixels */ 52 | " XXXXXXXXXXX****", 53 | " jiiuuuuuu&X****", 54 | " jiooououy&X****", 55 | " jiuuu.....X****", 56 | " juooO%2,-%.****", 57 | " juu.%0t61:%.***", 58 | " u&&.0sds64@.***", 59 | " XXX.rdhd05@.***", 60 | "****.0adp64@.***", 61 | "oXXX.%0e6<:+.***", 62 | " kjjj.%,--+$# **", 63 | " jiiii.....#$# *", 64 | " jiiiiiiiu& #$# ", 65 | " jioiooiou&X ## ", 66 | " jiiiiiuuu&X* ", 67 | "XXXXXXXXXXXX****" 68 | }; 69 | -------------------------------------------------------------------------------- /src/UI/xpm/temphlp.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *temphlp[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c black", 6 | ". c #555555", 7 | "X c #5F00AC", 8 | "o c #7400C9", 9 | "O c #7704DE", 10 | "+ c #AB3EE0", 11 | "@ c #D068F4", 12 | "# c None", 13 | "$ c #F490FB", 14 | "% c #F69CFC", 15 | "& c #FFACFF", 16 | /* pixels */ 17 | "#. .##", 18 | "# &$$$$$$$$$@ ##", 19 | "# $@@@@oo@@@O ##", 20 | "# $@@@o @@@O ##", 21 | "# $@@o ## %@O ##", 22 | "# $@@o ## %@O ##", 23 | "# $@@o ## %@O ##", 24 | "# $@+o ## %@O ##", 25 | "# $@ ### %@O ##", 26 | "# $@ #### %@O ##", 27 | "# $@@ ### %@O ##", 28 | "# $@@@ %@@O ##", 29 | "# $@@@%%%@@@O ##", 30 | "# $@@@@@@@@@O ##", 31 | "# @OOOOOOOOOX ##", 32 | "#. .##" 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/tile.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *tile[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #3675D0", 8 | "o c #6595DB", 9 | "O c #B1B1B1", 10 | "+ c #87ADE3", 11 | "@ c #9DBCE8", 12 | "# c #D1D0CF", 13 | "$ c #D0D0D0", 14 | "% c #DFDFDF", 15 | "& c #F1F1F0", 16 | /* pixels */ 17 | ". ", 18 | " @+++oooooooooX ", 19 | " . ", 20 | " &%%%%%%%%%%%$O ", 21 | " &%%%%%%%$$$$$O ", 22 | " &%%%$$$$$$$$$O ", 23 | " &$$$$$$$$$$$$O ", 24 | " #OOOOOOOOOOOOO ", 25 | ". ", 26 | " @+++oooooooooX ", 27 | " . ", 28 | " &%%%%%%%%%%%$O ", 29 | " &%%%%%$$$$$$$O ", 30 | " &$$$$$$$$$$$$O ", 31 | " #OOOOOOOOOOOOO ", 32 | " " 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/toolbar.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *toolbar[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 16 1", 5 | " c black", 6 | ". c #2F2F2F", 7 | "X c gray35", 8 | "o c #686868", 9 | "O c #3675D0", 10 | "+ c #6595DB", 11 | "@ c gray59", 12 | "# c #989898", 13 | "$ c gray72", 14 | "% c #87ADE3", 15 | "& c #9DBCE8", 16 | "* c #BAD0EF", 17 | "= c #DFDFDF", 18 | "- c #CADBF3", 19 | "; c #F3F3F3", 20 | ": c gray100", 21 | /* pixels */ 22 | "o ....... ", 23 | " :;;;;;;;;;;;;=.", 24 | " ;============$.", 25 | " ;=#XXXXXXXXX=$.", 26 | " ;=X-******&X=$.", 27 | " ;=X*&&&%%%+X=$.", 28 | " ;=X&++++++OX=$.", 29 | " ;=XXXXXXXXXX=$.", 30 | " ;============$.", 31 | " ;=#XXXXXXXXX=$.", 32 | " ;=X-******&X=$.", 33 | " ;=X*&&&%%%+X=$.", 34 | " ;=X&++++++OX=$.", 35 | " ;=XXXXXXXXXX=$.", 36 | " =$$$$$$$$$$$$@.", 37 | " .......... " 38 | }; 39 | -------------------------------------------------------------------------------- /src/UI/xpm/tools.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *tools[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 11 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #8A8A52", 8 | "o c #9F9F5F", 9 | "O c #B4B46B", 10 | "+ c #D0D07C", 11 | "@ c #838383", 12 | "# c gray63", 13 | "$ c None", 14 | "% c #C6C6C6", 15 | "& c gray100", 16 | /* pixels */ 17 | "$$$$ $ $$", 18 | "$$$ &%%%%% %# $$", 19 | "$$ &@@####%#@ $$", 20 | "$.% @@@@@@@ $$", 21 | "$ $$$ @ $$", 22 | "$$$$$$ +O $ $$", 23 | "$$$$$$ Oo $$$$$$", 24 | "$$$$$$ Oo $$$$$$", 25 | "$$$$$$ Oo $$$$$$", 26 | "$$$$$$ Oo $$$$$$", 27 | "$$$$$$ Oo $$$$$$", 28 | "$$$$$$ Oo $$$$$$", 29 | "$$$$$$ Oo $$$$$$", 30 | "$$$$$$ Oo $$$$$$", 31 | "$$$$$$ oX $$$$$$", 32 | "$$$$$$ $$$$$$" 33 | }; 34 | -------------------------------------------------------------------------------- /src/UI/xpm/tutor.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *tutor[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 9 1", 5 | " c black", 6 | ". c #686868", 7 | "X c #5F00AC", 8 | "o c #7704DE", 9 | "O c #D068F4", 10 | "+ c #FFE000", 11 | "@ c None", 12 | "# c #F490FB", 13 | "$ c #FFACFF", 14 | /* pixels */ 15 | "@. @@", 16 | "@ $#########O @@", 17 | "@ #OOOOOOOOOo @@", 18 | "@ #OO+++++OOo @@", 19 | "@ #O++OOO+OOo @@", 20 | "@ #O+OOO++OOo @@", 21 | "@ #OOOO++OOOo @@", 22 | "@ #OOO++OOOOo @@", 23 | "@ #OOO+OOOOOo @@", 24 | "@ #OOOOOOOOOo @@", 25 | "@ #OOO+OOOOOo @@", 26 | "@ #OO+++OOOOo @@", 27 | "@ #OOO+OOOOOo @@", 28 | "@ #OOOOOOOOOo @@", 29 | "@ OoooooooooX @@", 30 | "@ @@" 31 | }; 32 | -------------------------------------------------------------------------------- /src/UI/xpm/undo.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *undo[] = { 3 | "16 16 51 1", 4 | " c None", 5 | ". c None", 6 | "+ c #C4A000", 7 | "@ c #BF9D00", 8 | "# c #FBF3AD", 9 | "$ c #FBE425", 10 | "% c #BEA113", 11 | "& c #BB9F15", 12 | "* c #BBA11B", 13 | "= c #F6E131", 14 | "- c #FAE320", 15 | "; c #FAEC73", 16 | "> c #FAEB6F", 17 | ", c #F7E86E", 18 | "' c #BCA114", 19 | ") c #C1A314", 20 | "! c #F6E02F", 21 | "~ c #F8E232", 22 | "{ c #F1DB29", 23 | "] c #E3CD16", 24 | "^ c #ECD936", 25 | "/ c #F6E769", 26 | "( c #E3CE41", 27 | "_ c #E8D21D", 28 | ": c #FBED79", 29 | "< c #D6C004", 30 | "[ c #DFC80B", 31 | "} c #F3E56A", 32 | "| c #C5AB1B", 33 | "1 c #FBED76", 34 | "2 c #F9EA69", 35 | "3 c #F7DD05", 36 | "4 c #DFC80A", 37 | "5 c #EBDC6F", 38 | "6 c #BFA31B", 39 | "7 c #C4A901", 40 | "8 c #EEE16E", 41 | "9 c #F2E469", 42 | "0 c #F5E66D", 43 | "a c #EFE276", 44 | "b c #C1A319", 45 | "c c #C8AC02", 46 | "d c #F2E788", 47 | "e c #C2A211", 48 | "f c #CBAA0E", 49 | "g c #E9DA5D", 50 | "h c #C0A623", 51 | "i c #DBC443", 52 | "j c #D8C543", 53 | "k c #EADB66", 54 | "l c #C3A618", 55 | "......+.........", 56 | "....@++.........", 57 | "....+#+.........", 58 | "...+#$++%&*.....", 59 | "..+#=-;>,,')....", 60 | ".+#!~{!{]^/()...", 61 | "+#!~==!{___^('..", 62 | ".+:~!<<<___[}|'.", 63 | "..+1<1222234<56.", 64 | "...+11++++78]96.", 65 | "....+1+....+0ab.", 66 | ".....++.....cde.", 67 | "......+.....fgh.", 68 | "...........+ijh.", 69 | "...........+k)..", 70 | "...........l|+.."}; 71 | -------------------------------------------------------------------------------- /src/UI/xpm/update.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | const char *update[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "16 16 8 1", 5 | " c black", 6 | ". c gray25", 7 | "X c #686868", 8 | "o c #C8B000", 9 | "O c #D3BA00", 10 | "+ c #FFE000", 11 | "@ c None", 12 | "# c gray100", 13 | /* pixels */ 14 | "@@@@@@@@@@@@@@@@", 15 | "@@@@@@@@@@@@@@@@", 16 | "@@@@ @@@@@@@@@@", 17 | "@@@ ++.@@@@@@@@@", 18 | "@@@ +o.@@@ @@@@", 19 | "@ X+o... ++ @@@", 20 | " +++#++++.Oo @@@", 21 | " +oo+oooo.Oo @", 22 | "@ +o O+++++ ", 23 | "@@@ +o Ooo+oooo ", 24 | "@@@ +o +o @", 25 | "@@@@ @@@ +o @@@", 26 | "@@@@@@@@@ +o @@@", 27 | "@@@@@@@@@@ @@@@", 28 | "@@@@@@@@@@@@@@@@", 29 | "@@@@@@@@@@@@@@@@" 30 | }; 31 | -------------------------------------------------------------------------------- /src/pch.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of fbide project, an open source IDE 3 | * for FreeBASIC. 4 | * https://github.com/albeva/fbide 5 | * http://fbide.freebasic.net 6 | * Copyright (C) 2020 Albert Varaksin 7 | * 8 | * fbide is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * fbide is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with Foobar. If not, see . 20 | */ 21 | #pragma once 22 | 23 | // wxWidgets 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | // wxSTC 33 | #include "stc.h" 34 | 35 | // std 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | #include 49 | 50 | // fbide 51 | #include "Utils.hpp" 52 | #define LOG_V(v) std::cout << #v " = " << (v) << std::endl; 53 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | # BasedOnStyle: Google 3 | AccessModifierOffset: -1 4 | ConstructorInitializerIndentWidth: 4 5 | AlignEscapedNewlinesLeft: true 6 | AlignTrailingComments: true 7 | AllowAllParametersOfDeclarationOnNextLine: true 8 | AllowShortIfStatementsOnASingleLine: false 9 | AllowShortLoopsOnASingleLine: false 10 | AlwaysBreakTemplateDeclarations: true 11 | AlwaysBreakBeforeMultilineStrings: true 12 | BreakBeforeBinaryOperators: false 13 | BreakBeforeTernaryOperators: true 14 | BreakConstructorInitializersBeforeComma: false 15 | BinPackParameters: true 16 | ColumnLimit: 80 17 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 18 | DerivePointerBinding: true 19 | ExperimentalAutoDetectBinPacking: false 20 | IndentCaseLabels: true 21 | MaxEmptyLinesToKeep: 1 22 | NamespaceIndentation: None 23 | ObjCSpaceBeforeProtocolList: false 24 | PenaltyBreakBeforeFirstCallParameter: 1 25 | PenaltyBreakComment: 60 26 | PenaltyBreakString: 1000 27 | PenaltyBreakFirstLessLess: 120 28 | PenaltyExcessCharacter: 1000000 29 | PenaltyReturnTypeOnItsOwnLine: 200 30 | PointerBindsToType: true 31 | SpacesBeforeTrailingComments: 2 32 | Cpp11BracedListStyle: true 33 | Standard: Cpp11 34 | IndentWidth: 2 35 | TabWidth: 8 36 | UseTab: Never 37 | BreakBeforeBraces: Attach 38 | IndentFunctionDeclarationAfterType: true 39 | SpacesInParentheses: false 40 | SpacesInAngles: false 41 | SpaceInEmptyParentheses: false 42 | SpacesInCStyleCastParentheses: false 43 | SpaceAfterControlStatementKeyword: true 44 | SpaceBeforeAssignmentOperators: true 45 | ContinuationIndentWidth: 4 46 | ... 47 | 48 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | /tags 3 | /bazel-* 4 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/.travis.yml: -------------------------------------------------------------------------------- 1 | language: c++ 2 | 3 | matrix: 4 | include: 5 | - os: linux 6 | compiler: gcc 7 | - os: osx 8 | compiler: clang 9 | - os: osx 10 | compiler: gcc 11 | env: 12 | - CTEST_OUTPUT_ON_FAILURE=1 13 | 14 | before_script: 15 | - mkdir build 16 | - cd build 17 | - cmake .. 18 | - cd .. 19 | script: 20 | - cmake --build build 21 | - cmake --build build --target test 22 | 23 | addons: 24 | apt: 25 | sources: 26 | - ubuntu-toolchain-r-test 27 | - llvm-toolchain-precise-3.9 28 | packages: 29 | - g++-4.9 30 | - clang-3.9 31 | update: true 32 | homebrew: 33 | packages: 34 | - ccache 35 | - gcc@4.9 36 | - llvm@4 37 | update: true 38 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/BUILD.bazel: -------------------------------------------------------------------------------- 1 | cc_library( 2 | name = "yaml-cpp_internal", 3 | visibility = ["//:__subpackages__"], 4 | strip_include_prefix = "src", 5 | hdrs = glob(["src/**/*.h"]), 6 | ) 7 | 8 | cc_library( 9 | name = "yaml-cpp", 10 | visibility = ["//visibility:public"], 11 | includes = ["include"], 12 | hdrs = glob(["include/**/*.h"]), 13 | srcs = glob(["src/**/*.cpp", "src/**/*.h"]), 14 | ) 15 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Style 2 | 3 | This project is formatted with [clang-format][fmt] using the style file at the root of the repository. Please run clang-format before sending a pull request. 4 | 5 | In general, try to follow the style of surrounding code. We mostly follow the [Google C++ style guide][cpp-style]. 6 | 7 | Commit messages should be in the imperative mood, as described in the [Git contributing file][git-contrib]: 8 | 9 | > Describe your changes in imperative mood, e.g. "make xyzzy do frotz" 10 | > instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy 11 | > to do frotz", as if you are giving orders to the codebase to change 12 | > its behaviour. 13 | 14 | [fmt]: http://clang.llvm.org/docs/ClangFormat.html 15 | [cpp-style]: https://google.github.io/styleguide/cppguide.html 16 | [git-contrib]: http://git.kernel.org/cgit/git/git.git/tree/Documentation/SubmittingPatches?id=HEAD 17 | 18 | # Tests 19 | 20 | Please verify the tests pass by running the target `tests/run_tests`. 21 | 22 | If you are adding functionality, add tests accordingly. 23 | 24 | # Pull request process 25 | 26 | Every pull request undergoes a code review. Unfortunately, github's code review process isn't great, but we'll manage. During the code review, if you make changes, add new commits to the pull request for each change. Once the code review is complete, rebase against the master branch and squash into a single commit. 27 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2008-2015 Jesse Beder. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/WORKSPACE: -------------------------------------------------------------------------------- 1 | workspace(name = "com_github_jbeder_yaml_cpp") 2 | 3 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 4 | 5 | http_archive( 6 | name = "com_google_googletest", 7 | strip_prefix = "googletest-release-1.8.1", 8 | url = "https://github.com/google/googletest/archive/release-1.8.1.tar.gz", 9 | sha256 = "9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c", 10 | ) 11 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: 1.0.{build} 2 | 3 | environment: 4 | matrix: 5 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 6 | CMAKE_GENERATOR: Visual Studio 14 2015 7 | CMAKE_PLATFORM: win32 8 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 9 | CMAKE_GENERATOR: Visual Studio 14 2015 10 | CMAKE_PLATFORM: x64 11 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 12 | CMAKE_GENERATOR: Visual Studio 15 2017 13 | CMAKE_PLATFORM: win32 14 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 15 | CMAKE_GENERATOR: Visual Studio 15 2017 16 | CMAKE_PLATFORM: x64 17 | 18 | before_build: 19 | - cmd: mkdir build 20 | - cmd: cd build 21 | - cmd: cmake .. -G "%CMAKE_GENERATOR%" -DCMAKE_GENERATOR_PLATFORM=%CMAKE_PLATFORM% 22 | - cmd: cd .. 23 | 24 | build_script: 25 | - cmake --build build 26 | test_script: 27 | - cmd: cd build 28 | - ctest 29 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/docs/Strings.md: -------------------------------------------------------------------------------- 1 | # Encodings and `yaml-cpp` # 2 | 3 | `yaml-cpp` will parse any file as specified by the [YAML 1.2 spec](http://www.yaml.org/spec/1.2/spec.html#id2570322). Internally, it stores all strings in UTF-8, and representation is done with UTF-8. This means that in 4 | 5 | ``` 6 | std::string str; 7 | node >> str; 8 | ``` 9 | 10 | `str` will be UTF-8. Similarly, if you're accessing a map by string key, you need to pass the key in UTF-8. If your application uses a different encoding, you need to convert to and from UTF-8 to work with `yaml-cpp`. (It's possible we'll add some small conversion functions, but for now it's restricted.) 11 | 12 | --- 13 | 14 | For convenience, Richard Weeks has kindly provided a google gadget that converts Unicode to a string literal. It's a Google Gadget, so unfortunately it does not work on GitHub. Patches welcome to port it to a usable format here: 15 | 16 | ``` 17 | 18 | ``` -------------------------------------------------------------------------------- /third-party/yaml-cpp/docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /third-party/yaml-cpp/docs/index.md: -------------------------------------------------------------------------------- 1 | To learn how to use the library, see the [Tutorial](https://github.com/jbeder/yaml-cpp/wiki/Tutorial) and [How To Emit YAML](https://github.com/jbeder/yaml-cpp/wiki/How-To-Emit-YAML) 2 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/anchor.h: -------------------------------------------------------------------------------- 1 | #ifndef ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | namespace YAML { 13 | using anchor_t = std::size_t; 14 | const anchor_t NullAnchor = 0; 15 | } 16 | 17 | #endif // ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 18 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/contrib/anchordict.h: -------------------------------------------------------------------------------- 1 | #ifndef ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | #include "../anchor.h" 13 | 14 | namespace YAML { 15 | /** 16 | * An object that stores and retrieves values correlating to {@link anchor_t} 17 | * values. 18 | * 19 | *

Efficient implementation that can make assumptions about how 20 | * {@code anchor_t} values are assigned by the {@link Parser} class. 21 | */ 22 | template 23 | class AnchorDict { 24 | public: 25 | AnchorDict() : m_data{} {} 26 | void Register(anchor_t anchor, T value) { 27 | if (anchor > m_data.size()) { 28 | m_data.resize(anchor); 29 | } 30 | m_data[anchor - 1] = value; 31 | } 32 | 33 | T Get(anchor_t anchor) const { return m_data[anchor - 1]; } 34 | 35 | private: 36 | std::vector m_data; 37 | }; 38 | } // namespace YAML 39 | 40 | #endif // ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66 41 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/dll.h: -------------------------------------------------------------------------------- 1 | #ifndef DLL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define DLL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | // The following ifdef block is the standard way of creating macros which make 11 | // exporting from a DLL simpler. All files within this DLL are compiled with the 12 | // yaml_cpp_EXPORTS symbol defined on the command line. This symbol should not 13 | // be defined on any project that uses this DLL. This way any other project 14 | // whose source files include this file see YAML_CPP_API functions as being 15 | // imported from a DLL, whereas this DLL sees symbols defined with this macro as 16 | // being exported. 17 | #undef YAML_CPP_API 18 | 19 | #ifdef YAML_CPP_DLL // Using or Building YAML-CPP DLL (definition defined 20 | // manually) 21 | #ifdef yaml_cpp_EXPORTS // Building YAML-CPP DLL (definition created by CMake 22 | // or defined manually) 23 | // #pragma message( "Defining YAML_CPP_API for DLL export" ) 24 | #define YAML_CPP_API __declspec(dllexport) 25 | #else // yaml_cpp_EXPORTS 26 | // #pragma message( "Defining YAML_CPP_API for DLL import" ) 27 | #define YAML_CPP_API __declspec(dllimport) 28 | #endif // yaml_cpp_EXPORTS 29 | #else // YAML_CPP_DLL 30 | #define YAML_CPP_API 31 | #endif // YAML_CPP_DLL 32 | 33 | #endif // DLL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 34 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/emitterdef.h: -------------------------------------------------------------------------------- 1 | #ifndef EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | namespace YAML { 11 | struct EmitterNodeType { 12 | enum value { NoType, Property, Scalar, FlowSeq, BlockSeq, FlowMap, BlockMap }; 13 | }; 14 | } 15 | 16 | #endif // EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 17 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/emitterstyle.h: -------------------------------------------------------------------------------- 1 | #ifndef EMITTERSTYLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define EMITTERSTYLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | namespace YAML { 11 | struct EmitterStyle { 12 | enum value { Default, Block, Flow }; 13 | }; 14 | } 15 | 16 | #endif // EMITTERSTYLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 17 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/eventhandler.h: -------------------------------------------------------------------------------- 1 | #ifndef EVENTHANDLER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define EVENTHANDLER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | #include "yaml-cpp/anchor.h" 13 | #include "yaml-cpp/emitterstyle.h" 14 | 15 | namespace YAML { 16 | struct Mark; 17 | 18 | class EventHandler { 19 | public: 20 | virtual ~EventHandler() = default; 21 | 22 | virtual void OnDocumentStart(const Mark& mark) = 0; 23 | virtual void OnDocumentEnd() = 0; 24 | 25 | virtual void OnNull(const Mark& mark, anchor_t anchor) = 0; 26 | virtual void OnAlias(const Mark& mark, anchor_t anchor) = 0; 27 | virtual void OnScalar(const Mark& mark, const std::string& tag, 28 | anchor_t anchor, const std::string& value) = 0; 29 | 30 | virtual void OnSequenceStart(const Mark& mark, const std::string& tag, 31 | anchor_t anchor, EmitterStyle::value style) = 0; 32 | virtual void OnSequenceEnd() = 0; 33 | 34 | virtual void OnMapStart(const Mark& mark, const std::string& tag, 35 | anchor_t anchor, EmitterStyle::value style) = 0; 36 | virtual void OnMapEnd() = 0; 37 | 38 | virtual void OnAnchor(const Mark& /*mark*/, 39 | const std::string& /*anchor_name*/) { 40 | // empty default implementation for compatibility 41 | } 42 | }; 43 | } // namespace YAML 44 | 45 | #endif // EVENTHANDLER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 46 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/mark.h: -------------------------------------------------------------------------------- 1 | #ifndef MARK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define MARK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/dll.h" 11 | 12 | namespace YAML { 13 | struct YAML_CPP_API Mark { 14 | Mark() : pos(0), line(0), column(0) {} 15 | 16 | static const Mark null_mark() { return Mark(-1, -1, -1); } 17 | 18 | bool is_null() const { return pos == -1 && line == -1 && column == -1; } 19 | 20 | int pos; 21 | int line, column; 22 | 23 | private: 24 | Mark(int pos_, int line_, int column_) 25 | : pos(pos_), line(line_), column(column_) {} 26 | }; 27 | } 28 | 29 | #endif // MARK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 30 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/node/detail/iterator_fwd.h: -------------------------------------------------------------------------------- 1 | #ifndef VALUE_DETAIL_ITERATOR_FWD_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define VALUE_DETAIL_ITERATOR_FWD_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/dll.h" 11 | #include 12 | #include 13 | #include 14 | 15 | namespace YAML { 16 | 17 | namespace detail { 18 | struct iterator_value; 19 | template 20 | class iterator_base; 21 | } 22 | 23 | using iterator = detail::iterator_base; 24 | using const_iterator = detail::iterator_base; 25 | } 26 | 27 | #endif // VALUE_DETAIL_ITERATOR_FWD_H_62B23520_7C8E_11DE_8A39_0800200C9A66 28 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/node/detail/memory.h: -------------------------------------------------------------------------------- 1 | #ifndef VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | #include "yaml-cpp/dll.h" 13 | #include "yaml-cpp/node/ptr.h" 14 | 15 | namespace YAML { 16 | namespace detail { 17 | class node; 18 | } // namespace detail 19 | } // namespace YAML 20 | 21 | namespace YAML { 22 | namespace detail { 23 | class YAML_CPP_API memory { 24 | public: 25 | memory() : m_nodes{} {} 26 | node& create_node(); 27 | void merge(const memory& rhs); 28 | 29 | private: 30 | using Nodes = std::set; 31 | Nodes m_nodes; 32 | }; 33 | 34 | class YAML_CPP_API memory_holder { 35 | public: 36 | memory_holder() : m_pMemory(new memory) {} 37 | 38 | node& create_node() { return m_pMemory->create_node(); } 39 | void merge(memory_holder& rhs); 40 | 41 | private: 42 | shared_memory m_pMemory; 43 | }; 44 | } // namespace detail 45 | } // namespace YAML 46 | 47 | #endif // VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66 48 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/node/emit.h: -------------------------------------------------------------------------------- 1 | #ifndef NODE_EMIT_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define NODE_EMIT_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include 12 | 13 | #include "yaml-cpp/dll.h" 14 | 15 | namespace YAML { 16 | class Emitter; 17 | class Node; 18 | 19 | /** 20 | * Emits the node to the given {@link Emitter}. If there is an error in writing, 21 | * {@link Emitter#good} will return false. 22 | */ 23 | YAML_CPP_API Emitter& operator<<(Emitter& out, const Node& node); 24 | 25 | /** Emits the node to the given output stream. */ 26 | YAML_CPP_API std::ostream& operator<<(std::ostream& out, const Node& node); 27 | 28 | /** Converts the node to a YAML string. */ 29 | YAML_CPP_API std::string Dump(const Node& node); 30 | } // namespace YAML 31 | 32 | #endif // NODE_EMIT_H_62B23520_7C8E_11DE_8A39_0800200C9A66 33 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/node/iterator.h: -------------------------------------------------------------------------------- 1 | #ifndef VALUE_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define VALUE_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/dll.h" 11 | #include "yaml-cpp/node/node.h" 12 | #include "yaml-cpp/node/detail/iterator_fwd.h" 13 | #include "yaml-cpp/node/detail/iterator.h" 14 | #include 15 | #include 16 | #include 17 | 18 | namespace YAML { 19 | namespace detail { 20 | struct iterator_value : public Node, std::pair { 21 | iterator_value() = default; 22 | explicit iterator_value(const Node& rhs) 23 | : Node(rhs), 24 | std::pair(Node(Node::ZombieNode), Node(Node::ZombieNode)) {} 25 | explicit iterator_value(const Node& key, const Node& value) 26 | : Node(Node::ZombieNode), std::pair(key, value) {} 27 | }; 28 | } 29 | } 30 | 31 | #endif // VALUE_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 32 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/node/ptr.h: -------------------------------------------------------------------------------- 1 | #ifndef VALUE_PTR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define VALUE_PTR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/dll.h" 11 | #include 12 | 13 | namespace YAML { 14 | namespace detail { 15 | class node; 16 | class node_ref; 17 | class node_data; 18 | class memory; 19 | class memory_holder; 20 | 21 | using shared_node = std::shared_ptr; 22 | using shared_node_ref = std::shared_ptr; 23 | using shared_node_data = std::shared_ptr; 24 | using shared_memory_holder = std::shared_ptr; 25 | using shared_memory = std::shared_ptr; 26 | } 27 | } 28 | 29 | #endif // VALUE_PTR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 30 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/node/type.h: -------------------------------------------------------------------------------- 1 | #ifndef VALUE_TYPE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define VALUE_TYPE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | namespace YAML { 11 | struct NodeType { 12 | enum value { Undefined, Null, Scalar, Sequence, Map }; 13 | }; 14 | } 15 | 16 | #endif // VALUE_TYPE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 17 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/noexcept.h: -------------------------------------------------------------------------------- 1 | #ifndef NOEXCEPT_H_768872DA_476C_11EA_88B8_90B11C0C0FF8 2 | #define NOEXCEPT_H_768872DA_476C_11EA_88B8_90B11C0C0FF8 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | // This is here for compatibility with older versions of Visual Studio 11 | // which don't support noexcept. 12 | #if defined(_MSC_VER) && _MSC_VER < 1900 13 | #define YAML_CPP_NOEXCEPT _NOEXCEPT 14 | #else 15 | #define YAML_CPP_NOEXCEPT noexcept 16 | #endif 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/null.h: -------------------------------------------------------------------------------- 1 | #ifndef NULL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define NULL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/dll.h" 11 | #include 12 | 13 | namespace YAML { 14 | class Node; 15 | 16 | struct YAML_CPP_API _Null {}; 17 | inline bool operator==(const _Null&, const _Null&) { return true; } 18 | inline bool operator!=(const _Null&, const _Null&) { return false; } 19 | 20 | YAML_CPP_API bool IsNull(const Node& node); // old API only 21 | YAML_CPP_API bool IsNullString(const std::string& str); 22 | 23 | extern YAML_CPP_API _Null Null; 24 | } 25 | 26 | #endif // NULL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 27 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/stlemitter.h: -------------------------------------------------------------------------------- 1 | #ifndef STLEMITTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define STLEMITTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | namespace YAML { 16 | template 17 | inline Emitter& EmitSeq(Emitter& emitter, const Seq& seq) { 18 | emitter << BeginSeq; 19 | for (const auto& v : seq) 20 | emitter << v; 21 | emitter << EndSeq; 22 | return emitter; 23 | } 24 | 25 | template 26 | inline Emitter& operator<<(Emitter& emitter, const std::vector& v) { 27 | return EmitSeq(emitter, v); 28 | } 29 | 30 | template 31 | inline Emitter& operator<<(Emitter& emitter, const std::list& v) { 32 | return EmitSeq(emitter, v); 33 | } 34 | 35 | template 36 | inline Emitter& operator<<(Emitter& emitter, const std::set& v) { 37 | return EmitSeq(emitter, v); 38 | } 39 | 40 | template 41 | inline Emitter& operator<<(Emitter& emitter, const std::map& m) { 42 | emitter << BeginMap; 43 | for (const auto& v : m) 44 | emitter << Key << v.first << Value << v.second; 45 | emitter << EndMap; 46 | return emitter; 47 | } 48 | } 49 | 50 | #endif // STLEMITTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 51 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/include/yaml-cpp/yaml.h: -------------------------------------------------------------------------------- 1 | #ifndef YAML_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define YAML_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/parser.h" 11 | #include "yaml-cpp/emitter.h" 12 | #include "yaml-cpp/emitterstyle.h" 13 | #include "yaml-cpp/stlemitter.h" 14 | #include "yaml-cpp/exceptions.h" 15 | 16 | #include "yaml-cpp/node/node.h" 17 | #include "yaml-cpp/node/impl.h" 18 | #include "yaml-cpp/node/convert.h" 19 | #include "yaml-cpp/node/iterator.h" 20 | #include "yaml-cpp/node/detail/impl.h" 21 | #include "yaml-cpp/node/parse.h" 22 | #include "yaml-cpp/node/emit.h" 23 | 24 | #endif // YAML_H_62B23520_7C8E_11DE_8A39_0800200C9A66 25 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/install.txt: -------------------------------------------------------------------------------- 1 | *** With CMake *** 2 | 3 | yaml-cpp uses CMake to support cross-platform building. In a UNIX-like system, the basic steps to build are: 4 | 5 | 1. Download and install CMake (if you don't have root privileges, just install to a local directory, like ~/bin) 6 | 7 | 2. From the source directory, run: 8 | 9 | mkdir build 10 | cd build 11 | cmake .. 12 | 13 | and then the usual 14 | 15 | make 16 | make install 17 | 18 | 3. To clean up, just remove the 'build' directory. 19 | 20 | *** Without CMake *** 21 | 22 | If you don't want to use CMake, just add all .cpp files to a makefile. yaml-cpp does not need any special build settings, so no 'configure' file is necessary. 23 | 24 | (Note: this is pretty tedious. It's sooo much easier to use CMake.) 25 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/collectionstack.h: -------------------------------------------------------------------------------- 1 | #ifndef COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include 12 | 13 | namespace YAML { 14 | struct CollectionType { 15 | enum value { NoCollection, BlockMap, BlockSeq, FlowMap, FlowSeq, CompactMap }; 16 | }; 17 | 18 | class CollectionStack { 19 | public: 20 | CollectionStack() : collectionStack{} {} 21 | CollectionType::value GetCurCollectionType() const { 22 | if (collectionStack.empty()) 23 | return CollectionType::NoCollection; 24 | return collectionStack.top(); 25 | } 26 | 27 | void PushCollectionType(CollectionType::value type) { 28 | collectionStack.push(type); 29 | } 30 | void PopCollectionType(CollectionType::value type) { 31 | assert(type == GetCurCollectionType()); 32 | (void)type; 33 | collectionStack.pop(); 34 | } 35 | 36 | private: 37 | std::stack collectionStack; 38 | }; 39 | } // namespace YAML 40 | 41 | #endif // COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 42 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/contrib/graphbuilder.cpp: -------------------------------------------------------------------------------- 1 | #include "graphbuilderadapter.h" 2 | 3 | #include "yaml-cpp/parser.h" // IWYU pragma: keep 4 | 5 | namespace YAML { 6 | class GraphBuilderInterface; 7 | 8 | void* BuildGraphOfNextDocument(Parser& parser, 9 | GraphBuilderInterface& graphBuilder) { 10 | GraphBuilderAdapter eventHandler(graphBuilder); 11 | if (parser.HandleNextDocument(eventHandler)) { 12 | return eventHandler.RootNode(); 13 | } 14 | return nullptr; 15 | } 16 | } // namespace YAML 17 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/contrib/yaml-cpp.natvis.md: -------------------------------------------------------------------------------- 1 | # MSVC debugger visualizer for YAML::Node 2 | 3 | ## How to use 4 | Add yaml-cpp.natvis to your Visual C++ project like any other source file. It will be included in the debug information, and improve debugger display on YAML::Node and contained types. 5 | 6 | ## Compatibility and Troubleshooting 7 | 8 | This has been tested for MSVC 2017. It is expected to be compatible with VS 2015 and VS 2019. If you have any problems, you can open an issue here: https://github.com/peterchen-cp/yaml-cpp-natvis 9 | 10 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/depthguard.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/depthguard.h" 2 | 3 | namespace YAML { 4 | 5 | DeepRecursion::DeepRecursion(int depth, const Mark& mark_, 6 | const std::string& msg_) 7 | : ParserException(mark_, msg_), m_depth(depth) {} 8 | 9 | } // namespace YAML 10 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/directives.cpp: -------------------------------------------------------------------------------- 1 | #include "directives.h" 2 | 3 | namespace YAML { 4 | Directives::Directives() : version{true, 1, 2}, tags{} {} 5 | 6 | const std::string Directives::TranslateTagHandle( 7 | const std::string& handle) const { 8 | auto it = tags.find(handle); 9 | if (it == tags.end()) { 10 | if (handle == "!!") 11 | return "tag:yaml.org,2002:"; 12 | return handle; 13 | } 14 | 15 | return it->second; 16 | } 17 | } // namespace YAML 18 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/directives.h: -------------------------------------------------------------------------------- 1 | #ifndef DIRECTIVES_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define DIRECTIVES_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include 12 | 13 | namespace YAML { 14 | struct Version { 15 | bool isDefault; 16 | int major, minor; 17 | }; 18 | 19 | struct Directives { 20 | Directives(); 21 | 22 | const std::string TranslateTagHandle(const std::string& handle) const; 23 | 24 | Version version; 25 | std::map tags; 26 | }; 27 | } 28 | 29 | #endif // DIRECTIVES_H_62B23520_7C8E_11DE_8A39_0800200C9A66 30 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/emit.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/emit.h" 2 | #include "nodeevents.h" 3 | #include "yaml-cpp/emitfromevents.h" 4 | #include "yaml-cpp/emitter.h" 5 | 6 | namespace YAML { 7 | Emitter& operator<<(Emitter& out, const Node& node) { 8 | EmitFromEvents emitFromEvents(out); 9 | NodeEvents events(node); 10 | events.Emit(emitFromEvents); 11 | return out; 12 | } 13 | 14 | std::ostream& operator<<(std::ostream& out, const Node& node) { 15 | Emitter emitter(out); 16 | emitter << node; 17 | return out; 18 | } 19 | 20 | std::string Dump(const Node& node) { 21 | Emitter emitter; 22 | emitter << node; 23 | return emitter.c_str(); 24 | } 25 | } // namespace YAML 26 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/exceptions.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/exceptions.h" 2 | #include "yaml-cpp/noexcept.h" 3 | 4 | namespace YAML { 5 | 6 | // These destructors are defined out-of-line so the vtable is only emitted once. 7 | Exception::~Exception() YAML_CPP_NOEXCEPT = default; 8 | ParserException::~ParserException() YAML_CPP_NOEXCEPT = default; 9 | RepresentationException::~RepresentationException() YAML_CPP_NOEXCEPT = default; 10 | InvalidScalar::~InvalidScalar() YAML_CPP_NOEXCEPT = default; 11 | KeyNotFound::~KeyNotFound() YAML_CPP_NOEXCEPT = default; 12 | InvalidNode::~InvalidNode() YAML_CPP_NOEXCEPT = default; 13 | BadConversion::~BadConversion() YAML_CPP_NOEXCEPT = default; 14 | BadDereference::~BadDereference() YAML_CPP_NOEXCEPT = default; 15 | BadSubscript::~BadSubscript() YAML_CPP_NOEXCEPT = default; 16 | BadPushback::~BadPushback() YAML_CPP_NOEXCEPT = default; 17 | BadInsert::~BadInsert() YAML_CPP_NOEXCEPT = default; 18 | EmitterException::~EmitterException() YAML_CPP_NOEXCEPT = default; 19 | BadFile::~BadFile() YAML_CPP_NOEXCEPT = default; 20 | } // namespace YAML 21 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/indentation.h: -------------------------------------------------------------------------------- 1 | #ifndef INDENTATION_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define INDENTATION_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include 12 | 13 | #include "yaml-cpp/ostream_wrapper.h" 14 | 15 | namespace YAML { 16 | struct Indentation { 17 | Indentation(std::size_t n_) : n(n_) {} 18 | std::size_t n; 19 | }; 20 | 21 | inline ostream_wrapper& operator<<(ostream_wrapper& out, 22 | const Indentation& indent) { 23 | for (std::size_t i = 0; i < indent.n; i++) 24 | out << ' '; 25 | return out; 26 | } 27 | 28 | struct IndentTo { 29 | IndentTo(std::size_t n_) : n(n_) {} 30 | std::size_t n; 31 | }; 32 | 33 | inline ostream_wrapper& operator<<(ostream_wrapper& out, 34 | const IndentTo& indent) { 35 | while (out.col() < indent.n) 36 | out << ' '; 37 | return out; 38 | } 39 | } 40 | 41 | #endif // INDENTATION_H_62B23520_7C8E_11DE_8A39_0800200C9A66 42 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/memory.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/detail/memory.h" 2 | #include "yaml-cpp/node/detail/node.h" // IWYU pragma: keep 3 | #include "yaml-cpp/node/ptr.h" 4 | 5 | namespace YAML { 6 | namespace detail { 7 | 8 | void memory_holder::merge(memory_holder& rhs) { 9 | if (m_pMemory == rhs.m_pMemory) 10 | return; 11 | 12 | m_pMemory->merge(*rhs.m_pMemory); 13 | rhs.m_pMemory = m_pMemory; 14 | } 15 | 16 | node& memory::create_node() { 17 | shared_node pNode(new node); 18 | m_nodes.insert(pNode); 19 | return *pNode; 20 | } 21 | 22 | void memory::merge(const memory& rhs) { 23 | m_nodes.insert(rhs.m_nodes.begin(), rhs.m_nodes.end()); 24 | } 25 | } // namespace detail 26 | } // namespace YAML 27 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/node.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/node.h" 2 | #include "nodebuilder.h" 3 | #include "nodeevents.h" 4 | 5 | namespace YAML { 6 | Node Clone(const Node& node) { 7 | NodeEvents events(node); 8 | NodeBuilder builder; 9 | events.Emit(builder); 10 | return builder.Root(); 11 | } 12 | } // namespace YAML 13 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/null.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/null.h" 2 | 3 | namespace YAML { 4 | _Null Null; 5 | 6 | bool IsNullString(const std::string& str) { 7 | return str.empty() || str == "~" || str == "null" || str == "Null" || 8 | str == "NULL"; 9 | } 10 | } // namespace YAML 11 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/ostream_wrapper.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/ostream_wrapper.h" 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace YAML { 8 | ostream_wrapper::ostream_wrapper() 9 | : m_buffer(1, '\0'), 10 | m_pStream(nullptr), 11 | m_pos(0), 12 | m_row(0), 13 | m_col(0), 14 | m_comment(false) {} 15 | 16 | ostream_wrapper::ostream_wrapper(std::ostream& stream) 17 | : m_buffer{}, 18 | m_pStream(&stream), 19 | m_pos(0), 20 | m_row(0), 21 | m_col(0), 22 | m_comment(false) {} 23 | 24 | ostream_wrapper::~ostream_wrapper() = default; 25 | 26 | void ostream_wrapper::write(const std::string& str) { 27 | if (m_pStream) { 28 | m_pStream->write(str.c_str(), str.size()); 29 | } else { 30 | m_buffer.resize(std::max(m_buffer.size(), m_pos + str.size() + 1)); 31 | std::copy(str.begin(), str.end(), m_buffer.begin() + m_pos); 32 | } 33 | 34 | for (char ch : str) { 35 | update_pos(ch); 36 | } 37 | } 38 | 39 | void ostream_wrapper::write(const char* str, std::size_t size) { 40 | if (m_pStream) { 41 | m_pStream->write(str, size); 42 | } else { 43 | m_buffer.resize(std::max(m_buffer.size(), m_pos + size + 1)); 44 | std::copy(str, str + size, m_buffer.begin() + m_pos); 45 | } 46 | 47 | for (std::size_t i = 0; i < size; i++) { 48 | update_pos(str[i]); 49 | } 50 | } 51 | 52 | void ostream_wrapper::update_pos(char ch) { 53 | m_pos++; 54 | m_col++; 55 | 56 | if (ch == '\n') { 57 | m_row++; 58 | m_col = 0; 59 | m_comment = false; 60 | } 61 | } 62 | } // namespace YAML 63 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/parse.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/parse.h" 2 | 3 | #include 4 | #include 5 | 6 | #include "nodebuilder.h" 7 | #include "yaml-cpp/node/impl.h" 8 | #include "yaml-cpp/node/node.h" 9 | #include "yaml-cpp/parser.h" 10 | 11 | namespace YAML { 12 | Node Load(const std::string& input) { 13 | std::stringstream stream(input); 14 | return Load(stream); 15 | } 16 | 17 | Node Load(const char* input) { 18 | std::stringstream stream(input); 19 | return Load(stream); 20 | } 21 | 22 | Node Load(std::istream& input) { 23 | Parser parser(input); 24 | NodeBuilder builder; 25 | if (!parser.HandleNextDocument(builder)) { 26 | return Node(); 27 | } 28 | 29 | return builder.Root(); 30 | } 31 | 32 | Node LoadFile(const std::string& filename) { 33 | std::ifstream fin(filename); 34 | if (!fin) { 35 | throw BadFile(filename); 36 | } 37 | return Load(fin); 38 | } 39 | 40 | std::vector LoadAll(const std::string& input) { 41 | std::stringstream stream(input); 42 | return LoadAll(stream); 43 | } 44 | 45 | std::vector LoadAll(const char* input) { 46 | std::stringstream stream(input); 47 | return LoadAll(stream); 48 | } 49 | 50 | std::vector LoadAll(std::istream& input) { 51 | std::vector docs; 52 | 53 | Parser parser(input); 54 | while (true) { 55 | NodeBuilder builder; 56 | if (!parser.HandleNextDocument(builder)) { 57 | break; 58 | } 59 | docs.push_back(builder.Root()); 60 | } 61 | 62 | return docs; 63 | } 64 | 65 | std::vector LoadAllFromFile(const std::string& filename) { 66 | std::ifstream fin(filename); 67 | if (!fin) { 68 | throw BadFile(filename); 69 | } 70 | return LoadAll(fin); 71 | } 72 | } // namespace YAML 73 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/ptr_vector.h: -------------------------------------------------------------------------------- 1 | #ifndef PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | namespace YAML { 16 | 17 | // TODO: This class is no longer needed 18 | template 19 | class ptr_vector { 20 | public: 21 | ptr_vector() : m_data{} {} 22 | ptr_vector(const ptr_vector&) = delete; 23 | ptr_vector(ptr_vector&&) = default; 24 | ptr_vector& operator=(const ptr_vector&) = delete; 25 | ptr_vector& operator=(ptr_vector&&) = default; 26 | 27 | void clear() { m_data.clear(); } 28 | 29 | std::size_t size() const { return m_data.size(); } 30 | bool empty() const { return m_data.empty(); } 31 | 32 | void push_back(std::unique_ptr&& t) { m_data.push_back(std::move(t)); } 33 | T& operator[](std::size_t i) { return *m_data[i]; } 34 | const T& operator[](std::size_t i) const { return *m_data[i]; } 35 | 36 | T& back() { return *(m_data.back().get()); } 37 | 38 | const T& back() const { return *(m_data.back().get()); } 39 | 40 | private: 41 | std::vector> m_data; 42 | }; 43 | } // namespace YAML 44 | 45 | #endif // PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 46 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/regex_yaml.cpp: -------------------------------------------------------------------------------- 1 | #include "regex_yaml.h" 2 | 3 | namespace YAML { 4 | // constructors 5 | 6 | RegEx::RegEx(REGEX_OP op) : m_op(op), m_a(0), m_z(0), m_params{} {} 7 | RegEx::RegEx() : RegEx(REGEX_EMPTY) {} 8 | 9 | RegEx::RegEx(char ch) : m_op(REGEX_MATCH), m_a(ch), m_z(0), m_params{} {} 10 | 11 | RegEx::RegEx(char a, char z) : m_op(REGEX_RANGE), m_a(a), m_z(z), m_params{} {} 12 | 13 | RegEx::RegEx(const std::string& str, REGEX_OP op) 14 | : m_op(op), m_a(0), m_z(0), m_params(str.begin(), str.end()) {} 15 | 16 | // combination constructors 17 | RegEx operator!(const RegEx& ex) { 18 | RegEx ret(REGEX_NOT); 19 | ret.m_params.push_back(ex); 20 | return ret; 21 | } 22 | 23 | RegEx operator|(const RegEx& ex1, const RegEx& ex2) { 24 | RegEx ret(REGEX_OR); 25 | ret.m_params.push_back(ex1); 26 | ret.m_params.push_back(ex2); 27 | return ret; 28 | } 29 | 30 | RegEx operator&(const RegEx& ex1, const RegEx& ex2) { 31 | RegEx ret(REGEX_AND); 32 | ret.m_params.push_back(ex1); 33 | ret.m_params.push_back(ex2); 34 | return ret; 35 | } 36 | 37 | RegEx operator+(const RegEx& ex1, const RegEx& ex2) { 38 | RegEx ret(REGEX_SEQ); 39 | ret.m_params.push_back(ex1); 40 | ret.m_params.push_back(ex2); 41 | return ret; 42 | } 43 | } // namespace YAML 44 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/scantag.h: -------------------------------------------------------------------------------- 1 | #ifndef SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include "stream.h" 12 | 13 | namespace YAML { 14 | const std::string ScanVerbatimTag(Stream& INPUT); 15 | const std::string ScanTagHandle(Stream& INPUT, bool& canBeHandle); 16 | const std::string ScanTagSuffix(Stream& INPUT); 17 | } 18 | 19 | #endif // SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 20 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/streamcharsource.h: -------------------------------------------------------------------------------- 1 | #ifndef STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include "yaml-cpp/noexcept.h" 11 | #include "stream.h" 12 | #include 13 | 14 | namespace YAML { 15 | 16 | class StreamCharSource { 17 | public: 18 | StreamCharSource(const Stream& stream) : m_offset(0), m_stream(stream) {} 19 | StreamCharSource(const StreamCharSource& source) = default; 20 | StreamCharSource(StreamCharSource&&) YAML_CPP_NOEXCEPT = default; 21 | StreamCharSource& operator=(const StreamCharSource&) = delete; 22 | StreamCharSource& operator=(StreamCharSource&&) = delete; 23 | ~StreamCharSource() = default; 24 | 25 | operator bool() const; 26 | char operator[](std::size_t i) const { return m_stream.CharAt(m_offset + i); } 27 | bool operator!() const { return !static_cast(*this); } 28 | 29 | const StreamCharSource operator+(int i) const; 30 | 31 | private: 32 | std::size_t m_offset; 33 | const Stream& m_stream; 34 | }; 35 | 36 | inline StreamCharSource::operator bool() const { 37 | return m_stream.ReadAheadTo(m_offset); 38 | } 39 | 40 | inline const StreamCharSource StreamCharSource::operator+(int i) const { 41 | StreamCharSource source(*this); 42 | if (static_cast(source.m_offset) + i >= 0) 43 | source.m_offset += static_cast(i); 44 | else 45 | source.m_offset = 0; 46 | return source; 47 | } 48 | } // namespace YAML 49 | 50 | #endif // STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 51 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/stringsource.h: -------------------------------------------------------------------------------- 1 | #ifndef STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | namespace YAML { 13 | class StringCharSource { 14 | public: 15 | StringCharSource(const char* str, std::size_t size) 16 | : m_str(str), m_size(size), m_offset(0) {} 17 | 18 | operator bool() const { return m_offset < m_size; } 19 | char operator[](std::size_t i) const { return m_str[m_offset + i]; } 20 | bool operator!() const { return !static_cast(*this); } 21 | 22 | const StringCharSource operator+(int i) const { 23 | StringCharSource source(*this); 24 | if (static_cast(source.m_offset) + i >= 0) 25 | source.m_offset += i; 26 | else 27 | source.m_offset = 0; 28 | return source; 29 | } 30 | 31 | StringCharSource& operator++() { 32 | ++m_offset; 33 | return *this; 34 | } 35 | 36 | StringCharSource& operator+=(std::size_t offset) { 37 | m_offset += offset; 38 | return *this; 39 | } 40 | 41 | private: 42 | const char* m_str; 43 | std::size_t m_size; 44 | std::size_t m_offset; 45 | }; 46 | } 47 | 48 | #endif // STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 49 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/tag.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "directives.h" // IWYU pragma: keep 5 | #include "tag.h" 6 | #include "token.h" 7 | 8 | namespace YAML { 9 | Tag::Tag(const Token& token) 10 | : type(static_cast(token.data)), handle{}, value{} { 11 | switch (type) { 12 | case VERBATIM: 13 | value = token.value; 14 | break; 15 | case PRIMARY_HANDLE: 16 | value = token.value; 17 | break; 18 | case SECONDARY_HANDLE: 19 | value = token.value; 20 | break; 21 | case NAMED_HANDLE: 22 | handle = token.value; 23 | value = token.params[0]; 24 | break; 25 | case NON_SPECIFIC: 26 | break; 27 | default: 28 | assert(false); 29 | } 30 | } 31 | 32 | const std::string Tag::Translate(const Directives& directives) { 33 | switch (type) { 34 | case VERBATIM: 35 | return value; 36 | case PRIMARY_HANDLE: 37 | return directives.TranslateTagHandle("!") + value; 38 | case SECONDARY_HANDLE: 39 | return directives.TranslateTagHandle("!!") + value; 40 | case NAMED_HANDLE: 41 | return directives.TranslateTagHandle("!" + handle + "!") + value; 42 | case NON_SPECIFIC: 43 | // TODO: 44 | return "!"; 45 | default: 46 | assert(false); 47 | } 48 | throw std::runtime_error("yaml-cpp: internal error, bad tag type"); 49 | } 50 | } // namespace YAML 51 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/src/tag.h: -------------------------------------------------------------------------------- 1 | #ifndef TAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define TAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | namespace YAML { 13 | struct Directives; 14 | struct Token; 15 | 16 | struct Tag { 17 | enum TYPE { 18 | VERBATIM, 19 | PRIMARY_HANDLE, 20 | SECONDARY_HANDLE, 21 | NAMED_HANDLE, 22 | NON_SPECIFIC 23 | }; 24 | 25 | Tag(const Token& token); 26 | const std::string Translate(const Directives& directives); 27 | 28 | TYPE type; 29 | std::string handle, value; 30 | }; 31 | } 32 | 33 | #endif // TAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 34 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/BUILD.bazel: -------------------------------------------------------------------------------- 1 | cc_test( 2 | name = "test", 3 | srcs = glob([ 4 | "*.cpp", 5 | "*.h", 6 | "integrations/*.cpp", 7 | "node/*.cpp", 8 | ]), 9 | deps = [ 10 | "//:yaml-cpp", 11 | "//:yaml-cpp_internal", 12 | "@com_google_googletest//:gtest_main", 13 | ], 14 | ) 15 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(Threads REQUIRED) 2 | 3 | set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) 4 | set(BUILD_MOCK ON CACHE BOOL "" FORCE) 5 | set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) 6 | 7 | add_subdirectory( 8 | "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0" 9 | "${CMAKE_CURRENT_BINARY_DIR}/prefix") 10 | 11 | include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0/googletest/include") 12 | 13 | set(test-new-api-pattern "new-api/*.cpp") 14 | set(test-source-pattern "*.cpp" "integration/*.cpp" "node/*.cpp") 15 | if (CMAKE_VERSION VERSION_GREATER 3.11) 16 | list(INSERT test-new-api-pattern 0 CONFIGURE_DEPENDS) 17 | list(INSERT test-source-pattern 0 CONFIGURE_DEPENDS) 18 | endif() 19 | 20 | file(GLOB test-new-api-sources ${test-new-api-pattern}) 21 | file(GLOB test-sources ${test-source-pattern}) 22 | 23 | add_executable(yaml-cpp-tests "") 24 | target_sources(yaml-cpp-tests 25 | PRIVATE 26 | ${test-new-api-sources} 27 | ${test-sources}) 28 | target_include_directories(yaml-cpp-tests 29 | PRIVATE 30 | ${CMAKE_CURRENT_SOURCE_DIR}/integration 31 | ${CMAKE_CURRENT_SOURCE_DIR} 32 | ${PROJECT_SOURCE_DIR}/src) 33 | target_compile_options(yaml-cpp-tests 34 | PRIVATE 35 | $<$:-Wno-c99-extensions -Wno-variadic-macros -Wno-sign-compare> 36 | $<$:-Wno-variadic-macros -Wno-sign-compare>) 37 | target_link_libraries(yaml-cpp-tests 38 | PRIVATE 39 | Threads::Threads 40 | yaml-cpp 41 | gmock) 42 | 43 | set_property(TARGET yaml-cpp-tests PROPERTY CXX_STANDARD_REQUIRED ON) 44 | if (NOT DEFINED CMAKE_CXX_STANDARD) 45 | set_target_properties(yaml-cpp-tests PROPERTIES CXX_STANDARD 11) 46 | endif() 47 | 48 | 49 | add_test(yaml-cpp::test yaml-cpp-tests) 50 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/.clang-format: -------------------------------------------------------------------------------- 1 | # Run manually to reformat a file: 2 | # clang-format -i --style=file 3 | Language: Cpp 4 | BasedOnStyle: Google 5 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Note: CMake support is community-based. The maintainers do not use CMake 2 | # internally. 3 | 4 | cmake_minimum_required(VERSION 2.8.8) 5 | 6 | if (POLICY CMP0048) 7 | cmake_policy(SET CMP0048 NEW) 8 | endif (POLICY CMP0048) 9 | 10 | project(googletest-distribution) 11 | set(GOOGLETEST_VERSION 1.10.0) 12 | 13 | if (CMAKE_VERSION VERSION_LESS "3.1") 14 | add_definitions(-std=c++11) 15 | else() 16 | set(CMAKE_CXX_STANDARD 11) 17 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 18 | if(NOT CYGWIN) 19 | set(CMAKE_CXX_EXTENSIONS OFF) 20 | endif() 21 | endif() 22 | 23 | enable_testing() 24 | 25 | include(CMakeDependentOption) 26 | include(GNUInstallDirs) 27 | 28 | #Note that googlemock target already builds googletest 29 | option(BUILD_GMOCK "Builds the googlemock subproject" ON) 30 | option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON) 31 | 32 | if(BUILD_GMOCK) 33 | add_subdirectory( googlemock ) 34 | else() 35 | add_subdirectory( googletest ) 36 | endif() 37 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2008, Google Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are 6 | met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above 11 | copyright notice, this list of conditions and the following disclaimer 12 | in the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Google Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/WORKSPACE: -------------------------------------------------------------------------------- 1 | workspace(name = "com_google_googletest") 2 | 3 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 4 | 5 | # Abseil 6 | http_archive( 7 | name = "com_google_absl", 8 | urls = ["https://github.com/abseil/abseil-cpp/archive/master.zip"], 9 | strip_prefix = "abseil-cpp-master", 10 | ) 11 | 12 | http_archive( 13 | name = "rules_cc", 14 | strip_prefix = "rules_cc-master", 15 | urls = ["https://github.com/bazelbuild/rules_cc/archive/master.zip"], 16 | ) 17 | 18 | http_archive( 19 | name = "rules_python", 20 | strip_prefix = "rules_python-master", 21 | urls = ["https://github.com/bazelbuild/rules_python/archive/master.zip"], 22 | ) 23 | 24 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/ci/build-platformio.sh: -------------------------------------------------------------------------------- 1 | # run PlatformIO builds 2 | platformio run 3 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/ci/install-platformio.sh: -------------------------------------------------------------------------------- 1 | # install PlatformIO 2 | sudo pip install -U platformio 3 | 4 | # update PlatformIO 5 | platformio update 6 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/ci/travis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | set -evx 3 | 4 | . ci/get-nprocessors.sh 5 | 6 | # if possible, ask for the precise number of processors, 7 | # otherwise take 2 processors as reasonable default; see 8 | # https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization 9 | if [ -x /usr/bin/getconf ]; then 10 | NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) 11 | else 12 | NPROCESSORS=2 13 | fi 14 | # as of 2017-09-04 Travis CI reports 32 processors, but GCC build 15 | # crashes if parallelized too much (maybe memory consumption problem), 16 | # so limit to 4 processors for the time being. 17 | if [ $NPROCESSORS -gt 4 ] ; then 18 | echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." 19 | NPROCESSORS=4 20 | fi 21 | # Tell make to use the processors. No preceding '-' required. 22 | MAKEFLAGS="j${NPROCESSORS}" 23 | export MAKEFLAGS 24 | 25 | env | sort 26 | 27 | # Set default values to OFF for these variables if not specified. 28 | : "${NO_EXCEPTION:=OFF}" 29 | : "${NO_RTTI:=OFF}" 30 | : "${COMPILER_IS_GNUCXX:=OFF}" 31 | 32 | mkdir build || true 33 | cd build 34 | cmake -Dgtest_build_samples=ON \ 35 | -Dgtest_build_tests=ON \ 36 | -Dgmock_build_tests=ON \ 37 | -Dcxx_no_exception=$NO_EXCEPTION \ 38 | -Dcxx_no_rtti=$NO_RTTI \ 39 | -DCMAKE_COMPILER_IS_GNUCXX=$COMPILER_IS_GNUCXX \ 40 | -DCMAKE_CXX_FLAGS=$CXX_FLAGS \ 41 | -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ 42 | .. 43 | make 44 | CTEST_OUTPUT_ON_FAILURE=1 make test 45 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This file contains a list of people who've made non-trivial 2 | # contribution to the Google C++ Mocking Framework project. People 3 | # who commit code to the project are encouraged to add their names 4 | # here. Please keep the list sorted by first names. 5 | 6 | Benoit Sigoure 7 | Bogdan Piloca 8 | Chandler Carruth 9 | Dave MacLachlan 10 | David Anderson 11 | Dean Sturtevant 12 | Gene Volovich 13 | Hal Burch 14 | Jeffrey Yasskin 15 | Jim Keller 16 | Joe Walnes 17 | Jon Wray 18 | Keir Mierle 19 | Keith Ray 20 | Kostya Serebryany 21 | Lev Makhlis 22 | Manuel Klimek 23 | Mario Tanev 24 | Mark Paskin 25 | Markus Heule 26 | Matthew Simmons 27 | Mike Bland 28 | Neal Norwitz 29 | Nermin Ozkiranartli 30 | Owen Carlsen 31 | Paneendra Ba 32 | Paul Menage 33 | Piotr Kaminski 34 | Russ Rufer 35 | Sverre Sundsdal 36 | Takeshi Yoshino 37 | Vadim Berman 38 | Vlad Losev 39 | Wolfgang Klier 40 | Zhanyong Wan 41 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2008, Google Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are 6 | met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above 11 | copyright notice, this list of conditions and the following disclaimer 12 | in the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Google Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/README.md: -------------------------------------------------------------------------------- 1 | # Googletest Mocking (gMock) Framework 2 | 3 | ### Overview 4 | 5 | Google's framework for writing and using C++ mock classes. It can help you 6 | derive better designs of your system and write better tests. 7 | 8 | It is inspired by: 9 | 10 | * [jMock](http://www.jmock.org/), 11 | * [EasyMock](http://www.easymock.org/), and 12 | * [Hamcrest](http://code.google.com/p/hamcrest/), 13 | 14 | and designed with C++'s specifics in mind. 15 | 16 | gMock: 17 | 18 | - provides a declarative syntax for defining mocks, 19 | - can define partial (hybrid) mocks, which are a cross of real and mock 20 | objects, 21 | - handles functions of arbitrary types and overloaded functions, 22 | - comes with a rich set of matchers for validating function arguments, 23 | - uses an intuitive syntax for controlling the behavior of a mock, 24 | - does automatic verification of expectations (no record-and-replay needed), 25 | - allows arbitrary (partial) ordering constraints on function calls to be 26 | expressed, 27 | - lets a user extend it by defining new matchers and actions. 28 | - does not use exceptions, and 29 | - is easy to learn and use. 30 | 31 | Details and examples can be found here: 32 | 33 | * [gMock for Dummies](docs/for_dummies.md) 34 | * [Legacy gMock FAQ](docs/gmock_faq.md) 35 | * [gMock Cookbook](docs/cook_book.md) 36 | * [gMock Cheat Sheet](docs/cheat_sheet.md) 37 | 38 | Please note that code under scripts/generator/ is from the [cppclean 39 | project](http://code.google.com/p/cppclean/) and under the Apache 40 | License, which is different from Google Mock's license. 41 | 42 | Google Mock is a part of 43 | [Google Test C++ testing framework](http://github.com/google/googletest/) and a 44 | subject to the same requirements. 45 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/cmake/gmock.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 3 | includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 4 | 5 | Name: gmock 6 | Description: GoogleMock (without main() function) 7 | Version: @PROJECT_VERSION@ 8 | URL: https://github.com/google/googletest 9 | Requires: gtest 10 | Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ 11 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ 12 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/cmake/gmock_main.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 3 | includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 4 | 5 | Name: gmock_main 6 | Description: GoogleMock (with main() function) 7 | Version: @PROJECT_VERSION@ 8 | URL: https://github.com/google/googletest 9 | Requires: gmock 10 | Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ 11 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ 12 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/include/gmock/internal/custom/README.md: -------------------------------------------------------------------------------- 1 | # Customization Points 2 | 3 | The custom directory is an injection point for custom user configurations. 4 | 5 | ## Header `gmock-port.h` 6 | 7 | The following macros can be defined: 8 | 9 | ### Flag related macros: 10 | 11 | * `GMOCK_DECLARE_bool_(name)` 12 | * `GMOCK_DECLARE_int32_(name)` 13 | * `GMOCK_DECLARE_string_(name)` 14 | * `GMOCK_DEFINE_bool_(name, default_val, doc)` 15 | * `GMOCK_DEFINE_int32_(name, default_val, doc)` 16 | * `GMOCK_DEFINE_string_(name, default_val, doc)` 17 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/include/gmock/internal/custom/gmock-generated-actions.h: -------------------------------------------------------------------------------- 1 | // This file was GENERATED by command: 2 | // pump.py gmock-generated-actions.h.pump 3 | // DO NOT EDIT BY HAND!!! 4 | 5 | // GOOGLETEST_CM0002 DO NOT DELETE 6 | 7 | #ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 8 | #define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 9 | 10 | #endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 11 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump: -------------------------------------------------------------------------------- 1 | $$ -*- mode: c++; -*- 2 | $$ This is a Pump source file. Please use Pump to convert 3 | $$ it to callback-actions.h. 4 | $$ 5 | $var max_callback_arity = 5 6 | $$}} This meta comment fixes auto-indentation in editors. 7 | 8 | // GOOGLETEST_CM0002 DO NOT DELETE 9 | #ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 10 | #define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 11 | 12 | #endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 13 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/scripts/generator/README: -------------------------------------------------------------------------------- 1 | 2 | The Google Mock class generator is an application that is part of cppclean. 3 | For more information about cppclean, visit http://code.google.com/p/cppclean/ 4 | 5 | The mock generator requires Python 2.3.5 or later. If you don't have Python 6 | installed on your system, you will also need to install it. You can download 7 | Python from: http://www.python.org/download/releases/ 8 | 9 | To use the Google Mock class generator, you need to call it 10 | on the command line passing the header file and class for which you want 11 | to generate a Google Mock class. 12 | 13 | Make sure to install the scripts somewhere in your path. Then you can 14 | run the program. 15 | 16 | gmock_gen.py header-file.h [ClassName]... 17 | 18 | If no ClassNames are specified, all classes in the file are emitted. 19 | 20 | To change the indentation from the default of 2, set INDENT in 21 | the environment. For example to use an indent of 4 spaces: 22 | 23 | INDENT=4 gmock_gen.py header-file.h ClassName 24 | 25 | This version was made from SVN revision 281 in the cppclean repository. 26 | 27 | Known Limitations 28 | ----------------- 29 | Not all code will be generated properly. For example, when mocking templated 30 | classes, the template information is lost. You will need to add the template 31 | information manually. 32 | 33 | Not all permutations of using multiple pointers/references will be rendered 34 | properly. These will also have to be fixed manually. 35 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/scripts/generator/cpp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/albeva/fbide/3b817fb67fe4960c59f3dd430438a59e8f06babb/third-party/yaml-cpp/test/gtest-1.10.0/googlemock/scripts/generator/cpp/__init__.py -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/scripts/generator/cpp/utils.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2007 Neal Norwitz 4 | # Portions Copyright 2007 Google Inc. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | """Generic utilities for C++ parsing.""" 19 | 20 | __author__ = 'nnorwitz@google.com (Neal Norwitz)' 21 | 22 | 23 | import sys 24 | 25 | 26 | # Set to True to see the start/end token indices. 27 | DEBUG = True 28 | 29 | 30 | def ReadFile(filename, print_error=True): 31 | """Returns the contents of a file.""" 32 | try: 33 | fp = open(filename) 34 | try: 35 | return fp.read() 36 | finally: 37 | fp.close() 38 | except IOError: 39 | if print_error: 40 | print('Error reading %s: %s' % (filename, sys.exc_info()[1])) 41 | return None 42 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/scripts/generator/gmock_gen.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2008 Google Inc. All Rights Reserved. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | """Driver for starting up Google Mock class generator.""" 18 | 19 | __author__ = 'nnorwitz@google.com (Neal Norwitz)' 20 | 21 | import os 22 | import sys 23 | 24 | if __name__ == '__main__': 25 | # Add the directory of this script to the path so we can import gmock_class. 26 | sys.path.append(os.path.dirname(__file__)) 27 | 28 | from cpp import gmock_class 29 | # Fix the docstring in case they require the usage. 30 | gmock_class.__doc__ = gmock_class.__doc__.replace('gmock_class.py', __file__) 31 | gmock_class.main() 32 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/test/gmock-function-mocker_nc.cc: -------------------------------------------------------------------------------- 1 | #include "gmock/gmock.h" 2 | 3 | #include 4 | #include 5 | 6 | #if defined(TEST_MOCK_METHOD_INVALID_CONST_SPEC) 7 | 8 | struct Base { 9 | MOCK_METHOD(int, F, (), (onst)); 10 | }; 11 | 12 | #else 13 | 14 | // Sanity check - this should compile. 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googlemock/test/gmock-function-mocker_nc_test.py: -------------------------------------------------------------------------------- 1 | """Negative compilation tests for Google Mock macro MOCK_METHOD.""" 2 | 3 | import os 4 | import sys 5 | 6 | IS_LINUX = os.name == "posix" and os.uname()[0] == "Linux" 7 | if not IS_LINUX: 8 | sys.stderr.write( 9 | "WARNING: Negative compilation tests are not supported on this platform") 10 | sys.exit(0) 11 | 12 | # Suppresses the 'Import not at the top of the file' lint complaint. 13 | # pylint: disable-msg=C6204 14 | from google3.testing.pybase import fake_target_util 15 | from google3.testing.pybase import googletest 16 | 17 | # pylint: enable-msg=C6204 18 | 19 | 20 | class GMockMethodNCTest(googletest.TestCase): 21 | """Negative compilation tests for MOCK_METHOD.""" 22 | 23 | # The class body is intentionally empty. The actual test*() methods 24 | # will be defined at run time by a call to 25 | # DefineNegativeCompilationTests() later. 26 | pass 27 | 28 | 29 | # Defines a list of test specs, where each element is a tuple 30 | # (test name, list of regexes for matching the compiler errors). 31 | TEST_SPECS = [ 32 | ("MOCK_METHOD_INVALID_CONST_SPEC", 33 | [r"onst cannot be recognized as a valid specification modifier"]), 34 | ] 35 | 36 | # Define a test method in GMockNCTest for each element in TEST_SPECS. 37 | fake_target_util.DefineNegativeCompilationTests( 38 | GMockMethodNCTest, 39 | "google3/third_party/googletest/googlemock/test/gmock-function-mocker_nc", 40 | "gmock-function-mocker_nc.o", TEST_SPECS) 41 | 42 | if __name__ == "__main__": 43 | googletest.main() 44 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This file contains a list of people who've made non-trivial 2 | # contribution to the Google C++ Testing Framework project. People 3 | # who commit code to the project are encouraged to add their names 4 | # here. Please keep the list sorted by first names. 5 | 6 | Ajay Joshi 7 | Balázs Dán 8 | Bharat Mediratta 9 | Chandler Carruth 10 | Chris Prince 11 | Chris Taylor 12 | Dan Egnor 13 | Eric Roman 14 | Hady Zalek 15 | Jeffrey Yasskin 16 | Jói Sigurðsson 17 | Keir Mierle 18 | Keith Ray 19 | Kenton Varda 20 | Manuel Klimek 21 | Markus Heule 22 | Mika Raento 23 | Miklós Fazekas 24 | Pasi Valminen 25 | Patrick Hanna 26 | Patrick Riley 27 | Peter Kaminski 28 | Preston Jackson 29 | Rainer Klaffenboeck 30 | Russ Cox 31 | Russ Rufer 32 | Sean Mcafee 33 | Sigurður Ásgeirsson 34 | Tracy Bialik 35 | Vadim Berman 36 | Vlad Losev 37 | Zhanyong Wan 38 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2008, Google Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are 6 | met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above 11 | copyright notice, this list of conditions and the following disclaimer 12 | in the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Google Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | include(CMakeFindDependencyMacro) 3 | if (@GTEST_HAS_PTHREAD@) 4 | set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@) 5 | find_dependency(Threads) 6 | endif() 7 | 8 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 9 | check_required_components("@project_name@") 10 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/cmake/gtest.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 3 | includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 4 | 5 | Name: gtest 6 | Description: GoogleTest (without main() function) 7 | Version: @PROJECT_VERSION@ 8 | URL: https://github.com/google/googletest 9 | Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ 11 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/cmake/gtest_main.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 3 | includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 4 | 5 | Name: gtest_main 6 | Description: GoogleTest (with main() function) 7 | Version: @PROJECT_VERSION@ 8 | URL: https://github.com/google/googletest 9 | Requires: gtest 10 | Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@ 11 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ 12 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/cmake/libgtest.la.in: -------------------------------------------------------------------------------- 1 | # libgtest.la - a libtool library file 2 | # Generated by libtool (GNU libtool) 2.4.6 3 | 4 | # Please DO NOT delete this file! 5 | # It is necessary for linking the library. 6 | 7 | # Names of this library. 8 | library_names='libgtest.so' 9 | 10 | # Is this an already installed library? 11 | installed=yes 12 | 13 | # Should we warn about portability when linking against -modules? 14 | shouldnotlink=no 15 | 16 | # Files to dlopen/dlpreopen 17 | dlopen='' 18 | dlpreopen='' 19 | 20 | # Directory that this library needs to be installed in: 21 | libdir='@CMAKE_INSTALL_FULL_LIBDIR@' 22 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/docs/samples.md: -------------------------------------------------------------------------------- 1 | # Googletest Samples {#samples} 2 | 3 | If you're like us, you'd like to look at 4 | [googletest samples.](https://github.com/google/googletest/tree/master/googletest/samples) 5 | The sample directory has a number of well-commented samples showing how to use a 6 | variety of googletest features. 7 | 8 | * Sample #1 shows the basic steps of using googletest to test C++ functions. 9 | * Sample #2 shows a more complex unit test for a class with multiple member 10 | functions. 11 | * Sample #3 uses a test fixture. 12 | * Sample #4 teaches you how to use googletest and `googletest.h` together to 13 | get the best of both libraries. 14 | * Sample #5 puts shared testing logic in a base test fixture, and reuses it in 15 | derived fixtures. 16 | * Sample #6 demonstrates type-parameterized tests. 17 | * Sample #7 teaches the basics of value-parameterized tests. 18 | * Sample #8 shows using `Combine()` in value-parameterized tests. 19 | * Sample #9 shows use of the listener API to modify Google Test's console 20 | output and the use of its reflection API to inspect test results. 21 | * Sample #10 shows use of the listener API to implement a primitive memory 22 | leak checker. 23 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/googletest/test/production.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2006, Google Inc. 2 | // All rights reserved. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are 6 | // met: 7 | // 8 | // * Redistributions of source code must retain the above copyright 9 | // notice, this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above 11 | // copyright notice, this list of conditions and the following disclaimer 12 | // in the documentation and/or other materials provided with the 13 | // distribution. 14 | // * Neither the name of Google Inc. nor the names of its 15 | // contributors may be used to endorse or promote products derived from 16 | // this software without specific prior written permission. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | // 31 | // This is part of the unit test for gtest_prod.h. 32 | 33 | #include "production.h" 34 | 35 | PrivateCode::PrivateCode() : x_(0) {} 36 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/gtest-1.10.0/platformio.ini: -------------------------------------------------------------------------------- 1 | ; PlatformIO Project Configuration File 2 | ; 3 | ; Build options: build flags, source filter 4 | ; Upload options: custom upload port, speed and extra flags 5 | ; Library options: dependencies, extra library storages 6 | ; Advanced options: extra scripting 7 | ; 8 | ; Please visit documentation for the other options and examples 9 | ; http://docs.platformio.org/page/projectconf.html 10 | 11 | 12 | [platformio] 13 | #src_dir = ./googlemock 14 | #src_dir = ./googletest 15 | src_dir = . 16 | 17 | [env:googletest_esp32] 18 | platform = espressif32 19 | board = esp32dev 20 | framework = arduino 21 | build_flags = -I./googletest/include -I./googletest 22 | src_filter = +<*> -<.git/> - - - - - - + + 23 | upload_speed = 921600 24 | 25 | [env:googlemock_esp32] 26 | platform = espressif32 27 | board = esp32dev 28 | framework = arduino 29 | build_flags = -I./googlemock/include -I./googletest/include -I./googletest -I./googlemock 30 | src_filter = +<*> -<.git/> - - - + + + 31 | upload_speed = 921600 32 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/handler_test.h: -------------------------------------------------------------------------------- 1 | #include "mock_event_handler.h" 2 | #include "yaml-cpp/yaml.h" // IWYU pragma: keep 3 | 4 | #include "gmock/gmock.h" 5 | #include "gtest/gtest.h" 6 | 7 | using ::testing::InSequence; 8 | using ::testing::NiceMock; 9 | using ::testing::StrictMock; 10 | 11 | namespace YAML { 12 | class HandlerTest : public ::testing::Test { 13 | protected: 14 | void Parse(const std::string& example) { 15 | std::stringstream stream(example); 16 | Parser parser(stream); 17 | while (parser.HandleNextDocument(handler)) { 18 | } 19 | } 20 | 21 | void IgnoreParse(const std::string& example) { 22 | std::stringstream stream(example); 23 | Parser parser(stream); 24 | while (parser.HandleNextDocument(nice_handler)) { 25 | } 26 | } 27 | 28 | InSequence sequence; 29 | StrictMock handler; 30 | NiceMock nice_handler; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/main.cpp: -------------------------------------------------------------------------------- 1 | #include "gtest/gtest.h" 2 | 3 | int main(int argc, char** argv) { 4 | ::testing::InitGoogleTest(&argc, argv); 5 | return RUN_ALL_TESTS(); 6 | } 7 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/test/mock_event_handler.h: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/emitterstyle.h" 2 | #include "yaml-cpp/eventhandler.h" 3 | #include "yaml-cpp/mark.h" 4 | 5 | #include "gmock/gmock.h" 6 | 7 | #include 8 | 9 | namespace YAML { 10 | 11 | class MockEventHandler : public EventHandler { 12 | public: 13 | MOCK_METHOD1(OnDocumentStart, void(const Mark&)); 14 | MOCK_METHOD0(OnDocumentEnd, void()); 15 | 16 | MOCK_METHOD2(OnNull, void(const Mark&, anchor_t)); 17 | MOCK_METHOD2(OnAlias, void(const Mark&, anchor_t)); 18 | MOCK_METHOD4(OnScalar, void(const Mark&, const std::string&, anchor_t, 19 | const std::string&)); 20 | 21 | MOCK_METHOD4(OnSequenceStart, void(const Mark&, const std::string&, anchor_t, 22 | EmitterStyle::value)); 23 | MOCK_METHOD0(OnSequenceEnd, void()); 24 | 25 | MOCK_METHOD4(OnMapStart, void(const Mark&, const std::string&, anchor_t, 26 | EmitterStyle::value)); 27 | MOCK_METHOD0(OnMapEnd, void()); 28 | MOCK_METHOD2(OnAnchor, void(const Mark&, const std::string&)); 29 | }; 30 | } // namespace YAML 31 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/util/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(yaml-cpp-sandbox sandbox.cpp) 2 | add_executable(yaml-cpp-parse parse.cpp) 3 | add_executable(yaml-cpp-read read.cpp) 4 | 5 | target_link_libraries(yaml-cpp-sandbox PRIVATE yaml-cpp) 6 | target_link_libraries(yaml-cpp-parse PRIVATE yaml-cpp) 7 | target_link_libraries(yaml-cpp-read PRIVATE yaml-cpp) 8 | 9 | set_property(TARGET yaml-cpp-sandbox PROPERTY OUTPUT_NAME sandbox) 10 | set_property(TARGET yaml-cpp-parse PROPERTY OUTPUT_NAME parse) 11 | set_property(TARGET yaml-cpp-read PROPERTY OUTPUT_NAME read) 12 | 13 | set_target_properties(yaml-cpp-sandbox 14 | PROPERTIES 15 | CXX_STANDARD_REQUIRED ON 16 | OUTPUT_NAME sandbox) 17 | 18 | set_target_properties(yaml-cpp-parse 19 | PROPERTIES 20 | CXX_STANDARD_REQUIRED ON 21 | OUTPUT_NAME parse) 22 | 23 | set_target_properties(yaml-cpp-read 24 | PROPERTIES 25 | CXX_STANDARD_REQUIRED ON 26 | OUTPUT_NAME read) 27 | 28 | if (NOT DEFINED CMAKE_CXX_STANDARD) 29 | set_target_properties(yaml-cpp-sandbox yaml-cpp-parse yaml-cpp-read 30 | PROPERTIES 31 | CXX_STANDARD 11) 32 | endif() 33 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/util/parse.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "yaml-cpp/eventhandler.h" 6 | #include "yaml-cpp/yaml.h" // IWYU pragma: keep 7 | 8 | struct Params { 9 | bool hasFile; 10 | std::string fileName; 11 | }; 12 | 13 | Params ParseArgs(int argc, char** argv) { 14 | Params p; 15 | 16 | std::vector args(argv + 1, argv + argc); 17 | 18 | return p; 19 | } 20 | 21 | class NullEventHandler : public YAML::EventHandler { 22 | public: 23 | void OnDocumentStart(const YAML::Mark&) override {} 24 | void OnDocumentEnd() override {} 25 | 26 | void OnNull(const YAML::Mark&, YAML::anchor_t) override {} 27 | void OnAlias(const YAML::Mark&, YAML::anchor_t) override {} 28 | void OnScalar(const YAML::Mark&, const std::string&, YAML::anchor_t, 29 | const std::string&) override {} 30 | 31 | void OnSequenceStart(const YAML::Mark&, const std::string&, YAML::anchor_t, 32 | YAML::EmitterStyle::value) override {} 33 | void OnSequenceEnd() override {} 34 | 35 | void OnMapStart(const YAML::Mark&, const std::string&, YAML::anchor_t, 36 | YAML::EmitterStyle::value) override {} 37 | void OnMapEnd() override {} 38 | }; 39 | 40 | void parse(std::istream& input) { 41 | try { 42 | YAML::Node doc = YAML::Load(input); 43 | std::cout << doc << "\n"; 44 | } catch (const YAML::Exception& e) { 45 | std::cerr << e.what() << "\n"; 46 | } 47 | } 48 | 49 | int main(int argc, char** argv) { 50 | Params p = ParseArgs(argc, argv); 51 | 52 | if (argc > 1) { 53 | std::ifstream fin; 54 | fin.open(argv[1]); 55 | parse(fin); 56 | } else { 57 | parse(std::cin); 58 | } 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/util/sandbox.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "yaml-cpp/emitterstyle.h" 4 | #include "yaml-cpp/eventhandler.h" 5 | #include "yaml-cpp/yaml.h" // IWYU pragma: keep 6 | 7 | class NullEventHandler : public YAML::EventHandler { 8 | public: 9 | using Mark = YAML::Mark; 10 | using anchor_t = YAML::anchor_t; 11 | 12 | NullEventHandler() = default; 13 | 14 | void OnDocumentStart(const Mark&) override {} 15 | void OnDocumentEnd() override {} 16 | void OnNull(const Mark&, anchor_t) override {} 17 | void OnAlias(const Mark&, anchor_t) override {} 18 | void OnScalar(const Mark&, const std::string&, anchor_t, 19 | const std::string&) override {} 20 | void OnSequenceStart(const Mark&, const std::string&, anchor_t, 21 | YAML::EmitterStyle::value style) override {} 22 | void OnSequenceEnd() override {} 23 | void OnMapStart(const Mark&, const std::string&, anchor_t, 24 | YAML::EmitterStyle::value style) override {} 25 | void OnMapEnd() override {} 26 | }; 27 | 28 | int main() { 29 | YAML::Node root; 30 | 31 | for (;;) { 32 | YAML::Node node; 33 | root = node; 34 | } 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/yaml-cpp-config.cmake.in: -------------------------------------------------------------------------------- 1 | # - Config file for the yaml-cpp package 2 | # It defines the following variables 3 | # YAML_CPP_INCLUDE_DIR - include directory 4 | # YAML_CPP_LIBRARIES - libraries to link against 5 | 6 | # Compute paths 7 | get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) 8 | set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@") 9 | 10 | # Our library dependencies (contains definitions for IMPORTED targets) 11 | include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake") 12 | 13 | # These are IMPORTED targets created by yaml-cpp-targets.cmake 14 | set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@") 15 | -------------------------------------------------------------------------------- /third-party/yaml-cpp/yaml-cpp.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 4 | libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ 5 | 6 | Name: Yaml-cpp 7 | Description: A YAML parser and emitter for C++ 8 | Version: @YAML_CPP_VERSION@ 9 | Requires: 10 | Libs: -L${libdir} -lyaml-cpp 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /wxSTC/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # 4 | FILE(GLOB scintillaSRC 5 | src/scintilla/include/*.h 6 | src/scintilla/lexlib/*.cxx 7 | src/scintilla/lexlib/*.h 8 | src/scintilla/src/*.cxx 9 | src/scintilla/src/*.h 10 | ) 11 | 12 | FILE(GLOB wxSRC 13 | src/PlatWX.h 14 | src/PlatWX.cpp 15 | src/ScintillaWX.h 16 | src/ScintillaWX.cpp 17 | src/stc.cpp) 18 | 19 | if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 20 | FILE(GLOB wxMACSRC 21 | src/PlatWXcocoa.*) 22 | set(MACOS_COCOA "-framework Cocoa") 23 | endif() 24 | 25 | add_library(wxstc STATIC ${scintillaSRC} ${wxSRC} ${wxMACSRC}) 26 | 27 | target_compile_options(wxstc PRIVATE -DSCI_NAMESPACE -D__WX__ -DSCI_EMPTYCATALOGUE) 28 | 29 | target_include_directories(wxstc PRIVATE 30 | include 31 | src/scintilla/include 32 | src/scintilla/lexlib 33 | src/scintilla/src 34 | src/) 35 | 36 | include(${wxWidgets_USE_FILE}) 37 | message(STATUS ${wxWidgets_USE_FILE}) 38 | 39 | target_link_libraries(wxstc INTERFACE ${wxWidgets_LIBRARIES}) 40 | target_link_libraries(wxstc PRIVATE project_options ${MACOS_COCOA}) 41 | -------------------------------------------------------------------------------- /wxSTC/include/private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // Name: wx/stc/private.h 3 | // Purpose: Private declarations for wxSTC 4 | // Author: Robin Dunn 5 | // Created: 2007-07-15 6 | // Copyright: (c) 2000 by Total Control Software 7 | // Licence: wxWindows licence 8 | ///////////////////////////////////////////////////////////////////////////// 9 | 10 | #ifndef _WX_STC_PRIVATE_H_ 11 | #define _WX_STC_PRIVATE_H_ 12 | 13 | #include "wx/defs.h" 14 | #include "wx/string.h" 15 | 16 | //---------------------------------------------------------------------- 17 | // Utility functions used within wxSTC 18 | 19 | #if wxUSE_UNICODE 20 | 21 | extern wxString stc2wx(const char* str); 22 | extern wxString stc2wx(const char* str, size_t len); 23 | extern wxCharBuffer wx2stc(const wxString& str); 24 | 25 | // This function takes both wxString and wxCharBuffer because it uses either 26 | // one or the other of them depending on the build mode. In Unicode it uses the 27 | // length of the already converted buffer to avoid doing the conversion again 28 | // just to compute the length. 29 | inline size_t wx2stclen(const wxString& WXUNUSED(str), const wxCharBuffer& buf) 30 | { 31 | return buf.length(); 32 | } 33 | 34 | #else // not UNICODE 35 | 36 | inline wxString stc2wx(const char* str) { 37 | return wxString(str); 38 | } 39 | inline wxString stc2wx(const char* str, size_t len) { 40 | return wxString(str, len); 41 | } 42 | inline const char* wx2stc(const wxString& str) { 43 | return str.mbc_str(); 44 | } 45 | 46 | // As explained above, the buffer argument is only used in Unicode build. 47 | inline size_t wx2stclen(const wxString& str, const char* WXUNUSED(buf)) 48 | { 49 | return str.length(); 50 | } 51 | 52 | #endif // UNICODE 53 | 54 | #endif // _WX_STC_PRIVATE_H_ 55 | -------------------------------------------------------------------------------- /wxSTC/src/PlatWXcocoa.h: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////////// 2 | // Name: src/stc/PlatWXcocoa.h 3 | // Purpose: Declaration of utility functions for wxSTC with cocoa 4 | // Author: New Pagodi 5 | // Created: 2019-03-10 6 | // Copyright: (c) 2019 wxWidgets development team 7 | // Licence: wxWindows licence 8 | ///////////////////////////////////////////////////////////////////////////// 9 | 10 | #ifndef _SRC_STC_PLATWXCOCOA_H_ 11 | #define _SRC_STC_PLATWXCOCOA_H_ 12 | 13 | #include "wx/defs.h" 14 | 15 | #if wxUSE_STC 16 | 17 | // Functions used to create and manage popup windows. 18 | WX_NSWindow CreateFloatingWindow(wxWindow*); 19 | void CloseFloatingWindow(WX_NSWindow win); 20 | void ShowFloatingWindow(WX_NSWindow win); 21 | void HideFloatingWindow(WX_NSWindow win); 22 | 23 | // Function needed for list control colours. 24 | wxColour GetListHighlightColour(); 25 | 26 | #endif // wxUSE_STC 27 | 28 | #endif // _SRC_STC_PLATWXCOCOA_H_ 29 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/License.txt: -------------------------------------------------------------------------------- 1 | License for Scintilla and SciTE 2 | 3 | Copyright 1998-2003 by Neil Hodgson 4 | 5 | All Rights Reserved 6 | 7 | Permission to use, copy, modify, and distribute this software and its 8 | documentation for any purpose and without fee is hereby granted, 9 | provided that the above copyright notice appear in all copies and that 10 | both that copyright notice and this permission notice appear in 11 | supporting documentation. 12 | 13 | NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 14 | SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 15 | AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY 16 | SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 18 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE 20 | OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- /wxSTC/src/scintilla/include/ILoader.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file ILoader.h 3 | ** Interface for loading into a Scintilla document from a background thread. 4 | **/ 5 | // Copyright 1998-2017 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef ILOADER_H 9 | #define ILOADER_H 10 | 11 | #include "Sci_Position.h" 12 | 13 | class ILoader { 14 | public: 15 | virtual int SCI_METHOD Release() = 0; 16 | // Returns a status code from SC_STATUS_* 17 | virtual int SCI_METHOD AddData(const char *data, Sci_Position length) = 0; 18 | virtual void * SCI_METHOD ConvertToDocument() = 0; 19 | }; 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/include/Sci_Position.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file Sci_Position.h 3 | ** Define the Sci_Position type used in Scintilla's external interfaces. 4 | ** These need to be available to clients written in C so are not in a C++ namespace. 5 | **/ 6 | // Copyright 2015 by Neil Hodgson 7 | // The License.txt file describes the conditions under which this software may be distributed. 8 | 9 | #ifndef SCI_POSITION_H 10 | #define SCI_POSITION_H 11 | 12 | #include 13 | 14 | // Basic signed type used throughout interface 15 | typedef ptrdiff_t Sci_Position; 16 | 17 | // Unsigned variant used for ILexer::Lex and ILexer::Fold 18 | typedef size_t Sci_PositionU; 19 | 20 | // For Sci_CharacterRange which is defined as long to be compatible with Win32 CHARRANGE 21 | typedef long Sci_PositionCR; 22 | 23 | #ifdef _WIN32 24 | #define SCI_METHOD __stdcall 25 | #else 26 | #define SCI_METHOD 27 | #endif 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/Accessor.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file Accessor.h 3 | ** Interfaces between Scintilla and lexers. 4 | **/ 5 | // Copyright 1998-2010 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef ACCESSOR_H 9 | #define ACCESSOR_H 10 | 11 | namespace Scintilla { 12 | 13 | enum { wsSpace=1, wsTab=2, wsSpaceTab=4, wsInconsistent=8 }; 14 | 15 | class Accessor; 16 | class WordList; 17 | class PropSetSimple; 18 | 19 | typedef bool (*PFNIsCommentLeader)(Accessor &styler, Sci_Position pos, Sci_Position len); 20 | 21 | class Accessor : public LexAccessor { 22 | public: 23 | PropSetSimple *pprops; 24 | Accessor(IDocument *pAccess_, PropSetSimple *pprops_); 25 | int GetPropertyInt(const char *, int defaultValue=0) const; 26 | int IndentAmount(Sci_Position line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0); 27 | }; 28 | 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/CharacterCategory.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file CharacterCategory.h 3 | ** Returns the Unicode general category of a character. 4 | **/ 5 | // Copyright 2013 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef CHARACTERCATEGORY_H 9 | #define CHARACTERCATEGORY_H 10 | 11 | namespace Scintilla { 12 | 13 | enum CharacterCategory { 14 | ccLu, ccLl, ccLt, ccLm, ccLo, 15 | ccMn, ccMc, ccMe, 16 | ccNd, ccNl, ccNo, 17 | ccPc, ccPd, ccPs, ccPe, ccPi, ccPf, ccPo, 18 | ccSm, ccSc, ccSk, ccSo, 19 | ccZs, ccZl, ccZp, 20 | ccCc, ccCf, ccCs, ccCo, ccCn 21 | }; 22 | 23 | CharacterCategory CategoriseCharacter(int character); 24 | 25 | // Common definitions of allowable characters in identifiers from UAX #31. 26 | bool IsIdStart(int character); 27 | bool IsIdContinue(int character); 28 | bool IsXidStart(int character); 29 | bool IsXidContinue(int character); 30 | 31 | class CharacterCategoryMap { 32 | private: 33 | std::vector dense; 34 | public: 35 | CharacterCategoryMap(); 36 | CharacterCategory CategoryFor(int character) const { 37 | if (static_cast(character) < dense.size()) { 38 | return static_cast(dense[character]); 39 | } else { 40 | // binary search through ranges 41 | return CategoriseCharacter(character); 42 | } 43 | } 44 | int Size() const noexcept; 45 | void Optimize(int countCharacters); 46 | }; 47 | 48 | } 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/CharacterSet.cxx: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file CharacterSet.cxx 3 | ** Simple case functions for ASCII. 4 | ** Lexer infrastructure. 5 | **/ 6 | // Copyright 1998-2010 by Neil Hodgson 7 | // The License.txt file describes the conditions under which this software may be distributed. 8 | 9 | #include 10 | #include 11 | 12 | #include "CharacterSet.h" 13 | 14 | using namespace Scintilla; 15 | 16 | namespace Scintilla { 17 | 18 | int CompareCaseInsensitive(const char *a, const char *b) noexcept { 19 | while (*a && *b) { 20 | if (*a != *b) { 21 | const char upperA = MakeUpperCase(*a); 22 | const char upperB = MakeUpperCase(*b); 23 | if (upperA != upperB) 24 | return upperA - upperB; 25 | } 26 | a++; 27 | b++; 28 | } 29 | // Either *a or *b is nul 30 | return *a - *b; 31 | } 32 | 33 | int CompareNCaseInsensitive(const char *a, const char *b, size_t len) noexcept { 34 | while (*a && *b && len) { 35 | if (*a != *b) { 36 | const char upperA = MakeUpperCase(*a); 37 | const char upperB = MakeUpperCase(*b); 38 | if (upperA != upperB) 39 | return upperA - upperB; 40 | } 41 | a++; 42 | b++; 43 | len--; 44 | } 45 | if (len == 0) 46 | return 0; 47 | else 48 | // Either *a or *b is nul 49 | return *a - *b; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/LexerNoExceptions.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file LexerNoExceptions.h 3 | ** A simple lexer with no state. 4 | **/ 5 | // Copyright 1998-2010 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef LEXERNOEXCEPTIONS_H 9 | #define LEXERNOEXCEPTIONS_H 10 | 11 | namespace Scintilla { 12 | 13 | // A simple lexer with no state 14 | class LexerNoExceptions : public LexerBase { 15 | public: 16 | // TODO Also need to prevent exceptions in constructor and destructor 17 | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; 18 | Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; 19 | void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; 20 | void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *) override; 21 | 22 | virtual void Lexer(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess, Accessor &styler) = 0; 23 | virtual void Folder(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess, Accessor &styler) = 0; 24 | }; 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/LexerSimple.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file LexerSimple.h 3 | ** A simple lexer with no state. 4 | **/ 5 | // Copyright 1998-2010 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef LEXERSIMPLE_H 9 | #define LEXERSIMPLE_H 10 | 11 | namespace Scintilla { 12 | 13 | // A simple lexer with no state 14 | class LexerSimple : public LexerBase { 15 | const LexerModule *module; 16 | std::string wordLists; 17 | public: 18 | explicit LexerSimple(const LexerModule *module_); 19 | const char * SCI_METHOD DescribeWordListSets() override; 20 | void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; 21 | void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; 22 | // ILexerWithIdentity methods 23 | const char * SCI_METHOD GetName() override; 24 | int SCI_METHOD GetIdentifier() override; 25 | }; 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/PropSetSimple.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file PropSetSimple.h 3 | ** A basic string to string map. 4 | **/ 5 | // Copyright 1998-2009 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef PROPSETSIMPLE_H 9 | #define PROPSETSIMPLE_H 10 | 11 | namespace Scintilla { 12 | 13 | class PropSetSimple { 14 | void *impl; 15 | void Set(const char *keyVal); 16 | public: 17 | PropSetSimple(); 18 | virtual ~PropSetSimple(); 19 | void Set(const char *key, const char *val, size_t lenKey, size_t lenVal); 20 | void SetMultiple(const char *); 21 | const char *Get(const char *key) const; 22 | size_t GetExpanded(const char *key, char *result) const; 23 | int GetInt(const char *key, int defaultValue=0) const; 24 | }; 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/StringCopy.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file StringCopy.h 3 | ** Safe string copy function which always NUL terminates. 4 | ** ELEMENTS macro for determining array sizes. 5 | **/ 6 | // Copyright 2013 by Neil Hodgson 7 | // The License.txt file describes the conditions under which this software may be distributed. 8 | 9 | #ifndef STRINGCOPY_H 10 | #define STRINGCOPY_H 11 | 12 | namespace Scintilla { 13 | 14 | // Safer version of string copy functions like strcpy, wcsncpy, etc. 15 | // Instantiate over fixed length strings of both char and wchar_t. 16 | // May truncate if source doesn't fit into dest with room for NUL. 17 | 18 | template 19 | void StringCopy(T (&dest)[count], const T* source) { 20 | for (size_t i=0; i 6 | // This file is in the public domain. 7 | 8 | #include 9 | #include 10 | 11 | #include "ILexer.h" 12 | 13 | #include "LexAccessor.h" 14 | #include "Accessor.h" 15 | #include "StyleContext.h" 16 | #include "CharacterSet.h" 17 | 18 | using namespace Scintilla; 19 | 20 | bool StyleContext::MatchIgnoreCase(const char *s) { 21 | if (MakeLowerCase(ch) != static_cast(*s)) 22 | return false; 23 | s++; 24 | if (MakeLowerCase(chNext) != static_cast(*s)) 25 | return false; 26 | s++; 27 | for (int n = 2; *s; n++) { 28 | if (*s != 29 | MakeLowerCase(styler.SafeGetCharAt(currentPos + n, 0))) 30 | return false; 31 | s++; 32 | } 33 | return true; 34 | } 35 | 36 | static void getRange(Sci_PositionU start, 37 | Sci_PositionU end, 38 | LexAccessor &styler, 39 | char *s, 40 | Sci_PositionU len) { 41 | Sci_PositionU i = 0; 42 | while ((i < end - start + 1) && (i < len-1)) { 43 | s[i] = styler[start + i]; 44 | i++; 45 | } 46 | s[i] = '\0'; 47 | } 48 | 49 | void StyleContext::GetCurrent(char *s, Sci_PositionU len) { 50 | getRange(styler.GetStartSegment(), currentPos - 1, styler, s, len); 51 | } 52 | 53 | static void getRangeLowered(Sci_PositionU start, 54 | Sci_PositionU end, 55 | LexAccessor &styler, 56 | char *s, 57 | Sci_PositionU len) { 58 | Sci_PositionU i = 0; 59 | while ((i < end - start + 1) && (i < len-1)) { 60 | s[i] = MakeLowerCase(styler[start + i]); 61 | i++; 62 | } 63 | s[i] = '\0'; 64 | } 65 | 66 | void StyleContext::GetCurrentLowered(char *s, Sci_PositionU len) { 67 | getRangeLowered(styler.GetStartSegment(), currentPos - 1, styler, s, len); 68 | } 69 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/lexlib/WordList.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file WordList.h 3 | ** Hold a list of words. 4 | **/ 5 | // Copyright 1998-2010 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef WORDLIST_H 9 | #define WORDLIST_H 10 | 11 | namespace Scintilla { 12 | 13 | /** 14 | */ 15 | class WordList { 16 | // Each word contains at least one character - a empty word acts as sentinel at the end. 17 | char **words; 18 | char *list; 19 | int len; 20 | bool onlyLineEnds; ///< Delimited by any white space or only line ends 21 | int starts[256]; 22 | public: 23 | explicit WordList(bool onlyLineEnds_ = false); 24 | ~WordList(); 25 | operator bool() const noexcept; 26 | bool operator!=(const WordList &other) const noexcept; 27 | int Length() const noexcept; 28 | void Clear() noexcept; 29 | bool Set(const char *s); 30 | bool InList(const char *s) const noexcept; 31 | bool InListAbbreviated(const char *s, const char marker) const noexcept; 32 | bool InListAbridged(const char *s, const char marker) const noexcept; 33 | const char *WordAt(int n) const noexcept; 34 | }; 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/CaseConvert.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | // Encoding: UTF-8 3 | /** @file CaseConvert.h 4 | ** Performs Unicode case conversions. 5 | ** Does not handle locale-sensitive case conversion. 6 | **/ 7 | // Copyright 2013 by Neil Hodgson 8 | // The License.txt file describes the conditions under which this software may be distributed. 9 | 10 | #ifndef CASECONVERT_H 11 | #define CASECONVERT_H 12 | 13 | namespace Scintilla { 14 | 15 | enum CaseConversion { 16 | CaseConversionFold, 17 | CaseConversionUpper, 18 | CaseConversionLower 19 | }; 20 | 21 | class ICaseConverter { 22 | public: 23 | virtual size_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed) = 0; 24 | }; 25 | 26 | ICaseConverter *ConverterFor(enum CaseConversion conversion); 27 | 28 | // Returns a UTF-8 string. Empty when no conversion 29 | const char *CaseConvert(int character, enum CaseConversion conversion); 30 | 31 | // When performing CaseConvertString, the converted value may be up to 3 times longer than the input. 32 | // Ligatures are often decomposed into multiple characters and long cases include: 33 | // ΐ "\xce\x90" folds to ΐ "\xce\xb9\xcc\x88\xcc\x81" 34 | constexpr size_t maxExpansionCaseConversion = 3; 35 | 36 | // Converts a mixed case string using a particular conversion. 37 | // Result may be a different length to input and the length is the return value. 38 | // If there is not enough space then 0 is returned. 39 | size_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed, enum CaseConversion conversion); 40 | 41 | // Converts a mixed case string using a particular conversion. 42 | std::string CaseConvertString(const std::string &s, enum CaseConversion conversion); 43 | 44 | } 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/CaseFolder.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file CaseFolder.h 3 | ** Classes for case folding. 4 | **/ 5 | // Copyright 1998-2013 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef CASEFOLDER_H 9 | #define CASEFOLDER_H 10 | 11 | namespace Scintilla { 12 | 13 | class CaseFolder { 14 | public: 15 | virtual ~CaseFolder(); 16 | virtual size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) = 0; 17 | }; 18 | 19 | class CaseFolderTable : public CaseFolder { 20 | protected: 21 | char mapping[256]; 22 | public: 23 | CaseFolderTable() noexcept; 24 | ~CaseFolderTable() override; 25 | size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) override; 26 | void SetTranslation(char ch, char chTranslation) noexcept; 27 | void StandardASCII() noexcept; 28 | }; 29 | 30 | class ICaseConverter; 31 | 32 | class CaseFolderUnicode : public CaseFolderTable { 33 | ICaseConverter *converter; 34 | public: 35 | CaseFolderUnicode(); 36 | size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) override; 37 | }; 38 | 39 | } 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/Catalogue.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file Catalogue.h 3 | ** Lexer infrastructure. 4 | ** Contains a list of LexerModules which can be searched to find a module appropriate for a 5 | ** particular language. 6 | **/ 7 | // Copyright 1998-2010 by Neil Hodgson 8 | // The License.txt file describes the conditions under which this software may be distributed. 9 | 10 | #ifndef CATALOGUE_H 11 | #define CATALOGUE_H 12 | 13 | namespace Scintilla { 14 | 15 | class Catalogue { 16 | public: 17 | static const LexerModule *Find(int language); 18 | static const LexerModule *Find(const char *languageName) noexcept; 19 | static void AddLexerModule(LexerModule *plm); 20 | }; 21 | 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/CharClassify.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file CharClassify.h 3 | ** Character classifications used by Document and RESearch. 4 | **/ 5 | // Copyright 2006-2009 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef CHARCLASSIFY_H 9 | #define CHARCLASSIFY_H 10 | 11 | namespace Scintilla { 12 | 13 | class CharClassify { 14 | public: 15 | CharClassify(); 16 | 17 | enum cc { ccSpace, ccNewLine, ccWord, ccPunctuation }; 18 | void SetDefaultCharClasses(bool includeWordClass); 19 | void SetCharClasses(const unsigned char *chars, cc newCharClass); 20 | int GetCharsOfClass(cc characterClass, unsigned char *buffer) const noexcept; 21 | cc GetClass(unsigned char ch) const noexcept { return static_cast(charClass[ch]);} 22 | bool IsWord(unsigned char ch) const noexcept { return static_cast(charClass[ch]) == ccWord;} 23 | 24 | private: 25 | enum { maxChar=256 }; 26 | unsigned char charClass[maxChar]; // not type cc to save space 27 | }; 28 | 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/DBCS.cxx: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file DBCS.cxx 3 | ** Functions to handle DBCS double byte encodings like Shift-JIS. 4 | **/ 5 | // Copyright 2017 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #include "DBCS.h" 9 | 10 | using namespace Scintilla; 11 | 12 | namespace Scintilla { 13 | 14 | bool DBCSIsLeadByte(int codePage, char ch) noexcept { 15 | // Byte ranges found in Wikipedia articles with relevant search strings in each case 16 | const unsigned char uch = ch; 17 | switch (codePage) { 18 | case 932: 19 | // Shift_jis 20 | return ((uch >= 0x81) && (uch <= 0x9F)) || 21 | ((uch >= 0xE0) && (uch <= 0xFC)); 22 | // Lead bytes F0 to FC may be a Microsoft addition. 23 | case 936: 24 | // GBK 25 | return (uch >= 0x81) && (uch <= 0xFE); 26 | case 949: 27 | // Korean Wansung KS C-5601-1987 28 | return (uch >= 0x81) && (uch <= 0xFE); 29 | case 950: 30 | // Big5 31 | return (uch >= 0x81) && (uch <= 0xFE); 32 | case 1361: 33 | // Korean Johab KS C-5601-1992 34 | return 35 | ((uch >= 0x84) && (uch <= 0xD3)) || 36 | ((uch >= 0xD8) && (uch <= 0xDE)) || 37 | ((uch >= 0xE0) && (uch <= 0xF9)); 38 | } 39 | return false; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/DBCS.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file DBCS.h 3 | ** Functions to handle DBCS double byte encodings like Shift-JIS. 4 | **/ 5 | // Copyright 2017 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef DBCS_H 9 | #define DBCS_H 10 | 11 | namespace Scintilla { 12 | 13 | constexpr bool IsDBCSCodePage(int codePage) noexcept { 14 | return codePage == 932 15 | || codePage == 936 16 | || codePage == 949 17 | || codePage == 950 18 | || codePage == 1361; 19 | } 20 | 21 | bool DBCSIsLeadByte(int codePage, char ch) noexcept; 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/ElapsedPeriod.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file ElapsedPeriod.h 3 | ** Encapsulate C++ to simplify use. 4 | **/ 5 | // Copyright 2018 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef ELAPSEDPERIOD_H 9 | #define ELAPSEDPERIOD_H 10 | 11 | namespace Scintilla { 12 | 13 | // Simplified access to high precision timing. 14 | class ElapsedPeriod { 15 | std::chrono::high_resolution_clock::time_point tp; 16 | public: 17 | /// Capture the moment 18 | ElapsedPeriod() noexcept : tp(std::chrono::high_resolution_clock::now()) { 19 | } 20 | /// Return duration as floating point seconds 21 | double Duration(bool reset=false) noexcept { 22 | const std::chrono::high_resolution_clock::time_point tpNow = 23 | std::chrono::high_resolution_clock::now(); 24 | const std::chrono::duration stylingDuration = 25 | std::chrono::duration_cast>(tpNow - tp); 26 | if (reset) { 27 | tp = tpNow; 28 | } 29 | return stylingDuration.count(); 30 | } 31 | }; 32 | 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/ExternalLexer.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file ExternalLexer.h 3 | ** Support external lexers in DLLs or shared libraries. 4 | **/ 5 | // Copyright 2001 Simon Steele , portions copyright Neil Hodgson. 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef EXTERNALLEXER_H 9 | #define EXTERNALLEXER_H 10 | 11 | namespace Scintilla { 12 | 13 | void ExternalLexerLoad(const char *path); 14 | 15 | } 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/FontQuality.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file FontQuality.h 3 | ** Definitions to control font anti-aliasing. 4 | ** Redefine constants from Scintilla.h to avoid including Scintilla.h in PlatWin.cxx. 5 | **/ 6 | // Copyright 1998-2009 by Neil Hodgson 7 | // The License.txt file describes the conditions under which this software may be distributed. 8 | 9 | #ifndef FONTQUALITY_H 10 | #define FONTQUALITY_H 11 | 12 | namespace Scintilla { 13 | 14 | // These definitions match Scintilla.h 15 | #define SC_EFF_QUALITY_MASK 0xF 16 | #define SC_EFF_QUALITY_DEFAULT 0 17 | #define SC_EFF_QUALITY_NON_ANTIALIASED 1 18 | #define SC_EFF_QUALITY_ANTIALIASED 2 19 | #define SC_EFF_QUALITY_LCD_OPTIMIZED 3 20 | 21 | // These definitions must match SC_TECHNOLOGY_* in Scintilla.h 22 | #define SCWIN_TECH_GDI 0 23 | #define SCWIN_TECH_DIRECTWRITE 1 24 | 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/IntegerRectangle.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file IntegerRectangle.h 3 | ** A rectangle with integer coordinates. 4 | **/ 5 | // Copyright 2018 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef INTEGERRECTANGLE_H 9 | #define INTEGERRECTANGLE_H 10 | 11 | namespace Scintilla { 12 | 13 | struct IntegerRectangle { 14 | int left; 15 | int top; 16 | int right; 17 | int bottom; 18 | 19 | explicit IntegerRectangle(PRectangle rc) noexcept : 20 | left(static_cast(rc.left)), top(static_cast(rc.top)), 21 | right(static_cast(rc.right)), bottom(static_cast(rc.bottom)) { 22 | } 23 | int Width() const noexcept { return right - left; } 24 | int Height() const noexcept { return bottom - top; } 25 | }; 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/KeyMap.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file KeyMap.h 3 | ** Defines a mapping between keystrokes and commands. 4 | **/ 5 | // Copyright 1998-2001 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef KEYMAP_H 9 | #define KEYMAP_H 10 | 11 | namespace Scintilla { 12 | 13 | #define SCI_NORM 0 14 | #define SCI_SHIFT SCMOD_SHIFT 15 | #define SCI_CTRL SCMOD_CTRL 16 | #define SCI_ALT SCMOD_ALT 17 | #define SCI_META SCMOD_META 18 | #define SCI_SUPER SCMOD_SUPER 19 | #define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT) 20 | #define SCI_ASHIFT (SCI_ALT | SCI_SHIFT) 21 | 22 | /** 23 | */ 24 | class KeyModifiers { 25 | public: 26 | int key; 27 | int modifiers; 28 | KeyModifiers(int key_, int modifiers_) noexcept : key(key_), modifiers(modifiers_) { 29 | } 30 | bool operator<(const KeyModifiers &other) const noexcept { 31 | if (key == other.key) 32 | return modifiers < other.modifiers; 33 | else 34 | return key < other.key; 35 | } 36 | }; 37 | 38 | /** 39 | */ 40 | class KeyToCommand { 41 | public: 42 | int key; 43 | int modifiers; 44 | unsigned int msg; 45 | }; 46 | 47 | /** 48 | */ 49 | class KeyMap { 50 | std::map kmap; 51 | static const KeyToCommand MapDefault[]; 52 | 53 | public: 54 | KeyMap(); 55 | ~KeyMap(); 56 | void Clear() noexcept; 57 | void AssignCmdKey(int key, int modifiers, unsigned int msg); 58 | unsigned int Find(int key, int modifiers) const; // 0 returned on failure 59 | const std::map &GetKeyMap() const noexcept; 60 | }; 61 | 62 | } 63 | 64 | #endif 65 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/MarginView.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file MarginView.h 3 | ** Defines the appearance of the editor margin. 4 | **/ 5 | // Copyright 1998-2014 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef MARGINVIEW_H 9 | #define MARGINVIEW_H 10 | 11 | namespace Scintilla { 12 | 13 | void DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour); 14 | 15 | typedef void (*DrawWrapMarkerFn)(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour); 16 | 17 | /** 18 | * MarginView draws the margins. 19 | */ 20 | class MarginView { 21 | public: 22 | std::unique_ptr pixmapSelMargin; 23 | std::unique_ptr pixmapSelPattern; 24 | std::unique_ptr pixmapSelPatternOffset1; 25 | // Highlight current folding block 26 | HighlightDelimiter highlightDelimiter; 27 | 28 | int wrapMarkerPaddingRight; // right-most pixel padding of wrap markers 29 | /** Some platforms, notably PLAT_CURSES, do not support Scintilla's native 30 | * DrawWrapMarker function for drawing wrap markers. Allow those platforms to 31 | * override it instead of creating a new method in the Surface class that 32 | * existing platforms must implement as empty. */ 33 | DrawWrapMarkerFn customDrawWrapMarker; 34 | 35 | MarginView() noexcept; 36 | 37 | void DropGraphics(bool freeObjects); 38 | void AllocateGraphics(const ViewStyle &vsDraw); 39 | void RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewStyle &vsDraw); 40 | void PaintMargin(Surface *surface, Sci::Line topLine, PRectangle rc, PRectangle rcMargin, 41 | const EditModel &model, const ViewStyle &vs); 42 | }; 43 | 44 | } 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/Position.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file Position.h 3 | ** Defines global type name Position in the Sci internal namespace. 4 | **/ 5 | // Copyright 2015 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #ifndef POSITION_H 9 | #define POSITION_H 10 | 11 | /** 12 | * A Position is a position within a document between two characters or at the beginning or end. 13 | * Sometimes used as a character index where it identifies the character after the position. 14 | * A Line is a document or screen line. 15 | */ 16 | 17 | namespace Sci { 18 | 19 | typedef ptrdiff_t Position; 20 | typedef ptrdiff_t Line; 21 | 22 | const Position invalidPosition = -1; 23 | 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/SciTE.properties: -------------------------------------------------------------------------------- 1 | # SciTE.properties is the per directory local options file and can be used to override 2 | # settings made in SciTEGlobal.properties 3 | command.build.directory.*.cxx=..\win32 4 | command.build.directory.*.h=..\win32 5 | command.build.*.cxx=nmake -f scintilla.mak QUIET=1 6 | command.build.*.h=nmake -f scintilla.mak QUIET=1 7 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/UniqueString.cxx: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file UniqueString.cxx 3 | ** Define an allocator for UniqueString. 4 | **/ 5 | // Copyright 2017 by Neil Hodgson 6 | // The License.txt file describes the conditions under which this software may be distributed. 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include "UniqueString.h" 14 | 15 | namespace Scintilla { 16 | 17 | /// Equivalent to strdup but produces a std::unique_ptr allocation to go 18 | /// into collections. 19 | UniqueString UniqueStringCopy(const char *text) { 20 | if (!text) { 21 | return UniqueString(); 22 | } 23 | const size_t len = strlen(text); 24 | std::unique_ptr upcNew = Sci::make_unique(len + 1); 25 | memcpy(upcNew.get(), text, len + 1); 26 | return UniqueString(upcNew.release()); 27 | } 28 | 29 | // A set of strings that always returns the same pointer for each string. 30 | 31 | UniqueStringSet::UniqueStringSet() = default; 32 | 33 | UniqueStringSet::~UniqueStringSet() { 34 | strings.clear(); 35 | } 36 | 37 | void UniqueStringSet::Clear() noexcept { 38 | strings.clear(); 39 | } 40 | 41 | const char *UniqueStringSet::Save(const char *text) { 42 | if (!text) 43 | return nullptr; 44 | 45 | for (const UniqueString &us : strings) { 46 | if (text == us.get()) { 47 | return us.get(); 48 | } 49 | } 50 | 51 | strings.push_back(UniqueStringCopy(text)); 52 | return strings.back().get(); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /wxSTC/src/scintilla/src/UniqueString.h: -------------------------------------------------------------------------------- 1 | // Scintilla source code edit control 2 | /** @file UniqueString.h 3 | ** Define UniqueString, a unique_ptr based string type for storage in containers 4 | ** and an allocator for UniqueString. 5 | ** Define UniqueStringSet which holds a set of strings, used to avoid holding many copies 6 | ** of font names. 7 | **/ 8 | // Copyright 2017 by Neil Hodgson 9 | // The License.txt file describes the conditions under which this software may be distributed. 10 | 11 | #ifndef UNIQUESTRING_H 12 | #define UNIQUESTRING_H 13 | 14 | #include "Compat.h" 15 | 16 | namespace Scintilla { 17 | 18 | constexpr bool IsNullOrEmpty(const char *text) noexcept { 19 | return text == nullptr || *text == '\0'; 20 | } 21 | 22 | using UniqueString = std::unique_ptr; 23 | 24 | /// Equivalent to strdup but produces a std::unique_ptr allocation to go 25 | /// into collections. 26 | UniqueString UniqueStringCopy(const char *text); 27 | 28 | // A set of strings that always returns the same pointer for each string. 29 | 30 | class UniqueStringSet { 31 | private: 32 | std::vector strings; 33 | public: 34 | UniqueStringSet(); 35 | // UniqueStringSet objects can not be copied. 36 | UniqueStringSet(const UniqueStringSet &) = delete; 37 | UniqueStringSet &operator=(const UniqueStringSet &) = delete; 38 | // UniqueStringSet objects can be moved. 39 | UniqueStringSet(UniqueStringSet &&) = default; 40 | UniqueStringSet &operator=(UniqueStringSet &&) = default; 41 | ~UniqueStringSet(); 42 | void Clear() noexcept; 43 | const char *Save(const char *text); 44 | }; 45 | 46 | } 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /wxSTC/src/stc_i18n.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Name: src/stc/stc_i18n.cpp 3 | // Purpose: Dummy file containing translatable strings from Scintilla 4 | // Author: Vadim Zeitlin 5 | // Created: 2010-06-09 6 | // Copyright: (c) 2010 Vadim Zeitlin 7 | // Licence: wxWindows licence 8 | /////////////////////////////////////////////////////////////////////////////// 9 | 10 | // This is just a collection of translatable strings defined in Scintilla 11 | // sources. It is used by locale/Makefile only and not supposed to be compiled. 12 | #error "This file is not supposed to be compiled." 13 | 14 | // These strings were manually extracted from ScintillaBase::ContextMenu(). 15 | _("Undo") 16 | _("Redo") 17 | _("Cut") 18 | _("Copy") 19 | _("Paste") 20 | _("Delete") 21 | _("Select All") 22 | 23 | --------------------------------------------------------------------------------