From 4b2329d6289b5a57995e0cfda8d9b4c079962954 Mon Sep 17 00:00:00 2001 From: fktn Date: Sat, 1 Jun 2024 17:17:50 +0900 Subject: [PATCH 1/6] fixed parse error on explicit mappings as a block sequence entry (#353) --- include/fkYAML/detail/input/deserializer.hpp | 34 ++++++---- single_include/fkYAML/node.hpp | 34 ++++++---- test/unit_test/test_deserializer_class.cpp | 68 ++++++++++++++++++++ 3 files changed, 114 insertions(+), 22 deletions(-) diff --git a/include/fkYAML/detail/input/deserializer.hpp b/include/fkYAML/detail/input/deserializer.hpp index fcfd0f97..5c5caf21 100644 --- a/include/fkYAML/detail/input/deserializer.hpp +++ b/include/fkYAML/detail/input/deserializer.hpp @@ -281,6 +281,12 @@ class basic_deserializer { apply_directive_set(*mp_current_node); } + if (m_context_stack.back().state == context_state_t::BLOCK_SEQUENCE) { + sequence_type& seq = mp_current_node->template get_value_ref(); + seq.emplace_back(node_type::mapping()); + m_context_stack.emplace_back(line, indent, context_state_t::BLOCK_MAPPING, &(seq.back())); + } + type = lexer.get_next_token(); if (type == lexical_token_t::SEQUENCE_BLOCK_PREFIX) { // heap-allocated node will be freed in handling the corresponding KEY_SEPARATOR event @@ -1012,19 +1018,25 @@ class basic_deserializer { type = lexer.get_next_token(); if (type == lexical_token_t::KEY_SEPARATOR) { - if (mp_current_node->is_scalar()) { - if (line != lexer.get_lines_processed()) { - // This path is for explicit mapping key separator(:) - assign_node_value(std::move(node), line, indent); - if (m_context_stack.back().state != context_state_t::BLOCK_MAPPING_EXPLICIT_KEY) { - mp_current_node = m_context_stack.back().p_node; - m_context_stack.pop_back(); - } - indent = lexer.get_last_token_begin_pos(); - line = lexer.get_lines_processed(); - return true; + if (line != lexer.get_lines_processed()) { + // This path is for explicit mapping key separator like: + // + // ```yaml + // ? foo + // : bar + // # ^ this separator + // ``` + assign_node_value(std::move(node), line, indent); + if (m_context_stack.back().state != context_state_t::BLOCK_MAPPING_EXPLICIT_KEY) { + mp_current_node = m_context_stack.back().p_node; + m_context_stack.pop_back(); } + indent = lexer.get_last_token_begin_pos(); + line = lexer.get_lines_processed(); + return true; + } + if (mp_current_node->is_scalar()) { parse_context& cur_context = m_context_stack.back(); switch (cur_context.state) { case context_state_t::BLOCK_MAPPING_EXPLICIT_KEY: diff --git a/single_include/fkYAML/node.hpp b/single_include/fkYAML/node.hpp index dd9f5b67..0d58adbf 100644 --- a/single_include/fkYAML/node.hpp +++ b/single_include/fkYAML/node.hpp @@ -4490,6 +4490,12 @@ class basic_deserializer { apply_directive_set(*mp_current_node); } + if (m_context_stack.back().state == context_state_t::BLOCK_SEQUENCE) { + sequence_type& seq = mp_current_node->template get_value_ref(); + seq.emplace_back(node_type::mapping()); + m_context_stack.emplace_back(line, indent, context_state_t::BLOCK_MAPPING, &(seq.back())); + } + type = lexer.get_next_token(); if (type == lexical_token_t::SEQUENCE_BLOCK_PREFIX) { // heap-allocated node will be freed in handling the corresponding KEY_SEPARATOR event @@ -5221,19 +5227,25 @@ class basic_deserializer { type = lexer.get_next_token(); if (type == lexical_token_t::KEY_SEPARATOR) { - if (mp_current_node->is_scalar()) { - if (line != lexer.get_lines_processed()) { - // This path is for explicit mapping key separator(:) - assign_node_value(std::move(node), line, indent); - if (m_context_stack.back().state != context_state_t::BLOCK_MAPPING_EXPLICIT_KEY) { - mp_current_node = m_context_stack.back().p_node; - m_context_stack.pop_back(); - } - indent = lexer.get_last_token_begin_pos(); - line = lexer.get_lines_processed(); - return true; + if (line != lexer.get_lines_processed()) { + // This path is for explicit mapping key separator like: + // + // ```yaml + // ? foo + // : bar + // # ^ this separator + // ``` + assign_node_value(std::move(node), line, indent); + if (m_context_stack.back().state != context_state_t::BLOCK_MAPPING_EXPLICIT_KEY) { + mp_current_node = m_context_stack.back().p_node; + m_context_stack.pop_back(); } + indent = lexer.get_last_token_begin_pos(); + line = lexer.get_lines_processed(); + return true; + } + if (mp_current_node->is_scalar()) { parse_context& cur_context = m_context_stack.back(); switch (cur_context.state) { case context_state_t::BLOCK_MAPPING_EXPLICIT_KEY: diff --git a/test/unit_test/test_deserializer_class.cpp b/test/unit_test/test_deserializer_class.cpp index d65b02cf..69ec0fef 100644 --- a/test/unit_test/test_deserializer_class.cpp +++ b/test/unit_test/test_deserializer_class.cpp @@ -1290,6 +1290,74 @@ TEST_CASE("Deserializer_ExplicitBlockMapping") { REQUIRE(key2_1_node.is_string()); REQUIRE(key2_1_node.get_value_ref() == "qux"); } + + SECTION("Explicit block mapping as block sequence entry") { + std::string input = "- ? foo: 123\n" + " : true: 3.14\n" + "- ? - bar\n" + " : - null\n" + "- ? - ? baz: false\n" + " : 456\n" + " : - ? qux: 789\n" + " : 1.41"; + REQUIRE_NOTHROW(root = deserializer.deserialize(fkyaml::detail::input_adapter(input))); + + REQUIRE(root.is_sequence()); + REQUIRE(root.size() == 3); + + fkyaml::node& root_0_node = root[0]; + REQUIRE(root_0_node.is_mapping()); + REQUIRE(root_0_node.size() == 1); + fkyaml::node foo123_mapkey = {{"foo", 123}}; + REQUIRE(root_0_node.contains(foo123_mapkey)); + + fkyaml::node& root_0_foo123_mapkey_node = root_0_node[std::move(foo123_mapkey)]; + REQUIRE(root_0_foo123_mapkey_node.is_mapping()); + REQUIRE(root_0_foo123_mapkey_node.size() == 1); + REQUIRE(root_0_foo123_mapkey_node.contains(true)); + + fkyaml::node& root_0_foo123_mapkey_true_node = root_0_foo123_mapkey_node[true]; + REQUIRE(root_0_foo123_mapkey_true_node.is_float_number()); + REQUIRE(root_0_foo123_mapkey_true_node.get_value() == 3.14); + + fkyaml::node& root_1_node = root[1]; + REQUIRE(root_1_node.is_mapping()); + REQUIRE(root_1_node.size() == 1); + fkyaml::node bar_seqkey = {"bar"}; + REQUIRE(root_1_node.contains(bar_seqkey)); + + fkyaml::node& root_1_bar_seqkey_node = root_1_node[std::move(bar_seqkey)]; + REQUIRE(root_1_bar_seqkey_node.is_sequence()); + REQUIRE(root_1_bar_seqkey_node.size() == 1); + + fkyaml::node& root_1_bar_seqkey_0_node = root_1_bar_seqkey_node[0]; + REQUIRE(root_1_bar_seqkey_0_node.is_null()); + REQUIRE(root_1_bar_seqkey_0_node.get_value() == nullptr); + + fkyaml::node& root_2_node = root[2]; + REQUIRE(root_2_node.is_mapping()); + REQUIRE(root_2_node.size() == 1); + fkyaml::node bazfalse_map = {{"baz", false}}; + fkyaml::node bazfalse_456_map = {{std::move(bazfalse_map), 456}}; + fkyaml::node bazfalse_456_seqmapkey = fkyaml::node::sequence(); + bazfalse_456_seqmapkey.get_value_ref().emplace_back(std::move(bazfalse_456_map)); + REQUIRE(root_2_node.contains(bazfalse_456_seqmapkey)); + + fkyaml::node& root_2_bazfalse_456_seqmapkey_node = root_2_node[std::move(bazfalse_456_seqmapkey)]; + REQUIRE(root_2_bazfalse_456_seqmapkey_node.is_sequence()); + REQUIRE(root_2_bazfalse_456_seqmapkey_node.size() == 1); + + fkyaml::node& root_2_bazfalse_456_seqmapkey_0_node = root_2_bazfalse_456_seqmapkey_node[0]; + REQUIRE(root_2_bazfalse_456_seqmapkey_0_node.is_mapping()); + REQUIRE(root_2_bazfalse_456_seqmapkey_0_node.size() == 1); + fkyaml::node qux789_mapkey = {{"qux", 789}}; + REQUIRE(root_2_bazfalse_456_seqmapkey_0_node.contains(qux789_mapkey)); + + fkyaml::node& root_2_bazfalse_456_seqmapkey_0_qux789_mapkey_node = + root_2_bazfalse_456_seqmapkey_0_node[std::move(qux789_mapkey)]; + REQUIRE(root_2_bazfalse_456_seqmapkey_0_qux789_mapkey_node.is_float_number()); + REQUIRE(root_2_bazfalse_456_seqmapkey_0_qux789_mapkey_node.get_value() == 1.41); + } } TEST_CASE("Deserializer_FlowSequence") { From 3364612a7b1671e23117e6f3d4113301c8c20266 Mon Sep 17 00:00:00 2001 From: fktn Date: Mon, 3 Jun 2024 00:14:29 +0900 Subject: [PATCH 2/6] Add benchmarking tool (#354) * add benchmarking tool for this and other YAML parser libraries * added descriptions on the benchmarking * add the benchmarking source into the clang-format targets * fixed assigned-but-not-used report from codacy --- CMakeLists.txt | 4 + Makefile | 16 +++ README.md | 18 ++++ scripts/run_clang_format.bat | 4 + scripts/run_clang_format.sh | 2 +- tool/benchmark/CMakeLists.txt | 85 ++++++++++++++++ tool/benchmark/README.md | 32 ++++++ tool/benchmark/macos.yml | 157 ++++++++++++++++++++++++++++++ tool/benchmark/main.cpp | 114 ++++++++++++++++++++++ tool/benchmark/result_debug.log | 8 ++ tool/benchmark/result_release.log | 8 ++ 11 files changed, 447 insertions(+), 1 deletion(-) create mode 100644 tool/benchmark/CMakeLists.txt create mode 100644 tool/benchmark/README.md create mode 100644 tool/benchmark/macos.yml create mode 100644 tool/benchmark/main.cpp create mode 100644 tool/benchmark/result_debug.log create mode 100644 tool/benchmark/result_release.log diff --git a/CMakeLists.txt b/CMakeLists.txt index 05566081..6b7e8322 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,6 +127,10 @@ if(FK_YAML_RUN_IWYU) add_subdirectory(tool/iwyu) endif() +if(FK_YAML_RUN_BENCHMARK) + add_subdirectory(tool/benchmark) +endif() + ################################# # Install a pkg-config file # ################################# diff --git a/Makefile b/Makefile index e492f4f4..6f711609 100644 --- a/Makefile +++ b/Makefile @@ -167,6 +167,20 @@ html-coverage: lcov-coverage --title "fkYAML: A C++ header-only YAML library" \ --legend --demangle-cpp --show-details --branch-coverage +################# +# Benchmark # +################# + +bm-debug: + cmake -B build_bm_debug -S . -DCMAKE_BUILD_TYPE=Debug -DFK_YAML_RUN_BENCHMARK=ON + cmake --build build_bm_debug --config Debug + ./build_bm_release/tool/benchmark/benchmarker ./tool/benchmark/macos.yml > ./tool/benchmark/result_debug.log + +bm-release: + cmake -B build_bm_release -S . -DCMAKE_BUILD_TYPE=Release -DFK_YAML_RUN_BENCHMARK=ON + cmake --build build_bm_release --config Release + ./build_bm_release/tool/benchmark/benchmarker ./tool/benchmark/macos.yml > ./tool/benchmark/result_release.log + ################### # Maintenance # ################### @@ -174,6 +188,8 @@ html-coverage: lcov-coverage clean: rm -rf \ build \ + build_bm_debug \ + build_bm_release \ build_clang_format \ build_clang_sanitizers \ build_clang_tidy \ diff --git a/README.md b/README.md index addbf3dc..6495c8c2 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ You can add YAML support into your projects by just including header files where - [Community Support](#community-support) - [How to use fkYAML](#how-to-use-fkyaml) - [How to test fkYAML](#how-to-test-fkYAML) +- [Benchmarking](#benchmarking) - [Supported compilers](#supported-compilers) - [License](#license) - [Used third-party tools](#used-third-party-tools) @@ -84,6 +85,22 @@ $ cmake --build build --config Debug $ ctest -C Debug --test-dir build --output-on-failure ``` +## Benchmarking + +Though experimental, benchmarking scores are now available with [the dedicated benchmarking tool](./tool/benchmark/README.md) for the parsing. +On an AMD Ryzen 7 5800H @3.20GHz with g++11.4.0 in Ubuntu22.04 (WSL2), fkYAML processes [the YAML source](https://github.com/fktn-k/fkYAML/blob/develop/tool/benchmark/macos.yml) at a competitive speed compared against other existing YAML libraries for C/C++: + +| Benchmark | Release (MB/s) | Debug (MB/s) | +| ---------------------------------- | -------------- | ------------ | +| fkYAML | 35.072 | 34.521 | +| libfyaml | 30.601 | 29.784 | +| rapidyaml
(with mutable buff) | 142.444 | 144.956 | +| rapidyaml
(with immutable buff) | 144.194 | 142.680 | +| yaml-cpp | 7.228 | 7.278 | + +Although [rapidyaml](https://github.com/biojppm/rapidyaml) is in general 4x faster than fkYAML as it focuses on high performance, fkYAML is 14% faster than [libfyaml](https://github.com/pantoniou/libfyaml) and also 4.8x faster than [yaml-cpp](https://github.com/jbeder/yaml-cpp). +Note that, since fkYAML deserializes scalars into native booleans or integers during the parsing, the performance could be more faster in some real use cases. + ## Supported compilers Currently, the following compilers are known to work and used in GitHub Actions workflows: @@ -179,6 +196,7 @@ Thanks a lot! - [**Codacy**](https://www.codacy.com/) for further [code analysis](https://app.codacy.com/gh/fktn-k/fkYAML/). - [**Coveralls**](https://coveralls.io/) to measure [code coverage](https://coveralls.io/github/fktn-k/fkYAML?branch=develop). - [**Catch2**](https://github.com/catchorg/Catch2) as a unit-test framework. +- [**Google Benchmark**](https://github.com/google/benchmark) as a benchmarking framework. - [**github-changelog-generator**](https://github.com/github-changelog-generator/github-changelog-generator) to generate the [CHANGELOG.md](https://github.com/fktn-k/fkYAML/tree/develop/CHANGELOG.md) file. - [**include-what-you-use**](https://github.com/include-what-you-use/include-what-you-use) to check the fkYAML library source files are each self-contained. - [**lcov**](https://github.com/linux-test-project/lcov) to process coverage information and generate an HTML view. diff --git a/scripts/run_clang_format.bat b/scripts/run_clang_format.bat index ce38fcb1..da267b05 100644 --- a/scripts/run_clang_format.bat +++ b/scripts/run_clang_format.bat @@ -25,4 +25,8 @@ for /r %ROOT_PATH%\docs\examples %%f in (*.cpp) do ( .\venv_clang_format\Scripts\clang-format.exe %%f -i ) +for /r %ROOT_PATH%\tool\benchmark %%f in (*.cpp) do ( + .\venv_clang_format\Scripts\clang-format.exe %%f -i +) + cd %CALLER_DIR% diff --git a/scripts/run_clang_format.sh b/scripts/run_clang_format.sh index f41a8570..e24c5593 100755 --- a/scripts/run_clang_format.sh +++ b/scripts/run_clang_format.sh @@ -23,6 +23,6 @@ if [ ! -e "$SCRIPT_DIR"/venv_clang_format/"$VENV_BINARY_DIR"/clang-format ]; the "$SCRIPT_DIR"/venv_clang_format/"$VENV_BINARY_DIR"/pip install clang-format==14.0.0 fi -for f in $(find "$ROOT_DIR/include" "$ROOT_DIR/test" "$ROOT_DIR/docs/examples" -type f -name "*.hpp" -o -name "*.cpp" | sort); do +for f in $(find "$ROOT_DIR/include" "$ROOT_DIR/test" "$ROOT_DIR/docs/examples" "$ROOT_DIR/tool/benchmark" -type f -name "*.hpp" -o -name "*.cpp" | sort); do "$SCRIPT_DIR"/venv_clang_format/"$VENV_BINARY_DIR"/clang-format "$f" -i done diff --git a/tool/benchmark/CMakeLists.txt b/tool/benchmark/CMakeLists.txt new file mode 100644 index 00000000..0ee69254 --- /dev/null +++ b/tool/benchmark/CMakeLists.txt @@ -0,0 +1,85 @@ + +################################ +# Set up benchmarking tool # +################################ + +# disable building unit tests for Google Benchmark. +set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) +set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE) + +include(FetchContent) +FetchContent_Declare( + gbench + URL https://github.com/google/benchmark/archive/refs/tags/v1.8.4.zip +) +FetchContent_MakeAvailable(gbench) + +########################### +# Set up YAML parsers # +########################### + +# libfyaml (not implemented for Windows) +if(NOT WIN32) + FetchContent_Declare( + libfyaml + GIT_REPOSITORY https://github.com/pantoniou/libfyaml + GIT_TAG v0.9 + ) + FetchContent_MakeAvailable(libfyaml) +endif() + +# rapidyaml +FetchContent_Declare( + rapidyaml + GIT_REPOSITORY https://github.com/biojppm/rapidyaml + GIT_TAG v0.6.0 + GIT_SUBMODULES "ext/c4core" +) +FetchContent_MakeAvailable(rapidyaml) + +# yaml-cpp +set(YAML_CPP_BUILD_CONTRIB OFF CACHE BOOL "" FORCE) +set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "" FORCE) +FetchContent_Declare( + yaml_cpp + GIT_REPOSITORY https://github.com/jbeder/yaml-cpp + GIT_TAG 0.8.0 +) +FetchContent_MakeAvailable(yaml_cpp) + +############################### +# Set up benchmarking app # +############################### + +add_executable( + benchmarker + main.cpp +) + +target_compile_options( + benchmarker + PRIVATE + $<$:-O1> + $<$:-O2> +) + +target_link_libraries( + benchmarker + PRIVATE + fkYAML::fkYAML + ryml::ryml + yaml-cpp::yaml-cpp + benchmark::benchmark +) +if(NOT WIN32) + target_link_libraries( + benchmarker + PRIVATE + fyaml + ) + target_compile_definitions( + benchmarker + PRIVATE + FK_YAML_BM_HAS_LIBFYAML + ) +endif() diff --git a/tool/benchmark/README.md b/tool/benchmark/README.md new file mode 100644 index 00000000..3dae7f38 --- /dev/null +++ b/tool/benchmark/README.md @@ -0,0 +1,32 @@ +# Benchmark + +This tool runs benchmarking with [the Google Benchmark library](https://github.com/google/benchmark/) ([v1.8.4](https://github.com/google/benchmark/releases/tag/v1.8.4)) against fkYAML and the following C++ YAML libraries tagged with the specified versions respectively: +* [libfyaml](https://github.com/pantoniou/libfyaml) ([v0.9](https://github.com/pantoniou/libfyaml/releases/tag/v0.9)) +* [rapidyaml](https://github.com/biojppm/rapidyaml) ([v0.6.0](https://github.com/biojppm/rapidyaml/releases/tag/v0.6.0)) +* [yaml-cpp](https://github.com/jbeder/yaml-cpp) ([0.8.0](https://github.com/jbeder/yaml-cpp/releases/tag/0.8.0)) + +Currently, the [macos.yml](https://github.com/fktn-k/fkYAML/blob/develop/tool/benchmark/macos.yml) file is used for the benchmarking which was copied from the [.github/workflows](https://github.com/fktn-k/fkYAML/tree/develop/.github/workflows) directory at the point of the commit hash [e1c740f0c93766cfdd0b704ffb46113acd6bd922](https://github.com/fktn-k/fkYAML/commit/e1c740f0c93766cfdd0b704ffb46113acd6bd922). +More YAML files are planned to be added for the benchmarking so the resulting score would be more accurate and reliable. + +## How to Use + +Build and run this tool with the following commands: + +```bash +$ cd path/to/fkYAML +$ cmake -S . -B build -DCMAKE_BUILD_TYPE={Debug|Release} -DFK_YAML_RUN_BENCHMARK=ON +$ cmake --build build --config {Debug|Release} +$ ./build/tool/benchmark/benchmarker ./tool/benchmark/macos.yml +``` + +Then, you should see a console ouput from the Google Benchmark library in the following format. + +```bash +------------------------------------------------------------------------------------- +Benchmark Time CPU Iterations UserCounters... +------------------------------------------------------------------------------------- +bm_fkyaml_parse xxxxx ns xxxxx ns xxxxx bytes_per_second=xx.xxxxMi/s items_per_second=xx.xxxxk/s +... +``` + +Visit [the user guide](https://github.com/google/benchmark/blob/v1.8.4/docs/user_guide.md) in the Google Benchmark repository for more information on the output format. diff --git a/tool/benchmark/macos.yml b/tool/benchmark/macos.yml new file mode 100644 index 00000000..f141133f --- /dev/null +++ b/tool/benchmark/macos.yml @@ -0,0 +1,157 @@ +name: macOS + +on: + push: + branches: + - develop + - main + paths: + - .github/workflows/macos.yml + - cmake/** + - include/** + - single_include/** + - test/** + - CMakeLists.txt + pull_request: + paths: + - .github/workflows/macos.yml + - cmake/** + - include/** + - single_include/** + - test/** + - CMakeLists.txt + workflow_dispatch: + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +jobs: + macos-latest: + timeout-minutes: 10 + runs-on: macos-latest + strategy: + matrix: + build_type: [ Debug, Release ] + single_header: ["ON", "OFF"] + env: + JOBS: 2 + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON -DFK_YAML_USE_SINGLE_HEADER=${{matrix.single_header}} + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} + + xcode_for_macos11: + timeout-minutes: 10 + runs-on: macos-11 + strategy: + matrix: + xcode: [ '11.7', '12.4', '12.5.1', '13.0', '13.1', '13.2.1' ] + build_type: [ Debug, Release ] + env: + DEVELOPER_DIR: /Applications/Xcode_${{matrix.xcode}}.app/Contents/Developer + JOBS: 2 + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} + + xcode_for_macos12: + timeout-minutes: 10 + runs-on: macos-12 + strategy: + matrix: + xcode: [ '13.1', '13.2.1', '13.3.1', '13.4.1', '14.0.1', '14.1', '14.2' ] + build_type: [ Debug, Release ] + env: + DEVELOPER_DIR: /Applications/Xcode_${{matrix.xcode}}.app/Contents/Developer + JOBS: 2 + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} + + xcode_for_macos13: + timeout-minutes: 10 + runs-on: macos-13 + strategy: + matrix: + xcode: [ '14.1', '14.2', '14.3.1', '15.0.1', '15.1', '15.2' ] + build_type: [ Debug, Release ] + env: + DEVELOPER_DIR: /Applications/Xcode_${{matrix.xcode}}.app/Contents/Developer + JOBS: 3 + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} + + xcode_for_macos14: + timeout-minutes: 10 + runs-on: macos-14 + strategy: + matrix: + xcode: [ '14.3.1', '15.0.1', '15.1', '15.2', '15.3' ] + build_type: [ Debug, Release ] + env: + DEVELOPER_DIR: /Applications/Xcode_${{matrix.xcode}}.app/Contents/Developer + JOBS: 2 + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} diff --git a/tool/benchmark/main.cpp b/tool/benchmark/main.cpp new file mode 100644 index 00000000..26269801 --- /dev/null +++ b/tool/benchmark/main.cpp @@ -0,0 +1,114 @@ +// _______ __ __ __ _____ __ __ __ +// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML +// +// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani +// SPDX-License-Identifier: MIT + +#include + +#include + +#include +#include +#include +#include +#include +#include + +static std::string test_src {}; + +void prepare_test_source(char* filename) { + FILE* fp = std::fopen(filename, "rb"); + char tmp_buf[256] {}; + std::size_t buf_size = sizeof(tmp_buf) / sizeof(char); + std::size_t read_size = 0; + while ((read_size = std::fread(&tmp_buf[0], sizeof(char), buf_size, fp)) > 0) { + test_src.append(tmp_buf, tmp_buf + read_size); + } + std::fclose(fp); + fp = nullptr; +} + +int main(int argc, char** argv) { + prepare_test_source(argv[1]); + + benchmark::Initialize(&argc, argv); + benchmark::RunSpecifiedBenchmarks(); + benchmark::Shutdown(); + + return 0; +} + +// +// Benchmarking functions. +// + +// fkYAML +void bm_fkyaml_parse(benchmark::State& st) { + for (auto _ : st) { + fkyaml::node n = fkyaml::node::deserialize(test_src); + } + + st.SetItemsProcessed(st.iterations()); + st.SetBytesProcessed(st.iterations() * test_src.size()); +} + +// yaml-cpp +void bm_yamlcpp_parse(benchmark::State& st) { + for (auto _ : st) { + YAML::Node n = YAML::Load(test_src); + } + + st.SetItemsProcessed(st.iterations()); + st.SetBytesProcessed(st.iterations() * test_src.size()); +} + +#ifdef FK_YAML_BM_HAS_LIBFYAML +// libfyaml +void bm_libfyaml_parse(benchmark::State& st) { + const char* p_test_src = test_src.c_str(); + std::size_t test_src_size = std::distance(test_src.begin(), test_src.end()); + + for (auto _ : st) { + fy_document* p_fyd = fy_document_build_from_string(nullptr, p_test_src, test_src_size); + (void)p_fyd; + } + + st.SetItemsProcessed(st.iterations()); + st.SetBytesProcessed(st.iterations() * test_src.size()); +} +#endif + +// rapidyaml (in place) +void bm_rapidyaml_parse_inplace(benchmark::State& st) { + c4::substr c4_test_src = c4::to_substr(test_src).trimr('\0'); + for (auto _ : st) { + ryml::Tree tree = ryml::parse_in_place(c4_test_src); + } + + st.SetItemsProcessed(st.iterations()); + st.SetBytesProcessed(st.iterations() * test_src.size()); +} + +// rapidyaml (arena) +void bm_rapidyaml_parse_arena(benchmark::State& st) { + c4::csubstr src = c4::to_csubstr(test_src).trimr('\0'); + + for (auto _ : st) { + ryml::Tree tree = ryml::parse_in_arena(src); + } + + st.SetItemsProcessed(st.iterations()); + st.SetBytesProcessed(st.iterations() * test_src.size()); +} + +// Register benchmarking functions. +BENCHMARK(bm_fkyaml_parse); +BENCHMARK(bm_yamlcpp_parse); +#ifdef FK_YAML_BM_HAS_LIBFYAML +BENCHMARK(bm_libfyaml_parse); +#endif +BENCHMARK(bm_rapidyaml_parse_inplace); +BENCHMARK(bm_rapidyaml_parse_arena); diff --git a/tool/benchmark/result_debug.log b/tool/benchmark/result_debug.log new file mode 100644 index 00000000..54138144 --- /dev/null +++ b/tool/benchmark/result_debug.log @@ -0,0 +1,8 @@ +------------------------------------------------------------------------------------- +Benchmark Time CPU Iterations UserCounters... +------------------------------------------------------------------------------------- +bm_fkyaml_parse 124065 ns 124066 ns 5652 bytes_per_second=34.5214Mi/s items_per_second=8.0602k/s +bm_yamlcpp_parse 588453 ns 588466 ns 1197 bytes_per_second=7.27816Mi/s items_per_second=1.69933k/s +bm_libfyaml_parse 143796 ns 143796 ns 5611 bytes_per_second=29.7849Mi/s items_per_second=6.9543k/s +bm_rapidyaml_parse_inplace 29546 ns 29547 ns 23558 bytes_per_second=144.956Mi/s items_per_second=33.8449k/s +bm_rapidyaml_parse_arena 30017 ns 30018 ns 23275 bytes_per_second=142.68Mi/s items_per_second=33.3134k/s diff --git a/tool/benchmark/result_release.log b/tool/benchmark/result_release.log new file mode 100644 index 00000000..1bbbefc0 --- /dev/null +++ b/tool/benchmark/result_release.log @@ -0,0 +1,8 @@ +------------------------------------------------------------------------------------- +Benchmark Time CPU Iterations UserCounters... +------------------------------------------------------------------------------------- +bm_fkyaml_parse 122120 ns 122118 ns 5693 bytes_per_second=35.0722Mi/s items_per_second=8.18879k/s +bm_yamlcpp_parse 592530 ns 592543 ns 1193 bytes_per_second=7.22809Mi/s items_per_second=1.68764k/s +bm_libfyaml_parse 139955 ns 139959 ns 5477 bytes_per_second=30.6015Mi/s items_per_second=7.14497k/s +bm_rapidyaml_parse_inplace 30067 ns 30068 ns 23568 bytes_per_second=142.444Mi/s items_per_second=33.2583k/s +bm_rapidyaml_parse_arena 29702 ns 29703 ns 23177 bytes_per_second=144.194Mi/s items_per_second=33.6669k/s From 242b2dae5b592c34a2db1bf2cc05f5878ed62dcf Mon Sep 17 00:00:00 2001 From: fktn Date: Mon, 3 Jun 2024 02:40:55 +0900 Subject: [PATCH 3/6] Fix parse error on smal negative integer keys (#355) --- include/fkYAML/detail/input/lexical_analyzer.hpp | 9 ++------- single_include/fkYAML/node.hpp | 9 ++------- test/unit_test/test_deserializer_class.cpp | 9 +++++++-- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/include/fkYAML/detail/input/lexical_analyzer.hpp b/include/fkYAML/detail/input/lexical_analyzer.hpp index b4403f7d..6abadf4a 100644 --- a/include/fkYAML/detail/input/lexical_analyzer.hpp +++ b/include/fkYAML/detail/input/lexical_analyzer.hpp @@ -164,16 +164,11 @@ class lexical_analyzer { default: break; } - // if (next == ' ') { - // // Move a cursor to the beginning of the next token. - // m_cur_itr += 2; - // return lexical_token_t::SEQUENCE_BLOCK_PREFIX; - // } bool is_available = (std::distance(m_cur_itr, m_end_itr) > 2); if (is_available) { - m_cur_itr += 3; - if (std::equal(m_token_begin_itr, m_cur_itr, "---")) { + if (std::equal(m_token_begin_itr, m_cur_itr + 3, "---")) { + m_cur_itr += 3; return lexical_token_t::END_OF_DIRECTIVES; } } diff --git a/single_include/fkYAML/node.hpp b/single_include/fkYAML/node.hpp index 0d58adbf..11fbf553 100644 --- a/single_include/fkYAML/node.hpp +++ b/single_include/fkYAML/node.hpp @@ -2771,16 +2771,11 @@ class lexical_analyzer { default: break; } - // if (next == ' ') { - // // Move a cursor to the beginning of the next token. - // m_cur_itr += 2; - // return lexical_token_t::SEQUENCE_BLOCK_PREFIX; - // } bool is_available = (std::distance(m_cur_itr, m_end_itr) > 2); if (is_available) { - m_cur_itr += 3; - if (std::equal(m_token_begin_itr, m_cur_itr, "---")) { + if (std::equal(m_token_begin_itr, m_cur_itr + 3, "---")) { + m_cur_itr += 3; return lexical_token_t::END_OF_DIRECTIVES; } } diff --git a/test/unit_test/test_deserializer_class.cpp b/test/unit_test/test_deserializer_class.cpp index 69ec0fef..bd0d6f83 100644 --- a/test/unit_test/test_deserializer_class.cpp +++ b/test/unit_test/test_deserializer_class.cpp @@ -1634,17 +1634,22 @@ TEST_CASE("Deserializer_FlowMapping") { } SECTION("root flow mapping") { - REQUIRE_NOTHROW(root = deserializer.deserialize(fkyaml::detail::input_adapter("{foo: 123, true: 3.14}"))); + REQUIRE_NOTHROW( + root = deserializer.deserialize(fkyaml::detail::input_adapter("{foo: 123,-4: null,true: 3.14}"))); REQUIRE(root.is_mapping()); - REQUIRE(root.size() == 2); + REQUIRE(root.size() == 3); REQUIRE(root.contains("foo")); + REQUIRE(root.contains(-4)); REQUIRE(root.contains(true)); fkyaml::node& foo_node = root["foo"]; REQUIRE(foo_node.is_integer()); REQUIRE(foo_node.get_value() == 123); + fkyaml::node& minus4_node = root[-4]; + REQUIRE(minus4_node.is_null()); + fkyaml::node& true_node = root[true]; REQUIRE(true_node.is_float_number()); REQUIRE(true_node.get_value() == 3.14); From ff1fa9b548aa0ec5c2c1f825c6ded3b187cef65e Mon Sep 17 00:00:00 2001 From: fktn Date: Wed, 5 Jun 2024 22:10:08 +0900 Subject: [PATCH 4/6] Refactor for optimization (#356) * optimized basic_node's destructor * optimized the scanning of block style scalars * removed redundant codes in the input_adapter module * improved the filtering of special scalars * simplified too classified member variables of the position_tracker class * updated parse performance data * run clang-format & amalgamation * add test case for missed branch in the scalar_scanner test --- Makefile | 2 +- README.md | 18 +- include/fkYAML/detail/input/input_adapter.hpp | 37 +-- .../fkYAML/detail/input/lexical_analyzer.hpp | 88 +++--- .../fkYAML/detail/input/position_tracker.hpp | 36 +-- .../fkYAML/detail/input/scalar_scanner.hpp | 49 +++- include/fkYAML/node.hpp | 63 +--- single_include/fkYAML/node.hpp | 273 ++++++++---------- test/unit_test/test_scalar_scanner_class.cpp | 1 + tool/benchmark/result_debug.log | 10 +- tool/benchmark/result_release.log | 10 +- 11 files changed, 277 insertions(+), 310 deletions(-) diff --git a/Makefile b/Makefile index 6f711609..74ff4d43 100644 --- a/Makefile +++ b/Makefile @@ -174,7 +174,7 @@ html-coverage: lcov-coverage bm-debug: cmake -B build_bm_debug -S . -DCMAKE_BUILD_TYPE=Debug -DFK_YAML_RUN_BENCHMARK=ON cmake --build build_bm_debug --config Debug - ./build_bm_release/tool/benchmark/benchmarker ./tool/benchmark/macos.yml > ./tool/benchmark/result_debug.log + ./build_bm_debug/tool/benchmark/benchmarker ./tool/benchmark/macos.yml > ./tool/benchmark/result_debug.log bm-release: cmake -B build_bm_release -S . -DCMAKE_BUILD_TYPE=Release -DFK_YAML_RUN_BENCHMARK=ON diff --git a/README.md b/README.md index 6495c8c2..168d6b2b 100644 --- a/README.md +++ b/README.md @@ -88,17 +88,17 @@ $ ctest -C Debug --test-dir build --output-on-failure ## Benchmarking Though experimental, benchmarking scores are now available with [the dedicated benchmarking tool](./tool/benchmark/README.md) for the parsing. -On an AMD Ryzen 7 5800H @3.20GHz with g++11.4.0 in Ubuntu22.04 (WSL2), fkYAML processes [the YAML source](https://github.com/fktn-k/fkYAML/blob/develop/tool/benchmark/macos.yml) at a competitive speed compared against other existing YAML libraries for C/C++: +On an AMD Ryzen 7 5800H @3.20GHz with g++11.4.0 in Ubuntu22.04 (WSL2), fkYAML parses [the YAML source](https://github.com/fktn-k/fkYAML/blob/develop/tool/benchmark/macos.yml) at a competitive speed compared against other existing YAML libraries for C/C++: -| Benchmark | Release (MB/s) | Debug (MB/s) | -| ---------------------------------- | -------------- | ------------ | -| fkYAML | 35.072 | 34.521 | -| libfyaml | 30.601 | 29.784 | -| rapidyaml
(with mutable buff) | 142.444 | 144.956 | -| rapidyaml
(with immutable buff) | 144.194 | 142.680 | -| yaml-cpp | 7.228 | 7.278 | +| Benchmark | Release (MB/s) | +| ---------------------------------- | -------------- | +| fkYAML | 40.491 | +| libfyaml | 31.110 | +| rapidyaml
(with mutable buff) | 147.221 | +| rapidyaml
(with immutable buff) | 144.904 | +| yaml-cpp | 7.397 | -Although [rapidyaml](https://github.com/biojppm/rapidyaml) is in general 4x faster than fkYAML as it focuses on high performance, fkYAML is 14% faster than [libfyaml](https://github.com/pantoniou/libfyaml) and also 4.8x faster than [yaml-cpp](https://github.com/jbeder/yaml-cpp). +Although [rapidyaml](https://github.com/biojppm/rapidyaml) is in general 4x faster than fkYAML as it focuses on high performance, fkYAML is 30% faster than [libfyaml](https://github.com/pantoniou/libfyaml) and also 5.4x faster than [yaml-cpp](https://github.com/jbeder/yaml-cpp). Note that, since fkYAML deserializes scalars into native booleans or integers during the parsing, the performance could be more faster in some real use cases. ## Supported compilers diff --git a/include/fkYAML/detail/input/input_adapter.hpp b/include/fkYAML/detail/input/input_adapter.hpp index b9dfca94..18748187 100644 --- a/include/fkYAML/detail/input/input_adapter.hpp +++ b/include/fkYAML/detail/input/input_adapter.hpp @@ -66,6 +66,7 @@ class iterator_input_adapter< /// @return std::char_traits::int_type A character or EOF. void fill_buffer(std::string& buffer) { buffer.clear(); + buffer.reserve(std::distance(m_current, m_end)); switch (m_encode_type) { case utf_encode_t::UTF_8: @@ -165,7 +166,6 @@ class iterator_input_adapter< if (consumed_size == 1) { encoded_buffer[0] = encoded_buffer[1]; - encoded_buffer[1] = 0; } encoded_buf_size -= consumed_size; @@ -288,6 +288,7 @@ class iterator_input_adapter< } } + buffer.reserve(std::distance(m_current, m_end)); while (m_current != m_end) { char c = char(*m_current++); if (c != '\r') { @@ -345,6 +346,8 @@ class iterator_input_adapter< std::array utf8_buffer {{0, 0, 0, 0}}; uint32_t utf8_buf_size {0}; + buffer.reserve(std::distance(m_current, m_end) * 2); + while (m_current != m_end || encoded_buf_size != 0) { while (m_current != m_end && encoded_buf_size < 2) { char16_t utf16 = *m_current++; @@ -421,6 +424,8 @@ class iterator_input_adapter< std::array utf8_buffer {{0, 0, 0, 0}}; uint32_t utf8_buf_size {0}; + buffer.reserve(std::distance(m_current, m_end) * 4); + while (m_current != m_end) { char32_t tmp = *m_current++; char32_t utf32 = char32_t( @@ -494,16 +499,17 @@ class file_input_adapter { FK_YAML_ASSERT(m_encode_type == utf_encode_t::UTF_8); char tmp_buf[256] {}; + std::size_t buf_size = sizeof(tmp_buf) / sizeof(tmp_buf[0]); std::size_t read_size = 0; - while ((read_size = std::fread(&tmp_buf[0], sizeof(char), sizeof(tmp_buf) / sizeof(tmp_buf[0]), m_file)) > 0) { + while ((read_size = std::fread(&tmp_buf[0], sizeof(char), buf_size, m_file)) > 0) { char* p_current = &tmp_buf[0]; char* p_end = p_current + read_size; do { // find CR in `tmp_buf`. - char* p_cr_or_end = p_end; - for (uint32_t i = 0; p_current + i != p_end; i++) { - if (*(p_current + i) == '\r') { - p_cr_or_end = p_current + i; + char* p_cr_or_end = p_current; + while (p_cr_or_end != p_end) { + if (*p_cr_or_end++ == '\r') { + break; } } @@ -560,8 +566,7 @@ class file_input_adapter { if (m_encode_type == utf_encode_t::UTF_16BE) { shift_bits[0] = 8; } - else // m_encode_type == utf_encode_t::UTF_16LE - { + else { // m_encode_type == utf_encode_t::UTF_16LE shift_bits[1] = 8; } @@ -586,7 +591,6 @@ class file_input_adapter { if (consumed_size == 1) { encoded_buffer[0] = encoded_buffer[1]; - encoded_buffer[1] = 0; } encoded_buf_size -= consumed_size; @@ -605,8 +609,7 @@ class file_input_adapter { shift_bits[1] = 16; shift_bits[2] = 8; } - else // m_encode_type == utf_encode_t::UTF_32LE - { + else { // m_encode_type == utf_encode_t::UTF_32LE shift_bits[1] = 8; shift_bits[2] = 16; shift_bits[3] = 24; @@ -695,10 +698,10 @@ class stream_input_adapter { char* p_end = p_current + read_size; do { // find CR in `tmp_buf`. - char* p_cr_or_end = p_end; - for (uint32_t i = 0; p_current + i != p_end; i++) { - if (*(p_current + i) == '\r') { - p_cr_or_end = p_current + i; + char* p_cr_or_end = p_current; + while (p_cr_or_end != p_end) { + if (*p_cr_or_end++ == '\r') { + break; } } @@ -787,7 +790,6 @@ class stream_input_adapter { if (consumed_size == 1) { encoded_buffer[0] = encoded_buffer[1]; - encoded_buffer[1] = 0; } encoded_buf_size -= consumed_size; @@ -806,8 +808,7 @@ class stream_input_adapter { shift_bits[1] = 16; shift_bits[2] = 8; } - else // m_encode_type == utf_encode_t::UTF_32LE - { + else { // m_encode_type == utf_encode_t::UTF_32LE shift_bits[1] = 8; shift_bits[2] = 16; shift_bits[3] = 24; diff --git a/include/fkYAML/detail/input/lexical_analyzer.hpp b/include/fkYAML/detail/input/lexical_analyzer.hpp index 6abadf4a..57791176 100644 --- a/include/fkYAML/detail/input/lexical_analyzer.hpp +++ b/include/fkYAML/detail/input/lexical_analyzer.hpp @@ -957,10 +957,8 @@ class lexical_analyzer { continue; } - uint8_t byte = static_cast(current); - // Handle unescaped control characters. - if (byte <= 0x1F) { + if (static_cast(current) <= 0x1F) { handle_unescaped_control_char(current); continue; } @@ -1032,39 +1030,40 @@ class lexical_analyzer { uint32_t chars_in_line = 0; bool is_extra_indented = false; + m_token_begin_itr = m_cur_itr; if (cur_indent > indent) { - uint32_t diff = cur_indent - indent; if (style == block_style_indicator_t::FOLDED) { m_value_buffer.push_back('\n'); is_extra_indented = true; } - m_value_buffer.append(diff, ' '); + + uint32_t diff = cur_indent - indent; + // m_value_buffer.append(diff, ' '); + m_token_begin_itr -= diff; chars_in_line += diff; } - for (char current = 0; m_cur_itr != m_end_itr; ++m_cur_itr) { - current = *m_cur_itr; - - if (current == '\n') { + for (; m_cur_itr != m_end_itr; ++m_cur_itr) { + if (*m_cur_itr == '\n') { if (style == block_style_indicator_t::LITERAL) { - m_value_buffer.push_back(current); - } - else // block_style_indicator_t::FOLDED - { if (chars_in_line == 0) { - // Just append a newline if the current line is empty. m_value_buffer.push_back('\n'); - is_extra_indented = false; - continue; } - - if (is_extra_indented) { - // A line being more indented is not folded. - m_value_buffer.push_back('\n'); - chars_in_line = 0; - is_extra_indented = false; - continue; + else { + m_value_buffer.append(m_token_begin_itr, m_cur_itr + 1); } + } + // block_style_indicator_t::FOLDED + else if (chars_in_line == 0) { + // Just append a newline if the current line is empty. + m_value_buffer.push_back('\n'); + } + else if (is_extra_indented) { + // A line being more indented is not folded. + m_value_buffer.append(m_token_begin_itr, m_cur_itr + 1); + } + else { + m_value_buffer.append(m_token_begin_itr, m_cur_itr); // Append a newline if the next line is empty. bool is_end_of_token = false; @@ -1075,7 +1074,7 @@ class lexical_analyzer { break; } - current = *m_cur_itr; + char current = *m_cur_itr; if (current == ' ') { continue; } @@ -1091,13 +1090,17 @@ class lexical_analyzer { if (is_end_of_token) { m_value_buffer.push_back('\n'); + chars_in_line = 0; break; } if (is_next_empty) { m_value_buffer.push_back('\n'); + chars_in_line = 0; continue; } + else { + } switch (char next = *(m_cur_itr + 1)) { case '\n': @@ -1114,6 +1117,7 @@ class lexical_analyzer { } // Reset the values for the next line. + m_token_begin_itr = m_cur_itr + 1; chars_in_line = 0; is_extra_indented = false; @@ -1121,26 +1125,34 @@ class lexical_analyzer { } // Handle indentation - m_pos_tracker.update_position(m_cur_itr); - cur_indent = m_pos_tracker.get_cur_pos_in_line(); - if (cur_indent < indent) { - if (current != ' ') { - // Interpret less indented non-space characters as the start of the next token. - break; + if (chars_in_line == 0) { + m_pos_tracker.update_position(m_cur_itr); + cur_indent = m_pos_tracker.get_cur_pos_in_line(); + if (cur_indent < indent) { + if (*m_cur_itr != ' ') { + // Interpret less indented non-space characters as the start of the next token. + break; + } + // skip a space if not yet indented enough + continue; } - // skip a space if not yet indented enough - continue; - } - if (style == block_style_indicator_t::FOLDED && chars_in_line == 0 && current == ' ') { - // A line being more indented is not folded. - m_value_buffer.push_back('\n'); - is_extra_indented = true; + if (*m_cur_itr == ' ' && style == block_style_indicator_t::FOLDED) { + // A line being more indented is not folded. + m_value_buffer.push_back('\n'); + is_extra_indented = true; + } + m_token_begin_itr = m_cur_itr; } - m_value_buffer.push_back(current); + + // m_value_buffer.push_back(current); ++chars_in_line; } + if (chars_in_line > 0) { + m_value_buffer.append(m_token_begin_itr, m_cur_itr); + } + // Manipulate the trailing line endings chomping indicator type. switch (chomp) { case chomping_indicator_t::STRIP: diff --git a/include/fkYAML/detail/input/position_tracker.hpp b/include/fkYAML/detail/input/position_tracker.hpp index 8ea6cb2c..b0bf0080 100644 --- a/include/fkYAML/detail/input/position_tracker.hpp +++ b/include/fkYAML/detail/input/position_tracker.hpp @@ -24,34 +24,22 @@ FK_YAML_DETAIL_NAMESPACE_BEGIN /// @brief A position tracker of the target buffer. class position_tracker { -private: - /// @brief A set of information on the current position in an input buffer. - struct position { - /// The current position from the beginning of an input buffer. - uint32_t cur_pos {0}; - /// The current position in the current line. - uint32_t cur_pos_in_line {0}; - /// The number of lines which have already been read. - uint32_t lines_read {0}; - }; - public: void set_target_buffer(const std::string& buffer) { m_begin = m_last = buffer.begin(); m_end = buffer.end(); - m_position = position {}; } /// @brief Update the set of the current position informations. /// @note This function doesn't support cases where cur_pos has moved backward from the last call. /// @param cur_pos The iterator to the current element of the buffer. void update_position(std::string::const_iterator cur_pos) { - m_position.cur_pos = static_cast(std::distance(m_begin, cur_pos)); - m_position.lines_read += static_cast(std::count(m_last, cur_pos, '\n')); + m_cur_pos = static_cast(std::distance(m_begin, cur_pos)); + m_lines_read += static_cast(std::count(m_last, cur_pos, '\n')); m_last = cur_pos; - if (m_position.lines_read == 0) { - m_position.cur_pos_in_line = m_position.cur_pos; + if (m_lines_read == 0) { + m_cur_pos_in_line = m_cur_pos; return; } @@ -62,23 +50,23 @@ class position_tracker { } count++; } - m_position.cur_pos_in_line = count; + m_cur_pos_in_line = count; } uint32_t get_cur_pos() const noexcept { - return m_position.cur_pos; + return m_cur_pos; } /// @brief Get the current position in the current line. /// @return uint32_t The current position in the current line. uint32_t get_cur_pos_in_line() const noexcept { - return m_position.cur_pos_in_line; + return m_cur_pos_in_line; } /// @brief Get the number of lines which have already been read. /// @return uint32_t The number of lines which have already been read. uint32_t get_lines_read() const noexcept { - return m_position.lines_read; + return m_lines_read; } private: @@ -88,8 +76,12 @@ class position_tracker { std::string::const_iterator m_end {}; /// The iterator to the last updated element in the target buffer. std::string::const_iterator m_last {}; - /// The current position in the target buffer. - position m_position {}; + /// The current position from the beginning of an input buffer. + uint32_t m_cur_pos {0}; + /// The current position in the current line. + uint32_t m_cur_pos_in_line {0}; + /// The number of lines which have already been read. + uint32_t m_lines_read {0}; }; FK_YAML_DETAIL_NAMESPACE_END diff --git a/include/fkYAML/detail/input/scalar_scanner.hpp b/include/fkYAML/detail/input/scalar_scanner.hpp index c0e0798a..8f26984c 100644 --- a/include/fkYAML/detail/input/scalar_scanner.hpp +++ b/include/fkYAML/detail/input/scalar_scanner.hpp @@ -30,6 +30,10 @@ inline bool is_digit(char c) { return ('0' <= c && c <= '9'); } +/// @brief Check if the given character is a hex-digit. +/// @note This function is needed to avoid assertion failures in `std::isxdigit()` especially when compiled with MSVC. +/// @param c A character to be checked. +/// @return true if the given character is a hex-digit, false otherwise. inline bool is_xdigit(char c) { return (('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')); } @@ -47,23 +51,40 @@ class scalar_scanner { } break; case 4: - if (token == "null" || token == "Null" || token == "NULL") { - return lexical_token_t::NULL_VALUE; - } - if (token == "true" || token == "True" || token == "TRUE") { - return lexical_token_t::BOOLEAN_VALUE; - } - if (token == ".inf" || token == ".Inf" || token == ".INF" || token == ".nan" || token == ".NaN" || - token == ".NAN") { - return lexical_token_t::FLOAT_NUMBER_VALUE; + switch (token[0]) { + case 'n': + case 'N': + if (token == "null" || token == "Null" || token == "NULL") { + return lexical_token_t::NULL_VALUE; + } + break; + case 't': + case 'T': + if (token == "true" || token == "True" || token == "TRUE") { + return lexical_token_t::BOOLEAN_VALUE; + } + break; + case '.': + if (token == ".inf" || token == ".Inf" || token == ".INF" || token == ".nan" || token == ".NaN" || + token == ".NAN") { + return lexical_token_t::FLOAT_NUMBER_VALUE; + } + break; } break; case 5: - if (token == "false" || token == "False" || token == "FALSE") { - return lexical_token_t::BOOLEAN_VALUE; - } - if (token == "-.inf" || token == "-.Inf" || token == "-.INF") { - return lexical_token_t::FLOAT_NUMBER_VALUE; + switch (token[0]) { + case 'f': + case 'F': + if (token == "false" || token == "False" || token == "FALSE") { + return lexical_token_t::BOOLEAN_VALUE; + } + break; + case '-': + if (token[1] == '.' && (token == "-.inf" || token == "-.Inf" || token == "-.INF")) { + return lexical_token_t::FLOAT_NUMBER_VALUE; + } + break; } break; } diff --git a/include/fkYAML/node.hpp b/include/fkYAML/node.hpp index b7895315..8a29baa0 100644 --- a/include/fkYAML/node.hpp +++ b/include/fkYAML/node.hpp @@ -153,57 +153,14 @@ class basic_node { /// containers. /// @param[in] type A Node type to determine the value to be destroyed. void destroy(node_t type) { - if (type == node_t::SEQUENCE || type == node_t::MAPPING) { - std::vector stack; - - if (type == node_t::SEQUENCE) { - stack.reserve(p_sequence->size()); - std::move(p_sequence->begin(), p_sequence->end(), std::back_inserter(stack)); - } - else { - stack.reserve(p_mapping->size()); - for (auto&& it : *p_mapping) { - stack.push_back(std::move(it.second)); - } - } - - while (!stack.empty()) { - basic_node current_node(std::move(stack.back())); - stack.pop_back(); - - if (current_node.is_alias()) { - continue; - } - - if (current_node.is_anchor()) { - auto itr = current_node.mp_meta->anchor_table.equal_range(current_node.m_prop.anchor).first; - std::advance(itr, current_node.m_prop.anchor_offset); - stack.emplace_back(std::move(itr->second)); - continue; - } - - if (current_node.is_sequence()) { - std::move( - current_node.m_node_value.p_sequence->begin(), - current_node.m_node_value.p_sequence->end(), - std::back_inserter(stack)); - current_node.m_node_value.p_sequence->clear(); - } - else if (current_node.is_mapping()) { - for (auto&& it : *current_node.m_node_value.p_mapping) { - stack.push_back(std::move(it.second)); - } - current_node.m_node_value.p_mapping->clear(); - } - } - } - switch (type) { case node_t::SEQUENCE: + p_sequence->clear(); destroy_object(p_sequence); p_sequence = nullptr; break; case node_t::MAPPING: + p_mapping->clear(); destroy_object(p_mapping); p_mapping = nullptr; break; @@ -242,7 +199,7 @@ class basic_node { using AllocTraitsType = std::allocator_traits; AllocType alloc {}; - auto deleter = [&](ObjType* obj) { + auto deleter = [&alloc](ObjType* obj) { AllocTraitsType::destroy(alloc, obj); AllocTraitsType::deallocate(alloc, obj, 1); }; @@ -424,7 +381,9 @@ class basic_node { { switch (m_prop.anchor_status) { case detail::anchor_status_t::NONE: - m_node_value.destroy(m_node_type); + if (m_node_type != node_t::NULL_OBJECT) { + m_node_value.destroy(m_node_type); + } break; case detail::anchor_status_t::ANCHOR: { auto itr = mp_meta->anchor_table.equal_range(m_prop.anchor).first; @@ -959,7 +918,7 @@ class basic_node { mapping_type& map = *p_node_value->p_mapping; basic_node node_key = std::forward(key); - return map.find(node_key) != map.end(); + return map.find(std::move(node_key)) != map.end(); } default: return false; @@ -1145,7 +1104,7 @@ class basic_node { /// @return The YAML version if any is applied to the basic_node object, `yaml_version_t::VER_1_2` otherwise. /// @sa https://fktn-k.github.io/fkYAML/api/basic_node/get_yaml_version/ yaml_version_t get_yaml_version() const noexcept { - return (mp_meta && mp_meta->is_version_specified) ? mp_meta->version : yaml_version_t::VER_1_2; + return mp_meta->is_version_specified ? mp_meta->version : yaml_version_t::VER_1_2; } /// @brief Set the YAML version specification for this basic_node object. @@ -1191,7 +1150,6 @@ class basic_node { } auto p_meta = mp_meta; - uint32_t anchor_counts = static_cast(p_meta->anchor_table.count(anchor_name)); basic_node node; node.swap(*this); @@ -1199,8 +1157,8 @@ class basic_node { mp_meta = p_meta; m_prop.anchor_status = detail::anchor_status_t::ANCHOR; + m_prop.anchor_offset = static_cast(mp_meta->anchor_table.count(anchor_name) - 1); m_prop.anchor = anchor_name; - m_prop.anchor_offset = anchor_counts; } /// @brief Add an anchor name to this basic_node object. @@ -1218,7 +1176,6 @@ class basic_node { } auto p_meta = mp_meta; - uint32_t anchor_counts = static_cast(p_meta->anchor_table.count(anchor_name)); basic_node node; node.swap(*this); @@ -1226,8 +1183,8 @@ class basic_node { mp_meta = p_meta; m_prop.anchor_status = detail::anchor_status_t::ANCHOR; + m_prop.anchor_offset = static_cast(mp_meta->anchor_table.count(anchor_name) - 1); m_prop.anchor = std::move(anchor_name); - m_prop.anchor_offset = anchor_counts; } /// @brief Check whether or not this basic_node object has already had any tag name. diff --git a/single_include/fkYAML/node.hpp b/single_include/fkYAML/node.hpp index 11fbf553..0ef0349e 100644 --- a/single_include/fkYAML/node.hpp +++ b/single_include/fkYAML/node.hpp @@ -2269,6 +2269,10 @@ inline bool is_digit(char c) { return ('0' <= c && c <= '9'); } +/// @brief Check if the given character is a hex-digit. +/// @note This function is needed to avoid assertion failures in `std::isxdigit()` especially when compiled with MSVC. +/// @param c A character to be checked. +/// @return true if the given character is a hex-digit, false otherwise. inline bool is_xdigit(char c) { return (('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')); } @@ -2286,23 +2290,40 @@ class scalar_scanner { } break; case 4: - if (token == "null" || token == "Null" || token == "NULL") { - return lexical_token_t::NULL_VALUE; - } - if (token == "true" || token == "True" || token == "TRUE") { - return lexical_token_t::BOOLEAN_VALUE; - } - if (token == ".inf" || token == ".Inf" || token == ".INF" || token == ".nan" || token == ".NaN" || - token == ".NAN") { - return lexical_token_t::FLOAT_NUMBER_VALUE; + switch (token[0]) { + case 'n': + case 'N': + if (token == "null" || token == "Null" || token == "NULL") { + return lexical_token_t::NULL_VALUE; + } + break; + case 't': + case 'T': + if (token == "true" || token == "True" || token == "TRUE") { + return lexical_token_t::BOOLEAN_VALUE; + } + break; + case '.': + if (token == ".inf" || token == ".Inf" || token == ".INF" || token == ".nan" || token == ".NaN" || + token == ".NAN") { + return lexical_token_t::FLOAT_NUMBER_VALUE; + } + break; } break; case 5: - if (token == "false" || token == "False" || token == "FALSE") { - return lexical_token_t::BOOLEAN_VALUE; - } - if (token == "-.inf" || token == "-.Inf" || token == "-.INF") { - return lexical_token_t::FLOAT_NUMBER_VALUE; + switch (token[0]) { + case 'f': + case 'F': + if (token == "false" || token == "False" || token == "FALSE") { + return lexical_token_t::BOOLEAN_VALUE; + } + break; + case '-': + if (token[1] == '.' && (token == "-.inf" || token == "-.Inf" || token == "-.INF")) { + return lexical_token_t::FLOAT_NUMBER_VALUE; + } + break; } break; } @@ -2557,34 +2578,22 @@ FK_YAML_DETAIL_NAMESPACE_BEGIN /// @brief A position tracker of the target buffer. class position_tracker { -private: - /// @brief A set of information on the current position in an input buffer. - struct position { - /// The current position from the beginning of an input buffer. - uint32_t cur_pos {0}; - /// The current position in the current line. - uint32_t cur_pos_in_line {0}; - /// The number of lines which have already been read. - uint32_t lines_read {0}; - }; - public: void set_target_buffer(const std::string& buffer) { m_begin = m_last = buffer.begin(); m_end = buffer.end(); - m_position = position {}; } /// @brief Update the set of the current position informations. /// @note This function doesn't support cases where cur_pos has moved backward from the last call. /// @param cur_pos The iterator to the current element of the buffer. void update_position(std::string::const_iterator cur_pos) { - m_position.cur_pos = static_cast(std::distance(m_begin, cur_pos)); - m_position.lines_read += static_cast(std::count(m_last, cur_pos, '\n')); + m_cur_pos = static_cast(std::distance(m_begin, cur_pos)); + m_lines_read += static_cast(std::count(m_last, cur_pos, '\n')); m_last = cur_pos; - if (m_position.lines_read == 0) { - m_position.cur_pos_in_line = m_position.cur_pos; + if (m_lines_read == 0) { + m_cur_pos_in_line = m_cur_pos; return; } @@ -2595,23 +2604,23 @@ class position_tracker { } count++; } - m_position.cur_pos_in_line = count; + m_cur_pos_in_line = count; } uint32_t get_cur_pos() const noexcept { - return m_position.cur_pos; + return m_cur_pos; } /// @brief Get the current position in the current line. /// @return uint32_t The current position in the current line. uint32_t get_cur_pos_in_line() const noexcept { - return m_position.cur_pos_in_line; + return m_cur_pos_in_line; } /// @brief Get the number of lines which have already been read. /// @return uint32_t The number of lines which have already been read. uint32_t get_lines_read() const noexcept { - return m_position.lines_read; + return m_lines_read; } private: @@ -2621,8 +2630,12 @@ class position_tracker { std::string::const_iterator m_end {}; /// The iterator to the last updated element in the target buffer. std::string::const_iterator m_last {}; - /// The current position in the target buffer. - position m_position {}; + /// The current position from the beginning of an input buffer. + uint32_t m_cur_pos {0}; + /// The current position in the current line. + uint32_t m_cur_pos_in_line {0}; + /// The number of lines which have already been read. + uint32_t m_lines_read {0}; }; FK_YAML_DETAIL_NAMESPACE_END @@ -3564,10 +3577,8 @@ class lexical_analyzer { continue; } - uint8_t byte = static_cast(current); - // Handle unescaped control characters. - if (byte <= 0x1F) { + if (static_cast(current) <= 0x1F) { handle_unescaped_control_char(current); continue; } @@ -3639,39 +3650,40 @@ class lexical_analyzer { uint32_t chars_in_line = 0; bool is_extra_indented = false; + m_token_begin_itr = m_cur_itr; if (cur_indent > indent) { - uint32_t diff = cur_indent - indent; if (style == block_style_indicator_t::FOLDED) { m_value_buffer.push_back('\n'); is_extra_indented = true; } - m_value_buffer.append(diff, ' '); + + uint32_t diff = cur_indent - indent; + // m_value_buffer.append(diff, ' '); + m_token_begin_itr -= diff; chars_in_line += diff; } - for (char current = 0; m_cur_itr != m_end_itr; ++m_cur_itr) { - current = *m_cur_itr; - - if (current == '\n') { + for (; m_cur_itr != m_end_itr; ++m_cur_itr) { + if (*m_cur_itr == '\n') { if (style == block_style_indicator_t::LITERAL) { - m_value_buffer.push_back(current); - } - else // block_style_indicator_t::FOLDED - { if (chars_in_line == 0) { - // Just append a newline if the current line is empty. m_value_buffer.push_back('\n'); - is_extra_indented = false; - continue; } - - if (is_extra_indented) { - // A line being more indented is not folded. - m_value_buffer.push_back('\n'); - chars_in_line = 0; - is_extra_indented = false; - continue; + else { + m_value_buffer.append(m_token_begin_itr, m_cur_itr + 1); } + } + // block_style_indicator_t::FOLDED + else if (chars_in_line == 0) { + // Just append a newline if the current line is empty. + m_value_buffer.push_back('\n'); + } + else if (is_extra_indented) { + // A line being more indented is not folded. + m_value_buffer.append(m_token_begin_itr, m_cur_itr + 1); + } + else { + m_value_buffer.append(m_token_begin_itr, m_cur_itr); // Append a newline if the next line is empty. bool is_end_of_token = false; @@ -3682,7 +3694,7 @@ class lexical_analyzer { break; } - current = *m_cur_itr; + char current = *m_cur_itr; if (current == ' ') { continue; } @@ -3698,13 +3710,17 @@ class lexical_analyzer { if (is_end_of_token) { m_value_buffer.push_back('\n'); + chars_in_line = 0; break; } if (is_next_empty) { m_value_buffer.push_back('\n'); + chars_in_line = 0; continue; } + else { + } switch (char next = *(m_cur_itr + 1)) { case '\n': @@ -3721,6 +3737,7 @@ class lexical_analyzer { } // Reset the values for the next line. + m_token_begin_itr = m_cur_itr + 1; chars_in_line = 0; is_extra_indented = false; @@ -3728,26 +3745,34 @@ class lexical_analyzer { } // Handle indentation - m_pos_tracker.update_position(m_cur_itr); - cur_indent = m_pos_tracker.get_cur_pos_in_line(); - if (cur_indent < indent) { - if (current != ' ') { - // Interpret less indented non-space characters as the start of the next token. - break; + if (chars_in_line == 0) { + m_pos_tracker.update_position(m_cur_itr); + cur_indent = m_pos_tracker.get_cur_pos_in_line(); + if (cur_indent < indent) { + if (*m_cur_itr != ' ') { + // Interpret less indented non-space characters as the start of the next token. + break; + } + // skip a space if not yet indented enough + continue; } - // skip a space if not yet indented enough - continue; - } - if (style == block_style_indicator_t::FOLDED && chars_in_line == 0 && current == ' ') { - // A line being more indented is not folded. - m_value_buffer.push_back('\n'); - is_extra_indented = true; + if (*m_cur_itr == ' ' && style == block_style_indicator_t::FOLDED) { + // A line being more indented is not folded. + m_value_buffer.push_back('\n'); + is_extra_indented = true; + } + m_token_begin_itr = m_cur_itr; } - m_value_buffer.push_back(current); + + // m_value_buffer.push_back(current); ++chars_in_line; } + if (chars_in_line > 0) { + m_value_buffer.append(m_token_begin_itr, m_cur_itr); + } + // Manipulate the trailing line endings chomping indicator type. switch (chomp) { case chomping_indicator_t::STRIP: @@ -5678,6 +5703,7 @@ class iterator_input_adapter< /// @return std::char_traits::int_type A character or EOF. void fill_buffer(std::string& buffer) { buffer.clear(); + buffer.reserve(std::distance(m_current, m_end)); switch (m_encode_type) { case utf_encode_t::UTF_8: @@ -5777,7 +5803,6 @@ class iterator_input_adapter< if (consumed_size == 1) { encoded_buffer[0] = encoded_buffer[1]; - encoded_buffer[1] = 0; } encoded_buf_size -= consumed_size; @@ -5900,6 +5925,7 @@ class iterator_input_adapter< } } + buffer.reserve(std::distance(m_current, m_end)); while (m_current != m_end) { char c = char(*m_current++); if (c != '\r') { @@ -5957,6 +5983,8 @@ class iterator_input_adapter< std::array utf8_buffer {{0, 0, 0, 0}}; uint32_t utf8_buf_size {0}; + buffer.reserve(std::distance(m_current, m_end) * 2); + while (m_current != m_end || encoded_buf_size != 0) { while (m_current != m_end && encoded_buf_size < 2) { char16_t utf16 = *m_current++; @@ -6033,6 +6061,8 @@ class iterator_input_adapter< std::array utf8_buffer {{0, 0, 0, 0}}; uint32_t utf8_buf_size {0}; + buffer.reserve(std::distance(m_current, m_end) * 4); + while (m_current != m_end) { char32_t tmp = *m_current++; char32_t utf32 = char32_t( @@ -6106,16 +6136,17 @@ class file_input_adapter { FK_YAML_ASSERT(m_encode_type == utf_encode_t::UTF_8); char tmp_buf[256] {}; + std::size_t buf_size = sizeof(tmp_buf) / sizeof(tmp_buf[0]); std::size_t read_size = 0; - while ((read_size = std::fread(&tmp_buf[0], sizeof(char), sizeof(tmp_buf) / sizeof(tmp_buf[0]), m_file)) > 0) { + while ((read_size = std::fread(&tmp_buf[0], sizeof(char), buf_size, m_file)) > 0) { char* p_current = &tmp_buf[0]; char* p_end = p_current + read_size; do { // find CR in `tmp_buf`. - char* p_cr_or_end = p_end; - for (uint32_t i = 0; p_current + i != p_end; i++) { - if (*(p_current + i) == '\r') { - p_cr_or_end = p_current + i; + char* p_cr_or_end = p_current; + while (p_cr_or_end != p_end) { + if (*p_cr_or_end++ == '\r') { + break; } } @@ -6172,8 +6203,7 @@ class file_input_adapter { if (m_encode_type == utf_encode_t::UTF_16BE) { shift_bits[0] = 8; } - else // m_encode_type == utf_encode_t::UTF_16LE - { + else { // m_encode_type == utf_encode_t::UTF_16LE shift_bits[1] = 8; } @@ -6198,7 +6228,6 @@ class file_input_adapter { if (consumed_size == 1) { encoded_buffer[0] = encoded_buffer[1]; - encoded_buffer[1] = 0; } encoded_buf_size -= consumed_size; @@ -6217,8 +6246,7 @@ class file_input_adapter { shift_bits[1] = 16; shift_bits[2] = 8; } - else // m_encode_type == utf_encode_t::UTF_32LE - { + else { // m_encode_type == utf_encode_t::UTF_32LE shift_bits[1] = 8; shift_bits[2] = 16; shift_bits[3] = 24; @@ -6307,10 +6335,10 @@ class stream_input_adapter { char* p_end = p_current + read_size; do { // find CR in `tmp_buf`. - char* p_cr_or_end = p_end; - for (uint32_t i = 0; p_current + i != p_end; i++) { - if (*(p_current + i) == '\r') { - p_cr_or_end = p_current + i; + char* p_cr_or_end = p_current; + while (p_cr_or_end != p_end) { + if (*p_cr_or_end++ == '\r') { + break; } } @@ -6399,7 +6427,6 @@ class stream_input_adapter { if (consumed_size == 1) { encoded_buffer[0] = encoded_buffer[1]; - encoded_buffer[1] = 0; } encoded_buf_size -= consumed_size; @@ -6418,8 +6445,7 @@ class stream_input_adapter { shift_bits[1] = 16; shift_bits[2] = 8; } - else // m_encode_type == utf_encode_t::UTF_32LE - { + else { // m_encode_type == utf_encode_t::UTF_32LE shift_bits[1] = 8; shift_bits[2] = 16; shift_bits[3] = 24; @@ -8460,57 +8486,14 @@ class basic_node { /// containers. /// @param[in] type A Node type to determine the value to be destroyed. void destroy(node_t type) { - if (type == node_t::SEQUENCE || type == node_t::MAPPING) { - std::vector stack; - - if (type == node_t::SEQUENCE) { - stack.reserve(p_sequence->size()); - std::move(p_sequence->begin(), p_sequence->end(), std::back_inserter(stack)); - } - else { - stack.reserve(p_mapping->size()); - for (auto&& it : *p_mapping) { - stack.push_back(std::move(it.second)); - } - } - - while (!stack.empty()) { - basic_node current_node(std::move(stack.back())); - stack.pop_back(); - - if (current_node.is_alias()) { - continue; - } - - if (current_node.is_anchor()) { - auto itr = current_node.mp_meta->anchor_table.equal_range(current_node.m_prop.anchor).first; - std::advance(itr, current_node.m_prop.anchor_offset); - stack.emplace_back(std::move(itr->second)); - continue; - } - - if (current_node.is_sequence()) { - std::move( - current_node.m_node_value.p_sequence->begin(), - current_node.m_node_value.p_sequence->end(), - std::back_inserter(stack)); - current_node.m_node_value.p_sequence->clear(); - } - else if (current_node.is_mapping()) { - for (auto&& it : *current_node.m_node_value.p_mapping) { - stack.push_back(std::move(it.second)); - } - current_node.m_node_value.p_mapping->clear(); - } - } - } - switch (type) { case node_t::SEQUENCE: + p_sequence->clear(); destroy_object(p_sequence); p_sequence = nullptr; break; case node_t::MAPPING: + p_mapping->clear(); destroy_object(p_mapping); p_mapping = nullptr; break; @@ -8549,7 +8532,7 @@ class basic_node { using AllocTraitsType = std::allocator_traits; AllocType alloc {}; - auto deleter = [&](ObjType* obj) { + auto deleter = [&alloc](ObjType* obj) { AllocTraitsType::destroy(alloc, obj); AllocTraitsType::deallocate(alloc, obj, 1); }; @@ -8731,7 +8714,9 @@ class basic_node { { switch (m_prop.anchor_status) { case detail::anchor_status_t::NONE: - m_node_value.destroy(m_node_type); + if (m_node_type != node_t::NULL_OBJECT) { + m_node_value.destroy(m_node_type); + } break; case detail::anchor_status_t::ANCHOR: { auto itr = mp_meta->anchor_table.equal_range(m_prop.anchor).first; @@ -9266,7 +9251,7 @@ class basic_node { mapping_type& map = *p_node_value->p_mapping; basic_node node_key = std::forward(key); - return map.find(node_key) != map.end(); + return map.find(std::move(node_key)) != map.end(); } default: return false; @@ -9452,7 +9437,7 @@ class basic_node { /// @return The YAML version if any is applied to the basic_node object, `yaml_version_t::VER_1_2` otherwise. /// @sa https://fktn-k.github.io/fkYAML/api/basic_node/get_yaml_version/ yaml_version_t get_yaml_version() const noexcept { - return (mp_meta && mp_meta->is_version_specified) ? mp_meta->version : yaml_version_t::VER_1_2; + return mp_meta->is_version_specified ? mp_meta->version : yaml_version_t::VER_1_2; } /// @brief Set the YAML version specification for this basic_node object. @@ -9498,7 +9483,6 @@ class basic_node { } auto p_meta = mp_meta; - uint32_t anchor_counts = static_cast(p_meta->anchor_table.count(anchor_name)); basic_node node; node.swap(*this); @@ -9506,8 +9490,8 @@ class basic_node { mp_meta = p_meta; m_prop.anchor_status = detail::anchor_status_t::ANCHOR; + m_prop.anchor_offset = static_cast(mp_meta->anchor_table.count(anchor_name) - 1); m_prop.anchor = anchor_name; - m_prop.anchor_offset = anchor_counts; } /// @brief Add an anchor name to this basic_node object. @@ -9525,7 +9509,6 @@ class basic_node { } auto p_meta = mp_meta; - uint32_t anchor_counts = static_cast(p_meta->anchor_table.count(anchor_name)); basic_node node; node.swap(*this); @@ -9533,8 +9516,8 @@ class basic_node { mp_meta = p_meta; m_prop.anchor_status = detail::anchor_status_t::ANCHOR; + m_prop.anchor_offset = static_cast(mp_meta->anchor_table.count(anchor_name) - 1); m_prop.anchor = std::move(anchor_name); - m_prop.anchor_offset = anchor_counts; } /// @brief Check whether or not this basic_node object has already had any tag name. diff --git a/test/unit_test/test_scalar_scanner_class.cpp b/test/unit_test/test_scalar_scanner_class.cpp index 6462b847..84e23ce0 100644 --- a/test/unit_test/test_scalar_scanner_class.cpp +++ b/test/unit_test/test_scalar_scanner_class.cpp @@ -74,6 +74,7 @@ TEST_CASE("ScalarScanner_StringValue") { std::string("0th"), std::string("0123"), std::string("1.non-digit"), + std::string("-.foo"), std::string("1exe"), std::string("0oabc"), std::string("0xyz")); diff --git a/tool/benchmark/result_debug.log b/tool/benchmark/result_debug.log index 54138144..781144a8 100644 --- a/tool/benchmark/result_debug.log +++ b/tool/benchmark/result_debug.log @@ -1,8 +1,8 @@ ------------------------------------------------------------------------------------- Benchmark Time CPU Iterations UserCounters... ------------------------------------------------------------------------------------- -bm_fkyaml_parse 124065 ns 124066 ns 5652 bytes_per_second=34.5214Mi/s items_per_second=8.0602k/s -bm_yamlcpp_parse 588453 ns 588466 ns 1197 bytes_per_second=7.27816Mi/s items_per_second=1.69933k/s -bm_libfyaml_parse 143796 ns 143796 ns 5611 bytes_per_second=29.7849Mi/s items_per_second=6.9543k/s -bm_rapidyaml_parse_inplace 29546 ns 29547 ns 23558 bytes_per_second=144.956Mi/s items_per_second=33.8449k/s -bm_rapidyaml_parse_arena 30017 ns 30018 ns 23275 bytes_per_second=142.68Mi/s items_per_second=33.3134k/s +bm_fkyaml_parse 121413 ns 121413 ns 5836 bytes_per_second=35.2759Mi/s items_per_second=8.23636k/s +bm_yamlcpp_parse 4963184 ns 4963204 ns 141 bytes_per_second=883.651Ki/s items_per_second=201.483/s +bm_libfyaml_parse 595741 ns 595744 ns 1185 bytes_per_second=7.18924Mi/s items_per_second=1.67857k/s +bm_rapidyaml_parse_inplace 238052 ns 238052 ns 3007 bytes_per_second=17.9916Mi/s items_per_second=4.20075k/s +bm_rapidyaml_parse_arena 235499 ns 235502 ns 2966 bytes_per_second=18.1865Mi/s items_per_second=4.24625k/s diff --git a/tool/benchmark/result_release.log b/tool/benchmark/result_release.log index 1bbbefc0..e1c9803c 100644 --- a/tool/benchmark/result_release.log +++ b/tool/benchmark/result_release.log @@ -1,8 +1,8 @@ ------------------------------------------------------------------------------------- Benchmark Time CPU Iterations UserCounters... ------------------------------------------------------------------------------------- -bm_fkyaml_parse 122120 ns 122118 ns 5693 bytes_per_second=35.0722Mi/s items_per_second=8.18879k/s -bm_yamlcpp_parse 592530 ns 592543 ns 1193 bytes_per_second=7.22809Mi/s items_per_second=1.68764k/s -bm_libfyaml_parse 139955 ns 139959 ns 5477 bytes_per_second=30.6015Mi/s items_per_second=7.14497k/s -bm_rapidyaml_parse_inplace 30067 ns 30068 ns 23568 bytes_per_second=142.444Mi/s items_per_second=33.2583k/s -bm_rapidyaml_parse_arena 29702 ns 29703 ns 23177 bytes_per_second=144.194Mi/s items_per_second=33.6669k/s +bm_fkyaml_parse 105774 ns 105775 ns 6662 bytes_per_second=40.4911Mi/s items_per_second=9.45402k/s +bm_yamlcpp_parse 579017 ns 579019 ns 1202 bytes_per_second=7.39692Mi/s items_per_second=1.72706k/s +bm_libfyaml_parse 137681 ns 137669 ns 5726 bytes_per_second=31.1104Mi/s items_per_second=7.26379k/s +bm_rapidyaml_parse_inplace 29092 ns 29092 ns 24046 bytes_per_second=147.221Mi/s items_per_second=34.3737k/s +bm_rapidyaml_parse_arena 29557 ns 29557 ns 23782 bytes_per_second=144.904Mi/s items_per_second=33.8327k/s From 14d43075ac77ef6970c711d61d0c52a4f579e74c Mon Sep 17 00:00:00 2001 From: fktn Date: Mon, 10 Jun 2024 07:30:38 +0900 Subject: [PATCH 5/6] Fix compile errors on Windows (#358) * fix errors when compiled with VC++ * add workflow jobs to test c++ standards on Windows VS2022 --- .github/workflows/windows.yml | 29 ++++++++++++++++++++++++++--- include/fkYAML/node.hpp | 18 +++++++++--------- single_include/fkYAML/node.hpp | 18 +++++++++--------- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4a6e437b..800d864a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -30,7 +30,7 @@ env: JOBS: 3 jobs: - msvc2019: + vs2019: timeout-minutes: 10 runs-on: windows-2019 strategy: @@ -54,9 +54,9 @@ jobs: working-directory: ${{github.workspace}}/build run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} - msvc2022: + vs2022: timeout-minutes: 10 - runs-on: windows-latest + runs-on: windows-2022 strategy: matrix: arch: [ Win32, x64 ] @@ -78,6 +78,29 @@ jobs: working-directory: ${{github.workspace}}/build run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} + vs2022_cxx_standard: + timeout-minutes: 10 + runs-on: windows-2022 + strategy: + matrix: + cxx_standards: [ "11", "14", "17", "20", "23" ] + build_type: [ Debug, Release ] + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -G "Visual Studio 17 2022" -A x64 -DFK_YAML_BUILD_TEST=ON -DFK_YAML_TEST_CXX_STANDARD=${{matrix.cxx_standards}} + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} + mingw: timeout-minutes: 10 runs-on: ${{matrix.os}} diff --git a/include/fkYAML/node.hpp b/include/fkYAML/node.hpp index 8a29baa0..4341a3d1 100644 --- a/include/fkYAML/node.hpp +++ b/include/fkYAML/node.hpp @@ -331,8 +331,8 @@ class basic_node { detail::disjunction>>::value, int> = 0> basic_node(CompatibleType&& val) noexcept( - noexcept(ConverterType::to_node(std::declval(), std::declval()))) { - ConverterType::to_node(*this, std::forward(val)); + noexcept(ConverterType::to_node(std::declval(), std::declval()))) { + ConverterType::to_node(*this, std::forward(val)); } /// @brief Construct a new basic node object with a node_ref_storage object. @@ -1234,16 +1234,16 @@ class basic_node { detail::conjunction< std::is_default_constructible, detail::has_from_node>::value, int> = 0> - T get_value() const noexcept( - noexcept(ConverterType::from_node(std::declval(), std::declval()))) { + T get_value() const noexcept(noexcept( + ConverterType::from_node(std::declval(), std::declval()))) { auto ret = ValueType(); if (has_anchor_name()) { auto itr = mp_meta->anchor_table.equal_range(m_prop.anchor).first; std::advance(itr, m_prop.anchor_offset); - ConverterType::from_node(itr->second, ret); + ConverterType::from_node(itr->second, ret); } else { - ConverterType::from_node(*this, ret); + ConverterType::from_node(*this, ret); } return ret; } @@ -1593,7 +1593,7 @@ inline namespace yaml_literals { /// @return The resulting `node` object deserialized from `s`. /// @sa https://fktn-k.github.io/fkYAML/api/operator_literal_yaml/ inline fkyaml::node operator"" _yaml(const char* s, std::size_t n) { - return fkyaml::node::deserialize((const char*)s, (const char*)s + n); + return fkyaml::node::deserialize(std::move(s), std::move(s + n)); } /// @brief The user-defined string literal which deserializes a `char16_t` array into a `node` object. @@ -1602,7 +1602,7 @@ inline fkyaml::node operator"" _yaml(const char* s, std::size_t n) { /// @return The resulting `node` object deserialized from `s`. /// @sa https://fktn-k.github.io/fkYAML/api/operator_literal_yaml/ inline fkyaml::node operator"" _yaml(const char16_t* s, std::size_t n) { - return fkyaml::node::deserialize((const char16_t*)s, (const char16_t*)s + n); + return fkyaml::node::deserialize(std::move(s), std::move(s + n)); } /// @brief The user-defined string literal which deserializes a `char32_t` array into a `node` object. @@ -1611,7 +1611,7 @@ inline fkyaml::node operator"" _yaml(const char16_t* s, std::size_t n) { /// @return The resulting `node` object deserialized from `s`. /// @sa https://fktn-k.github.io/fkYAML/api/operator_literal_yaml/ inline fkyaml::node operator"" _yaml(const char32_t* s, std::size_t n) { - return fkyaml::node::deserialize((const char32_t*)s, (const char32_t*)s + n); + return fkyaml::node::deserialize(std::move(s), std::move(s + n)); } #ifdef FK_YAML_HAS_CHAR8_T diff --git a/single_include/fkYAML/node.hpp b/single_include/fkYAML/node.hpp index 0ef0349e..ff7cc0dd 100644 --- a/single_include/fkYAML/node.hpp +++ b/single_include/fkYAML/node.hpp @@ -8664,8 +8664,8 @@ class basic_node { detail::disjunction>>::value, int> = 0> basic_node(CompatibleType&& val) noexcept( - noexcept(ConverterType::to_node(std::declval(), std::declval()))) { - ConverterType::to_node(*this, std::forward(val)); + noexcept(ConverterType::to_node(std::declval(), std::declval()))) { + ConverterType::to_node(*this, std::forward(val)); } /// @brief Construct a new basic node object with a node_ref_storage object. @@ -9567,16 +9567,16 @@ class basic_node { detail::conjunction< std::is_default_constructible, detail::has_from_node>::value, int> = 0> - T get_value() const noexcept( - noexcept(ConverterType::from_node(std::declval(), std::declval()))) { + T get_value() const noexcept(noexcept( + ConverterType::from_node(std::declval(), std::declval()))) { auto ret = ValueType(); if (has_anchor_name()) { auto itr = mp_meta->anchor_table.equal_range(m_prop.anchor).first; std::advance(itr, m_prop.anchor_offset); - ConverterType::from_node(itr->second, ret); + ConverterType::from_node(itr->second, ret); } else { - ConverterType::from_node(*this, ret); + ConverterType::from_node(*this, ret); } return ret; } @@ -9926,7 +9926,7 @@ inline namespace yaml_literals { /// @return The resulting `node` object deserialized from `s`. /// @sa https://fktn-k.github.io/fkYAML/api/operator_literal_yaml/ inline fkyaml::node operator"" _yaml(const char* s, std::size_t n) { - return fkyaml::node::deserialize((const char*)s, (const char*)s + n); + return fkyaml::node::deserialize(std::move(s), std::move(s + n)); } /// @brief The user-defined string literal which deserializes a `char16_t` array into a `node` object. @@ -9935,7 +9935,7 @@ inline fkyaml::node operator"" _yaml(const char* s, std::size_t n) { /// @return The resulting `node` object deserialized from `s`. /// @sa https://fktn-k.github.io/fkYAML/api/operator_literal_yaml/ inline fkyaml::node operator"" _yaml(const char16_t* s, std::size_t n) { - return fkyaml::node::deserialize((const char16_t*)s, (const char16_t*)s + n); + return fkyaml::node::deserialize(std::move(s), std::move(s + n)); } /// @brief The user-defined string literal which deserializes a `char32_t` array into a `node` object. @@ -9944,7 +9944,7 @@ inline fkyaml::node operator"" _yaml(const char16_t* s, std::size_t n) { /// @return The resulting `node` object deserialized from `s`. /// @sa https://fktn-k.github.io/fkYAML/api/operator_literal_yaml/ inline fkyaml::node operator"" _yaml(const char32_t* s, std::size_t n) { - return fkyaml::node::deserialize((const char32_t*)s, (const char32_t*)s + n); + return fkyaml::node::deserialize(std::move(s), std::move(s + n)); } #ifdef FK_YAML_HAS_CHAR8_T From 7cfe93a83ed351b08fafb640c1a68c730d44c2eb Mon Sep 17 00:00:00 2001 From: fktn Date: Wed, 12 Jun 2024 22:48:35 +0900 Subject: [PATCH 6/6] set version to 0.3.9 --- .reuse/templates/fkYAML.commented.jinja2 | 2 +- .reuse/templates/fkYAML_support.jinja2 | 2 +- CHANGELOG.md | 11 +++ CMakeLists.txt | 2 +- Makefile | 6 +- .../ex_basic_node_add_anchor_name.cpp | 2 +- docs/examples/ex_basic_node_add_tag_name.cpp | 2 +- docs/examples/ex_basic_node_alias_of.cpp | 2 +- docs/examples/ex_basic_node_at_basic_node.cpp | 2 +- .../ex_basic_node_at_compatible_type.cpp | 2 +- docs/examples/ex_basic_node_begin.cpp | 2 +- docs/examples/ex_basic_node_boolean_type.cpp | 2 +- .../examples/ex_basic_node_const_iterator.cpp | 2 +- docs/examples/ex_basic_node_constructor_1.cpp | 2 +- docs/examples/ex_basic_node_constructor_2.cpp | 2 +- docs/examples/ex_basic_node_constructor_3.cpp | 2 +- docs/examples/ex_basic_node_constructor_4.cpp | 2 +- docs/examples/ex_basic_node_constructor_5.cpp | 2 +- docs/examples/ex_basic_node_constructor_6.cpp | 2 +- docs/examples/ex_basic_node_constructor_7.cpp | 2 +- docs/examples/ex_basic_node_contains.cpp | 2 +- ...ex_basic_node_copy_assignment_operator.cpp | 2 +- .../ex_basic_node_deserialize_char_array.cpp | 2 +- ...ex_basic_node_deserialize_file_pointer.cpp | 2 +- .../ex_basic_node_deserialize_iterators.cpp | 2 +- .../ex_basic_node_deserialize_string.cpp | 2 +- docs/examples/ex_basic_node_empty.cpp | 2 +- docs/examples/ex_basic_node_end.cpp | 2 +- .../ex_basic_node_extraction_operator.cpp | 2 +- .../ex_basic_node_float_number_type.cpp | 2 +- .../ex_basic_node_get_anchor_name.cpp | 2 +- docs/examples/ex_basic_node_get_tag_name.cpp | 2 +- docs/examples/ex_basic_node_get_value.cpp | 2 +- docs/examples/ex_basic_node_get_value_ref.cpp | 2 +- .../ex_basic_node_get_yaml_version.cpp | 2 +- .../ex_basic_node_has_anchor_name.cpp | 2 +- docs/examples/ex_basic_node_has_tag_name.cpp | 2 +- .../ex_basic_node_insertion_operator.cpp | 2 +- docs/examples/ex_basic_node_integer_type.cpp | 2 +- docs/examples/ex_basic_node_is_alias.cpp | 2 +- docs/examples/ex_basic_node_is_anchor.cpp | 2 +- docs/examples/ex_basic_node_is_boolean.cpp | 2 +- .../ex_basic_node_is_float_number.cpp | 2 +- docs/examples/ex_basic_node_is_integer.cpp | 2 +- docs/examples/ex_basic_node_is_mapping.cpp | 2 +- docs/examples/ex_basic_node_is_null.cpp | 2 +- docs/examples/ex_basic_node_is_scalar.cpp | 2 +- docs/examples/ex_basic_node_is_sequence.cpp | 2 +- docs/examples/ex_basic_node_is_string.cpp | 2 +- docs/examples/ex_basic_node_iterator.cpp | 2 +- docs/examples/ex_basic_node_mapping.cpp | 2 +- docs/examples/ex_basic_node_mapping_type.cpp | 2 +- docs/examples/ex_basic_node_node.cpp | 2 +- docs/examples/ex_basic_node_node_t.cpp | 2 +- docs/examples/ex_basic_node_operator_eq.cpp | 2 +- docs/examples/ex_basic_node_operator_ge.cpp | 2 +- docs/examples/ex_basic_node_operator_gt.cpp | 2 +- docs/examples/ex_basic_node_operator_le.cpp | 2 +- docs/examples/ex_basic_node_operator_lt.cpp | 2 +- docs/examples/ex_basic_node_operator_ne.cpp | 2 +- docs/examples/ex_basic_node_sequence.cpp | 2 +- docs/examples/ex_basic_node_sequence_type.cpp | 2 +- docs/examples/ex_basic_node_serialize.cpp | 2 +- .../ex_basic_node_set_yaml_version.cpp | 2 +- docs/examples/ex_basic_node_size.cpp | 2 +- docs/examples/ex_basic_node_string_type.cpp | 2 +- ...sic_node_subscript_operator_basic_node.cpp | 2 +- ...ode_subscript_operator_compatible_type.cpp | 2 +- docs/examples/ex_basic_node_swap_member.cpp | 2 +- docs/examples/ex_basic_node_swap_std.cpp | 2 +- docs/examples/ex_basic_node_type.cpp | 2 +- .../ex_basic_node_value_converter_type.cpp | 2 +- .../examples/ex_basic_node_yaml_version_t.cpp | 2 +- .../examples/ex_exception_constructor_msg.cpp | 2 +- .../ex_exception_constructor_noarg.cpp | 2 +- docs/examples/ex_exception_what.cpp | 2 +- docs/examples/ex_macros_versions.cpp | 2 +- .../ex_node_value_converter_from_node.cpp | 2 +- .../ex_node_value_converter_to_node.cpp | 2 +- docs/examples/ex_operator_literal_yaml.cpp | 2 +- docs/examples/ex_ordered_map_at.cpp | 2 +- ...dered_map_constructor_initializer_list.cpp | 2 +- .../ex_ordered_map_constructor_noarg.cpp | 2 +- docs/examples/ex_ordered_map_emplace.cpp | 2 +- docs/examples/ex_ordered_map_find.cpp | 2 +- .../ex_ordered_map_subscript_operator.cpp | 2 +- docs/examples/tutorial_1.cpp | 2 +- docs/examples/tutorial_2.cpp | 2 +- docs/examples/tutorial_3.cpp | 2 +- docs/examples/tutorial_4.cpp | 2 +- docs/mkdocs/docs/home/releases.md | 37 +++++++++ .../docs/tutorials/cmake_integration.md | 2 +- fkYAML.natvis | 24 +++--- include/fkYAML/detail/assert.hpp | 2 +- .../fkYAML/detail/conversions/from_node.hpp | 2 +- .../fkYAML/detail/conversions/from_string.hpp | 2 +- include/fkYAML/detail/conversions/to_node.hpp | 2 +- .../fkYAML/detail/conversions/to_string.hpp | 2 +- include/fkYAML/detail/document_metainfo.hpp | 2 +- .../detail/encodings/encode_detector.hpp | 2 +- .../fkYAML/detail/encodings/uri_encoding.hpp | 2 +- .../fkYAML/detail/encodings/utf_encode_t.hpp | 2 +- .../fkYAML/detail/encodings/utf_encodings.hpp | 2 +- .../fkYAML/detail/encodings/yaml_escaper.hpp | 2 +- include/fkYAML/detail/input/deserializer.hpp | 2 +- include/fkYAML/detail/input/input_adapter.hpp | 2 +- .../fkYAML/detail/input/lexical_analyzer.hpp | 2 +- .../fkYAML/detail/input/position_tracker.hpp | 2 +- .../fkYAML/detail/input/scalar_scanner.hpp | 2 +- include/fkYAML/detail/input/tag_resolver.hpp | 2 +- include/fkYAML/detail/input/tag_t.hpp | 2 +- include/fkYAML/detail/iterator.hpp | 2 +- .../detail/macros/cpp_config_macros.hpp | 2 +- .../fkYAML/detail/macros/version_macros.hpp | 6 +- include/fkYAML/detail/meta/detect.hpp | 2 +- .../detail/meta/input_adapter_traits.hpp | 2 +- include/fkYAML/detail/meta/node_traits.hpp | 2 +- include/fkYAML/detail/meta/stl_supplement.hpp | 2 +- include/fkYAML/detail/meta/type_traits.hpp | 2 +- include/fkYAML/detail/node_property.hpp | 2 +- include/fkYAML/detail/node_ref_storage.hpp | 2 +- include/fkYAML/detail/output/serializer.hpp | 2 +- include/fkYAML/detail/string_formatter.hpp | 2 +- .../fkYAML/detail/types/lexical_token_t.hpp | 2 +- include/fkYAML/detail/types/node_t.hpp | 2 +- .../fkYAML/detail/types/yaml_version_t.hpp | 2 +- include/fkYAML/exception.hpp | 2 +- include/fkYAML/node.hpp | 2 +- include/fkYAML/node_value_converter.hpp | 2 +- include/fkYAML/ordered_map.hpp | 2 +- single_include/fkYAML/node.hpp | 78 +++++++++---------- .../project/main.cpp | 2 +- .../project/CMakeLists.txt | 2 +- .../cmake_fetch_content_test/project/main.cpp | 2 +- test/cmake_find_package_test/project/main.cpp | 2 +- .../project/main.cpp | 2 +- test/unit_test/main.cpp | 2 +- test/unit_test/test_custom_from_node.cpp | 2 +- test/unit_test/test_deserializer_class.cpp | 2 +- test/unit_test/test_encode_detector.cpp | 2 +- test/unit_test/test_exception_class.cpp | 2 +- test/unit_test/test_from_string.cpp | 2 +- test/unit_test/test_input_adapter.cpp | 2 +- test/unit_test/test_iterator_class.cpp | 2 +- .../unit_test/test_lexical_analyzer_class.cpp | 2 +- test/unit_test/test_node_class.cpp | 2 +- .../unit_test/test_node_ref_storage_class.cpp | 2 +- test/unit_test/test_ordered_map_class.cpp | 2 +- .../unit_test/test_position_tracker_class.cpp | 2 +- test/unit_test/test_scalar_scanner_class.cpp | 2 +- test/unit_test/test_serializer_class.cpp | 2 +- test/unit_test/test_string_formatter.cpp | 2 +- test/unit_test/test_tag_resolver_class.cpp | 2 +- test/unit_test/test_uri_encoding_class.cpp | 2 +- test/unit_test/test_utf_encodings.cpp | 2 +- test/unit_test/test_yaml_escaper_class.cpp | 2 +- tool/benchmark/main.cpp | 2 +- tool/natvis_generator/params.json | 2 +- 158 files changed, 258 insertions(+), 208 deletions(-) diff --git a/.reuse/templates/fkYAML.commented.jinja2 b/.reuse/templates/fkYAML.commented.jinja2 index b849ed49..eb5d5a9a 100644 --- a/.reuse/templates/fkYAML.commented.jinja2 +++ b/.reuse/templates/fkYAML.commented.jinja2 @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// {% for copyright_line in copyright_lines %} diff --git a/.reuse/templates/fkYAML_support.jinja2 b/.reuse/templates/fkYAML_support.jinja2 index c44fdb3e..eeef04fe 100644 --- a/.reuse/templates/fkYAML_support.jinja2 +++ b/.reuse/templates/fkYAML_support.jinja2 @@ -1,6 +1,6 @@ _______ __ __ __ _____ __ __ __ | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -| __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +| __| _ < \_ _/| ___ | _ | |___ version 0.3.9 |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML {% for copyright_line in copyright_lines %} diff --git a/CHANGELOG.md b/CHANGELOG.md index aae22d7b..b24a7352 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [v0.3.9](https://github.com/fktn-k/fkYAML/releases/tag/v0.3.9) (2024-06-12) + +[Full Changelog](https://github.com/fktn-k/fkYAML/compare/v0.3.8...v0.3.9) + +- Fix compile errors on Windows [\#358](https://github.com/fktn-k/fkYAML/pull/358) ([fktn-k](https://github.com/fktn-k)) +- Fix parse error on smal negative integer keys [\#355](https://github.com/fktn-k/fkYAML/pull/355) ([fktn-k](https://github.com/fktn-k)) +- fixed parse error on explicit mappings as a block sequence entry [\#353](https://github.com/fktn-k/fkYAML/pull/353) ([fktn-k](https://github.com/fktn-k)) + +- Refactor for optimization [\#356](https://github.com/fktn-k/fkYAML/pull/356) ([fktn-k](https://github.com/fktn-k)) +- Add benchmarking tool [\#354](https://github.com/fktn-k/fkYAML/pull/354) ([fktn-k](https://github.com/fktn-k)) + ## [v0.3.8](https://github.com/fktn-k/fkYAML/releases/tag/v0.3.8) (2024-06-01) [Full Changelog](https://github.com/fktn-k/fkYAML/compare/v0.3.7...v0.3.8) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b7e8322..415395be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.8) project( fkYAML - VERSION 0.3.8 + VERSION 0.3.9 LANGUAGES CXX) ############################################################# diff --git a/Makefile b/Makefile index 74ff4d43..7fd4fb65 100644 --- a/Makefile +++ b/Makefile @@ -10,11 +10,13 @@ SRCS = $(shell find include -type f -name '*.hpp' | sort) TEST_SRCS = $(shell find test -type f -name '*.hpp' -o -name '*.cpp' | sort) # list of sources in the examples directory. EXAMPLE_SRCS = $(shell find docs/examples -type f -name '*.cpp' | sort) +# list of sources in the tool directory. +TOOL_SRCS = $(shell find tool -type f -name '*.cpp' | sort) # target version definition TARGET_MAJOR_VERSION := 0 TARGET_MINOR_VERSION := 3 -TARGET_PATCH_VERSION := 8 +TARGET_PATCH_VERSION := 9 TARGET_VERSION_FULL := $(TARGET_MAJOR_VERSION).$(TARGET_MINOR_VERSION).$(TARGET_PATCH_VERSION) VERSION_MACRO_FILE := include/fkYAML/detail/macros/version_macros.hpp @@ -129,7 +131,7 @@ reuse: update-reuse-templates pipx run reuse annotate $(SRCS) --template fkYAML \ --copyright "Kensuke Fukutani " --copyright-style spdx \ --license MIT --year "2023-2024" --style c - pipx run reuse annotate $(TEST_SRCS) $(EXAMPLE_SRCS) --template fkYAML_support \ + pipx run reuse annotate $(TEST_SRCS) $(EXAMPLE_SRCS) $(TOOL_SRCS) --template fkYAML_support \ --copyright "Kensuke Fukutani " --copyright-style spdx \ --license MIT --year "2023-2024" --style c pipx run reuse lint diff --git a/docs/examples/ex_basic_node_add_anchor_name.cpp b/docs/examples/ex_basic_node_add_anchor_name.cpp index 2557fe03..b1d49249 100644 --- a/docs/examples/ex_basic_node_add_anchor_name.cpp +++ b/docs/examples/ex_basic_node_add_anchor_name.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_add_tag_name.cpp b/docs/examples/ex_basic_node_add_tag_name.cpp index 369c54bb..214bdbf8 100644 --- a/docs/examples/ex_basic_node_add_tag_name.cpp +++ b/docs/examples/ex_basic_node_add_tag_name.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_alias_of.cpp b/docs/examples/ex_basic_node_alias_of.cpp index 6dd2b0ca..81544e0f 100644 --- a/docs/examples/ex_basic_node_alias_of.cpp +++ b/docs/examples/ex_basic_node_alias_of.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_at_basic_node.cpp b/docs/examples/ex_basic_node_at_basic_node.cpp index 04f8536e..1ed0c486 100644 --- a/docs/examples/ex_basic_node_at_basic_node.cpp +++ b/docs/examples/ex_basic_node_at_basic_node.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_at_compatible_type.cpp b/docs/examples/ex_basic_node_at_compatible_type.cpp index 33ac0af3..3b964725 100644 --- a/docs/examples/ex_basic_node_at_compatible_type.cpp +++ b/docs/examples/ex_basic_node_at_compatible_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_begin.cpp b/docs/examples/ex_basic_node_begin.cpp index 67844195..bd4ec1d8 100644 --- a/docs/examples/ex_basic_node_begin.cpp +++ b/docs/examples/ex_basic_node_begin.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_boolean_type.cpp b/docs/examples/ex_basic_node_boolean_type.cpp index f99ea566..9cabb055 100644 --- a/docs/examples/ex_basic_node_boolean_type.cpp +++ b/docs/examples/ex_basic_node_boolean_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_const_iterator.cpp b/docs/examples/ex_basic_node_const_iterator.cpp index 2ae4c335..dd8261de 100644 --- a/docs/examples/ex_basic_node_const_iterator.cpp +++ b/docs/examples/ex_basic_node_const_iterator.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_1.cpp b/docs/examples/ex_basic_node_constructor_1.cpp index c96011dd..46626b0f 100644 --- a/docs/examples/ex_basic_node_constructor_1.cpp +++ b/docs/examples/ex_basic_node_constructor_1.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_2.cpp b/docs/examples/ex_basic_node_constructor_2.cpp index b863c1d5..8b9e3827 100644 --- a/docs/examples/ex_basic_node_constructor_2.cpp +++ b/docs/examples/ex_basic_node_constructor_2.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_3.cpp b/docs/examples/ex_basic_node_constructor_3.cpp index 6f837da3..13fd2554 100644 --- a/docs/examples/ex_basic_node_constructor_3.cpp +++ b/docs/examples/ex_basic_node_constructor_3.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_4.cpp b/docs/examples/ex_basic_node_constructor_4.cpp index 6f837da3..13fd2554 100644 --- a/docs/examples/ex_basic_node_constructor_4.cpp +++ b/docs/examples/ex_basic_node_constructor_4.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_5.cpp b/docs/examples/ex_basic_node_constructor_5.cpp index d3d0fca4..48818c4b 100644 --- a/docs/examples/ex_basic_node_constructor_5.cpp +++ b/docs/examples/ex_basic_node_constructor_5.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_6.cpp b/docs/examples/ex_basic_node_constructor_6.cpp index 2ffefc15..f06bf97e 100644 --- a/docs/examples/ex_basic_node_constructor_6.cpp +++ b/docs/examples/ex_basic_node_constructor_6.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_constructor_7.cpp b/docs/examples/ex_basic_node_constructor_7.cpp index 463e2df4..472ef659 100644 --- a/docs/examples/ex_basic_node_constructor_7.cpp +++ b/docs/examples/ex_basic_node_constructor_7.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_contains.cpp b/docs/examples/ex_basic_node_contains.cpp index b858255c..7857aa0a 100644 --- a/docs/examples/ex_basic_node_contains.cpp +++ b/docs/examples/ex_basic_node_contains.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_copy_assignment_operator.cpp b/docs/examples/ex_basic_node_copy_assignment_operator.cpp index 93d1ed66..daeb1d50 100644 --- a/docs/examples/ex_basic_node_copy_assignment_operator.cpp +++ b/docs/examples/ex_basic_node_copy_assignment_operator.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_deserialize_char_array.cpp b/docs/examples/ex_basic_node_deserialize_char_array.cpp index 76a04226..7d6ee72d 100644 --- a/docs/examples/ex_basic_node_deserialize_char_array.cpp +++ b/docs/examples/ex_basic_node_deserialize_char_array.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_deserialize_file_pointer.cpp b/docs/examples/ex_basic_node_deserialize_file_pointer.cpp index 3a9f9033..1790a254 100644 --- a/docs/examples/ex_basic_node_deserialize_file_pointer.cpp +++ b/docs/examples/ex_basic_node_deserialize_file_pointer.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_deserialize_iterators.cpp b/docs/examples/ex_basic_node_deserialize_iterators.cpp index 260c3e50..f3bd62e7 100644 --- a/docs/examples/ex_basic_node_deserialize_iterators.cpp +++ b/docs/examples/ex_basic_node_deserialize_iterators.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_deserialize_string.cpp b/docs/examples/ex_basic_node_deserialize_string.cpp index 65968052..c7ad27ea 100644 --- a/docs/examples/ex_basic_node_deserialize_string.cpp +++ b/docs/examples/ex_basic_node_deserialize_string.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_empty.cpp b/docs/examples/ex_basic_node_empty.cpp index cd8bc6b3..cd99a0e4 100644 --- a/docs/examples/ex_basic_node_empty.cpp +++ b/docs/examples/ex_basic_node_empty.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_end.cpp b/docs/examples/ex_basic_node_end.cpp index a468d26c..ae4a5e4b 100644 --- a/docs/examples/ex_basic_node_end.cpp +++ b/docs/examples/ex_basic_node_end.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_extraction_operator.cpp b/docs/examples/ex_basic_node_extraction_operator.cpp index c1eb51e8..96a56a96 100644 --- a/docs/examples/ex_basic_node_extraction_operator.cpp +++ b/docs/examples/ex_basic_node_extraction_operator.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_float_number_type.cpp b/docs/examples/ex_basic_node_float_number_type.cpp index 60c1f9a0..fd6f0c7e 100644 --- a/docs/examples/ex_basic_node_float_number_type.cpp +++ b/docs/examples/ex_basic_node_float_number_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_get_anchor_name.cpp b/docs/examples/ex_basic_node_get_anchor_name.cpp index a051fc24..f6a5fadc 100644 --- a/docs/examples/ex_basic_node_get_anchor_name.cpp +++ b/docs/examples/ex_basic_node_get_anchor_name.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_get_tag_name.cpp b/docs/examples/ex_basic_node_get_tag_name.cpp index 03e84d27..bd5644cb 100644 --- a/docs/examples/ex_basic_node_get_tag_name.cpp +++ b/docs/examples/ex_basic_node_get_tag_name.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_get_value.cpp b/docs/examples/ex_basic_node_get_value.cpp index 470f0543..055a41fb 100644 --- a/docs/examples/ex_basic_node_get_value.cpp +++ b/docs/examples/ex_basic_node_get_value.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_get_value_ref.cpp b/docs/examples/ex_basic_node_get_value_ref.cpp index ddde8dc3..b09a8bef 100644 --- a/docs/examples/ex_basic_node_get_value_ref.cpp +++ b/docs/examples/ex_basic_node_get_value_ref.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_get_yaml_version.cpp b/docs/examples/ex_basic_node_get_yaml_version.cpp index 18c342fd..0385c4c6 100644 --- a/docs/examples/ex_basic_node_get_yaml_version.cpp +++ b/docs/examples/ex_basic_node_get_yaml_version.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_has_anchor_name.cpp b/docs/examples/ex_basic_node_has_anchor_name.cpp index 50652c94..ef27ee67 100644 --- a/docs/examples/ex_basic_node_has_anchor_name.cpp +++ b/docs/examples/ex_basic_node_has_anchor_name.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_has_tag_name.cpp b/docs/examples/ex_basic_node_has_tag_name.cpp index e735275f..9c541625 100644 --- a/docs/examples/ex_basic_node_has_tag_name.cpp +++ b/docs/examples/ex_basic_node_has_tag_name.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_insertion_operator.cpp b/docs/examples/ex_basic_node_insertion_operator.cpp index bc4cc7b5..7181018a 100644 --- a/docs/examples/ex_basic_node_insertion_operator.cpp +++ b/docs/examples/ex_basic_node_insertion_operator.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_integer_type.cpp b/docs/examples/ex_basic_node_integer_type.cpp index 5c6f756b..9303a1a9 100644 --- a/docs/examples/ex_basic_node_integer_type.cpp +++ b/docs/examples/ex_basic_node_integer_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_alias.cpp b/docs/examples/ex_basic_node_is_alias.cpp index 51691401..e7b8e650 100644 --- a/docs/examples/ex_basic_node_is_alias.cpp +++ b/docs/examples/ex_basic_node_is_alias.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_anchor.cpp b/docs/examples/ex_basic_node_is_anchor.cpp index a747fd02..800f33f4 100644 --- a/docs/examples/ex_basic_node_is_anchor.cpp +++ b/docs/examples/ex_basic_node_is_anchor.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_boolean.cpp b/docs/examples/ex_basic_node_is_boolean.cpp index 43329fea..98fc11a1 100644 --- a/docs/examples/ex_basic_node_is_boolean.cpp +++ b/docs/examples/ex_basic_node_is_boolean.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_float_number.cpp b/docs/examples/ex_basic_node_is_float_number.cpp index 5a5bdedb..08d91562 100644 --- a/docs/examples/ex_basic_node_is_float_number.cpp +++ b/docs/examples/ex_basic_node_is_float_number.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_integer.cpp b/docs/examples/ex_basic_node_is_integer.cpp index 9314c1ad..f428ca5e 100644 --- a/docs/examples/ex_basic_node_is_integer.cpp +++ b/docs/examples/ex_basic_node_is_integer.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_mapping.cpp b/docs/examples/ex_basic_node_is_mapping.cpp index 32b5f42e..e4f23fc0 100644 --- a/docs/examples/ex_basic_node_is_mapping.cpp +++ b/docs/examples/ex_basic_node_is_mapping.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_null.cpp b/docs/examples/ex_basic_node_is_null.cpp index 45c8ba41..7e20b803 100644 --- a/docs/examples/ex_basic_node_is_null.cpp +++ b/docs/examples/ex_basic_node_is_null.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_scalar.cpp b/docs/examples/ex_basic_node_is_scalar.cpp index 8a178238..27aeab81 100644 --- a/docs/examples/ex_basic_node_is_scalar.cpp +++ b/docs/examples/ex_basic_node_is_scalar.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_sequence.cpp b/docs/examples/ex_basic_node_is_sequence.cpp index 3b31d33a..33d334d8 100644 --- a/docs/examples/ex_basic_node_is_sequence.cpp +++ b/docs/examples/ex_basic_node_is_sequence.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_is_string.cpp b/docs/examples/ex_basic_node_is_string.cpp index 22e9326c..6e23a92e 100644 --- a/docs/examples/ex_basic_node_is_string.cpp +++ b/docs/examples/ex_basic_node_is_string.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_iterator.cpp b/docs/examples/ex_basic_node_iterator.cpp index b835bf1f..771efc2f 100644 --- a/docs/examples/ex_basic_node_iterator.cpp +++ b/docs/examples/ex_basic_node_iterator.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_mapping.cpp b/docs/examples/ex_basic_node_mapping.cpp index 6a8d9198..37301370 100644 --- a/docs/examples/ex_basic_node_mapping.cpp +++ b/docs/examples/ex_basic_node_mapping.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_mapping_type.cpp b/docs/examples/ex_basic_node_mapping_type.cpp index a9621d70..2ab619a5 100644 --- a/docs/examples/ex_basic_node_mapping_type.cpp +++ b/docs/examples/ex_basic_node_mapping_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_node.cpp b/docs/examples/ex_basic_node_node.cpp index e00186b6..b545e7ca 100644 --- a/docs/examples/ex_basic_node_node.cpp +++ b/docs/examples/ex_basic_node_node.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_node_t.cpp b/docs/examples/ex_basic_node_node_t.cpp index 2c90a449..10b25112 100644 --- a/docs/examples/ex_basic_node_node_t.cpp +++ b/docs/examples/ex_basic_node_node_t.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_operator_eq.cpp b/docs/examples/ex_basic_node_operator_eq.cpp index e644cdff..fd965218 100644 --- a/docs/examples/ex_basic_node_operator_eq.cpp +++ b/docs/examples/ex_basic_node_operator_eq.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_operator_ge.cpp b/docs/examples/ex_basic_node_operator_ge.cpp index 07a00156..55284ce8 100644 --- a/docs/examples/ex_basic_node_operator_ge.cpp +++ b/docs/examples/ex_basic_node_operator_ge.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_operator_gt.cpp b/docs/examples/ex_basic_node_operator_gt.cpp index 380c942b..4d281a66 100644 --- a/docs/examples/ex_basic_node_operator_gt.cpp +++ b/docs/examples/ex_basic_node_operator_gt.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_operator_le.cpp b/docs/examples/ex_basic_node_operator_le.cpp index 8bfefcc0..10c443d9 100644 --- a/docs/examples/ex_basic_node_operator_le.cpp +++ b/docs/examples/ex_basic_node_operator_le.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_operator_lt.cpp b/docs/examples/ex_basic_node_operator_lt.cpp index a4fc884b..85b1b0ad 100644 --- a/docs/examples/ex_basic_node_operator_lt.cpp +++ b/docs/examples/ex_basic_node_operator_lt.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_operator_ne.cpp b/docs/examples/ex_basic_node_operator_ne.cpp index 78aeb25c..360b0f25 100644 --- a/docs/examples/ex_basic_node_operator_ne.cpp +++ b/docs/examples/ex_basic_node_operator_ne.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_sequence.cpp b/docs/examples/ex_basic_node_sequence.cpp index 1fcde177..74c886c9 100644 --- a/docs/examples/ex_basic_node_sequence.cpp +++ b/docs/examples/ex_basic_node_sequence.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_sequence_type.cpp b/docs/examples/ex_basic_node_sequence_type.cpp index 48634d07..71e71461 100644 --- a/docs/examples/ex_basic_node_sequence_type.cpp +++ b/docs/examples/ex_basic_node_sequence_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_serialize.cpp b/docs/examples/ex_basic_node_serialize.cpp index ba0d29e0..452562fc 100644 --- a/docs/examples/ex_basic_node_serialize.cpp +++ b/docs/examples/ex_basic_node_serialize.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_set_yaml_version.cpp b/docs/examples/ex_basic_node_set_yaml_version.cpp index 2af5e54b..4c0e2b17 100644 --- a/docs/examples/ex_basic_node_set_yaml_version.cpp +++ b/docs/examples/ex_basic_node_set_yaml_version.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_size.cpp b/docs/examples/ex_basic_node_size.cpp index 9540a87d..48462f2e 100644 --- a/docs/examples/ex_basic_node_size.cpp +++ b/docs/examples/ex_basic_node_size.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_string_type.cpp b/docs/examples/ex_basic_node_string_type.cpp index c8163459..6c05136b 100644 --- a/docs/examples/ex_basic_node_string_type.cpp +++ b/docs/examples/ex_basic_node_string_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_subscript_operator_basic_node.cpp b/docs/examples/ex_basic_node_subscript_operator_basic_node.cpp index 40b66ebd..031dc9f5 100644 --- a/docs/examples/ex_basic_node_subscript_operator_basic_node.cpp +++ b/docs/examples/ex_basic_node_subscript_operator_basic_node.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_subscript_operator_compatible_type.cpp b/docs/examples/ex_basic_node_subscript_operator_compatible_type.cpp index 86322feb..b7456781 100644 --- a/docs/examples/ex_basic_node_subscript_operator_compatible_type.cpp +++ b/docs/examples/ex_basic_node_subscript_operator_compatible_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_swap_member.cpp b/docs/examples/ex_basic_node_swap_member.cpp index 73c6863a..549db87f 100644 --- a/docs/examples/ex_basic_node_swap_member.cpp +++ b/docs/examples/ex_basic_node_swap_member.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_swap_std.cpp b/docs/examples/ex_basic_node_swap_std.cpp index a977d3c6..202ae284 100644 --- a/docs/examples/ex_basic_node_swap_std.cpp +++ b/docs/examples/ex_basic_node_swap_std.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_type.cpp b/docs/examples/ex_basic_node_type.cpp index 2c90a449..10b25112 100644 --- a/docs/examples/ex_basic_node_type.cpp +++ b/docs/examples/ex_basic_node_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_value_converter_type.cpp b/docs/examples/ex_basic_node_value_converter_type.cpp index c8e2d6b6..b86754dc 100644 --- a/docs/examples/ex_basic_node_value_converter_type.cpp +++ b/docs/examples/ex_basic_node_value_converter_type.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_basic_node_yaml_version_t.cpp b/docs/examples/ex_basic_node_yaml_version_t.cpp index adfbe0cb..3680ed63 100644 --- a/docs/examples/ex_basic_node_yaml_version_t.cpp +++ b/docs/examples/ex_basic_node_yaml_version_t.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_exception_constructor_msg.cpp b/docs/examples/ex_exception_constructor_msg.cpp index 09230d6b..a46e68b5 100644 --- a/docs/examples/ex_exception_constructor_msg.cpp +++ b/docs/examples/ex_exception_constructor_msg.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_exception_constructor_noarg.cpp b/docs/examples/ex_exception_constructor_noarg.cpp index 04d34a33..27699989 100644 --- a/docs/examples/ex_exception_constructor_noarg.cpp +++ b/docs/examples/ex_exception_constructor_noarg.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_exception_what.cpp b/docs/examples/ex_exception_what.cpp index 54be1895..6568b3e5 100644 --- a/docs/examples/ex_exception_what.cpp +++ b/docs/examples/ex_exception_what.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_macros_versions.cpp b/docs/examples/ex_macros_versions.cpp index 2a68c74b..5cdc7157 100644 --- a/docs/examples/ex_macros_versions.cpp +++ b/docs/examples/ex_macros_versions.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_node_value_converter_from_node.cpp b/docs/examples/ex_node_value_converter_from_node.cpp index d72bec04..aa4d2750 100644 --- a/docs/examples/ex_node_value_converter_from_node.cpp +++ b/docs/examples/ex_node_value_converter_from_node.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_node_value_converter_to_node.cpp b/docs/examples/ex_node_value_converter_to_node.cpp index c5c1b7b5..a02dc784 100644 --- a/docs/examples/ex_node_value_converter_to_node.cpp +++ b/docs/examples/ex_node_value_converter_to_node.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_operator_literal_yaml.cpp b/docs/examples/ex_operator_literal_yaml.cpp index c7997767..e3644f40 100644 --- a/docs/examples/ex_operator_literal_yaml.cpp +++ b/docs/examples/ex_operator_literal_yaml.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_ordered_map_at.cpp b/docs/examples/ex_ordered_map_at.cpp index e24981f6..822acd11 100644 --- a/docs/examples/ex_ordered_map_at.cpp +++ b/docs/examples/ex_ordered_map_at.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_ordered_map_constructor_initializer_list.cpp b/docs/examples/ex_ordered_map_constructor_initializer_list.cpp index 21f1c146..c5a3e6c1 100644 --- a/docs/examples/ex_ordered_map_constructor_initializer_list.cpp +++ b/docs/examples/ex_ordered_map_constructor_initializer_list.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_ordered_map_constructor_noarg.cpp b/docs/examples/ex_ordered_map_constructor_noarg.cpp index b2863f8c..410a562c 100644 --- a/docs/examples/ex_ordered_map_constructor_noarg.cpp +++ b/docs/examples/ex_ordered_map_constructor_noarg.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_ordered_map_emplace.cpp b/docs/examples/ex_ordered_map_emplace.cpp index d0c92a84..873c3d15 100644 --- a/docs/examples/ex_ordered_map_emplace.cpp +++ b/docs/examples/ex_ordered_map_emplace.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_ordered_map_find.cpp b/docs/examples/ex_ordered_map_find.cpp index f8ea2d54..7532a2e0 100644 --- a/docs/examples/ex_ordered_map_find.cpp +++ b/docs/examples/ex_ordered_map_find.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/ex_ordered_map_subscript_operator.cpp b/docs/examples/ex_ordered_map_subscript_operator.cpp index ebc61d4c..05e878c1 100644 --- a/docs/examples/ex_ordered_map_subscript_operator.cpp +++ b/docs/examples/ex_ordered_map_subscript_operator.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/tutorial_1.cpp b/docs/examples/tutorial_1.cpp index 358e2781..fc55c775 100644 --- a/docs/examples/tutorial_1.cpp +++ b/docs/examples/tutorial_1.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/tutorial_2.cpp b/docs/examples/tutorial_2.cpp index e71c5ca8..683de941 100644 --- a/docs/examples/tutorial_2.cpp +++ b/docs/examples/tutorial_2.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/tutorial_3.cpp b/docs/examples/tutorial_3.cpp index 5f3dd301..87430779 100644 --- a/docs/examples/tutorial_3.cpp +++ b/docs/examples/tutorial_3.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/examples/tutorial_4.cpp b/docs/examples/tutorial_4.cpp index 24515d45..977befbb 100644 --- a/docs/examples/tutorial_4.cpp +++ b/docs/examples/tutorial_4.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/docs/mkdocs/docs/home/releases.md b/docs/mkdocs/docs/home/releases.md index 8bdef52d..0a67bf31 100644 --- a/docs/mkdocs/docs/home/releases.md +++ b/docs/mkdocs/docs/home/releases.md @@ -1,5 +1,42 @@ # Releases +## **fkYAML version 0.3.9** + +!!! abstract "Release Packages" + + * [fkYAML.zip](https://github.com/fktn-k/fkYAML/releases/download/v0.3.9/fkYAML.zip) + * [fkYAML.tgz](https://github.com/fktn-k/fkYAML/releases/download/v0.3.9/fkYAML.tgz) + * [fkYAML_single_header.zip](https://github.com/fktn-k/fkYAML/releases/download/v0.3.9/fkYAML_single_header.zip) + * [fkYAML_single_header.tgz](https://github.com/fktn-k/fkYAML/releases/download/v0.3.9/fkYAML_single_header.tgz) + * [node.hpp](https://github.com/fktn-k/fkYAML/releases/download/v0.3.9/node.hpp) (single header) + +### Summary + +This release adds the benchmarking tool for fkYAML and other C++ libraries for YAML. +The tool is quite experimental and will be modified and expanded in future releases. +See the benchmarking section of the README.md file for the current benchmarking scores. +Moreover, several bugs in deserialization and Windows builds have been fixed. + +### What's Changed + +#### :sparkles: New Features + +- Add benchmarking tool by [fktn-k](https://github.com/fktn-k) in [\#354](https://github.com/fktn-k/fkYAML/pull/354) + +#### :zap: Improvements + +- Refactor for optimization by [fktn-k](https://github.com/fktn-k) in [\#356](https://github.com/fktn-k/fkYAML/pull/356) + +#### :bug: Bug Fixes + +- fixed parse error on explicit mappings as a block sequence entry by [fktn-k](https://github.com/fktn-k) in [\#353](https://github.com/fktn-k/fkYAML/pull/353) +- Fix parse error on smal negative integer keys by [fktn-k](https://github.com/fktn-k) in [\#355](https://github.com/fktn-k/fkYAML/pull/355) +- Fix compile errors on Windows by [fktn-k](https://github.com/fktn-k) in [\#358](https://github.com/fktn-k/fkYAML/pull/358), reported by [Michael-Lafreniere](https://github.com/Michael-Lafreniere) in [\#357](https://github.com/fktn-k/fkYAML/issues/357) + +**Full Changelog**: https://github.com/fktn-k/fkYAML/compare/v0.3.8...v0.3.9 + +--- + ## **fkYAML version 0.3.8** !!! abstract "Release Packages" diff --git a/docs/mkdocs/docs/tutorials/cmake_integration.md b/docs/mkdocs/docs/tutorials/cmake_integration.md index 3dc9faf7..a97021e3 100644 --- a/docs/mkdocs/docs/tutorials/cmake_integration.md +++ b/docs/mkdocs/docs/tutorials/cmake_integration.md @@ -57,7 +57,7 @@ Since CMake v3.11, [`FetchContent`](https://cmake.org/cmake/help/latest/module/F FetchContent_Declare( fkYAML GIT_REPOSITORY https://github.com/fktn-k/fkYAML.git - GIT_TAG v0.3.8 + GIT_TAG v0.3.9 ) FetchContent_MakeAvailable(fkYAML) diff --git a/fkYAML.natvis b/fkYAML.natvis index 06f5ef1e..f5fb405d 100644 --- a/fkYAML.natvis +++ b/fkYAML.natvis @@ -4,26 +4,26 @@ - - - {*(m_node_value.p_sequence)} - {*(m_node_value.p_mapping)} - nullptr - {m_node_value.boolean} - {m_node_value.integer} - {m_node_value.float_val} - {*(m_node_value.p_string)} + + + {*(m_node_value.p_sequence)} + {*(m_node_value.p_mapping)} + nullptr + {m_node_value.boolean} + {m_node_value.integer} + {m_node_value.float_val} + {*(m_node_value.p_string)} - + *(m_node_value.p_sequence),view(simple) - + *(m_node_value.p_mapping),view(simple) - + {second} second diff --git a/include/fkYAML/detail/assert.hpp b/include/fkYAML/detail/assert.hpp index aee40bc6..26fb945b 100644 --- a/include/fkYAML/detail/assert.hpp +++ b/include/fkYAML/detail/assert.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/conversions/from_node.hpp b/include/fkYAML/detail/conversions/from_node.hpp index bfe8a4ee..1e353003 100644 --- a/include/fkYAML/detail/conversions/from_node.hpp +++ b/include/fkYAML/detail/conversions/from_node.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/conversions/from_string.hpp b/include/fkYAML/detail/conversions/from_string.hpp index 1cb3c566..3a551fd6 100644 --- a/include/fkYAML/detail/conversions/from_string.hpp +++ b/include/fkYAML/detail/conversions/from_string.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/conversions/to_node.hpp b/include/fkYAML/detail/conversions/to_node.hpp index d1ffb6f0..577e5795 100644 --- a/include/fkYAML/detail/conversions/to_node.hpp +++ b/include/fkYAML/detail/conversions/to_node.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/conversions/to_string.hpp b/include/fkYAML/detail/conversions/to_string.hpp index 093eab13..d11ea10f 100644 --- a/include/fkYAML/detail/conversions/to_string.hpp +++ b/include/fkYAML/detail/conversions/to_string.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/document_metainfo.hpp b/include/fkYAML/detail/document_metainfo.hpp index b49a6314..c624fffa 100644 --- a/include/fkYAML/detail/document_metainfo.hpp +++ b/include/fkYAML/detail/document_metainfo.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/encodings/encode_detector.hpp b/include/fkYAML/detail/encodings/encode_detector.hpp index 31d8c8d6..ef1f790e 100644 --- a/include/fkYAML/detail/encodings/encode_detector.hpp +++ b/include/fkYAML/detail/encodings/encode_detector.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/encodings/uri_encoding.hpp b/include/fkYAML/detail/encodings/uri_encoding.hpp index f5036b43..0eb1ed18 100644 --- a/include/fkYAML/detail/encodings/uri_encoding.hpp +++ b/include/fkYAML/detail/encodings/uri_encoding.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/encodings/utf_encode_t.hpp b/include/fkYAML/detail/encodings/utf_encode_t.hpp index b3afb4be..51663f0f 100644 --- a/include/fkYAML/detail/encodings/utf_encode_t.hpp +++ b/include/fkYAML/detail/encodings/utf_encode_t.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/encodings/utf_encodings.hpp b/include/fkYAML/detail/encodings/utf_encodings.hpp index b42100b9..40c5d44d 100644 --- a/include/fkYAML/detail/encodings/utf_encodings.hpp +++ b/include/fkYAML/detail/encodings/utf_encodings.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/encodings/yaml_escaper.hpp b/include/fkYAML/detail/encodings/yaml_escaper.hpp index 70e6f762..3766aacd 100644 --- a/include/fkYAML/detail/encodings/yaml_escaper.hpp +++ b/include/fkYAML/detail/encodings/yaml_escaper.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/deserializer.hpp b/include/fkYAML/detail/input/deserializer.hpp index 5c5caf21..607fe1b0 100644 --- a/include/fkYAML/detail/input/deserializer.hpp +++ b/include/fkYAML/detail/input/deserializer.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/input_adapter.hpp b/include/fkYAML/detail/input/input_adapter.hpp index 18748187..9aab6b16 100644 --- a/include/fkYAML/detail/input/input_adapter.hpp +++ b/include/fkYAML/detail/input/input_adapter.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/lexical_analyzer.hpp b/include/fkYAML/detail/input/lexical_analyzer.hpp index 57791176..ac5717f5 100644 --- a/include/fkYAML/detail/input/lexical_analyzer.hpp +++ b/include/fkYAML/detail/input/lexical_analyzer.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/position_tracker.hpp b/include/fkYAML/detail/input/position_tracker.hpp index b0bf0080..312a3ee0 100644 --- a/include/fkYAML/detail/input/position_tracker.hpp +++ b/include/fkYAML/detail/input/position_tracker.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/scalar_scanner.hpp b/include/fkYAML/detail/input/scalar_scanner.hpp index 8f26984c..b2db5d19 100644 --- a/include/fkYAML/detail/input/scalar_scanner.hpp +++ b/include/fkYAML/detail/input/scalar_scanner.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/tag_resolver.hpp b/include/fkYAML/detail/input/tag_resolver.hpp index 91548867..8d9778c3 100644 --- a/include/fkYAML/detail/input/tag_resolver.hpp +++ b/include/fkYAML/detail/input/tag_resolver.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/input/tag_t.hpp b/include/fkYAML/detail/input/tag_t.hpp index d214efa4..0a1e2aa1 100644 --- a/include/fkYAML/detail/input/tag_t.hpp +++ b/include/fkYAML/detail/input/tag_t.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/iterator.hpp b/include/fkYAML/detail/iterator.hpp index 5e56267b..7d7f709f 100644 --- a/include/fkYAML/detail/iterator.hpp +++ b/include/fkYAML/detail/iterator.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/macros/cpp_config_macros.hpp b/include/fkYAML/detail/macros/cpp_config_macros.hpp index ef342074..9f7a71f8 100644 --- a/include/fkYAML/detail/macros/cpp_config_macros.hpp +++ b/include/fkYAML/detail/macros/cpp_config_macros.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/macros/version_macros.hpp b/include/fkYAML/detail/macros/version_macros.hpp index 5dab1cb3..36526643 100644 --- a/include/fkYAML/detail/macros/version_macros.hpp +++ b/include/fkYAML/detail/macros/version_macros.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -10,7 +10,7 @@ // Check version definitions if already defined. #if defined(FK_YAML_MAJOR_VERSION) && defined(FK_YAML_MINOR_VERSION) && defined(FK_YAML_PATCH_VERSION) -#if FK_YAML_MAJOR_VERSION != 0 || FK_YAML_MINOR_VERSION != 3 || FK_YAML_PATCH_VERSION != 8 +#if FK_YAML_MAJOR_VERSION != 0 || FK_YAML_MINOR_VERSION != 3 || FK_YAML_PATCH_VERSION != 9 #warning Already included a different version of the fkYAML library! #else // define macros to skip defining macros down below. @@ -22,7 +22,7 @@ #define FK_YAML_MAJOR_VERSION 0 #define FK_YAML_MINOR_VERSION 3 -#define FK_YAML_PATCH_VERSION 8 +#define FK_YAML_PATCH_VERSION 9 #define FK_YAML_NAMESPACE_VERSION_CONCAT_IMPL(major, minor, patch) v##major##_##minor##_##patch diff --git a/include/fkYAML/detail/meta/detect.hpp b/include/fkYAML/detail/meta/detect.hpp index fa6cdfee..f6dc14e3 100644 --- a/include/fkYAML/detail/meta/detect.hpp +++ b/include/fkYAML/detail/meta/detect.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/meta/input_adapter_traits.hpp b/include/fkYAML/detail/meta/input_adapter_traits.hpp index 400d30f5..a94d6f5a 100644 --- a/include/fkYAML/detail/meta/input_adapter_traits.hpp +++ b/include/fkYAML/detail/meta/input_adapter_traits.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/meta/node_traits.hpp b/include/fkYAML/detail/meta/node_traits.hpp index d86dd928..709c95fa 100644 --- a/include/fkYAML/detail/meta/node_traits.hpp +++ b/include/fkYAML/detail/meta/node_traits.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/meta/stl_supplement.hpp b/include/fkYAML/detail/meta/stl_supplement.hpp index 587b2a5c..5286fc04 100644 --- a/include/fkYAML/detail/meta/stl_supplement.hpp +++ b/include/fkYAML/detail/meta/stl_supplement.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/meta/type_traits.hpp b/include/fkYAML/detail/meta/type_traits.hpp index a154863b..1d2d43e5 100644 --- a/include/fkYAML/detail/meta/type_traits.hpp +++ b/include/fkYAML/detail/meta/type_traits.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/node_property.hpp b/include/fkYAML/detail/node_property.hpp index 1b887f79..f17d98e2 100644 --- a/include/fkYAML/detail/node_property.hpp +++ b/include/fkYAML/detail/node_property.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/node_ref_storage.hpp b/include/fkYAML/detail/node_ref_storage.hpp index 81267e73..98316bda 100644 --- a/include/fkYAML/detail/node_ref_storage.hpp +++ b/include/fkYAML/detail/node_ref_storage.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/output/serializer.hpp b/include/fkYAML/detail/output/serializer.hpp index a222b19c..44b05d5e 100644 --- a/include/fkYAML/detail/output/serializer.hpp +++ b/include/fkYAML/detail/output/serializer.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/string_formatter.hpp b/include/fkYAML/detail/string_formatter.hpp index bc9f26e1..16527166 100644 --- a/include/fkYAML/detail/string_formatter.hpp +++ b/include/fkYAML/detail/string_formatter.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/types/lexical_token_t.hpp b/include/fkYAML/detail/types/lexical_token_t.hpp index 66d80b13..7976e80c 100644 --- a/include/fkYAML/detail/types/lexical_token_t.hpp +++ b/include/fkYAML/detail/types/lexical_token_t.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/types/node_t.hpp b/include/fkYAML/detail/types/node_t.hpp index 814527aa..8b8aacef 100644 --- a/include/fkYAML/detail/types/node_t.hpp +++ b/include/fkYAML/detail/types/node_t.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/detail/types/yaml_version_t.hpp b/include/fkYAML/detail/types/yaml_version_t.hpp index 178ccc4c..43a5e4d9 100644 --- a/include/fkYAML/detail/types/yaml_version_t.hpp +++ b/include/fkYAML/detail/types/yaml_version_t.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/exception.hpp b/include/fkYAML/exception.hpp index c9ac55ec..2b44a7e0 100644 --- a/include/fkYAML/exception.hpp +++ b/include/fkYAML/exception.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/node.hpp b/include/fkYAML/node.hpp index 4341a3d1..b40604ba 100644 --- a/include/fkYAML/node.hpp +++ b/include/fkYAML/node.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/node_value_converter.hpp b/include/fkYAML/node_value_converter.hpp index 395add84..e9ccc958 100644 --- a/include/fkYAML/node_value_converter.hpp +++ b/include/fkYAML/node_value_converter.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/include/fkYAML/ordered_map.hpp b/include/fkYAML/ordered_map.hpp index 257120f5..b6d9d6b2 100644 --- a/include/fkYAML/ordered_map.hpp +++ b/include/fkYAML/ordered_map.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/single_include/fkYAML/node.hpp b/single_include/fkYAML/node.hpp index ff7cc0dd..bec30513 100644 --- a/single_include/fkYAML/node.hpp +++ b/single_include/fkYAML/node.hpp @@ -1,6 +1,6 @@ /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -24,7 +24,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -34,7 +34,7 @@ // Check version definitions if already defined. #if defined(FK_YAML_MAJOR_VERSION) && defined(FK_YAML_MINOR_VERSION) && defined(FK_YAML_PATCH_VERSION) -#if FK_YAML_MAJOR_VERSION != 0 || FK_YAML_MINOR_VERSION != 3 || FK_YAML_PATCH_VERSION != 8 +#if FK_YAML_MAJOR_VERSION != 0 || FK_YAML_MINOR_VERSION != 3 || FK_YAML_PATCH_VERSION != 9 #warning Already included a different version of the fkYAML library! #else // define macros to skip defining macros down below. @@ -46,7 +46,7 @@ #define FK_YAML_MAJOR_VERSION 0 #define FK_YAML_MINOR_VERSION 3 -#define FK_YAML_PATCH_VERSION 8 +#define FK_YAML_PATCH_VERSION 9 #define FK_YAML_NAMESPACE_VERSION_CONCAT_IMPL(major, minor, patch) v##major##_##minor##_##patch @@ -74,7 +74,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -138,7 +138,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -164,7 +164,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -183,7 +183,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -199,7 +199,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -217,7 +217,7 @@ // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -465,7 +465,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -777,7 +777,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -832,7 +832,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -855,7 +855,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -881,7 +881,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -907,7 +907,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -928,7 +928,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -977,7 +977,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -1415,7 +1415,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -1545,7 +1545,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -1838,7 +1838,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -2189,7 +2189,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -2210,7 +2210,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -2487,7 +2487,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -2508,7 +2508,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -3984,7 +3984,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -4008,7 +4008,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -4212,7 +4212,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -5351,7 +5351,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -5376,7 +5376,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -5395,7 +5395,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -6573,7 +6573,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -6980,7 +6980,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -7073,7 +7073,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -7093,7 +7093,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -7496,7 +7496,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -7514,7 +7514,7 @@ FK_YAML_DETAIL_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -7804,7 +7804,7 @@ FK_YAML_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani @@ -8192,7 +8192,7 @@ FK_YAML_NAMESPACE_END // #include /// _______ __ __ __ _____ __ __ __ /// | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library -/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +/// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 /// |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML /// /// SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/cmake_add_subdirectory_test/project/main.cpp b/test/cmake_add_subdirectory_test/project/main.cpp index 8f2429a9..0a54a896 100644 --- a/test/cmake_add_subdirectory_test/project/main.cpp +++ b/test/cmake_add_subdirectory_test/project/main.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/cmake_fetch_content_test/project/CMakeLists.txt b/test/cmake_fetch_content_test/project/CMakeLists.txt index d95bfc99..a706efb3 100644 --- a/test/cmake_fetch_content_test/project/CMakeLists.txt +++ b/test/cmake_fetch_content_test/project/CMakeLists.txt @@ -6,7 +6,7 @@ include(FetchContent) FetchContent_Declare( fkYAML GIT_REPOSITORY https://github.com/fktn-k/fkYAML.git - GIT_TAG v0.3.8) + GIT_TAG v0.3.9) FetchContent_MakeAvailable(fkYAML) add_executable( diff --git a/test/cmake_fetch_content_test/project/main.cpp b/test/cmake_fetch_content_test/project/main.cpp index 8f2429a9..0a54a896 100644 --- a/test/cmake_fetch_content_test/project/main.cpp +++ b/test/cmake_fetch_content_test/project/main.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/cmake_find_package_test/project/main.cpp b/test/cmake_find_package_test/project/main.cpp index 8f2429a9..0a54a896 100644 --- a/test/cmake_find_package_test/project/main.cpp +++ b/test/cmake_find_package_test/project/main.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/cmake_target_include_directories_test/project/main.cpp b/test/cmake_target_include_directories_test/project/main.cpp index 8f2429a9..0a54a896 100644 --- a/test/cmake_target_include_directories_test/project/main.cpp +++ b/test/cmake_target_include_directories_test/project/main.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/main.cpp b/test/unit_test/main.cpp index 5b4a2276..ee4f319e 100644 --- a/test/unit_test/main.cpp +++ b/test/unit_test/main.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_custom_from_node.cpp b/test/unit_test/test_custom_from_node.cpp index 10606abc..de46764b 100644 --- a/test/unit_test/test_custom_from_node.cpp +++ b/test/unit_test/test_custom_from_node.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_deserializer_class.cpp b/test/unit_test/test_deserializer_class.cpp index bd0d6f83..260bfa8b 100644 --- a/test/unit_test/test_deserializer_class.cpp +++ b/test/unit_test/test_deserializer_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_encode_detector.cpp b/test/unit_test/test_encode_detector.cpp index 656937e7..b663fcac 100644 --- a/test/unit_test/test_encode_detector.cpp +++ b/test/unit_test/test_encode_detector.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_exception_class.cpp b/test/unit_test/test_exception_class.cpp index 95c349a5..971e592e 100644 --- a/test/unit_test/test_exception_class.cpp +++ b/test/unit_test/test_exception_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_from_string.cpp b/test/unit_test/test_from_string.cpp index 6c5460f8..8ea8ba32 100644 --- a/test/unit_test/test_from_string.cpp +++ b/test/unit_test/test_from_string.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_input_adapter.cpp b/test/unit_test/test_input_adapter.cpp index 16974e15..8c508c05 100644 --- a/test/unit_test/test_input_adapter.cpp +++ b/test/unit_test/test_input_adapter.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_iterator_class.cpp b/test/unit_test/test_iterator_class.cpp index 61c0b5d9..631785fb 100644 --- a/test/unit_test/test_iterator_class.cpp +++ b/test/unit_test/test_iterator_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_lexical_analyzer_class.cpp b/test/unit_test/test_lexical_analyzer_class.cpp index 5671237a..b8ab5a0d 100644 --- a/test/unit_test/test_lexical_analyzer_class.cpp +++ b/test/unit_test/test_lexical_analyzer_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_node_class.cpp b/test/unit_test/test_node_class.cpp index f55f82da..2cc22472 100644 --- a/test/unit_test/test_node_class.cpp +++ b/test/unit_test/test_node_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_node_ref_storage_class.cpp b/test/unit_test/test_node_ref_storage_class.cpp index c58defd3..1f9fd2bd 100644 --- a/test/unit_test/test_node_ref_storage_class.cpp +++ b/test/unit_test/test_node_ref_storage_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_ordered_map_class.cpp b/test/unit_test/test_ordered_map_class.cpp index e37d0a10..e6560934 100644 --- a/test/unit_test/test_ordered_map_class.cpp +++ b/test/unit_test/test_ordered_map_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_position_tracker_class.cpp b/test/unit_test/test_position_tracker_class.cpp index a5a0b4d8..fb8a677b 100644 --- a/test/unit_test/test_position_tracker_class.cpp +++ b/test/unit_test/test_position_tracker_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_scalar_scanner_class.cpp b/test/unit_test/test_scalar_scanner_class.cpp index 84e23ce0..23ff72e8 100644 --- a/test/unit_test/test_scalar_scanner_class.cpp +++ b/test/unit_test/test_scalar_scanner_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_serializer_class.cpp b/test/unit_test/test_serializer_class.cpp index c8c3bc74..f51851bf 100644 --- a/test/unit_test/test_serializer_class.cpp +++ b/test/unit_test/test_serializer_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_string_formatter.cpp b/test/unit_test/test_string_formatter.cpp index b3ece68a..acabf23f 100644 --- a/test/unit_test/test_string_formatter.cpp +++ b/test/unit_test/test_string_formatter.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_tag_resolver_class.cpp b/test/unit_test/test_tag_resolver_class.cpp index a135c61b..ded478d4 100644 --- a/test/unit_test/test_tag_resolver_class.cpp +++ b/test/unit_test/test_tag_resolver_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_uri_encoding_class.cpp b/test/unit_test/test_uri_encoding_class.cpp index 36740f6d..278fcea9 100644 --- a/test/unit_test/test_uri_encoding_class.cpp +++ b/test/unit_test/test_uri_encoding_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_utf_encodings.cpp b/test/unit_test/test_utf_encodings.cpp index f1a2ccb9..c4b486fe 100644 --- a/test/unit_test/test_utf_encodings.cpp +++ b/test/unit_test/test_utf_encodings.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/test/unit_test/test_yaml_escaper_class.cpp b/test/unit_test/test_yaml_escaper_class.cpp index 747b9278..76f88902 100644 --- a/test/unit_test/test_yaml_escaper_class.cpp +++ b/test/unit_test/test_yaml_escaper_class.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/tool/benchmark/main.cpp b/tool/benchmark/main.cpp index 26269801..411c7f81 100644 --- a/tool/benchmark/main.cpp +++ b/tool/benchmark/main.cpp @@ -1,6 +1,6 @@ // _______ __ __ __ _____ __ __ __ // | __| |_/ | \_/ |/ _ \ / \/ \| | fkYAML: A C++ header-only YAML library (supporting code) -// | __| _ < \_ _/| ___ | _ | |___ version 0.3.8 +// | __| _ < \_ _/| ___ | _ | |___ version 0.3.9 // |__| |_| \__| |_| |_| |_|___||___|______| https://github.com/fktn-k/fkYAML // // SPDX-FileCopyrightText: 2023-2024 Kensuke Fukutani diff --git a/tool/natvis_generator/params.json b/tool/natvis_generator/params.json index 74ba0e3b..e5604d86 100644 --- a/tool/natvis_generator/params.json +++ b/tool/natvis_generator/params.json @@ -1 +1 @@ -{ "version": "0.3.8" } +{ "version": "0.3.9" }