From 500138ce67c3e7420cdf8931c592f8104797c967 Mon Sep 17 00:00:00 2001 From: Mars Date: Wed, 5 Jun 2024 19:04:53 -0400 Subject: [PATCH] weh --- .clangd | 2 +- flake.lock | 6 +- flake.nix | 26 +- include/rfl/bson.hpp | 13 + include/rfl/bson/Parser.hpp | 50 + include/rfl/bson/Reader.hpp | 217 + include/rfl/bson/Writer.hpp | 227 + include/rfl/bson/load.hpp | 22 + include/rfl/bson/read.hpp | 61 + include/rfl/bson/save.hpp | 26 + include/rfl/bson/write.hpp | 61 + include/rfl/cbor.hpp | 13 + include/rfl/cbor/Parser.hpp | 45 + include/rfl/cbor/Reader.hpp | 259 + include/rfl/cbor/Writer.hpp | 164 + include/rfl/cbor/load.hpp | 23 + include/rfl/cbor/read.hpp | 57 + include/rfl/cbor/save.hpp | 26 + include/rfl/cbor/write.hpp | 59 + include/rfl/flexbuf.hpp | 13 + include/rfl/flexbuf/Parser.hpp | 17 + include/rfl/flexbuf/Reader.hpp | 145 + include/rfl/flexbuf/Writer.hpp | 176 + include/rfl/flexbuf/load.hpp | 22 + include/rfl/flexbuf/read.hpp | 50 + include/rfl/flexbuf/save.hpp | 26 + include/rfl/flexbuf/write.hpp | 50 + include/rfl/json.hpp | 14 + include/rfl/json/Parser.hpp | 15 + include/rfl/json/Reader.hpp | 154 + include/rfl/json/Writer.hpp | 169 + include/rfl/json/load.hpp | 22 + include/rfl/json/read.hpp | 52 + include/rfl/json/save.hpp | 29 + include/rfl/json/schema/JSONSchema.hpp | 25 + include/rfl/json/schema/Type.hpp | 147 + include/rfl/json/to_schema.hpp | 262 + include/rfl/json/write.hpp | 52 + include/rfl/msgpack.hpp | 13 + include/rfl/msgpack/Parser.hpp | 46 + include/rfl/msgpack/Reader.hpp | 148 + include/rfl/msgpack/Writer.hpp | 154 + include/rfl/msgpack/load.hpp | 22 + include/rfl/msgpack/read.hpp | 57 + include/rfl/msgpack/save.hpp | 26 + include/rfl/msgpack/write.hpp | 44 + include/rfl/parsing/NamedTupleParser.hpp | 69 +- include/rfl/parsing/Parser_default.hpp | 36 +- include/rfl/parsing/StructReader.hpp | 41 - include/rfl/parsing/ViewReader.hpp | 124 +- include/rfl/xml.hpp | 13 + include/rfl/xml/Parser.hpp | 40 + include/rfl/xml/Reader.hpp | 174 + include/rfl/xml/Writer.hpp | 181 + include/rfl/xml/load.hpp | 22 + include/rfl/xml/read.hpp | 50 + include/rfl/xml/save.hpp | 28 + include/rfl/xml/write.hpp | 74 + include/rfl/yaml.hpp | 13 + include/rfl/yaml/Parser.hpp | 17 + include/rfl/yaml/Reader.hpp | 137 + include/rfl/yaml/Writer.hpp | 148 + include/rfl/yaml/load.hpp | 22 + include/rfl/yaml/read.hpp | 47 + include/rfl/yaml/save.hpp | 27 + include/rfl/yaml/write.hpp | 44 + include/yyjson.h | 7690 +++++++++++++++++ meson.build | 41 +- src/config/config.cpp | 14 +- src/config/config.h | 10 +- src/config/weather.cpp | 71 +- src/main.cpp | 23 +- src/os/linux.cpp | 3 +- src/os/macos.cpp | 8 +- src/os/macos/NowPlayingBridge.h | 14 + src/os/macos/NowPlayingBridge.mm | 90 + subprojects/packagecache/quill-4.2.0.tar.gz | Bin 1290165 -> 0 bytes .../packagecache/quill_4.2.0-1_patch.zip | Bin 1401 -> 0 bytes subprojects/quill-4.2.0/.clang-format | 45 - subprojects/quill-4.2.0/.codecov.yml | 5 - .../.github/workflows/coverage.yml | 33 - .../quill-4.2.0/.github/workflows/linux.yml | 111 - .../quill-4.2.0/.github/workflows/macos.yml | 50 - .../quill-4.2.0/.github/workflows/windows.yml | 78 - subprojects/quill-4.2.0/.gitignore | 8 - .../.meson-subproject-wrap-hash.txt | 1 - subprojects/quill-4.2.0/.readthedocs.yaml | 22 - subprojects/quill-4.2.0/CHANGELOG.md | 1384 --- subprojects/quill-4.2.0/CMakeLists.txt | 166 - subprojects/quill-4.2.0/LICENSE | 21 - subprojects/quill-4.2.0/LICENSE.build | 19 - subprojects/quill-4.2.0/README.md | 511 -- .../quill-4.2.0/benchmarks/CMakeLists.txt | 3 - .../backend_throughput/CMakeLists.txt | 7 - .../quill_backend_throughput.cpp | 65 - .../quill_backend_throughput_no_buffering.cpp | 66 - .../benchmarks/compile_time/CMakeLists.txt | 5 - .../compile_time/compile_time_bench.cpp | 3365 -------- .../compile_time/gen_log_messages.py | 57 - .../compile_time/qwrapper/CMakeLists.txt | 16 - .../qwrapper/include/qwrapper/qwrapper.cpp | 18 - .../qwrapper/include/qwrapper/qwrapper.h | 3 - .../hot_path_latency/CMakeLists.txt | 7 - .../hot_path_latency/hot_path_bench.h | 204 - .../hot_path_latency/hot_path_bench_config.h | 39 - .../quill_hot_path_rdtsc_clock.cpp | 93 - .../quill_hot_path_system_clock.cpp | 96 - .../quill-4.2.0/cmake/FindSphinx.cmake | 11 - .../cmake/SetCommonCompileOptions.cmake | 21 - subprojects/quill-4.2.0/cmake/doctest.cmake | 189 - .../quill-4.2.0/cmake/doctestAddTests.cmake | 120 - subprojects/quill-4.2.0/docs/CMakeLists.txt | 55 - subprojects/quill-4.2.0/docs/Doxyfile.in | 2660 ------ subprojects/quill-4.2.0/docs/conf.py | 53 - subprojects/quill-4.2.0/docs/design.drawio | 139 - subprojects/quill-4.2.0/docs/design.jpg | Bin 91588 -> 0 bytes subprojects/quill-4.2.0/docs/features.rst | 86 - subprojects/quill-4.2.0/docs/index.rst | 26 - subprojects/quill-4.2.0/docs/install.rst | 82 - subprojects/quill-4.2.0/docs/make.bat | 35 - .../quill_v3_compiler_bench.speedscope.png | Bin 130722 -> 0 bytes .../quill_v3_compiler_profile.speedscope.png | Bin 207353 -> 0 bytes ...quill_v4_1_compiler_profile.speedscope.png | Bin 148846 -> 0 bytes .../quill_v4_compiler_bench.speedscope.png | Bin 158205 -> 0 bytes .../quill_v4_compiler_profile.speedscope.png | Bin 179708 -> 0 bytes subprojects/quill-4.2.0/docs/requirements.txt | 2 - subprojects/quill-4.2.0/docs/tutorial.rst | 525 -- subprojects/quill-4.2.0/docs/usage.rst | 91 - subprojects/quill-4.2.0/docs/users-api.rst | 70 - .../quill-4.2.0/examples/CMakeLists.txt | 74 - .../examples/advanced/CMakeLists.txt | 5 - .../examples/advanced/advanced.cpp | 50 - .../advanced/quill_wrapper/CMakeLists.txt | 16 - .../include/quill_wrapper/quill_wrapper.cpp | 21 - .../include/quill_wrapper/quill_wrapper.h | 3 - .../quill-4.2.0/examples/advanced/user.h | 16 - .../examples/advanced/user_quill_codec.h | 85 - .../examples/backend_thread_notify.cpp | 59 - .../examples/backtrace_logging.cpp | 54 - .../bounded_dropping_queue_frontend.cpp | 53 - .../quill-4.2.0/examples/console_logging.cpp | 59 - .../examples/custom_console_colours.cpp | 42 - .../examples/custom_frontend_options.cpp | 47 - .../quill-4.2.0/examples/file_logging.cpp | 61 - .../quill-4.2.0/examples/filter_logging.cpp | 41 - .../examples/json_sink_logging.cpp | 63 - ...ogger_removal_with_file_event_notifier.cpp | 92 - .../examples/recommended_usage/CMakeLists.txt | 9 - .../quill_wrapper/CMakeLists.txt | 17 - .../include/quill_wrapper/overwrite_macros.h | 28 - .../include/quill_wrapper/quill_wrapper.cpp | 35 - .../include/quill_wrapper/quill_wrapper.h | 3 - .../recommended_usage/recommended_usage.cpp | 49 - .../use_overwrite_macros.cpp | 13 - .../examples/rotating_file_logging.cpp | 44 - .../quill-4.2.0/examples/signal_handler.cpp | 90 - .../examples/system_clock_logging.cpp | 39 - .../quill-4.2.0/examples/tags_logging.cpp | 97 - .../examples/user_clock_source.cpp | 81 - .../examples/user_defined_filter.cpp | 58 - .../examples/user_defined_sink.cpp | 77 - .../examples/user_defined_types_logging.cpp | 63 - subprojects/quill-4.2.0/meson.build | 21 - subprojects/quill-4.2.0/quill/CMakeLists.txt | 248 - .../quill/cmake/CodeCoverage.cmake | 157 - .../quill-4.2.0/quill/cmake/Utility.cmake | 24 - .../quill/cmake/quill-config.cmake.in | 6 - .../quill-4.2.0/quill/cmake/quill.pc.in | 10 - .../quill-4.2.0/quill/include/quill/Backend.h | 173 - .../quill/include/quill/BackendTscClock.h | 94 - .../quill/include/quill/Frontend.h | 211 - .../quill/include/quill/LogMacros.h | 284 - .../quill-4.2.0/quill/include/quill/Logger.h | 320 - .../quill/include/quill/UserClockSource.h | 38 - .../quill-4.2.0/quill/include/quill/Utility.h | 88 - .../include/quill/backend/BackendManager.h | 80 - .../include/quill/backend/BackendOptions.h | 169 - .../include/quill/backend/BackendUtilities.h | 152 - .../include/quill/backend/BackendWorker.h | 1295 --- .../include/quill/backend/BacktraceStorage.h | 198 - .../include/quill/backend/PatternFormatter.h | 508 -- .../quill/include/quill/backend/RdtscClock.h | 212 - .../include/quill/backend/SignalHandler.h | 374 - .../include/quill/backend/StringFromTime.h | 533 -- .../quill/backend/TimestampFormatter.h | 214 - .../include/quill/backend/TransitEvent.h | 93 - .../quill/backend/TransitEventBuffer.h | 211 - .../quill/include/quill/bundled/fmt/args.h | 235 - .../quill/include/quill/bundled/fmt/chrono.h | 2240 ----- .../quill/include/quill/bundled/fmt/color.h | 643 -- .../quill/include/quill/bundled/fmt/compile.h | 535 -- .../quill/include/quill/bundled/fmt/core.h | 2970 ------- .../include/quill/bundled/fmt/format-inl.h | 1678 ---- .../quill/include/quill/bundled/fmt/format.h | 4539 ---------- .../quill/include/quill/bundled/fmt/os.h | 455 - .../quill/include/quill/bundled/fmt/ostream.h | 245 - .../quill/include/quill/bundled/fmt/printf.h | 675 -- .../quill/include/quill/bundled/fmt/ranges.h | 738 -- .../quill/include/quill/bundled/fmt/std.h | 537 -- .../quill/include/quill/bundled/fmt/xchar.h | 259 - .../quill/include/quill/core/Attributes.h | 96 - .../include/quill/core/BoundedSPSCQueue.h | 327 - .../quill/include/quill/core/Codec.h | 435 - .../quill/include/quill/core/Common.h | 89 - .../quill/core/DynamicFormatArgStore.h | 122 - .../quill/include/quill/core/Filesystem.h | 63 - .../quill/include/quill/core/FormatBuffer.h | 110 - .../include/quill/core/FrontendOptions.h | 44 - .../quill/include/quill/core/LogLevel.h | 156 - .../quill/include/quill/core/LoggerBase.h | 140 - .../quill/include/quill/core/LoggerManager.h | 223 - .../quill/include/quill/core/MacroMetadata.h | 220 - .../quill/include/quill/core/MathUtils.h | 57 - .../quill/include/quill/core/QuillError.h | 55 - .../quill/include/quill/core/Rdtsc.h | 92 - .../quill/include/quill/core/SinkManager.h | 152 - .../include/quill/core/ThreadContextManager.h | 386 - .../include/quill/core/ThreadUtilities.h | 197 - .../quill/include/quill/core/TimeUtilities.h | 104 - .../include/quill/core/UnboundedSPSCQueue.h | 261 - .../quill/include/quill/filters/Filter.h | 69 - .../quill/include/quill/sinks/ConsoleSink.h | 457 - .../quill/include/quill/sinks/FileSink.h | 370 - .../include/quill/sinks/JsonConsoleSink.h | 76 - .../quill/include/quill/sinks/JsonFileSink.h | 91 - .../quill/include/quill/sinks/NullSink.h | 36 - .../include/quill/sinks/RotatingFileSink.h | 796 -- .../quill/include/quill/sinks/Sink.h | 192 - .../quill/include/quill/sinks/StreamSink.h | 195 - .../quill/include/quill/std/Array.h | 124 - .../quill/include/quill/std/Deque.h | 136 - .../quill/include/quill/std/FilesystemPath.h | 90 - .../quill/include/quill/std/ForwardList.h | 146 - .../quill/include/quill/std/List.h | 135 - .../quill-4.2.0/quill/include/quill/std/Map.h | 195 - .../quill/include/quill/std/Optional.h | 119 - .../quill/include/quill/std/Pair.h | 124 - .../quill-4.2.0/quill/include/quill/std/Set.h | 146 - .../quill/include/quill/std/Tuple.h | 78 - .../quill/include/quill/std/UnorderedMap.h | 203 - .../quill/include/quill/std/UnorderedSet.h | 149 - .../quill/include/quill/std/Vector.h | 133 - .../quill-4.2.0/quill/test/CMakeLists.txt | 2 - .../quill/test/bundled/doctest/LICENSE.txt | 21 - .../quill/test/bundled/doctest/doctest.h | 7106 --------------- .../ArithmeticTypesLoggingTest.cpp | 143 - .../BackendExceptionNotifierTest.cpp | 116 - .../BackendLongSleepAndNotifyTest.cpp | 90 - .../BackendTransitBufferHardLimitTest.cpp | 91 - .../BackendTransitBufferSoftLimitTest.cpp | 75 - .../BacktraceDynamicLogLevelTest.cpp | 83 - .../BacktraceFlushOnErrorTest.cpp | 79 - .../BacktraceManualFlushTest.cpp | 76 - .../BacktraceNoFlushTest.cpp | 70 - .../BacktraceTerminatedThreadFlushTest.cpp | 105 - .../BoundedBlockingQueueTest.cpp | 78 - .../BoundedDroppingQueueTest.cpp | 78 - .../test/integration_tests/CMakeLists.txt | 109 - .../CompileActiveLogLevelTest.cpp | 67 - .../ConsoleSinkStderrMultipleFormatsTest.cpp | 97 - .../ConsoleSinkStdoutMultipleFormatsTest.cpp | 97 - .../integration_tests/EnumLoggingTest.cpp | 121 - .../integration_tests/FlushWithoutAnyLog.cpp | 56 - .../JsonConsoleLoggingTest.cpp | 71 - .../integration_tests/JsonFileLoggingTest.cpp | 180 - .../LogArgumentsEvaluationTest.cpp | 67 - .../LogFlushWithSoftLimitTest.cpp | 86 - .../LoggerAddRemoveGetTest.cpp | 107 - .../MultiFrontendThreadsTest.cpp | 95 - .../MultipleSinksSameLoggerTest.cpp | 93 - .../RotatingSinkDailyRotationTest.cpp | 56 - .../RotatingSinkKeepOldestTest.cpp | 102 - .../RotatingSinkOverwriteOldestTest.cpp | 102 - .../integration_tests/SignalHandlerTest.cpp | 117 - .../SingleFrontendThreadTest.cpp | 62 - .../test/integration_tests/SinkFilterTest.cpp | 132 - .../SinkLogLevelFilterTest.cpp | 89 - .../integration_tests/StdArrayLoggingTest.cpp | 209 - .../integration_tests/StdDequeLoggingTest.cpp | 250 - .../StdFilesystemPathLoggingTest.cpp | 67 - .../StdForwardListLoggingTest.cpp | 161 - .../integration_tests/StdListLoggingTest.cpp | 161 - .../integration_tests/StdMapLoggingTest.cpp | 101 - .../StdMultiMapLoggingTest.cpp | 101 - .../StdMultiSetLoggingTest.cpp | 218 - .../StdOptionalLoggingTest.cpp | 109 - .../integration_tests/StdPairLoggingTest.cpp | 92 - .../integration_tests/StdSetLoggingTest.cpp | 217 - .../integration_tests/StdTupleLoggingTest.cpp | 80 - .../StdUnorderedMapLoggingTest.cpp | 93 - .../StdUnorderedMultiMapLoggingTest.cpp | 93 - .../StdUnorderedMultiSetLoggingTest.cpp | 184 - .../StdUnorderedSetLoggingTest.cpp | 184 - .../StdVectorLoggingTest.cpp | 255 - .../StringLargeLoggingTest.cpp | 73 - .../StringLoggingDynamicLogLevelTest.cpp | 154 - .../integration_tests/StringLoggingTest.cpp | 161 - .../StringRandomLargeLoggingTest.cpp | 108 - .../StringRandomLoggingTest.cpp | 97 - .../StringRandomSmallLoggingTest.cpp | 97 - .../integration_tests/TagsLoggingTest.cpp | 120 - .../integration_tests/UserClockSourceTest.cpp | 117 - .../UserDefinedTypeLoggingTest.cpp | 152 - .../WideStdTypesLoggingTest.cpp | 330 - .../WideStringLoggingTest.cpp | 136 - .../quill/test/misc/DocTestExtensions.cpp | 190 - .../quill/test/misc/DocTestExtensions.h | 97 - .../quill-4.2.0/quill/test/misc/TestMain.cpp | 2 - .../quill/test/misc/TestUtilities.cpp | 155 - .../quill/test/misc/TestUtilities.h | 30 - .../test/unit_tests/BoundedQueueTest.cpp | 137 - .../quill/test/unit_tests/CMakeLists.txt | 66 - .../unit_tests/DynamicFormatArgStoreTest.cpp | 33 - .../test/unit_tests/FileUtilitiesTest.cpp | 166 - .../quill/test/unit_tests/LogLevelTest.cpp | 146 - .../test/unit_tests/LoggerManagerTest.cpp | 125 - .../quill/test/unit_tests/LoggerTest.cpp | 70 - .../test/unit_tests/MacroMetadataTest.cpp | 88 - .../quill/test/unit_tests/MathUtilsTest.cpp | 81 - .../test/unit_tests/PatternFormatterTest.cpp | 419 - .../quill/test/unit_tests/RdtscClockTest.cpp | 49 - .../test/unit_tests/RotatingFileSinkTest.cpp | 1967 ----- .../quill/test/unit_tests/SinkManagerTest.cpp | 68 - .../test/unit_tests/StringFromTimeTest.cpp | 449 - .../unit_tests/ThreadContextManagerTest.cpp | 115 - .../unit_tests/TimestampFormatterTest.cpp | 183 - .../unit_tests/TransitEventBufferTest.cpp | 254 - .../test/unit_tests/UnboundedQueueTest.cpp | 68 - .../quill/test/unit_tests/UtilityTest.cpp | 55 - .../quill-4.2.0/scripts/rename_libfmt.py | 40 - subprojects/quill.wrap | 13 - 331 files changed, 12348 insertions(+), 60593 deletions(-) create mode 100644 include/rfl/bson.hpp create mode 100644 include/rfl/bson/Parser.hpp create mode 100644 include/rfl/bson/Reader.hpp create mode 100644 include/rfl/bson/Writer.hpp create mode 100644 include/rfl/bson/load.hpp create mode 100644 include/rfl/bson/read.hpp create mode 100644 include/rfl/bson/save.hpp create mode 100644 include/rfl/bson/write.hpp create mode 100644 include/rfl/cbor.hpp create mode 100644 include/rfl/cbor/Parser.hpp create mode 100644 include/rfl/cbor/Reader.hpp create mode 100644 include/rfl/cbor/Writer.hpp create mode 100644 include/rfl/cbor/load.hpp create mode 100644 include/rfl/cbor/read.hpp create mode 100644 include/rfl/cbor/save.hpp create mode 100644 include/rfl/cbor/write.hpp create mode 100644 include/rfl/flexbuf.hpp create mode 100644 include/rfl/flexbuf/Parser.hpp create mode 100644 include/rfl/flexbuf/Reader.hpp create mode 100644 include/rfl/flexbuf/Writer.hpp create mode 100644 include/rfl/flexbuf/load.hpp create mode 100644 include/rfl/flexbuf/read.hpp create mode 100644 include/rfl/flexbuf/save.hpp create mode 100644 include/rfl/flexbuf/write.hpp create mode 100644 include/rfl/json.hpp create mode 100644 include/rfl/json/Parser.hpp create mode 100644 include/rfl/json/Reader.hpp create mode 100644 include/rfl/json/Writer.hpp create mode 100644 include/rfl/json/load.hpp create mode 100644 include/rfl/json/read.hpp create mode 100644 include/rfl/json/save.hpp create mode 100644 include/rfl/json/schema/JSONSchema.hpp create mode 100644 include/rfl/json/schema/Type.hpp create mode 100644 include/rfl/json/to_schema.hpp create mode 100644 include/rfl/json/write.hpp create mode 100644 include/rfl/msgpack.hpp create mode 100644 include/rfl/msgpack/Parser.hpp create mode 100644 include/rfl/msgpack/Reader.hpp create mode 100644 include/rfl/msgpack/Writer.hpp create mode 100644 include/rfl/msgpack/load.hpp create mode 100644 include/rfl/msgpack/read.hpp create mode 100644 include/rfl/msgpack/save.hpp create mode 100644 include/rfl/msgpack/write.hpp delete mode 100644 include/rfl/parsing/StructReader.hpp create mode 100644 include/rfl/xml.hpp create mode 100644 include/rfl/xml/Parser.hpp create mode 100644 include/rfl/xml/Reader.hpp create mode 100644 include/rfl/xml/Writer.hpp create mode 100644 include/rfl/xml/load.hpp create mode 100644 include/rfl/xml/read.hpp create mode 100644 include/rfl/xml/save.hpp create mode 100644 include/rfl/xml/write.hpp create mode 100644 include/rfl/yaml.hpp create mode 100644 include/rfl/yaml/Parser.hpp create mode 100644 include/rfl/yaml/Reader.hpp create mode 100644 include/rfl/yaml/Writer.hpp create mode 100644 include/rfl/yaml/load.hpp create mode 100644 include/rfl/yaml/read.hpp create mode 100644 include/rfl/yaml/save.hpp create mode 100644 include/rfl/yaml/write.hpp create mode 100644 include/yyjson.h create mode 100644 src/os/macos/NowPlayingBridge.h create mode 100644 src/os/macos/NowPlayingBridge.mm delete mode 100644 subprojects/packagecache/quill-4.2.0.tar.gz delete mode 100644 subprojects/packagecache/quill_4.2.0-1_patch.zip delete mode 100644 subprojects/quill-4.2.0/.clang-format delete mode 100644 subprojects/quill-4.2.0/.codecov.yml delete mode 100644 subprojects/quill-4.2.0/.github/workflows/coverage.yml delete mode 100644 subprojects/quill-4.2.0/.github/workflows/linux.yml delete mode 100644 subprojects/quill-4.2.0/.github/workflows/macos.yml delete mode 100644 subprojects/quill-4.2.0/.github/workflows/windows.yml delete mode 100644 subprojects/quill-4.2.0/.gitignore delete mode 100644 subprojects/quill-4.2.0/.meson-subproject-wrap-hash.txt delete mode 100644 subprojects/quill-4.2.0/.readthedocs.yaml delete mode 100644 subprojects/quill-4.2.0/CHANGELOG.md delete mode 100644 subprojects/quill-4.2.0/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/LICENSE delete mode 100644 subprojects/quill-4.2.0/LICENSE.build delete mode 100644 subprojects/quill-4.2.0/README.md delete mode 100644 subprojects/quill-4.2.0/benchmarks/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/benchmarks/backend_throughput/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput.cpp delete mode 100644 subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput_no_buffering.cpp delete mode 100644 subprojects/quill-4.2.0/benchmarks/compile_time/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/benchmarks/compile_time/compile_time_bench.cpp delete mode 100644 subprojects/quill-4.2.0/benchmarks/compile_time/gen_log_messages.py delete mode 100644 subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.cpp delete mode 100644 subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.h delete mode 100644 subprojects/quill-4.2.0/benchmarks/hot_path_latency/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench.h delete mode 100644 subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench_config.h delete mode 100644 subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_rdtsc_clock.cpp delete mode 100644 subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_system_clock.cpp delete mode 100644 subprojects/quill-4.2.0/cmake/FindSphinx.cmake delete mode 100644 subprojects/quill-4.2.0/cmake/SetCommonCompileOptions.cmake delete mode 100644 subprojects/quill-4.2.0/cmake/doctest.cmake delete mode 100644 subprojects/quill-4.2.0/cmake/doctestAddTests.cmake delete mode 100644 subprojects/quill-4.2.0/docs/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/docs/Doxyfile.in delete mode 100644 subprojects/quill-4.2.0/docs/conf.py delete mode 100644 subprojects/quill-4.2.0/docs/design.drawio delete mode 100644 subprojects/quill-4.2.0/docs/design.jpg delete mode 100644 subprojects/quill-4.2.0/docs/features.rst delete mode 100644 subprojects/quill-4.2.0/docs/index.rst delete mode 100644 subprojects/quill-4.2.0/docs/install.rst delete mode 100644 subprojects/quill-4.2.0/docs/make.bat delete mode 100644 subprojects/quill-4.2.0/docs/quill_v3_compiler_bench.speedscope.png delete mode 100644 subprojects/quill-4.2.0/docs/quill_v3_compiler_profile.speedscope.png delete mode 100644 subprojects/quill-4.2.0/docs/quill_v4_1_compiler_profile.speedscope.png delete mode 100644 subprojects/quill-4.2.0/docs/quill_v4_compiler_bench.speedscope.png delete mode 100644 subprojects/quill-4.2.0/docs/quill_v4_compiler_profile.speedscope.png delete mode 100644 subprojects/quill-4.2.0/docs/requirements.txt delete mode 100644 subprojects/quill-4.2.0/docs/tutorial.rst delete mode 100644 subprojects/quill-4.2.0/docs/usage.rst delete mode 100644 subprojects/quill-4.2.0/docs/users-api.rst delete mode 100644 subprojects/quill-4.2.0/examples/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/examples/advanced/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/examples/advanced/advanced.cpp delete mode 100644 subprojects/quill-4.2.0/examples/advanced/quill_wrapper/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/examples/advanced/quill_wrapper/include/quill_wrapper/quill_wrapper.cpp delete mode 100644 subprojects/quill-4.2.0/examples/advanced/quill_wrapper/include/quill_wrapper/quill_wrapper.h delete mode 100644 subprojects/quill-4.2.0/examples/advanced/user.h delete mode 100644 subprojects/quill-4.2.0/examples/advanced/user_quill_codec.h delete mode 100644 subprojects/quill-4.2.0/examples/backend_thread_notify.cpp delete mode 100644 subprojects/quill-4.2.0/examples/backtrace_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/bounded_dropping_queue_frontend.cpp delete mode 100644 subprojects/quill-4.2.0/examples/console_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/custom_console_colours.cpp delete mode 100644 subprojects/quill-4.2.0/examples/custom_frontend_options.cpp delete mode 100644 subprojects/quill-4.2.0/examples/file_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/filter_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/json_sink_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/logger_removal_with_file_event_notifier.cpp delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/quill_wrapper/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/quill_wrapper/include/quill_wrapper/overwrite_macros.h delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/quill_wrapper/include/quill_wrapper/quill_wrapper.cpp delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/quill_wrapper/include/quill_wrapper/quill_wrapper.h delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/recommended_usage.cpp delete mode 100644 subprojects/quill-4.2.0/examples/recommended_usage/use_overwrite_macros.cpp delete mode 100644 subprojects/quill-4.2.0/examples/rotating_file_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/signal_handler.cpp delete mode 100644 subprojects/quill-4.2.0/examples/system_clock_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/tags_logging.cpp delete mode 100644 subprojects/quill-4.2.0/examples/user_clock_source.cpp delete mode 100644 subprojects/quill-4.2.0/examples/user_defined_filter.cpp delete mode 100644 subprojects/quill-4.2.0/examples/user_defined_sink.cpp delete mode 100644 subprojects/quill-4.2.0/examples/user_defined_types_logging.cpp delete mode 100644 subprojects/quill-4.2.0/meson.build delete mode 100644 subprojects/quill-4.2.0/quill/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/quill/cmake/CodeCoverage.cmake delete mode 100644 subprojects/quill-4.2.0/quill/cmake/Utility.cmake delete mode 100644 subprojects/quill-4.2.0/quill/cmake/quill-config.cmake.in delete mode 100644 subprojects/quill-4.2.0/quill/cmake/quill.pc.in delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/Backend.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/BackendTscClock.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/Frontend.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/LogMacros.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/Logger.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/UserClockSource.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/Utility.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/BackendManager.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/BackendOptions.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/BackendUtilities.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/BackendWorker.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/BacktraceStorage.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/PatternFormatter.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/RdtscClock.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/SignalHandler.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/StringFromTime.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/TimestampFormatter.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/TransitEvent.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/backend/TransitEventBuffer.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/args.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/chrono.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/color.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/compile.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/core.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/format-inl.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/format.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/os.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/ostream.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/printf.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/ranges.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/std.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/bundled/fmt/xchar.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/Attributes.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/BoundedSPSCQueue.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/Codec.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/Common.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/DynamicFormatArgStore.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/Filesystem.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/FormatBuffer.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/FrontendOptions.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/LogLevel.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/LoggerBase.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/LoggerManager.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/MacroMetadata.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/MathUtils.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/QuillError.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/Rdtsc.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/SinkManager.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/ThreadContextManager.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/ThreadUtilities.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/TimeUtilities.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/core/UnboundedSPSCQueue.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/filters/Filter.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/ConsoleSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/FileSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/JsonConsoleSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/JsonFileSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/NullSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/RotatingFileSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/Sink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/sinks/StreamSink.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Array.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Deque.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/FilesystemPath.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/ForwardList.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/List.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Map.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Optional.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Pair.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Set.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Tuple.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/UnorderedMap.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/UnorderedSet.h delete mode 100644 subprojects/quill-4.2.0/quill/include/quill/std/Vector.h delete mode 100644 subprojects/quill-4.2.0/quill/test/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/quill/test/bundled/doctest/LICENSE.txt delete mode 100644 subprojects/quill-4.2.0/quill/test/bundled/doctest/doctest.h delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/ArithmeticTypesLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BackendExceptionNotifierTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BackendLongSleepAndNotifyTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BackendTransitBufferHardLimitTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BackendTransitBufferSoftLimitTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BacktraceDynamicLogLevelTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BacktraceFlushOnErrorTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BacktraceManualFlushTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BacktraceNoFlushTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BacktraceTerminatedThreadFlushTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BoundedBlockingQueueTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/BoundedDroppingQueueTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/CompileActiveLogLevelTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/ConsoleSinkStderrMultipleFormatsTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/ConsoleSinkStdoutMultipleFormatsTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/EnumLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/FlushWithoutAnyLog.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/JsonConsoleLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/JsonFileLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/LogArgumentsEvaluationTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/LogFlushWithSoftLimitTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/LoggerAddRemoveGetTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/MultiFrontendThreadsTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/MultipleSinksSameLoggerTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/RotatingSinkDailyRotationTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/RotatingSinkKeepOldestTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/RotatingSinkOverwriteOldestTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/SignalHandlerTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/SingleFrontendThreadTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/SinkFilterTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/SinkLogLevelFilterTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdArrayLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdDequeLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdFilesystemPathLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdForwardListLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdListLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdMapLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdMultiMapLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdMultiSetLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdOptionalLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdPairLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdSetLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdTupleLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdUnorderedMapLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdUnorderedMultiMapLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdUnorderedMultiSetLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdUnorderedSetLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StdVectorLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StringLargeLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StringLoggingDynamicLogLevelTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StringLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StringRandomLargeLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StringRandomLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/StringRandomSmallLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/TagsLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/UserClockSourceTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/UserDefinedTypeLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/WideStdTypesLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/integration_tests/WideStringLoggingTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/misc/DocTestExtensions.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/misc/DocTestExtensions.h delete mode 100644 subprojects/quill-4.2.0/quill/test/misc/TestMain.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/misc/TestUtilities.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/misc/TestUtilities.h delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/BoundedQueueTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/CMakeLists.txt delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/DynamicFormatArgStoreTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/FileUtilitiesTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/LogLevelTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/LoggerManagerTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/LoggerTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/MacroMetadataTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/MathUtilsTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/PatternFormatterTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/RdtscClockTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/RotatingFileSinkTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/SinkManagerTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/StringFromTimeTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/ThreadContextManagerTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/TimestampFormatterTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/TransitEventBufferTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/UnboundedQueueTest.cpp delete mode 100644 subprojects/quill-4.2.0/quill/test/unit_tests/UtilityTest.cpp delete mode 100644 subprojects/quill-4.2.0/scripts/rename_libfmt.py delete mode 100644 subprojects/quill.wrap diff --git a/.clangd b/.clangd index c864a33..adf7a53 100644 --- a/.clangd +++ b/.clangd @@ -1,2 +1,2 @@ CompileFlags: - Add: [-std=c++2b, -Wunused-function] + Add: [-std=c++20, -Wunused-function] diff --git a/flake.lock b/flake.lock index bce19fc..9eb57a1 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1717112898, - "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", + "lastModified": 1717430266, + "narHash": "sha256-EWy2Qbkl/HUwmO8KDBzgDQf+4rl+fLiPFvp3nUSWcxc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", + "rev": "d125f0e4d85f1517b639d4a8f848175da46fcd3e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c5e9e7a..40ddb97 100644 --- a/flake.nix +++ b/flake.nix @@ -46,7 +46,12 @@ ]; }; - stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.llvmPackages_18.stdenv; + stdenv = pkgs.llvmPackages_18.stdenv; + + darwinPkgs = nixpkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs.darwin; [ + apple_sdk.frameworks.CoreFoundation + apple_sdk.frameworks.MediaPlayer + ]); in with pkgs; { packages = rec { @@ -72,7 +77,7 @@ ]); buildInputs = [ - boost185 + coost fmt ]; @@ -105,19 +110,22 @@ ninja pkg-config - boost185 + coost fmt glib libcpr tomlplusplus ] - ++ (lib.optionals pkgs.hostPlatform.isLinux [playerctl]); + ++ (lib.optionals pkgs.hostPlatform.isLinux [playerctl]) + ++ darwinPkgs; - buildInputs = [ - boost185 - libcpr - tomlplusplus - ]; + buildInputs = + [ + coost + libcpr + tomlplusplus + ] + ++ darwinPkgs; name = "C++"; }; diff --git a/include/rfl/bson.hpp b/include/rfl/bson.hpp new file mode 100644 index 0000000..29ca2c5 --- /dev/null +++ b/include/rfl/bson.hpp @@ -0,0 +1,13 @@ +#ifndef RFL_BSON_HPP_ +#define RFL_BSON_HPP_ + +#include "../rfl.hpp" +#include "bson/Parser.hpp" +#include "bson/Reader.hpp" +#include "bson/Writer.hpp" +#include "bson/load.hpp" +#include "bson/read.hpp" +#include "bson/save.hpp" +#include "bson/write.hpp" + +#endif diff --git a/include/rfl/bson/Parser.hpp b/include/rfl/bson/Parser.hpp new file mode 100644 index 0000000..60352b2 --- /dev/null +++ b/include/rfl/bson/Parser.hpp @@ -0,0 +1,50 @@ +#ifndef RFL_BSON_PARSER_HPP_ +#define RFL_BSON_PARSER_HPP_ + +#include + +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl::parsing { + +/// bson_oid_t needs to be treated as a special case, otherwise it will be read +/// as a struct. +template +requires AreReaderAndWriter +struct Parser { + using InputVarType = typename R::InputVarType; + using OutputVarType = typename W::OutputVarType; + + using ParentType = Parent; + + static Result read(const R& _r, + const InputVarType& _var) noexcept { + return _r.template to_basic_type(_var); + } + + template + static void write(const W& _w, const bson_oid_t& _oid, + const P& _parent) noexcept { + ParentType::add_value(_w, _oid, _parent); + } + + static schema::Type to_schema( + std::map* _definitions) { + static_assert(rfl::always_false_v, + "bson_oid_t cannot be expressed inside a JSON schema."); + return schema::Type{schema::Type::String{}}; + } +}; + +} // namespace rfl::parsing + +namespace rfl::bson { + +template +using Parser = parsing::Parser; + +} // namespace rfl::bson + +#endif diff --git a/include/rfl/bson/Reader.hpp b/include/rfl/bson/Reader.hpp new file mode 100644 index 0000000..dedcff4 --- /dev/null +++ b/include/rfl/bson/Reader.hpp @@ -0,0 +1,217 @@ +#ifndef RFL_BSON_READER_HPP_ +#define RFL_BSON_READER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Box.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace bson { + +/// Please refer to https://mongoc.org/libbson/current/api.html +struct Reader { + struct BSONValue { + bson_value_t val_; + }; + + struct BSONInputArray { + BSONValue* val_; + }; + + struct BSONInputObject { + BSONValue* val_; + }; + + struct BSONInputVar { + BSONValue* val_; + }; + + using InputArrayType = BSONInputArray; + using InputObjectType = BSONInputObject; + using InputVarType = BSONInputVar; + + template + static constexpr bool has_custom_constructor = (requires(InputVarType var) { + T::from_bson_obj(var); + }); + + rfl::Result get_field( + const std::string& _name, const InputObjectType& _obj) const noexcept { + bson_t b; + bson_iter_t iter; + const auto doc = _obj.val_->val_.value.v_doc; + if (bson_init_static(&b, doc.data, doc.data_len)) { + if (bson_iter_init(&iter, &b)) { + while (bson_iter_next(&iter)) { + auto key = std::string(bson_iter_key(&iter)); + if (key == _name) { + return to_input_var(&iter); + } + } + } + } + return Error("No field named '" + _name + "' was found."); + } + + bool is_empty(const InputVarType& _var) const noexcept { + return _var.val_->val_.value_type == BSON_TYPE_NULL; + } + + template + rfl::Result to_basic_type(const InputVarType& _var) const noexcept { + const auto btype = _var.val_->val_.value_type; + const auto value = _var.val_->val_.value; + if constexpr (std::is_same, std::string>()) { + switch (btype) { + case BSON_TYPE_UTF8: + return std::string(value.v_utf8.str, value.v_utf8.len); + + case BSON_TYPE_SYMBOL: + return std::string(value.v_symbol.symbol, value.v_symbol.len); + + default: + return rfl::Error( + "Could not cast to string. The type must be UTF8 or symbol."); + } + } else if constexpr (std::is_same, bool>()) { + if (btype != BSON_TYPE_BOOL) { + return rfl::Error("Could not cast to boolean."); + } + return value.v_bool; + } else if constexpr (std::is_floating_point>() || + std::is_integral>()) { + switch (btype) { + case BSON_TYPE_DOUBLE: + return static_cast(value.v_double); + + case BSON_TYPE_INT32: + return static_cast(value.v_int32); + + case BSON_TYPE_INT64: + return static_cast(value.v_int64); + + case BSON_TYPE_DATE_TIME: + return static_cast(value.v_datetime); + + default: + return rfl::Error( + "Could not cast to numeric value. The type must be double, " + "int32, int64 or date_time."); + } + } else if constexpr (std::is_same, bson_oid_t>()) { + if (btype != BSON_TYPE_OID) { + return rfl::Error("Could not cast to OID."); + } + return value.v_oid; + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + rfl::Result to_array( + const InputVarType& _var) const noexcept { + const auto btype = _var.val_->val_.value_type; + if (btype != BSON_TYPE_ARRAY && btype != BSON_TYPE_DOCUMENT) { + return Error("Could not cast to an array."); + } + return InputArrayType{_var.val_}; + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + bson_t b; + bson_iter_t iter; + const auto doc = _arr.val_->val_.value.v_doc; + if (bson_init_static(&b, doc.data, doc.data_len)) { + if (bson_iter_init(&iter, &b)) { + while (bson_iter_next(&iter)) { + const auto err = _array_reader.read(to_input_var(&iter)); + if (err) { + return err; + } + } + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + bson_t b; + bson_iter_t iter; + const auto doc = _obj.val_->val_.value.v_doc; + if (bson_init_static(&b, doc.data, doc.data_len)) { + if (bson_iter_init(&iter, &b)) { + while (bson_iter_next(&iter)) { + const char* k = bson_iter_key(&iter); + _object_reader.read(std::string_view(k), to_input_var(&iter)); + } + } + } + return std::nullopt; + } + + rfl::Result to_object( + const InputVarType& _var) const noexcept { + const auto btype = _var.val_->val_.value_type; + if (btype != BSON_TYPE_DOCUMENT) { + return Error("Could not cast to a document."); + } + return InputObjectType{_var.val_}; + } + + template + rfl::Result use_custom_constructor( + const InputVarType& _var) const noexcept { + try { + return T::from_bson_obj(_var); + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } + + private: + struct BSONValues { + std::vector> vec_; + ~BSONValues() { + for (auto& v : vec_) { + bson_value_destroy(&(v->val_)); + } + } + }; + + private: + InputVarType to_input_var(bson_iter_t* _iter) const noexcept { + values_->vec_.emplace_back(rfl::Box::make()); + auto* last_value = values_->vec_.back().get(); + bson_value_copy(bson_iter_value(_iter), &last_value->val_); + return InputVarType{last_value}; + } + + private: + /// Contains the values inside the object. + rfl::Ref values_; +}; + +} // namespace bson +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/bson/Writer.hpp b/include/rfl/bson/Writer.hpp new file mode 100644 index 0000000..aac627a --- /dev/null +++ b/include/rfl/bson/Writer.hpp @@ -0,0 +1,227 @@ +#ifndef RFL_BSON_WRITER_HPP_ +#define RFL_BSON_WRITER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Box.hpp" +#include "../Ref.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace bson { + +/// Please refer to https://mongoc.org/libbson/current/api.html +class Writer { + struct BSONType { + bson_t val_; + }; + + struct IsArray { + bson_array_builder_t* ptr_; + }; + + struct IsObject { + bson_t* ptr_; + }; + + struct IsRoot {}; + + using ParentType = std::variant; + + public: + struct BSONOutputArray { + BSONOutputArray(bson_array_builder_t* _val, ParentType _parent) + : parent_(_parent), val_(_val) {} + ParentType parent_; + bson_array_builder_t* val_; + }; + + struct BSONOutputObject { + BSONOutputObject(bson_t* _val, ParentType _parent) + : parent_(_parent), val_(_val) {} + ParentType parent_; + bson_t* val_; + }; + + struct BSONOutputVar {}; + + using OutputArrayType = BSONOutputArray; + using OutputObjectType = BSONOutputObject; + using OutputVarType = BSONOutputVar; + + Writer(bson_t* _doc) : doc_(_doc) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + bson_array_builder_t* val = bson_array_builder_new(); + return OutputArrayType(val, IsRoot{}); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + return OutputObjectType(doc_, IsRoot{}); + } + + OutputVarType null_as_root() const noexcept { + // Appears to be unsupported by the BSON C API. + return OutputVarType{}; + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + static_assert(rfl::always_false_v, + "BSON only allows arrays or objects as its root."); + return OutputVarType{}; + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + bson_array_builder_t* val; + bson_array_builder_append_array_builder_begin(_parent->val_, &val); + return OutputArrayType(val, IsArray{_parent->val_}); + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + bson_array_builder_t* val; + bson_append_array_builder_begin(_parent->val_, _name.data(), + static_cast(_name.size()), &val); + return OutputArrayType(val, IsObject{_parent->val_}); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + subdocs_->emplace_back(rfl::Box()); + bson_array_builder_append_document_begin(_parent->val_, + &(subdocs_->back()->val_)); + return OutputObjectType(&subdocs_->back()->val_, IsArray{_parent->val_}); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + subdocs_->emplace_back(rfl::Box()); + bson_append_document_begin(_parent->val_, _name.data(), + static_cast(_name.size()), + &(subdocs_->back()->val_)); + return OutputObjectType(&subdocs_->back()->val_, IsObject{_parent->val_}); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + if constexpr (std::is_same, std::string>()) { + bson_array_builder_append_utf8(_parent->val_, _var.c_str(), + static_cast(_var.size())); + } else if constexpr (std::is_same, bool>()) { + bson_array_builder_append_bool(_parent->val_, _var); + } else if constexpr (std::is_floating_point>()) { + bson_array_builder_append_double(_parent->val_, + static_cast(_var)); + } else if constexpr (std::is_integral>()) { + bson_array_builder_append_int64(_parent->val_, + static_cast(_var)); + } else if constexpr (std::is_same, bson_oid_t>()) { + bson_array_builder_append_oid(_parent->val_, &_var); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + return OutputVarType{}; + } + + template + OutputVarType add_value_to_object(const std::string_view& _name, + const T& _var, + OutputObjectType* _parent) const noexcept { + if constexpr (std::is_same, std::string>()) { + bson_append_utf8(_parent->val_, _name.data(), + static_cast(_name.size()), _var.c_str(), + static_cast(_var.size())); + } else if constexpr (std::is_same, bool>()) { + bson_append_bool(_parent->val_, _name.data(), + static_cast(_name.size()), _var); + } else if constexpr (std::is_floating_point>()) { + bson_append_double(_parent->val_, _name.data(), + static_cast(_name.size()), + static_cast(_var)); + } else if constexpr (std::is_integral>()) { + bson_append_int64(_parent->val_, _name.data(), + static_cast(_name.size()), + static_cast(_var)); + } else if constexpr (std::is_same, bson_oid_t>()) { + bson_append_oid(_parent->val_, _name.data(), + static_cast(_name.size()), &_var); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + return OutputVarType{}; + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + bson_array_builder_append_null(_parent->val_); + return OutputVarType{}; + } + + OutputVarType add_null_to_object(const std::string_view& _name, + OutputObjectType* _parent) const noexcept { + bson_append_null(_parent->val_, _name.data(), + static_cast(_name.size())); + return OutputVarType{}; + } + + void end_array(OutputArrayType* _arr) const noexcept { + const auto handle = [&](const auto _parent) { + using Type = std::remove_cvref_t; + if constexpr (std::is_same()) { + bson_array_builder_append_array_builder_end(_parent.ptr_, _arr->val_); + } else if constexpr (std::is_same()) { + bson_append_array_builder_end(_parent.ptr_, _arr->val_); + } else if constexpr (std::is_same()) { + bson_array_builder_build(_arr->val_, doc_); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + }; + std::visit(handle, _arr->parent_); + } + + void end_object(OutputObjectType* _obj) const noexcept { + const auto handle = [&](const auto _parent) { + using Type = std::remove_cvref_t; + if constexpr (std::is_same()) { + bson_array_builder_append_document_end(_parent.ptr_, _obj->val_); + } else if constexpr (std::is_same()) { + bson_append_document_end(_parent.ptr_, _obj->val_); + } else if constexpr (std::is_same()) { + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + }; + std::visit(handle, _obj->parent_); + } + + private: + /// Pointer to the main document. In BSON, documents are what are usually + /// called objects. + bson_t* const doc_; + + /// Contain all of the subdocuments. + const rfl::Ref>> subdocs_; +}; + +} // namespace bson +} // namespace rfl + +#endif // BSON_PARSER_HPP_ diff --git a/include/rfl/bson/load.hpp b/include/rfl/bson/load.hpp new file mode 100644 index 0000000..05cd9b7 --- /dev/null +++ b/include/rfl/bson/load.hpp @@ -0,0 +1,22 @@ +#ifndef RFL_BSON_LOAD_HPP_ +#define RFL_BSON_LOAD_HPP_ + +#include "../Result.hpp" +#include "../io/load_bytes.hpp" +#include "read.hpp" + +namespace rfl { +namespace bson { + +template +Result load(const std::string& _fname) { + const auto read_bytes = [](const auto& _bytes) { + return read(_bytes); + }; + return rfl::io::load_bytes(_fname).and_then(read_bytes); +} + +} // namespace bson +} // namespace rfl + +#endif diff --git a/include/rfl/bson/read.hpp b/include/rfl/bson/read.hpp new file mode 100644 index 0000000..2ee5bc3 --- /dev/null +++ b/include/rfl/bson/read.hpp @@ -0,0 +1,61 @@ +#ifndef RFL_BSON_READ_HPP_ +#define RFL_BSON_READ_HPP_ + +#include + +#include +#include + +#include "../Processors.hpp" +#include "../internal/wrap_in_rfl_array_t.hpp" +#include "Parser.hpp" +#include "Reader.hpp" + +namespace rfl { +namespace bson { + +using InputObjectType = typename Reader::InputObjectType; +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from a BSON var. +template +Result> read(const InputVarType& _obj) { + const auto r = Reader(); + return Parser>::read(r, _obj); +} + +/// Parses an BSON object using reflection. +template +auto read(const uint8_t* _bytes, const size_t _size) { + Reader::BSONValue value; + value.val_.value.v_doc.data_len = static_cast(_size); + value.val_.value.v_doc.data = const_cast(_bytes); + value.val_.value_type = BSON_TYPE_DOCUMENT; + auto doc = InputVarType{&value}; + return read(doc); +} + +/// Parses an BSON object using reflection. +template +auto read(const char* _bytes, const size_t _size) { + return read(reinterpret_cast(_bytes), _size); +} + +/// Parses an object from BSON using reflection. +template +auto read(const std::vector& _bytes) { + return read(_bytes.data(), _bytes.size()); +} + +/// Parses an object from a stream. +template +auto read(std::istream& _stream) { + std::istreambuf_iterator begin(_stream), end; + auto bytes = std::vector(begin, end); + return read(bytes.data(), bytes.size()); +} + +} // namespace bson +} // namespace rfl + +#endif diff --git a/include/rfl/bson/save.hpp b/include/rfl/bson/save.hpp new file mode 100644 index 0000000..3ebbeda --- /dev/null +++ b/include/rfl/bson/save.hpp @@ -0,0 +1,26 @@ +#ifndef RFL_BSON_SAVE_HPP_ +#define RFL_BSON_SAVE_HPP_ + +#include +#include +#include + +#include "../Result.hpp" +#include "../io/save_bytes.hpp" +#include "write.hpp" + +namespace rfl { +namespace bson { + +template +Result save(const std::string& _fname, const auto& _obj) { + const auto write_func = [](const auto& _obj, auto& _stream) -> auto& { + return write(_obj, _stream); + }; + return rfl::io::save_bytes(_fname, _obj, write_func); +} + +} // namespace bson +} // namespace rfl + +#endif diff --git a/include/rfl/bson/write.hpp b/include/rfl/bson/write.hpp new file mode 100644 index 0000000..a22e750 --- /dev/null +++ b/include/rfl/bson/write.hpp @@ -0,0 +1,61 @@ +#ifndef RFL_BSON_WRITE_HPP_ +#define RFL_BSON_WRITE_HPP_ + +#include + +#include +#include +#include +#include + +#include "../Processors.hpp" +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace bson { + +/// Returns BSON bytes. Careful: It is the responsibility of the caller to call +/// bson_free on the returned pointer. +template +std::pair to_buffer(const auto& _obj) noexcept { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + bson_t* doc = nullptr; + uint8_t* buf = nullptr; + size_t buflen = 0; + bson_writer_t* bson_writer = + bson_writer_new(&buf, &buflen, 0, bson_realloc_ctx, NULL); + bson_writer_begin(bson_writer, &doc); + const auto rfl_writer = Writer(doc); + Parser>::write(rfl_writer, _obj, + typename ParentType::Root{}); + bson_writer_end(bson_writer); + const auto len = bson_writer_get_length(bson_writer); + bson_writer_destroy(bson_writer); + return std::make_pair(buf, len); +} + +/// Returns BSON bytes. +template +std::vector write(const auto& _obj) noexcept { + auto [buf, len] = to_buffer(_obj); + const auto result = std::vector(reinterpret_cast(buf), + reinterpret_cast(buf) + len); + bson_free(buf); + return result; +} + +/// Writes a BSON into an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream) noexcept { + auto [buf, len] = to_buffer(_obj); + _stream.write(reinterpret_cast(buf), len); + bson_free(buf); + return _stream; +} + +} // namespace bson +} // namespace rfl + +#endif // BSON_PARSER_HPP_ diff --git a/include/rfl/cbor.hpp b/include/rfl/cbor.hpp new file mode 100644 index 0000000..e539617 --- /dev/null +++ b/include/rfl/cbor.hpp @@ -0,0 +1,13 @@ +#ifndef RFL_CBOR_HPP_ +#define RFL_CBOR_HPP_ + +#include "../rfl.hpp" +#include "cbor/Parser.hpp" +#include "cbor/Reader.hpp" +#include "cbor/Writer.hpp" +#include "cbor/load.hpp" +#include "cbor/read.hpp" +#include "cbor/save.hpp" +#include "cbor/write.hpp" + +#endif diff --git a/include/rfl/cbor/Parser.hpp b/include/rfl/cbor/Parser.hpp new file mode 100644 index 0000000..811978d --- /dev/null +++ b/include/rfl/cbor/Parser.hpp @@ -0,0 +1,45 @@ +#ifndef RFL_CBOR_PARSER_HPP_ +#define RFL_CBOR_PARSER_HPP_ + +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl { +namespace parsing { + +/// CBOR requires us to explicitly set the number of fields in advance. Because +/// of that, we require all of the fields and then set them to nullptr, if +/// necessary. +template +requires AreReaderAndWriter> +struct Parser, + ProcessorsType> + : public NamedTupleParser { +}; + +template +requires AreReaderAndWriter> +struct Parser, ProcessorsType> + : public TupleParser { +}; + +} // namespace parsing +} // namespace rfl + +namespace rfl { +namespace cbor { + +template +using Parser = parsing::Parser; + +} +} // namespace rfl + +#endif diff --git a/include/rfl/cbor/Reader.hpp b/include/rfl/cbor/Reader.hpp new file mode 100644 index 0000000..42b1aee --- /dev/null +++ b/include/rfl/cbor/Reader.hpp @@ -0,0 +1,259 @@ +#ifndef RFL_CBOR_READER_HPP_ +#define RFL_CBOR_READER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Box.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace cbor { + +/// Please refer to https://intel.github.io/tinycbor/current/index.html +struct Reader { + struct CBORInputArray { + CborValue* val_; + }; + + struct CBORInputObject { + CborValue* val_; + }; + + struct CBORInputVar { + CborValue* val_; + }; + + using InputArrayType = CBORInputArray; + using InputObjectType = CBORInputObject; + using InputVarType = CBORInputVar; + + template + static constexpr bool has_custom_constructor = (requires(InputVarType var) { + T::from_cbor_obj(var); + }); + + rfl::Result get_field( + const std::string& _name, const InputObjectType& _obj) const noexcept { + CborValue val; + auto buffer = std::vector(); + auto err = cbor_value_enter_container(_obj.val_, &val); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + size_t length = 0; + err = cbor_value_get_map_length(_obj.val_, &length); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + for (size_t i = 0; i < length; ++i) { + if (!cbor_value_is_text_string(&val)) { + return Error("Expected the key to be a string value."); + } + err = get_string(&val, &buffer); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + err = cbor_value_advance(&val); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + if (_name == buffer.data()) { + return to_input_var(&val); + } + err = cbor_value_advance(&val); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + } + return Error("No field named '" + _name + "' was found."); + } + + bool is_empty(const InputVarType& _var) const noexcept { + return cbor_value_is_null(_var.val_); + } + + template + rfl::Result to_basic_type(const InputVarType& _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + if (!cbor_value_is_text_string(_var.val_)) { + return Error("Could not cast to string."); + } + std::vector buffer; + const auto err = get_string(_var.val_, &buffer); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + return std::string(buffer.data()); + } else if constexpr (std::is_same, bool>()) { + if (!cbor_value_is_boolean(_var.val_)) { + return rfl::Error("Could not cast to boolean."); + } + bool result = false; + const auto err = cbor_value_get_boolean(_var.val_, &result); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + return result; + } else if constexpr (std::is_floating_point>() || + std::is_integral>()) { + if (cbor_value_is_integer(_var.val_)) { + std::int64_t result = 0; + const auto err = cbor_value_get_int64(_var.val_, &result); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + return static_cast(result); + } else if (cbor_value_is_float(_var.val_)) { + float result = 0.0; + const auto err = cbor_value_get_float(_var.val_, &result); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + return static_cast(result); + } else if (cbor_value_is_double(_var.val_)) { + double result = 0.0; + const auto err = cbor_value_get_double(_var.val_, &result); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + return static_cast(result); + } + return rfl::Error( + "Could not cast to numeric value. The type must be integral, float " + "or double."); + + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + rfl::Result to_array( + const InputVarType& _var) const noexcept { + if (!cbor_value_is_array(_var.val_)) { + return Error("Could not cast to an array."); + } + return InputArrayType{_var.val_}; + } + + rfl::Result to_object( + const InputVarType& _var) const noexcept { + if (!cbor_value_is_map(_var.val_)) { + return Error("Could not cast to an object."); + } + return InputObjectType{_var.val_}; + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + CborValue val; + auto buffer = std::vector(); + auto err = cbor_value_enter_container(_arr.val_, &val); + if (err != CborNoError && err != CborErrorOutOfMemory) { + return Error(cbor_error_string(err)); + } + size_t length = 0; + err = cbor_value_get_array_length(_arr.val_, &length); + if (err != CborNoError && err != CborErrorOutOfMemory) { + return Error(cbor_error_string(err)); + } + for (size_t i = 0; i < length; ++i) { + const auto err2 = _array_reader.read(to_input_var(&val)); + if (err2) { + return err2; + } + err = cbor_value_advance(&val); + if (err != CborNoError && err != CborErrorOutOfMemory) { + return Error(cbor_error_string(err)); + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + size_t length = 0; + auto err = cbor_value_get_map_length(_obj.val_, &length); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + + CborValue val; + err = cbor_value_enter_container(_obj.val_, &val); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + + auto buffer = std::vector(); + + for (size_t i = 0; i < length; ++i) { + err = get_string(&val, &buffer); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + err = cbor_value_advance(&val); + if (err != CborNoError) { + return Error(cbor_error_string(err)); + } + const auto name = std::string_view(buffer.data(), buffer.size() - 1); + _object_reader.read(name, InputVarType{&val}); + cbor_value_advance(&val); + } + + return std::nullopt; + } + + template + rfl::Result use_custom_constructor( + const InputVarType& _var) const noexcept { + try { + return T::from_cbor_obj(_var); + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } + + private: + CborError get_string(const CborValue* _ptr, + std::vector* _buffer) const noexcept { + size_t length = 0; + auto err = cbor_value_get_string_length(_ptr, &length); + if (err != CborNoError && err != CborErrorOutOfMemory) { + return err; + } + _buffer->resize(length + 1); + (*_buffer)[length] = '\0'; + return cbor_value_copy_text_string(_ptr, _buffer->data(), &length, NULL); + } + + InputVarType to_input_var(CborValue* _ptr) const noexcept { + values_->emplace_back(rfl::Box::make(*_ptr)); + auto* last_value = values_->back().get(); + return InputVarType{last_value}; + } + + private: + /// Contains the values inside the object. + rfl::Box>> values_; +}; + +} // namespace cbor +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/cbor/Writer.hpp b/include/rfl/cbor/Writer.hpp new file mode 100644 index 0000000..d2cb7d1 --- /dev/null +++ b/include/rfl/cbor/Writer.hpp @@ -0,0 +1,164 @@ +#ifndef RFL_CBOR_WRITER_HPP_ +#define RFL_CBOR_WRITER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Box.hpp" +#include "../Ref.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace cbor { + +class Writer { + public: + struct CBOROutputArray { + CborEncoder* encoder_; + CborEncoder* parent_; + }; + + struct CBOROutputObject { + CborEncoder* encoder_; + CborEncoder* parent_; + }; + + struct CBOROutputVar {}; + + using OutputArrayType = CBOROutputArray; + using OutputObjectType = CBOROutputObject; + using OutputVarType = CBOROutputVar; + + Writer(CborEncoder* _encoder) : encoder_(_encoder) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + return new_array(_size, encoder_); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + return new_object(_size, encoder_); + } + + OutputVarType null_as_root() const noexcept { + cbor_encode_null(encoder_); + return OutputVarType{}; + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + return new_value(_var, encoder_); + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + return new_array(_size, _parent->encoder_); + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + cbor_encode_text_string(_parent->encoder_, _name.data(), _name.size()); + return new_array(_size, _parent->encoder_); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + return new_object(_size, _parent->encoder_); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + cbor_encode_text_string(_parent->encoder_, _name.data(), _name.size()); + return new_object(_size, _parent->encoder_); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + return new_value(_var, _parent->encoder_); + } + + template + OutputVarType add_value_to_object(const std::string_view& _name, + const T& _var, + OutputObjectType* _parent) const noexcept { + cbor_encode_text_string(_parent->encoder_, _name.data(), _name.size()); + return new_value(_var, _parent->encoder_); + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + cbor_encode_null(_parent->encoder_); + return OutputVarType{}; + } + + OutputVarType add_null_to_object(const std::string_view& _name, + OutputObjectType* _parent) const noexcept { + cbor_encode_text_string(_parent->encoder_, _name.data(), _name.size()); + cbor_encode_null(_parent->encoder_); + return OutputVarType{}; + } + + void end_array(OutputArrayType* _arr) const noexcept { + cbor_encoder_close_container(_arr->parent_, _arr->encoder_); + } + + void end_object(OutputObjectType* _obj) const noexcept { + cbor_encoder_close_container(_obj->parent_, _obj->encoder_); + } + + private: + OutputArrayType new_array(const size_t _size, + CborEncoder* _parent) const noexcept { + subencoders_->emplace_back(rfl::Box::make()); + cbor_encoder_create_array(_parent, subencoders_->back().get(), _size); + return OutputArrayType{subencoders_->back().get(), _parent}; + } + + OutputObjectType new_object(const size_t _size, + CborEncoder* _parent) const noexcept { + subencoders_->emplace_back(rfl::Box::make()); + cbor_encoder_create_map(_parent, subencoders_->back().get(), _size); + return OutputObjectType{subencoders_->back().get(), _parent}; + } + + template + OutputVarType new_value(const T& _var, CborEncoder* _parent) const noexcept { + if constexpr (std::is_same, std::string>()) { + cbor_encode_text_string(_parent, _var.c_str(), _var.size()); + } else if constexpr (std::is_same, bool>()) { + cbor_encode_boolean(_parent, _var); + } else if constexpr (std::is_floating_point>()) { + cbor_encode_double(_parent, static_cast(_var)); + } else if constexpr (std::is_integral>()) { + cbor_encode_int(_parent, static_cast(_var)); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + return OutputVarType{}; + } + + private: + /// The underlying TinyCBOR encoder. + CborEncoder* const encoder_; + + /// Contain all of the subobjects and subarrays. + const rfl::Box>> subencoders_; +}; + +} // namespace cbor +} // namespace rfl + +#endif // CBOR_PARSER_HPP_ diff --git a/include/rfl/cbor/load.hpp b/include/rfl/cbor/load.hpp new file mode 100644 index 0000000..574ea00 --- /dev/null +++ b/include/rfl/cbor/load.hpp @@ -0,0 +1,23 @@ +#ifndef RFL_CBOR_LOAD_HPP_ +#define RFL_CBOR_LOAD_HPP_ + +#include "../Processors.hpp" +#include "../Result.hpp" +#include "../io/load_bytes.hpp" +#include "read.hpp" + +namespace rfl { +namespace cbor { + +template +Result load(const std::string& _fname) { + const auto read_bytes = [](const auto& _bytes) { + return read(_bytes); + }; + return rfl::io::load_bytes(_fname).and_then(read_bytes); +} + +} // namespace cbor +} // namespace rfl + +#endif diff --git a/include/rfl/cbor/read.hpp b/include/rfl/cbor/read.hpp new file mode 100644 index 0000000..32abb59 --- /dev/null +++ b/include/rfl/cbor/read.hpp @@ -0,0 +1,57 @@ +#ifndef RFL_CBOR_READ_HPP_ +#define RFL_CBOR_READ_HPP_ + +#include + +#include +#include + +#include "../Processors.hpp" +#include "../internal/wrap_in_rfl_array_t.hpp" +#include "Parser.hpp" +#include "Reader.hpp" + +namespace rfl { +namespace cbor { + +using InputObjectType = typename Reader::InputObjectType; +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from a CBOR var. +template +auto read(const InputVarType& _obj) { + const auto r = Reader(); + return Parser>::read(r, _obj); +} + +/// Parses an object from CBOR using reflection. +template +Result> read(const char* _bytes, + const size_t _size) { + CborParser parser; + CborValue value; + cbor_parser_init(reinterpret_cast(_bytes), _size, 0, &parser, + &value); + auto doc = InputVarType{&value}; + auto result = read(doc); + return result; +} + +/// Parses an object from CBOR using reflection. +template +auto read(const std::vector& _bytes) { + return read(_bytes.data(), _bytes.size()); +} + +/// Parses an object from a stream. +template +auto read(std::istream& _stream) { + std::istreambuf_iterator begin(_stream), end; + auto bytes = std::vector(begin, end); + return read(bytes.data(), bytes.size()); +} + +} // namespace cbor +} // namespace rfl + +#endif diff --git a/include/rfl/cbor/save.hpp b/include/rfl/cbor/save.hpp new file mode 100644 index 0000000..59343e0 --- /dev/null +++ b/include/rfl/cbor/save.hpp @@ -0,0 +1,26 @@ +#ifndef RFL_CBOR_SAVE_HPP_ +#define RFL_CBOR_SAVE_HPP_ + +#include +#include +#include + +#include "../Result.hpp" +#include "../io/save_bytes.hpp" +#include "write.hpp" + +namespace rfl { +namespace cbor { + +template +Result save(const std::string& _fname, const auto& _obj) { + const auto write_func = [](const auto& _obj, auto& _stream) -> auto& { + return write(_obj, _stream); + }; + return rfl::io::save_bytes(_fname, _obj, write_func); +} + +} // namespace cbor +} // namespace rfl + +#endif diff --git a/include/rfl/cbor/write.hpp b/include/rfl/cbor/write.hpp new file mode 100644 index 0000000..867f150 --- /dev/null +++ b/include/rfl/cbor/write.hpp @@ -0,0 +1,59 @@ +#ifndef RFL_CBOR_WRITE_HPP_ +#define RFL_CBOR_WRITE_HPP_ + +#include + +#include +#include +#include +#include +#include + +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace cbor { + +template +void write_into_buffer(const auto& _obj, CborEncoder* _encoder, + std::vector* _buffer) noexcept { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + cbor_encoder_init(_encoder, reinterpret_cast(_buffer->data()), + _buffer->size(), 0); + const auto writer = Writer(_encoder); + Parser>::write(writer, _obj, + typename ParentType::Root{}); +} + +/// Returns CBOR bytes. +template +std::vector write(const auto& _obj) noexcept { + std::vector buffer(4096); + CborEncoder encoder; + write_into_buffer(_obj, &encoder, &buffer); + const auto total_bytes_needed = + buffer.size() + cbor_encoder_get_extra_bytes_needed(&encoder); + if (total_bytes_needed != buffer.size()) { + buffer.resize(total_bytes_needed); + write_into_buffer(_obj, &encoder, &buffer); + } + const auto length = cbor_encoder_get_buffer_size( + &encoder, reinterpret_cast(buffer.data())); + buffer.resize(length); + return buffer; +} + +/// Writes a CBOR into an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream) noexcept { + auto buffer = write(_obj); + _stream.write(buffer.data(), buffer.size()); + return _stream; +} + +} // namespace cbor +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf.hpp b/include/rfl/flexbuf.hpp new file mode 100644 index 0000000..b1e7325 --- /dev/null +++ b/include/rfl/flexbuf.hpp @@ -0,0 +1,13 @@ +#ifndef RFL_FLEXBUF_HPP_ +#define RFL_FLEXBUF_HPP_ + +#include "../rfl.hpp" +#include "flexbuf/Parser.hpp" +#include "flexbuf/Reader.hpp" +#include "flexbuf/Writer.hpp" +#include "flexbuf/load.hpp" +#include "flexbuf/read.hpp" +#include "flexbuf/save.hpp" +#include "flexbuf/write.hpp" + +#endif diff --git a/include/rfl/flexbuf/Parser.hpp b/include/rfl/flexbuf/Parser.hpp new file mode 100644 index 0000000..dd7020f --- /dev/null +++ b/include/rfl/flexbuf/Parser.hpp @@ -0,0 +1,17 @@ +#ifndef FLEXBUF_PARSER_HPP_ +#define FLEXBUF_PARSER_HPP_ + +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl { +namespace flexbuf { + +template +using Parser = parsing::Parser; + +} +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf/Reader.hpp b/include/rfl/flexbuf/Reader.hpp new file mode 100644 index 0000000..16a2de0 --- /dev/null +++ b/include/rfl/flexbuf/Reader.hpp @@ -0,0 +1,145 @@ +#ifndef FLEXBUF_READER_HPP_ +#define FLEXBUF_READER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace flexbuf { + +struct Reader { + using InputArrayType = flexbuffers::Vector; + using InputObjectType = flexbuffers::Map; + using InputVarType = flexbuffers::Reference; + + template + struct has_from_flexbuf : std::false_type {}; + + template + struct has_from_flexbuf< + T, std::enable_if_t::value>> + : std::true_type {}; + + template + struct has_from_flexbuf< + T, std::enable_if_t, decltype(T::from_flexbuf), InputVarType>::value>> + : std::true_type {}; + + template + static constexpr bool has_custom_constructor = has_from_flexbuf::value; + + rfl::Result get_field( + const std::string& _name, const InputObjectType& _obj) const noexcept { + const auto keys = _obj.Keys(); + for (size_t i = 0; i < keys.size(); ++i) { + if (_name == keys[i].AsString().c_str()) { + return _obj.Values()[i]; + } + } + return rfl::Error("Map does not contain any element called '" + _name + + "'."); + } + + bool is_empty(const InputVarType& _var) const noexcept { + return _var.IsNull(); + } + + template + rfl::Result to_basic_type(const InputVarType& _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + if (!_var.IsString()) { + return rfl::Error("Could not cast to string."); + } + return std::string(_var.AsString().c_str()); + } else if constexpr (std::is_same, bool>()) { + if (!_var.IsBool()) { + return rfl::Error("Could not cast to boolean."); + } + return _var.AsBool(); + } else if constexpr (std::is_floating_point>()) { + if (!_var.IsNumeric()) { + return rfl::Error("Could not cast to double."); + } + return static_cast(_var.AsDouble()); + } else if constexpr (std::is_integral>()) { + if (!_var.IsNumeric()) { + return rfl::Error("Could not cast to int."); + } + return static_cast(_var.AsInt64()); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + const auto size = _arr.size(); + for (size_t i = 0; i < size; ++i) { + const auto err = _array_reader.read(InputVarType(_arr[i])); + if (err) { + return err; + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + const auto keys = _obj.Keys(); + const auto values = _obj.Values(); + const auto num_values = std::min(keys.size(), values.size()); + + for (size_t i = 0; i < num_values; ++i) { + _object_reader.read(std::string_view(keys[i].AsString().c_str()), + values[i]); + } + + return std::nullopt; + } + + rfl::Result to_array( + const InputVarType& _var) const noexcept { + if (!_var.IsVector()) { + return rfl::Error("Could not cast to Vector."); + } + return _var.AsVector(); + } + + rfl::Result to_object( + const InputVarType& _var) const noexcept { + if (!_var.IsMap()) { + return rfl::Error("Could not cast to Map!"); + } + return _var.AsMap(); + } + + template + rfl::Result use_custom_constructor( + const InputVarType& _var) const noexcept { + try { + return T::from_flexbuf(_var); + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } +}; + +} // namespace flexbuf +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf/Writer.hpp b/include/rfl/flexbuf/Writer.hpp new file mode 100644 index 0000000..3659a6e --- /dev/null +++ b/include/rfl/flexbuf/Writer.hpp @@ -0,0 +1,176 @@ +#ifndef FLEXBUF_WRITER_HPP_ +#define FLEXBUF_WRITER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Ref.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace flexbuf { + +struct Writer { + struct OutputArray { + size_t start_; + }; + + struct OutputObject { + size_t start_; + }; + + struct OutputVar {}; + + using OutputArrayType = OutputArray; + using OutputObjectType = OutputObject; + using OutputVarType = OutputVar; + + Writer(const Ref& _fbb) : fbb_(_fbb) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + return new_array(); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + return new_object(); + } + + OutputVarType null_as_root() const noexcept { + fbb_->Null(); + return OutputVarType{}; + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + return insert_value(_var); + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + return new_array(); + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + return new_array(_name); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + return new_object(); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + return new_object(_name); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + return insert_value(_var); + } + + template + OutputVarType add_value_to_object(const std::string_view& _name, + const T& _var, + OutputObjectType* _parent) const noexcept { + return insert_value(_name, _var); + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + fbb_->Null(); + return OutputVarType{}; + } + + OutputVarType add_null_to_object(const std::string_view& _name, + OutputObjectType* _parent) const noexcept { + fbb_->Null(_name.data()); + return OutputVarType{}; + } + + void end_array(OutputArrayType* _arr) const noexcept { + fbb_->EndVector(_arr->start_, false, false); + } + + void end_object(OutputObjectType* _obj) const noexcept { + fbb_->EndMap(_obj->start_); + } + + private: + template + OutputVarType insert_value(const std::string_view& _name, + const T& _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + fbb_->String(_name.data(), _var); + } else if constexpr (std::is_same, bool>()) { + fbb_->Bool(_name.data(), _var); + } else if constexpr (std::is_floating_point>()) { + fbb_->Double(_name.data(), _var); + } else if constexpr (std::is_integral>()) { + fbb_->Int(_name.data(), _var); + } else { + static_assert(always_false_v, "Unsupported type"); + } + return OutputVarType{}; + } + + template + OutputVarType insert_value(const T& _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + fbb_->String(_var); + } else if constexpr (std::is_same, bool>()) { + fbb_->Bool(_var); + } else if constexpr (std::is_floating_point>()) { + fbb_->Double(_var); + } else if constexpr (std::is_integral>()) { + fbb_->Int(_var); + } else { + static_assert(always_false_v, "Unsupported type"); + } + return OutputVarType{}; + } + + OutputArrayType new_array(const std::string_view& _name) const noexcept { + const auto start = fbb_->StartVector(_name.data()); + return OutputArrayType{start}; + } + + OutputArrayType new_array() const noexcept { + const auto start = fbb_->StartVector(); + return OutputArrayType{start}; + } + + OutputObjectType new_object(const std::string_view& _name) const noexcept { + const auto start = fbb_->StartMap(_name.data()); + return OutputObjectType{start}; + } + + OutputObjectType new_object() const noexcept { + const auto start = fbb_->StartMap(); + return OutputObjectType{start}; + } + + private: + Ref fbb_; +}; + +} // namespace flexbuf +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf/load.hpp b/include/rfl/flexbuf/load.hpp new file mode 100644 index 0000000..ec0a4e7 --- /dev/null +++ b/include/rfl/flexbuf/load.hpp @@ -0,0 +1,22 @@ +#ifndef RFL_FLEXBUF_LOAD_HPP_ +#define RFL_FLEXBUF_LOAD_HPP_ + +#include "../Result.hpp" +#include "../io/load_bytes.hpp" +#include "read.hpp" + +namespace rfl { +namespace flexbuf { + +template +Result load(const std::string& _fname) { + const auto read_bytes = [](const auto& _bytes) { + return read(_bytes); + }; + return rfl::io::load_bytes(_fname).and_then(read_bytes); +} + +} // namespace flexbuf +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf/read.hpp b/include/rfl/flexbuf/read.hpp new file mode 100644 index 0000000..afdb805 --- /dev/null +++ b/include/rfl/flexbuf/read.hpp @@ -0,0 +1,50 @@ +#ifndef FLEXBUF_READ_HPP_ +#define FLEXBUF_READ_HPP_ + +#include + +#include +#include + +#include "../Processors.hpp" +#include "../Result.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace flexbuf { + +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from flexbuf var. +template +auto read(const InputVarType& _obj) { + const auto r = Reader(); + return Parser>::read(r, _obj); +} + +/// Parses an object from flexbuf using reflection. +template +auto read(const char* _bytes, const size_t _size) { + const InputVarType root = + flexbuffers::GetRoot(reinterpret_cast(_bytes), _size); + return read(root); +} + +/// Parses an object from flexbuf using reflection. +template +auto read(const std::vector& _bytes) { + return read(_bytes.data(), _bytes.size()); +} + +/// Parses an object directly from a stream. +template +auto read(std::istream& _stream) { + std::istreambuf_iterator begin(_stream), end; + const auto bytes = std::vector(begin, end); + return read(bytes.data(), bytes.size()); +} + +} // namespace flexbuf +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf/save.hpp b/include/rfl/flexbuf/save.hpp new file mode 100644 index 0000000..cc2a8d2 --- /dev/null +++ b/include/rfl/flexbuf/save.hpp @@ -0,0 +1,26 @@ +#ifndef RFL_FLEXBUF_SAVE_HPP_ +#define RFL_FLEXBUF_SAVE_HPP_ + +#include +#include +#include + +#include "../Result.hpp" +#include "../io/save_bytes.hpp" +#include "write.hpp" + +namespace rfl { +namespace flexbuf { + +template +Result save(const std::string& _fname, const auto& _obj) { + const auto write_func = [](const auto& _obj, auto& _stream) -> auto& { + return write(_obj, _stream); + }; + return rfl::io::save_bytes(_fname, _obj, write_func); +} + +} // namespace flexbuf +} // namespace rfl + +#endif diff --git a/include/rfl/flexbuf/write.hpp b/include/rfl/flexbuf/write.hpp new file mode 100644 index 0000000..5409ead --- /dev/null +++ b/include/rfl/flexbuf/write.hpp @@ -0,0 +1,50 @@ +#ifndef FLEXBUF_WRITE_HPP_ +#define FLEXBUF_WRITE_HPP_ + +#include + +#include +#include +#include +#include + +#include "../Processors.hpp" +#include "../Ref.hpp" +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace flexbuf { + +template +std::vector to_buffer(const auto& _obj) { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + const auto fbb = Ref::make(); + auto w = Writer(fbb); + Parser>::write(w, _obj, typename ParentType::Root{}); + fbb->Finish(); + return fbb->GetBuffer(); +} + +/// Writes an object to flexbuf. +template +std::vector write(const auto& _obj) { + const auto buffer = to_buffer(_obj); + const auto data = reinterpret_cast(buffer.data()); + return std::vector(data, data + buffer.size()); +} + +/// Writes an object to an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream) { + const auto buffer = to_buffer(_obj); + const auto data = reinterpret_cast(buffer.data()); + _stream.write(data, buffer.size()); + return _stream; +} + +} // namespace flexbuf +} // namespace rfl + +#endif diff --git a/include/rfl/json.hpp b/include/rfl/json.hpp new file mode 100644 index 0000000..cac6b0e --- /dev/null +++ b/include/rfl/json.hpp @@ -0,0 +1,14 @@ +#ifndef RFL_JSON_HPP_ +#define RFL_JSON_HPP_ + +#include "../rfl.hpp" +#include "json/Parser.hpp" +#include "json/Reader.hpp" +#include "json/Writer.hpp" +#include "json/load.hpp" +#include "json/read.hpp" +#include "json/save.hpp" +#include "json/to_schema.hpp" +#include "json/write.hpp" + +#endif diff --git a/include/rfl/json/Parser.hpp b/include/rfl/json/Parser.hpp new file mode 100644 index 0000000..9de1755 --- /dev/null +++ b/include/rfl/json/Parser.hpp @@ -0,0 +1,15 @@ +#ifndef RFL_JSON_PARSER_HPP_ +#define RFL_JSON_PARSER_HPP_ + +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl::json { + +template +using Parser = parsing::Parser; + +} // namespace rfl::json + +#endif diff --git a/include/rfl/json/Reader.hpp b/include/rfl/json/Reader.hpp new file mode 100644 index 0000000..958df68 --- /dev/null +++ b/include/rfl/json/Reader.hpp @@ -0,0 +1,154 @@ +#ifndef RFL_JSON_READER_HPP_ +#define RFL_JSON_READER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace json { + +struct Reader { + struct YYJSONInputArray { + YYJSONInputArray(yyjson_val* _val) : val_(_val) {} + yyjson_val* val_; + }; + + struct YYJSONInputObject { + YYJSONInputObject(yyjson_val* _val) : val_(_val) {} + yyjson_val* val_; + }; + + struct YYJSONInputVar { + YYJSONInputVar() : val_(nullptr) {} + YYJSONInputVar(yyjson_val* _val) : val_(_val) {} + yyjson_val* val_; + }; + + using InputArrayType = YYJSONInputArray; + using InputObjectType = YYJSONInputObject; + using InputVarType = YYJSONInputVar; + + template + static constexpr bool has_custom_constructor = (requires(InputVarType var) { + T::from_json_obj(var); + }); + + rfl::Result get_field( + const std::string& _name, const InputObjectType _obj) const noexcept { + const auto var = InputVarType(yyjson_obj_get(_obj.val_, _name.c_str())); + if (!var.val_) { + return rfl::Error("Object contains no field named '" + _name + "'."); + } + return var; + } + + bool is_empty(const InputVarType _var) const noexcept { + return !_var.val_ || yyjson_is_null(_var.val_); + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + yyjson_val* val; + yyjson_arr_iter iter; + yyjson_arr_iter_init(_arr.val_, &iter); + while ((val = yyjson_arr_iter_next(&iter))) { + const auto err = _array_reader.read(InputVarType(val)); + if (err) { + return err; + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + yyjson_obj_iter iter; + yyjson_obj_iter_init(_obj.val_, &iter); + yyjson_val* key; + while ((key = yyjson_obj_iter_next(&iter))) { + const auto name = std::string_view(yyjson_get_str(key)); + _object_reader.read(name, InputVarType(yyjson_obj_iter_get_val(key))); + } + return std::nullopt; + } + + template + rfl::Result to_basic_type(const InputVarType _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + const auto r = yyjson_get_str(_var.val_); + if (r == NULL) { + return rfl::Error("Could not cast to string."); + } + return std::string(r); + } else if constexpr (std::is_same, bool>()) { + if (!yyjson_is_bool(_var.val_)) { + return rfl::Error("Could not cast to boolean."); + } + return yyjson_get_bool(_var.val_); + } else if constexpr (std::is_floating_point>()) { + if (!yyjson_is_num(_var.val_)) { + return rfl::Error("Could not cast to double."); + } + return static_cast(yyjson_get_num(_var.val_)); + } else if constexpr (std::is_unsigned>()) { + if (!yyjson_is_int(_var.val_)) { + return rfl::Error("Could not cast to int."); + } + return static_cast(yyjson_get_uint(_var.val_)); + } else if constexpr (std::is_integral>()) { + if (!yyjson_is_int(_var.val_)) { + return rfl::Error("Could not cast to int."); + } + return static_cast(yyjson_get_sint(_var.val_)); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + rfl::Result to_array(const InputVarType _var) const noexcept { + if (!yyjson_is_arr(_var.val_)) { + return rfl::Error("Could not cast to array!"); + } + return InputArrayType(_var.val_); + } + + rfl::Result to_object( + const InputVarType _var) const noexcept { + if (!yyjson_is_obj(_var.val_)) { + return rfl::Error("Could not cast to object!"); + } + return InputObjectType(_var.val_); + } + + template + rfl::Result use_custom_constructor( + const InputVarType _var) const noexcept { + try { + return T::from_json_obj(_var); + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } +}; + +} // namespace json +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/json/Writer.hpp b/include/rfl/json/Writer.hpp new file mode 100644 index 0000000..81d794f --- /dev/null +++ b/include/rfl/json/Writer.hpp @@ -0,0 +1,169 @@ +#ifndef RFL_JSON_WRITER_HPP_ +#define RFL_JSON_WRITER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace json { + +class Writer { + public: + struct YYJSONOutputArray { + YYJSONOutputArray(yyjson_mut_val* _val) : val_(_val) {} + yyjson_mut_val* val_; + }; + + struct YYJSONOutputObject { + YYJSONOutputObject(yyjson_mut_val* _val) : val_(_val) {} + yyjson_mut_val* val_; + }; + + struct YYJSONOutputVar { + YYJSONOutputVar(yyjson_mut_val* _val) : val_(_val) {} + + YYJSONOutputVar(YYJSONOutputArray _arr) : val_(_arr.val_) {} + + YYJSONOutputVar(YYJSONOutputObject _obj) : val_(_obj.val_) {} + + yyjson_mut_val* val_; + }; + + using OutputArrayType = YYJSONOutputArray; + using OutputObjectType = YYJSONOutputObject; + using OutputVarType = YYJSONOutputVar; + + Writer(yyjson_mut_doc* _doc) : doc_(_doc) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + const auto arr = yyjson_mut_arr(doc_); + yyjson_mut_doc_set_root(doc_, arr); + return OutputArrayType(arr); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + const auto obj = yyjson_mut_obj(doc_); + yyjson_mut_doc_set_root(doc_, obj); + return OutputObjectType(obj); + } + + OutputVarType null_as_root() const noexcept { + const auto null = yyjson_mut_null(doc_); + yyjson_mut_doc_set_root(doc_, null); + return OutputVarType(null); + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + const auto val = from_basic_type(_var); + yyjson_mut_doc_set_root(doc_, val.val_); + return OutputVarType(val); + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + const auto arr = yyjson_mut_arr(doc_); + yyjson_mut_arr_add_val(_parent->val_, arr); + return OutputArrayType(arr); + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + const auto arr = yyjson_mut_arr(doc_); + yyjson_mut_obj_add(_parent->val_, yyjson_mut_strcpy(doc_, _name.data()), + arr); + return OutputArrayType(arr); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + const auto obj = yyjson_mut_obj(doc_); + yyjson_mut_arr_add_val(_parent->val_, obj); + return OutputObjectType(obj); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + const auto obj = yyjson_mut_obj(doc_); + yyjson_mut_obj_add(_parent->val_, yyjson_mut_strcpy(doc_, _name.data()), + obj); + return OutputObjectType(obj); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + const auto val = from_basic_type(_var); + yyjson_mut_arr_add_val(_parent->val_, val.val_); + return OutputVarType(val); + } + + template + OutputVarType add_value_to_object(const std::string_view& _name, + const T& _var, + OutputObjectType* _parent) const noexcept { + const auto val = from_basic_type(_var); + yyjson_mut_obj_add(_parent->val_, yyjson_mut_strcpy(doc_, _name.data()), + val.val_); + return OutputVarType(val); + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + const auto null = yyjson_mut_null(doc_); + yyjson_mut_arr_add_val(_parent->val_, null); + return OutputVarType(null); + } + + OutputVarType add_null_to_object(const std::string_view& _name, + OutputObjectType* _parent) const noexcept { + const auto null = yyjson_mut_null(doc_); + yyjson_mut_obj_add(_parent->val_, yyjson_mut_strcpy(doc_, _name.data()), + null); + return OutputVarType(null); + } + + void end_array(OutputArrayType* _arr) const noexcept {} + + void end_object(OutputObjectType* _obj) const noexcept {} + + private: + template + OutputVarType from_basic_type(const T& _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + return OutputVarType(yyjson_mut_strcpy(doc_, _var.c_str())); + } else if constexpr (std::is_same, bool>()) { + return OutputVarType(yyjson_mut_bool(doc_, _var)); + } else if constexpr (std::is_floating_point>()) { + return OutputVarType(yyjson_mut_real(doc_, static_cast(_var))); + } else if constexpr (std::is_unsigned>()) { + return OutputVarType(yyjson_mut_uint(doc_, static_cast(_var))); + } else if constexpr (std::is_integral>()) { + return OutputVarType(yyjson_mut_int(doc_, static_cast(_var))); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + public: + yyjson_mut_doc* doc_; +}; + +} // namespace json +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/json/load.hpp b/include/rfl/json/load.hpp new file mode 100644 index 0000000..5f7e8f4 --- /dev/null +++ b/include/rfl/json/load.hpp @@ -0,0 +1,22 @@ +#ifndef RFL_JSON_LOAD_HPP_ +#define RFL_JSON_LOAD_HPP_ + +#include "../Result.hpp" +#include "../io/load_string.hpp" +#include "read.hpp" + +namespace rfl { +namespace json { + +template +Result load(const std::string& _fname) { + const auto read_string = [](const auto& _str) { + return read(_str); + }; + return rfl::io::load_string(_fname).and_then(read_string); +} + +} // namespace json +} // namespace rfl + +#endif diff --git a/include/rfl/json/read.hpp b/include/rfl/json/read.hpp new file mode 100644 index 0000000..30bef1b --- /dev/null +++ b/include/rfl/json/read.hpp @@ -0,0 +1,52 @@ +#ifndef RFL_JSON_READ_HPP_ +#define RFL_JSON_READ_HPP_ + +#include + +#include +#include + +#include "../Processors.hpp" +#include "../internal/wrap_in_rfl_array_t.hpp" +#include "Parser.hpp" +#include "Reader.hpp" + +namespace rfl { +namespace json { + +using InputObjectType = typename Reader::InputObjectType; +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from a JSON var. +template +auto read(const InputVarType& _obj) { + const auto r = Reader(); + return Parser>::read(r, _obj); +} + +/// Parses an object from JSON using reflection. +template +Result> read(const std::string& _json_str) { + yyjson_doc* doc = yyjson_read(_json_str.c_str(), _json_str.size(), 0); + if (!doc) { + return Error("Could not parse document"); + } + yyjson_val* root = yyjson_doc_get_root(doc); + const auto r = Reader(); + auto res = Parser>::read(r, InputVarType(root)); + yyjson_doc_free(doc); + return res; +} + +/// Parses an object from a stringstream. +template +auto read(std::istream& _stream) { + const auto json_str = std::string(std::istreambuf_iterator(_stream), + std::istreambuf_iterator()); + return read(json_str); +} + +} // namespace json +} // namespace rfl + +#endif diff --git a/include/rfl/json/save.hpp b/include/rfl/json/save.hpp new file mode 100644 index 0000000..9875df8 --- /dev/null +++ b/include/rfl/json/save.hpp @@ -0,0 +1,29 @@ +#ifndef RFL_JSON_SAVE_HPP_ +#define RFL_JSON_SAVE_HPP_ + +#include + +#include +#include +#include + +#include "../Result.hpp" +#include "../io/save_string.hpp" +#include "write.hpp" + +namespace rfl { +namespace json { + +template +Result save(const std::string& _fname, const auto& _obj, + const yyjson_write_flag _flag = 0) { + const auto write_func = [_flag](const auto& _obj, auto& _stream) -> auto& { + return write(_obj, _stream, _flag); + }; + return rfl::io::save_string(_fname, _obj, write_func); +} + +} // namespace json +} // namespace rfl + +#endif diff --git a/include/rfl/json/schema/JSONSchema.hpp b/include/rfl/json/schema/JSONSchema.hpp new file mode 100644 index 0000000..7aedfb7 --- /dev/null +++ b/include/rfl/json/schema/JSONSchema.hpp @@ -0,0 +1,25 @@ +#ifndef RFL_JSON_SCHEMA_JSONSCHEMA_HPP_ +#define RFL_JSON_SCHEMA_JSONSCHEMA_HPP_ + +#include +#include +#include + +#include "../../Flatten.hpp" +#include "../../Literal.hpp" +#include "../../Rename.hpp" +#include "Type.hpp" + +namespace rfl::json::schema { + +template +struct JSONSchema { + Rename<"$schema", Literal<"https://json-schema.org/draft/2020-12/schema">> + schema; + Flatten root; + std::map definitions; +}; + +} // namespace rfl::json::schema + +#endif diff --git a/include/rfl/json/schema/Type.hpp b/include/rfl/json/schema/Type.hpp new file mode 100644 index 0000000..7352cad --- /dev/null +++ b/include/rfl/json/schema/Type.hpp @@ -0,0 +1,147 @@ +#ifndef RFL_JSON_SCHEMA_TYPE_HPP_ +#define RFL_JSON_SCHEMA_TYPE_HPP_ + +#include +#include +#include +#include +#include + +#include "../../Literal.hpp" +#include "../../Rename.hpp" + +namespace rfl::json::schema { + +/// The JSON representation of internal::schema::Type. +struct Type { + struct Boolean { + std::optional description; + Literal<"boolean"> type; + }; + + struct Integer { + Literal<"integer"> type; + std::optional description; + }; + + struct Number { + Literal<"number"> type; + std::optional description; + }; + + struct String { + Literal<"string"> type; + std::optional description; + }; + + using NumericType = std::variant; + + struct AllOf { + std::optional description; + std::vector allOf; + }; + + struct AnyOf { + std::optional description; + std::vector anyOf; + }; + + struct ExclusiveMaximum { + std::optional description; + std::variant exclusiveMaximum; + std::string type; + }; + + struct ExclusiveMinimum { + std::optional description; + std::variant exclusiveMinimum; + std::string type; + }; + + struct FixedSizeTypedArray { + Literal<"array"> type; + std::optional description; + rfl::Ref items; + size_t minContains; + size_t maxContains; + }; + + struct Maximum { + std::optional description; + std::variant maximum; + std::string type; + }; + + struct Minimum { + std::optional description; + std::variant minimum; + std::string type; + }; + + struct Null { + Literal<"null"> type; + std::optional description; + }; + + struct Object { + Literal<"object"> type; + std::optional description; + std::map properties; + std::vector required; + }; + + struct OneOf { + std::optional description; + std::vector oneOf; + }; + + struct Reference { + Rename<"$ref", std::optional> ref; + std::optional description; + }; + + struct Regex { + Literal<"string"> type; + std::optional description; + std::string pattern; + }; + + struct StringEnum { + Literal<"string"> type; + std::optional description; + rfl::Rename<"enum", std::vector> values; + }; + + struct StringMap { + Literal<"object"> type; + std::optional description; + rfl::Ref additionalProperties; + }; + + struct Tuple { + Literal<"array"> type; + std::optional description; + std::vector prefixItems; + bool items = false; + }; + + struct TypedArray { + Literal<"array"> type; + std::optional description; + rfl::Ref items; + }; + + using ReflectionType = + std::variant; + + const auto& reflection() const { return value; } + + ReflectionType value; +}; + +} // namespace rfl::json::schema + +#endif diff --git a/include/rfl/json/to_schema.hpp b/include/rfl/json/to_schema.hpp new file mode 100644 index 0000000..37ff2d5 --- /dev/null +++ b/include/rfl/json/to_schema.hpp @@ -0,0 +1,262 @@ +#ifndef RFL_JSON_TOSCHEMA_HPP_ +#define RFL_JSON_TOSCHEMA_HPP_ + +#include + +#include +#include +#include +#include + +#include "../Literal.hpp" +#include "../Processors.hpp" +#include "../parsing/schema/Type.hpp" +#include "../parsing/schema/ValidationType.hpp" +#include "../parsing/schema/make.hpp" +#include "Reader.hpp" +#include "Writer.hpp" +#include "schema/JSONSchema.hpp" +#include "schema/Type.hpp" +#include "write.hpp" + +namespace rfl::json { + +inline schema::Type type_to_json_schema_type( + const parsing::schema::Type& _type); + +inline bool is_optional(const parsing::schema::Type& _t) { + const auto handle = [](const auto& _v) -> bool { + using T = std::remove_cvref_t; + return std::is_same(); + }; + return std::visit(handle, _t.variant_); +} + +inline std::string numeric_type_to_string(const parsing::schema::Type& _type) { + const auto handle_variant = [](const auto& _t) -> std::string { + using T = std::remove_cvref_t; + using Type = parsing::schema::Type; + if constexpr (std::is_same() || + std::is_same() || + std::is_same() || + std::is_same() || + std::is_same()) { + return schema::Type::Integer{}.type.str(); + } else { + return schema::Type::Number{}.type.str(); + } + }; + return std::visit(handle_variant, _type.variant_); +} + +inline schema::Type handle_validation_type( + const parsing::schema::Type& _type, + const parsing::schema::ValidationType& _validation_type) { + const auto handle_variant = [&](const auto& _v) -> schema::Type { + using T = std::remove_cvref_t; + using ValidationType = parsing::schema::ValidationType; + if constexpr (std::is_same()) { + auto all_of = std::vector(); + for (const auto& t : _v.types_) { + all_of.emplace_back(handle_validation_type(_type, t)); + } + return schema::Type{.value = schema::Type::AllOf{.allOf = all_of}}; + + } else if constexpr (std::is_same()) { + auto any_of = std::vector(); + for (const auto& t : _v.types_) { + any_of.emplace_back(handle_validation_type(_type, t)); + } + return schema::Type{.value = schema::Type::AnyOf{.anyOf = any_of}}; + + } else if constexpr (std::is_same()) { + auto one_of = std::vector(); + for (const auto& t : _v.types_) { + one_of.emplace_back(handle_validation_type(_type, t)); + } + return schema::Type{.value = schema::Type::OneOf{.oneOf = one_of}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::Regex{.pattern = _v.pattern_}}; + + } else if constexpr (std::is_same()) { + return type_to_json_schema_type(_type); + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::ExclusiveMaximum{ + .exclusiveMaximum = _v.value_, + .type = numeric_type_to_string(_type)}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::ExclusiveMinimum{ + .exclusiveMinimum = _v.value_, + .type = numeric_type_to_string(_type)}}; + + } else if constexpr (std::is_same()) { + return schema::Type{ + .value = schema::Type::Maximum{ + .maximum = _v.value_, .type = numeric_type_to_string(_type)}}; + + } else if constexpr (std::is_same()) { + return schema::Type{ + .value = schema::Type::Minimum{ + .minimum = _v.value_, .type = numeric_type_to_string(_type)}}; + + } else if constexpr (std::is_same()) { + const auto maximum = schema::Type{ + .value = schema::Type::Maximum{ + .maximum = _v.value_, .type = numeric_type_to_string(_type)}}; + const auto minimum = schema::Type{ + .value = schema::Type::Minimum{ + .minimum = _v.value_, .type = numeric_type_to_string(_type)}}; + return schema::Type{.value = + schema::Type::AllOf{.allOf = {maximum, minimum}}}; + + } else if constexpr (std::is_same()) { + const auto excl_maximum = + schema::Type{.value = schema::Type::ExclusiveMaximum{ + .exclusiveMaximum = _v.value_, + .type = numeric_type_to_string(_type)}}; + const auto excl_minimum = + schema::Type{.value = schema::Type::ExclusiveMinimum{ + .exclusiveMinimum = _v.value_, + .type = numeric_type_to_string(_type)}}; + return schema::Type{ + .value = schema::Type::AnyOf{.anyOf = {excl_maximum, excl_minimum}}}; + + } else { + static_assert(rfl::always_false_v, "Not all cases were covered."); + } + }; + + return std::visit(handle_variant, _validation_type.variant_); +} + +inline schema::Type type_to_json_schema_type( + const parsing::schema::Type& _type) { + const auto handle_variant = [](const auto& _t) -> schema::Type { + using T = std::remove_cvref_t; + using Type = parsing::schema::Type; + if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::Boolean{}}; + + } else if constexpr (std::is_same() || + std::is_same() || + std::is_same() || + std::is_same() || + std::is_same()) { + return schema::Type{.value = schema::Type::Integer{}}; + + } else if constexpr (std::is_same() || + std::is_same()) { + return schema::Type{.value = schema::Type::Number{}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::String{}}; + + } else if constexpr (std::is_same()) { + auto any_of = std::vector(); + for (const auto& t : _t.types_) { + any_of.emplace_back(type_to_json_schema_type(t)); + } + return schema::Type{.value = schema::Type::AnyOf{.anyOf = any_of}}; + + } else if constexpr (std::is_same()) { + auto res = type_to_json_schema_type(*_t.type_); + const auto update_prediction = [&](auto _v) -> schema::Type { + _v.description = _t.description_; + return schema::Type{_v}; + }; + return std::visit(update_prediction, res.value); + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::FixedSizeTypedArray{ + .items = Ref::make( + type_to_json_schema_type(*_t.type_)), + .minContains = _t.size_, + .maxContains = _t.size_}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = + schema::Type::StringEnum{.values = _t.values_}}; + + } else if constexpr (std::is_same()) { + auto properties = std::map(); + auto required = std::vector(); + for (const auto& [k, v] : _t.types_) { + properties[k] = type_to_json_schema_type(v); + if (!is_optional(v)) { + required.push_back(k); + } + } + return schema::Type{.value = schema::Type::Object{ + .properties = properties, .required = required}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::AnyOf{ + .anyOf = {type_to_json_schema_type(*_t.type_), + schema::Type{schema::Type::Null{}}}}}; + + } else if constexpr (std::is_same()) { + return schema::Type{ + .value = schema::Type::Reference{.ref = "#/definitions/" + _t.name_}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::StringMap{ + .additionalProperties = Ref::make( + type_to_json_schema_type(*_t.value_type_))}}; + + } else if constexpr (std::is_same()) { + auto items = std::vector(); + for (const auto& t : _t.types_) { + items.emplace_back(type_to_json_schema_type(t)); + } + return schema::Type{.value = schema::Type::Tuple{.prefixItems = items}}; + + } else if constexpr (std::is_same()) { + return schema::Type{.value = schema::Type::TypedArray{ + .items = Ref::make( + type_to_json_schema_type(*_t.type_))}}; + + } else if constexpr (std::is_same()) { + return handle_validation_type(*_t.type_, _t.validation_); + + } else { + static_assert(rfl::always_false_v, "Not all cases were covered."); + } + }; + + return std::visit(handle_variant, _type.variant_); +} + +template +struct TypeHelper {}; + +template +struct TypeHelper> { + using JSONSchemaType = std::variant...>; +}; + +/// Returns the JSON schema for a class. +template +std::string to_schema(const yyjson_write_flag _flag = 0) { + const auto internal_schema = + parsing::schema::make>(); + auto definitions = std::map(); + for (const auto& [k, v] : internal_schema.definitions_) { + definitions[k] = type_to_json_schema_type(v); + } + using JSONSchemaType = + typename TypeHelper::JSONSchemaType; + const auto to_schema = [&](auto&& _root) -> JSONSchemaType { + using U = std::decay_t; + return schema::JSONSchema{.root = std::move(_root), + .definitions = definitions}; + }; + auto root = type_to_json_schema_type(internal_schema.root_); + const auto json_schema = std::visit(to_schema, std::move(root.value)); + return write(json_schema, _flag); +} +} // namespace rfl::json + +#endif diff --git a/include/rfl/json/write.hpp b/include/rfl/json/write.hpp new file mode 100644 index 0000000..8f5bc50 --- /dev/null +++ b/include/rfl/json/write.hpp @@ -0,0 +1,52 @@ +#ifndef RFL_JSON_WRITE_HPP_ +#define RFL_JSON_WRITE_HPP_ + +#include + +#include +#include +#include + +#include "../Processors.hpp" +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace json { + +/// Convenient alias for the YYJSON pretty flag +inline constexpr yyjson_write_flag pretty = YYJSON_WRITE_PRETTY; + +/// Returns a JSON string. +template +std::string write(const auto& _obj, const yyjson_write_flag _flag = 0) { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + auto w = Writer(yyjson_mut_doc_new(NULL)); + Parser>::write(w, _obj, typename ParentType::Root{}); + const char* json_c_str = yyjson_mut_write(w.doc_, _flag, NULL); + const auto json_str = std::string(json_c_str); + free((void*)json_c_str); + yyjson_mut_doc_free(w.doc_); + return json_str; +} + +/// Writes a JSON into an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream, + const yyjson_write_flag _flag = 0) { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + auto w = Writer(yyjson_mut_doc_new(NULL)); + Parser>::write(w, _obj, typename ParentType::Root{}); + const char* json_c_str = yyjson_mut_write(w.doc_, _flag, NULL); + _stream << json_c_str; + free((void*)json_c_str); + yyjson_mut_doc_free(w.doc_); + return _stream; +} + +} // namespace json +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/msgpack.hpp b/include/rfl/msgpack.hpp new file mode 100644 index 0000000..45e8c66 --- /dev/null +++ b/include/rfl/msgpack.hpp @@ -0,0 +1,13 @@ +#ifndef RFL_MSGPACK_HPP_ +#define RFL_MSGPACK_HPP_ + +#include "../rfl.hpp" +#include "msgpack/Parser.hpp" +#include "msgpack/Reader.hpp" +#include "msgpack/Writer.hpp" +#include "msgpack/load.hpp" +#include "msgpack/read.hpp" +#include "msgpack/save.hpp" +#include "msgpack/write.hpp" + +#endif diff --git a/include/rfl/msgpack/Parser.hpp b/include/rfl/msgpack/Parser.hpp new file mode 100644 index 0000000..79da146 --- /dev/null +++ b/include/rfl/msgpack/Parser.hpp @@ -0,0 +1,46 @@ +#ifndef RFL_MSGPACK_PARSER_HPP_ +#define RFL_MSGPACK_PARSER_HPP_ + +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl { +namespace parsing { + +/// msgpack-c requires us to explicitly set the number of fields in advance. +/// Because of that, we require all of the fields and then set them to nullptr, +/// if necessary. +template +requires AreReaderAndWriter> +struct Parser, + ProcessorsType> + : public NamedTupleParser { +}; + +template +requires AreReaderAndWriter> +struct Parser, + ProcessorsType> + : public TupleParser { +}; + +} // namespace parsing +} // namespace rfl + +namespace rfl { +namespace msgpack { + +template +using Parser = parsing::Parser; + +} +} // namespace rfl + +#endif diff --git a/include/rfl/msgpack/Reader.hpp b/include/rfl/msgpack/Reader.hpp new file mode 100644 index 0000000..004251d --- /dev/null +++ b/include/rfl/msgpack/Reader.hpp @@ -0,0 +1,148 @@ +#ifndef RFL_MSGPACK_READER_HPP_ +#define RFL_MSGPACK_READER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Box.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace msgpack { + +struct Reader { + using InputArrayType = msgpack_object_array; + using InputObjectType = msgpack_object_map; + using InputVarType = msgpack_object; + + template + static constexpr bool has_custom_constructor = (requires(InputVarType var) { + T::from_msgpack_obj(var); + }); + + rfl::Result get_field( + const std::string& _name, const InputObjectType& _obj) const noexcept { + for (uint32_t i = 0; i < _obj.size; ++i) { + const auto& key = _obj.ptr[i].key; + if (key.type != MSGPACK_OBJECT_STR) { + return Error("Key in element " + std::to_string(i) + + " was not a string."); + } + const auto current_name = + std::string_view(key.via.str.ptr, key.via.str.size); + if (_name == current_name) { + return _obj.ptr[i].val; + } + } + return Error("No field named '" + _name + "' was found."); + } + + bool is_empty(const InputVarType& _var) const noexcept { + return _var.type == MSGPACK_OBJECT_NIL; + } + + template + rfl::Result to_basic_type(const InputVarType& _var) const noexcept { + const auto type = _var.type; + if constexpr (std::is_same, std::string>()) { + if (type != MSGPACK_OBJECT_STR) { + return Error("Could not cast to string."); + } + const auto str = _var.via.str; + return std::string(str.ptr, str.size); + } else if constexpr (std::is_same, bool>()) { + if (type != MSGPACK_OBJECT_BOOLEAN) { + return Error("Could not cast to boolean."); + } + return _var.via.boolean; + } else if constexpr (std::is_floating_point>() || + std::is_integral>()) { + if (type == MSGPACK_OBJECT_FLOAT32 || type == MSGPACK_OBJECT_FLOAT64 || + type == MSGPACK_OBJECT_FLOAT) { + return static_cast(_var.via.f64); + } else if (type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + return static_cast(_var.via.u64); + } else if (type == MSGPACK_OBJECT_NEGATIVE_INTEGER) { + return static_cast(_var.via.i64); + } + return rfl::Error( + "Could not cast to numeric value. The type must be integral, float " + "or double."); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + rfl::Result to_array( + const InputVarType& _var) const noexcept { + if (_var.type != MSGPACK_OBJECT_ARRAY) { + return Error("Could not cast to an array."); + } + return _var.via.array; + } + + rfl::Result to_object( + const InputVarType& _var) const noexcept { + if (_var.type != MSGPACK_OBJECT_MAP) { + return Error("Could not cast to a map."); + } + return _var.via.map; + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + for (uint32_t i = 0; i < _arr.size; ++i) { + const auto err = _array_reader.read(_arr.ptr[i]); + if (err) { + return err; + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + for (uint32_t i = 0; i < _obj.size; ++i) { + const auto& key = _obj.ptr[i].key; + const auto& val = _obj.ptr[i].val; + if (key.type != MSGPACK_OBJECT_STR) { + return Error("Key in element " + std::to_string(i) + + " was not a string."); + } + const auto name = std::string_view(key.via.str.ptr, key.via.str.size); + _object_reader.read(name, val); + } + return std::nullopt; + } + + template + rfl::Result use_custom_constructor( + const InputVarType& _var) const noexcept { + try { + return T::from_msgpack_obj(_var); + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } +}; + +} // namespace msgpack +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/msgpack/Writer.hpp b/include/rfl/msgpack/Writer.hpp new file mode 100644 index 0000000..0ee2796 --- /dev/null +++ b/include/rfl/msgpack/Writer.hpp @@ -0,0 +1,154 @@ +#ifndef RFL_MSGPACK_WRITER_HPP_ +#define RFL_MSGPACK_WRITER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Box.hpp" +#include "../Ref.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl::msgpack { + +class Writer { + public: + struct MsgpackOutputArray {}; + + struct MsgpackOutputObject {}; + + struct MsgpackOutputVar {}; + + using OutputArrayType = MsgpackOutputArray; + using OutputObjectType = MsgpackOutputObject; + using OutputVarType = MsgpackOutputVar; + + Writer(msgpack_packer* _pk) : pk_(_pk) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + return new_array(_size); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + return new_object(_size); + } + + OutputVarType null_as_root() const noexcept { + msgpack_pack_nil(pk_); + return OutputVarType{}; + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + return new_value(_var); + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + return new_array(_size); + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + msgpack_pack_str(pk_, _name.size()); + msgpack_pack_str_body(pk_, _name.data(), _name.size()); + return new_array(_size); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + return new_object(_size); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + msgpack_pack_str(pk_, _name.size()); + msgpack_pack_str_body(pk_, _name.data(), _name.size()); + return new_object(_size); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + return new_value(_var); + } + + template + OutputVarType add_value_to_object(const std::string_view& _name, + const T& _var, + OutputObjectType* _parent) const noexcept { + msgpack_pack_str(pk_, _name.size()); + msgpack_pack_str_body(pk_, _name.data(), _name.size()); + return new_value(_var); + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + msgpack_pack_nil(pk_); + return OutputVarType{}; + } + + OutputVarType add_null_to_object(const std::string_view& _name, + OutputObjectType* _parent) const noexcept { + msgpack_pack_str(pk_, _name.size()); + msgpack_pack_str_body(pk_, _name.data(), _name.size()); + msgpack_pack_nil(pk_); + return OutputVarType{}; + } + + void end_array(OutputArrayType* _arr) const noexcept {} + + void end_object(OutputObjectType* _obj) const noexcept {} + + private: + OutputArrayType new_array(const size_t _size) const noexcept { + msgpack_pack_array(pk_, _size); + return OutputArrayType{}; + } + + OutputObjectType new_object(const size_t _size) const noexcept { + msgpack_pack_map(pk_, _size); + return OutputObjectType{}; + } + + template + OutputVarType new_value(const T& _var) const noexcept { + if constexpr (std::is_same, std::string>()) { + msgpack_pack_str(pk_, _var.size()); + msgpack_pack_str_body(pk_, _var.c_str(), _var.size()); + } else if constexpr (std::is_same, bool>()) { + if (_var) { + msgpack_pack_true(pk_); + } else { + msgpack_pack_false(pk_); + } + } else if constexpr (std::is_floating_point>()) { + msgpack_pack_double(pk_, static_cast(_var)); + } else if constexpr (std::is_integral>()) { + msgpack_pack_int64(pk_, static_cast(_var)); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + return OutputVarType{}; + } + + private: + /// The underlying packer. + msgpack_packer* pk_; +}; + +} // namespace rfl::msgpack + +#endif // MSGPACK_PARSER_HPP_ diff --git a/include/rfl/msgpack/load.hpp b/include/rfl/msgpack/load.hpp new file mode 100644 index 0000000..5780257 --- /dev/null +++ b/include/rfl/msgpack/load.hpp @@ -0,0 +1,22 @@ +#ifndef RFL_MSGPACK_LOAD_HPP_ +#define RFL_MSGPACK_LOAD_HPP_ + +#include "../Result.hpp" +#include "../io/load_bytes.hpp" +#include "read.hpp" + +namespace rfl { +namespace msgpack { + +template +Result load(const std::string& _fname) { + const auto read_bytes = [](const auto& _bytes) { + return read(_bytes); + }; + return rfl::io::load_bytes(_fname).and_then(read_bytes); +} + +} // namespace msgpack +} // namespace rfl + +#endif diff --git a/include/rfl/msgpack/read.hpp b/include/rfl/msgpack/read.hpp new file mode 100644 index 0000000..0e0b676 --- /dev/null +++ b/include/rfl/msgpack/read.hpp @@ -0,0 +1,57 @@ +#ifndef RFL_MSGPACK_READ_HPP_ +#define RFL_MSGPACK_READ_HPP_ + +#include + +#include +#include + +#include "../Processors.hpp" +#include "../internal/wrap_in_rfl_array_t.hpp" +#include "Parser.hpp" +#include "Reader.hpp" + +namespace rfl { +namespace msgpack { + +using InputObjectType = typename Reader::InputObjectType; +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from a MSGPACK var. +template +auto read(const InputVarType& _obj) { + const auto r = Reader(); + return Parser>::read(r, _obj); +} + +/// Parses an object from MSGPACK using reflection. +template +Result> read(const char* _bytes, + const size_t _size) { + msgpack_zone mempool; + msgpack_zone_init(&mempool, 2048); + msgpack_object deserialized; + msgpack_unpack(_bytes, _size, NULL, &mempool, &deserialized); + auto r = read(deserialized); + msgpack_zone_destroy(&mempool); + return r; +} + +/// Parses an object from MSGPACK using reflection. +template +auto read(const std::vector& _bytes) { + return read(_bytes.data(), _bytes.size()); +} + +/// Parses an object from a stream. +template +auto read(std::istream& _stream) { + std::istreambuf_iterator begin(_stream), end; + auto bytes = std::vector(begin, end); + return read(bytes.data(), bytes.size()); +} + +} // namespace msgpack +} // namespace rfl + +#endif diff --git a/include/rfl/msgpack/save.hpp b/include/rfl/msgpack/save.hpp new file mode 100644 index 0000000..1d2cfe5 --- /dev/null +++ b/include/rfl/msgpack/save.hpp @@ -0,0 +1,26 @@ +#ifndef RFL_MSGPACK_SAVE_HPP_ +#define RFL_MSGPACK_SAVE_HPP_ + +#include +#include +#include + +#include "../Result.hpp" +#include "../io/save_bytes.hpp" +#include "write.hpp" + +namespace rfl { +namespace msgpack { + +template +Result save(const std::string& _fname, const auto& _obj) { + const auto write_func = [](const auto& _obj, auto& _stream) -> auto& { + return write(_obj, _stream); + }; + return rfl::io::save_bytes(_fname, _obj, write_func); +} + +} // namespace msgpack +} // namespace rfl + +#endif diff --git a/include/rfl/msgpack/write.hpp b/include/rfl/msgpack/write.hpp new file mode 100644 index 0000000..620ebb9 --- /dev/null +++ b/include/rfl/msgpack/write.hpp @@ -0,0 +1,44 @@ +#ifndef RFL_MSGPACK_WRITE_HPP_ +#define RFL_MSGPACK_WRITE_HPP_ + +#include + +#include +#include +#include +#include +#include + +#include "../Processors.hpp" +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl::msgpack { + +/// Returns msgpack bytes. +template +std::vector write(const auto& _obj) noexcept { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + msgpack_sbuffer sbuf; + msgpack_sbuffer_init(&sbuf); + msgpack_packer pk; + msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write); + auto w = Writer(&pk); + Parser>::write(w, _obj, typename ParentType::Root{}); + auto bytes = std::vector(sbuf.data, sbuf.data + sbuf.size); + msgpack_sbuffer_destroy(&sbuf); + return bytes; +} + +/// Writes a MSGPACK into an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream) noexcept { + auto buffer = write(_obj); + _stream.write(buffer.data(), buffer.size()); + return _stream; +} + +} // namespace rfl::msgpack + +#endif diff --git a/include/rfl/parsing/NamedTupleParser.hpp b/include/rfl/parsing/NamedTupleParser.hpp index 9882868..59fc718 100644 --- a/include/rfl/parsing/NamedTupleParser.hpp +++ b/include/rfl/parsing/NamedTupleParser.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "../NamedTuple.hpp" #include "../Result.hpp" @@ -59,7 +60,7 @@ struct NamedTupleParser { using ViewType = std::remove_cvref_t; const auto err = Parser::read_view(_r, _var, &view); - if (err) { + if (err) [[unlikely]] { return *err; } return *ptr; @@ -69,11 +70,11 @@ struct NamedTupleParser { static std::optional read_view( const R& _r, const InputVarType& _var, NamedTuple* _view) noexcept { - const auto obj = _r.to_object(_var); - if (obj) { - return read_object(_r, *obj, _view); + auto obj = _r.to_object(_var); + if (!obj) [[unlikely]] { + return obj.error(); } - return obj.error(); + return read_object(_r, *obj, _view); } /// For writing, we do not need to make the distinction between @@ -147,38 +148,43 @@ struct NamedTupleParser { } /// Generates error messages for when fields are missing. - template - static void handle_missing_fields(const std::array& _found, - const NamedTupleType& _view, - std::array* _set, - std::vector* _errors) noexcept { - if constexpr (_i < sizeof...(FieldTypes)) { - using FieldType = - std::tuple_element_t<_i, typename NamedTupleType::Fields>; - using ValueType = std::remove_reference_t< - std::remove_pointer_t>; + template + static void handle_one_missing_field(const std::array& _found, + const NamedTupleType& _view, + std::array* _set, + std::vector* _errors) noexcept { + using FieldType = std::tuple_element_t<_i, typename NamedTupleType::Fields>; + using ValueType = std::remove_reference_t< + std::remove_pointer_t>; - if (!std::get<_i>(_found)) { - if constexpr (_all_required || - is_required()) { - constexpr auto current_name = - std::tuple_element_t<_i, typename NamedTupleType::Fields>::name(); - _errors->push_back("Field named '" + std::string(current_name) + - "' not found."); + if (!std::get<_i>(_found)) { + if constexpr (_all_required || + is_required()) { + constexpr auto current_name = + std::tuple_element_t<_i, typename NamedTupleType::Fields>::name(); + _errors->emplace_back(Error( + "Field named '" + std::string(current_name) + "' not found.")); + } else { + if constexpr (!std::is_const_v) { + ::new (rfl::get<_i>(_view)) ValueType(); } else { - if constexpr (!std::is_const_v) { - ::new (rfl::get<_i>(_view)) ValueType(); - } else { - using NonConstT = std::remove_const_t; - ::new (const_cast(rfl::get<_i>(_view))) NonConstT(); - } - std::get<_i>(*_set) = true; + using NonConstT = std::remove_const_t; + ::new (const_cast(rfl::get<_i>(_view))) NonConstT(); } + std::get<_i>(*_set) = true; } - handle_missing_fields<_i + 1>(_found, _view, _set, _errors); } } + /// Generates error messages for when fields are missing. + template + static void handle_missing_fields( + const std::array& _found, const NamedTupleType& _view, + std::array* _set, std::vector* _errors, + std::integer_sequence) noexcept { + (handle_one_missing_field<_is>(_found, _view, _set, _errors), ...); + } + static std::optional read_object(const R& _r, const InputObjectType& _obj, NamedTupleType* _view) noexcept { @@ -193,7 +199,8 @@ struct NamedTupleParser { if (err) { return *err; } - handle_missing_fields(found, *_view, &set, &errors); + handle_missing_fields(found, *_view, &set, &errors, + std::make_integer_sequence()); if (errors.size() != 0) { object_reader.call_destructors_where_necessary(); return to_single_error_message(errors); diff --git a/include/rfl/parsing/Parser_default.hpp b/include/rfl/parsing/Parser_default.hpp index a3b5b0a..88e5606 100644 --- a/include/rfl/parsing/Parser_default.hpp +++ b/include/rfl/parsing/Parser_default.hpp @@ -17,11 +17,11 @@ #include "../internal/is_validator.hpp" #include "../internal/processed_t.hpp" #include "../internal/to_ptr_named_tuple.hpp" +#include "../to_view.hpp" #include "../type_name_t.hpp" #include "AreReaderAndWriter.hpp" #include "Parent.hpp" #include "Parser_base.hpp" -#include "StructReader.hpp" #include "is_tagged_union_wrapper.hpp" #include "schema/Type.hpp" @@ -55,19 +55,13 @@ struct Parser { return Parser::read(_r, _var) .and_then(wrap_in_t); } else if constexpr (std::is_class_v && std::is_aggregate_v) { - return StructReader::read(_r, _var); + return read_struct(_r, _var); } else if constexpr (std::is_enum_v) { using StringConverter = internal::enums::StringConverter; return _r.template to_basic_type(_var).and_then( StringConverter::string_to_enum); - } else if constexpr (internal::is_basic_type_v) { - return _r.template to_basic_type>(_var); } else { - static_assert( - always_false_v, - "Unsupported type. Please refer to the sections on custom " - "classes and custom parsers for information on how add " - "support for your own classes."); + return _r.template to_basic_type>(_var); } } } @@ -93,13 +87,8 @@ struct Parser { using StringConverter = internal::enums::StringConverter; const auto str = StringConverter::enum_to_string(_var); ParentType::add_value(_w, str, _parent); - } else if constexpr (internal::is_basic_type_v) { - ParentType::add_value(_w, _var, _parent); } else { - static_assert(always_false_v, - "Unsupported type. Please refer to the sections on custom " - "classes and custom parsers for information on how add " - "support for your own classes."); + ParentType::add_value(_w, _var, _parent); } } @@ -222,6 +211,23 @@ struct Parser { } } + /// The way this works is that we allocate space on the stack in this size of + /// the struct in which we then write the individual fields using + /// views and placement new. This is how we deal with the fact that some + /// fields might not be default-constructible. + static Result read_struct(const R& _r, const InputVarType& _var) { + alignas(T) unsigned char buf[sizeof(T)]; + auto ptr = reinterpret_cast(buf); + auto view = ProcessorsType::template process(to_view(*ptr)); + using ViewType = std::remove_cvref_t; + const auto err = + Parser::read_view(_r, _var, &view); + if (err) [[unlikely]] { + return *err; + } + return std::move(*ptr); + } + static std::string replace_non_alphanumeric(std::string _str) { for (auto& ch : _str) { ch = std::isalnum(ch) ? ch : '_'; diff --git a/include/rfl/parsing/StructReader.hpp b/include/rfl/parsing/StructReader.hpp deleted file mode 100644 index e32f2c6..0000000 --- a/include/rfl/parsing/StructReader.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef RFL_PARSING_STRUCTREADER_HPP_ -#define RFL_PARSING_STRUCTREADER_HPP_ - -#include -#include -#include -#include - -#include "../Result.hpp" -#include "../to_view.hpp" -#include "AreReaderAndWriter.hpp" - -namespace rfl::parsing { - -template -requires AreReaderAndWriter -struct StructReader { - public: - using InputVarType = typename R::InputVarType; - - /// The way this works is that we allocate space on the stack in this size of - /// the struct in which we then write the individual fields using - /// views and placement new. This is how we deal with the fact that some - /// fields might not be default-constructible. - static Result read(const R& _r, const InputVarType& _var) { - alignas(StructType) unsigned char buf[sizeof(StructType)]; - auto ptr = reinterpret_cast(buf); - auto view = ProcessorsType::template process(to_view(*ptr)); - using ViewType = std::remove_cvref_t; - const auto err = - Parser::read_view(_r, _var, &view); - if (err) { - return *err; - } - return std::move(*ptr); - } -}; - -} // namespace rfl::parsing - -#endif diff --git a/include/rfl/parsing/ViewReader.hpp b/include/rfl/parsing/ViewReader.hpp index 3f3eb5c..d1ba971 100644 --- a/include/rfl/parsing/ViewReader.hpp +++ b/include/rfl/parsing/ViewReader.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "../Result.hpp" @@ -24,63 +25,68 @@ class ViewReader { ~ViewReader() = default; - template + /// Assigns the parsed version of _var to the field signified by _name, if + /// such a field exists in the underlying view. void read(const std::string_view& _name, const InputVarType& _var) const { - if constexpr (_i < size_) { - using FieldType = std::tuple_element_t<_i, typename ViewType::Fields>; - using OriginalType = std::remove_cvref_t; - using CurrentType = - std::remove_cvref_t>; - constexpr auto current_name = FieldType::name(); - if (!std::get<_i>(*found_) && _name == current_name) { - auto res = Parser::read(*r_, _var); - if (res) { - if constexpr (std::is_pointer_v) { - move_to(rfl::get<_i>(*view_), &(*res)); - } else { - rfl::get<_i>(*view_) = *res; - } - std::get<_i>(*set_) = true; - } else { - errors_->push_back(Error("Failed to parse field '" + - std::string(current_name) + - "': " + res.error()->what())); - } - std::get<_i>(*found_) = true; - return; - } - read<_i + 1>(_name, _var); - } + assign_to_matching_field(*r_, _name, _var, view_, errors_, found_, set_, + std::make_integer_sequence()); } /// Because of the way we have allocated the fields, we need to manually /// trigger the destructors. - template void call_destructors_where_necessary() const { - if constexpr (_i < size_) { - using FieldType = std::tuple_element_t<_i, typename ViewType::Fields>; - using OriginalType = std::remove_cvref_t; - using ValueType = - std::remove_cvref_t>; - if constexpr (!std::is_array_v && - std::is_pointer_v && - std::is_destructible_v) { - if (std::get<_i>(*set_)) { - rfl::get<_i>(*view_)->~ValueType(); - } - } else if constexpr (std::is_array_v) { - if (std::get<_i>(*set_)) { - auto ptr = rfl::get<_i>(*view_); - call_destructor_on_array(sizeof(*ptr) / sizeof(**ptr), *ptr); - } - } - call_destructors_where_necessary<_i + 1>(); + [&](std::integer_sequence) { + (call_destructor_on_one_if_necessary(), ...); } + (std::make_integer_sequence()); } private: + template + static void assign_if_field_matches(const R& _r, + const std::string_view& _current_name, + const auto& _var, auto* _view, + auto* _errors, auto* _found, auto* _set, + bool* _already_assigned) { + using FieldType = std::tuple_element_t; + using OriginalType = typename FieldType::Type; + using T = + std::remove_cvref_t>; + constexpr auto name = FieldType::name(); + if (!(*_already_assigned) && !std::get(*_found) && + _current_name == name) { + std::get(*_found) = true; + *_already_assigned = true; + auto res = Parser::read(_r, _var); + if (!res) { + _errors->emplace_back(Error("Failed to parse field '" + + std::string(name) + + "': " + std::move(res.error()->what()))); + return; + } + if constexpr (std::is_pointer_v) { + move_to(rfl::get(*_view), &(*res)); + } else { + rfl::get(*_view) = std::move(*res); + } + std::get(*_set) = true; + } + } + + template + static void assign_to_matching_field(const R& _r, + const std::string_view& _current_name, + const auto& _var, auto* _view, + auto* _errors, auto* _found, auto* _set, + std::integer_sequence) { + bool already_assigned = false; + (assign_if_field_matches(_r, _current_name, _var, _view, _errors, + _found, _set, &already_assigned), + ...); + } + template - void call_destructor_on_array(const size_t _size, T* _ptr) const { + static void call_destructor_on_array(const size_t _size, T* _ptr) { for (size_t i = 0; i < _size; ++i) { if constexpr (std::is_array_v) { call_destructor_on_array(sizeof(*_ptr) / sizeof(**_ptr), *(_ptr + i)); @@ -90,14 +96,34 @@ class ViewReader { } } + template + void call_destructor_on_one_if_necessary() const { + using FieldType = std::tuple_element_t<_i, typename ViewType::Fields>; + using OriginalType = std::remove_cvref_t; + using ValueType = + std::remove_cvref_t>; + if constexpr (!std::is_array_v && + std::is_pointer_v && + std::is_destructible_v) { + if (std::get<_i>(*set_)) { + rfl::get<_i>(*view_)->~ValueType(); + } + } else if constexpr (std::is_array_v) { + if (std::get<_i>(*set_)) { + auto ptr = rfl::get<_i>(*view_); + call_destructor_on_array(sizeof(*ptr) / sizeof(**ptr), *ptr); + } + } + } + template - void move_to(Target* _t, Source* _s) const { + static void move_to(Target* _t, Source* _s) { if constexpr (std::is_const_v) { return move_to(const_cast*>(_t), _s); - } else if constexpr (!internal::is_array_v && + } else if constexpr (!rfl::internal::is_array_v && !std::is_array_v) { ::new (_t) Target(std::move(*_s)); - } else if constexpr (internal::is_array_v) { + } else if constexpr (rfl::internal::is_array_v) { static_assert(std::is_array_v, "Expected target to be a c-array."); for (size_t i = 0; i < _s->arr_.size(); ++i) { diff --git a/include/rfl/xml.hpp b/include/rfl/xml.hpp new file mode 100644 index 0000000..ecb20c8 --- /dev/null +++ b/include/rfl/xml.hpp @@ -0,0 +1,13 @@ +#ifndef RFL_XML_HPP_ +#define RFL_XML_HPP_ + +#include "../rfl.hpp" +#include "xml/Parser.hpp" +#include "xml/Reader.hpp" +#include "xml/Writer.hpp" +#include "xml/load.hpp" +#include "xml/read.hpp" +#include "xml/save.hpp" +#include "xml/write.hpp" + +#endif diff --git a/include/rfl/xml/Parser.hpp b/include/rfl/xml/Parser.hpp new file mode 100644 index 0000000..687f751 --- /dev/null +++ b/include/rfl/xml/Parser.hpp @@ -0,0 +1,40 @@ +#ifndef RFL_XML_PARSER_HPP_ +#define RFL_XML_PARSER_HPP_ + +#include + +#include "../internal/is_attribute.hpp" +#include "../parsing/NamedTupleParser.hpp" +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl { +namespace parsing { + +/// XML is very special. It doesn't have proper support for arrays, which means +/// that we just need to ignore empty containers. Therefore, we need to a +/// template specialization for the NamedTuple parser to accommodate for it. +template +requires AreReaderAndWriter> +struct Parser, + ProcessorsType> + : public NamedTupleParser { +}; + +} // namespace parsing +} // namespace rfl + +namespace rfl { +namespace xml { + +template +using Parser = parsing::Parser; + +} +} // namespace rfl + +#endif diff --git a/include/rfl/xml/Reader.hpp b/include/rfl/xml/Reader.hpp new file mode 100644 index 0000000..6500b0d --- /dev/null +++ b/include/rfl/xml/Reader.hpp @@ -0,0 +1,174 @@ +#ifndef RFL_XML_READER_HPP_ +#define RFL_XML_READER_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Result.hpp" +#include "../always_false.hpp" +#include "../parsing/is_view_reader.hpp" + +namespace rfl { +namespace xml { + +struct Reader { + struct XMLInputArray { + XMLInputArray(pugi::xml_node _node) : node_(_node) {} + pugi::xml_node node_; + }; + + struct XMLInputObject { + XMLInputObject(pugi::xml_node _node) : node_(_node) {} + pugi::xml_node node_; + }; + + struct XMLInputVar { + XMLInputVar() : node_or_attribute_(pugi::xml_node()) {} + XMLInputVar(pugi::xml_attribute _attr) : node_or_attribute_(_attr) {} + XMLInputVar(pugi::xml_node _node) : node_or_attribute_(_node) {} + std::variant node_or_attribute_; + }; + + using InputArrayType = XMLInputArray; + using InputObjectType = XMLInputObject; + using InputVarType = XMLInputVar; + + // TODO + template + static constexpr bool has_custom_constructor = false; + + /// XML-only helper function. This is needed because XML distinguishes between + /// nodes and attributes. + static rfl::Result cast_as_node( + const std::variant& + _node_or_attribute) { + const auto cast = [](const auto& _n) -> Result { + using Type = std::remove_cvref_t; + if constexpr (std::is_same()) { + return _n; + } else { + return Error("Field '" + std::string(_n.name()) + "' is an attribute."); + } + }; + return std::visit(cast, _node_or_attribute); + } + + rfl::Result get_field( + const std::string& _name, const InputObjectType _obj) const noexcept { + const auto node = _obj.node_.child(_name.c_str()); + if (!node) { + return rfl::Error("Object contains no field named '" + _name + "'."); + } + return InputVarType(node); + } + + bool is_empty(const InputVarType _var) const noexcept { + const auto wrap = [](const auto& _node) { return !_node; }; + return std::visit(cast_as_node, _var.node_or_attribute_) + .transform(wrap) + .value_or(false); + } + + template + rfl::Result to_basic_type(const InputVarType _var) const noexcept { + const auto get_value = [](const auto& _n) -> std::string { + using Type = std::remove_cvref_t; + if constexpr (std::is_same()) { + return std::string(_n.child_value()); + } else { + return std::string(_n.value()); + } + }; + + if constexpr (std::is_same, std::string>()) { + return std::visit(get_value, _var.node_or_attribute_); + } else if constexpr (std::is_same, bool>()) { + return std::visit(get_value, _var.node_or_attribute_) == "true"; + } else if constexpr (std::is_floating_point>()) { + const auto str = std::visit(get_value, _var.node_or_attribute_); + try { + return static_cast(std::stod(str)); + } catch (std::exception& e) { + return Error("Could not cast '" + std::string(str) + + "' to floating point value."); + } + } else if constexpr (std::is_integral>()) { + const auto str = std::visit(get_value, _var.node_or_attribute_); + try { + return static_cast(std::stoi(str)); + } catch (std::exception& e) { + return Error("Could not cast '" + std::string(str) + "' to integer."); + } + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } + + rfl::Result to_array(const InputVarType _var) const noexcept { + const auto wrap = [](const auto& _node) { return InputArrayType(_node); }; + return std::visit(cast_as_node, _var.node_or_attribute_).transform(wrap); + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + const auto name = _arr.node_.name(); + for (auto node = _arr.node_; node; node = node.next_sibling(name)) { + const auto err = _array_reader.read(InputVarType(node)); + if (err) { + return err; + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + for (auto child = _obj.node_.first_child(); child; + child = child.next_sibling()) { + _object_reader.read(std::string_view(child.name()), InputVarType(child)); + } + + for (auto attr = _obj.node_.first_attribute(); attr; + attr = attr.next_attribute()) { + _object_reader.read(std::string_view(attr.name()), InputVarType(attr)); + } + + if constexpr (parsing::is_view_reader_v) { + _object_reader.read(std::string_view("xml_content"), + InputVarType(_obj.node_)); + } + + return std::nullopt; + } + + rfl::Result to_object( + const InputVarType _var) const noexcept { + const auto wrap = [](const auto& _node) { return InputObjectType(_node); }; + return std::visit(cast_as_node, _var.node_or_attribute_).transform(wrap); + } + + template + rfl::Result use_custom_constructor( + const InputVarType _var) const noexcept { + return rfl::Error("TODO"); + } +}; + +} // namespace xml +} // namespace rfl + +#endif diff --git a/include/rfl/xml/Writer.hpp b/include/rfl/xml/Writer.hpp new file mode 100644 index 0000000..be9131a --- /dev/null +++ b/include/rfl/xml/Writer.hpp @@ -0,0 +1,181 @@ +#ifndef RFL_XML_WRITER_HPP_ +#define RFL_XML_WRITER_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Ref.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace xml { + +struct Writer { + static constexpr const char* XML_CONTENT = "xml_content"; + + struct XMLOutputArray { + XMLOutputArray(const std::string_view& _name, + const Ref& _node) + : name_(_name), node_(_node) {} + std::string_view name_; + Ref node_; + }; + + struct XMLOutputObject { + XMLOutputObject(const Ref& _node) : node_(_node) {} + Ref node_; + }; + + struct XMLOutputVar { + XMLOutputVar(const Ref& _node) : node_(_node) {} + Ref node_; + }; + + using OutputArrayType = XMLOutputArray; + using OutputObjectType = XMLOutputObject; + using OutputVarType = XMLOutputVar; + + Writer(const Ref& _root, const std::string& _root_name) + : root_(_root), root_name_(_root_name) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + auto node_child = + Ref::make(root_->append_child(root_name_.c_str())); + return OutputArrayType(root_name_, node_child); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + auto node_child = + Ref::make(root_->append_child(root_name_.c_str())); + return OutputObjectType(node_child); + } + + OutputVarType null_as_root() const noexcept { + auto node_child = + Ref::make(root_->append_child(root_name_.c_str())); + return OutputVarType(node_child); + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + const auto str = to_string(_var); + auto node_child = + Ref::make(root_->append_child(root_name_.c_str())); + node_child->append_child(pugi::node_pcdata).set_value(str.c_str()); + return OutputVarType(node_child); + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + return *_parent; + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + return OutputArrayType(_name, _parent->node_); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + auto node_child = Ref::make( + _parent->node_->append_child(_parent->name_.data())); + return OutputObjectType(node_child); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + auto node_child = + Ref::make(_parent->node_->append_child(_name.data())); + return OutputObjectType(node_child); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + const auto str = to_string(_var); + auto node_child = Ref::make( + _parent->node_->append_child(_parent->name_.data())); + node_child->append_child(pugi::node_pcdata).set_value(str.c_str()); + return OutputVarType(node_child); + } + + template + OutputVarType add_value_to_object( + const std::string_view& _name, const T& _var, OutputObjectType* _parent, + const bool _is_attribute = false) const noexcept { + const auto str = to_string(_var); + if (_is_attribute) { + _parent->node_->append_attribute(_name.data()) = str.c_str(); + return OutputVarType(_parent->node_); + } else if (_name == XML_CONTENT) { + _parent->node_->append_child(pugi::node_pcdata).set_value(str.c_str()); + return OutputVarType(_parent->node_); + } else { + auto node_child = + Ref::make(_parent->node_->append_child(_name.data())); + node_child->append_child(pugi::node_pcdata).set_value(str.c_str()); + return OutputVarType(node_child); + } + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + auto node_child = Ref::make( + _parent->node_->append_child(_parent->name_.data())); + return OutputVarType(node_child); + } + + OutputVarType add_null_to_object( + const std::string_view& _name, OutputObjectType* _parent, + const bool _is_attribute = false) const noexcept { + if (_is_attribute) { + return OutputVarType(_parent->node_); + } else if (_name == XML_CONTENT) { + return OutputVarType(_parent->node_); + } else { + auto node_child = + Ref::make(_parent->node_->append_child(_name.data())); + return OutputVarType(node_child); + } + } + + void end_array(OutputArrayType* _arr) const noexcept {} + + void end_object(OutputObjectType* _obj) const noexcept {} + + private: + template + std::string to_string(const T& _val) const noexcept { + if constexpr (std::is_same, std::string>()) { + return _val; + } else if constexpr (std::is_same, bool>()) { + return _val ? "true" : "false"; + } else if constexpr (std::is_floating_point>() || + std::is_integral>()) { + return std::to_string(_val); + } else { + static_assert(always_false_v, "Unsupported type"); + } + } + + public: + Ref root_; + + std::string root_name_; +}; + +} // namespace xml +} // namespace rfl + +#endif // XML_PARSER_HPP_ diff --git a/include/rfl/xml/load.hpp b/include/rfl/xml/load.hpp new file mode 100644 index 0000000..861f8c4 --- /dev/null +++ b/include/rfl/xml/load.hpp @@ -0,0 +1,22 @@ +#ifndef RFL_XML_LOAD_HPP_ +#define RFL_XML_LOAD_HPP_ + +#include "../Result.hpp" +#include "../io/load_string.hpp" +#include "read.hpp" + +namespace rfl { +namespace xml { + +template +Result load(const std::string& _fname) { + const auto read_string = [](const auto& _str) { + return read(_str); + }; + return rfl::io::load_string(_fname).and_then(read_string); +} + +} // namespace xml +} // namespace rfl + +#endif diff --git a/include/rfl/xml/read.hpp b/include/rfl/xml/read.hpp new file mode 100644 index 0000000..e20d4c5 --- /dev/null +++ b/include/rfl/xml/read.hpp @@ -0,0 +1,50 @@ +#ifndef RFL_XML_READ_HPP_ +#define RFL_XML_READ_HPP_ + +#include +#include +#include + +#include "../Processors.hpp" +#include "../internal/get_type_name.hpp" +#include "../internal/remove_namespaces.hpp" +#include "Parser.hpp" +#include "Reader.hpp" + +namespace rfl { +namespace xml { + +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from a XML var. +template +auto read(const InputVarType& _var) { + const auto r = Reader(); + return Parser>::read(r, _var); +} + +/// Parses an object from XML using reflection. +template +Result read(const std::string& _xml_str) { + pugi::xml_document doc; + const auto result = doc.load_string(_xml_str.c_str()); + if (!result) { + return Error("XML string could not be parsed: " + + std::string(result.description())); + } + const auto var = InputVarType(doc.first_child()); + return read(var); +} + +/// Parses an object from a stringstream. +template +auto read(std::istream& _stream) { + const auto xml_str = std::string(std::istreambuf_iterator(_stream), + std::istreambuf_iterator()); + return read(xml_str); +} + +} // namespace xml +} // namespace rfl + +#endif diff --git a/include/rfl/xml/save.hpp b/include/rfl/xml/save.hpp new file mode 100644 index 0000000..48c3e5c --- /dev/null +++ b/include/rfl/xml/save.hpp @@ -0,0 +1,28 @@ +#ifndef RFL_XML_SAVE_HPP_ +#define RFL_XML_SAVE_HPP_ + +#include +#include +#include + +#include "../Result.hpp" +#include "../internal/StringLiteral.hpp" +#include "../io/save_string.hpp" +#include "write.hpp" + +namespace rfl { +namespace xml { + +template +Result save(const std::string& _fname, const auto& _obj) { + const auto write_func = [](const auto& _obj, auto& _stream) -> auto& { + return write<_root, Ps...>(_obj, _stream); + }; + return rfl::io::save_string(_fname, _obj, write_func); +} + +} // namespace xml +} // namespace rfl + +#endif diff --git a/include/rfl/xml/write.hpp b/include/rfl/xml/write.hpp new file mode 100644 index 0000000..023c757 --- /dev/null +++ b/include/rfl/xml/write.hpp @@ -0,0 +1,74 @@ +#ifndef RFL_XML_WRITE_HPP_ +#define RFL_XML_WRITE_HPP_ + +#include +#include +#include +#include +#include + +#include "../Processors.hpp" +#include "../internal/StringLiteral.hpp" +#include "../internal/get_type_name.hpp" +#include "../internal/remove_namespaces.hpp" +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace xml { + +template +consteval auto get_root_name() { + if constexpr (_root != internal::StringLiteral("")) { + return _root; + } else { + return internal::remove_namespaces< + internal::get_type_name>()>(); + } +} + +/// Writes a XML into an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream, + const std::string& _indent = " ") { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + + constexpr auto root_name = get_root_name<_root, T>(); + + static_assert(root_name.string_view().find("<") == std::string_view::npos && + root_name.string_view().find(">") == std::string_view::npos, + "The name of an XML root node cannot contain '<' or '>'. " + "Please assign an " + "explicit root name to rfl::xml::write(...) like this: " + "rfl::xml::write<\"root_name\">(...)."); + + const auto doc = rfl::Ref::make(); + + auto declaration_node = doc->append_child(pugi::node_declaration); + declaration_node.append_attribute("version") = "1.0"; + declaration_node.append_attribute("encoding") = "UTF-8"; + + auto w = Writer(doc, root_name.str()); + + Parser>::write(w, _obj, typename ParentType::Root{}); + + doc->save(_stream, _indent.c_str()); + + return _stream; +} + +/// Returns a XML string. +template +std::string write(const auto& _obj, const std::string& _indent = " ") { + std::stringstream stream; + write<_root, Ps...>(_obj, stream); + return stream.str(); +} + +} // namespace xml +} // namespace rfl + +#endif // XML_PARSER_HPP_ diff --git a/include/rfl/yaml.hpp b/include/rfl/yaml.hpp new file mode 100644 index 0000000..11cb13e --- /dev/null +++ b/include/rfl/yaml.hpp @@ -0,0 +1,13 @@ +#ifndef RFL_YAML_HPP_ +#define RFL_YAML_HPP_ + +#include "../rfl.hpp" +#include "yaml/Parser.hpp" +#include "yaml/Reader.hpp" +#include "yaml/Writer.hpp" +#include "yaml/load.hpp" +#include "yaml/read.hpp" +#include "yaml/save.hpp" +#include "yaml/write.hpp" + +#endif diff --git a/include/rfl/yaml/Parser.hpp b/include/rfl/yaml/Parser.hpp new file mode 100644 index 0000000..78ef335 --- /dev/null +++ b/include/rfl/yaml/Parser.hpp @@ -0,0 +1,17 @@ +#ifndef RFL_YAML_PARSER_HPP_ +#define RFL_YAML_PARSER_HPP_ + +#include "../parsing/Parser.hpp" +#include "Reader.hpp" +#include "Writer.hpp" + +namespace rfl { +namespace yaml { + +template +using Parser = parsing::Parser; + +} +} // namespace rfl + +#endif diff --git a/include/rfl/yaml/Reader.hpp b/include/rfl/yaml/Reader.hpp new file mode 100644 index 0000000..ab950ce --- /dev/null +++ b/include/rfl/yaml/Reader.hpp @@ -0,0 +1,137 @@ +#ifndef RFL_YAML_READER_HPP_ +#define RFL_YAML_READER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace yaml { + +struct Reader { + struct YAMLInputArray { + YAMLInputArray(const YAML::Node& _node) : node_(_node) {} + YAML::Node node_; + }; + + struct YAMLInputObject { + YAMLInputObject(const YAML::Node& _node) : node_(_node) {} + YAML::Node node_; + }; + + struct YAMLInputVar { + YAMLInputVar(const YAML::Node& _node) : node_(_node) {} + YAML::Node node_; + }; + + using InputArrayType = YAMLInputArray; + using InputObjectType = YAMLInputObject; + using InputVarType = YAMLInputVar; + + template + struct has_from_json_obj : std::false_type {}; + + template + static constexpr bool has_custom_constructor = (requires(InputVarType var) { + T::from_yaml_obj(var); + }); + + rfl::Result get_field( + const std::string& _name, const InputObjectType& _obj) const noexcept { + auto var = InputVarType(_obj.node_[_name]); + if (!var.node_) { + return rfl::Error("Object contains no field named '" + _name + "'."); + } + return var; + } + + bool is_empty(const InputVarType& _var) const noexcept { + return !_var.node_ && true; + } + + template + rfl::Result to_basic_type(const InputVarType& _var) const noexcept { + try { + if constexpr (std::is_same, std::string>() || + std::is_same, bool>() || + std::is_floating_point>() || + std::is_integral>()) { + return _var.node_.as>(); + } else { + static_assert(rfl::always_false_v, "Unsupported type."); + } + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } + + rfl::Result to_array( + const InputVarType& _var) const noexcept { + if (!_var.node_.IsSequence()) { + return rfl::Error("Could not cast to sequence!"); + } + return InputArrayType(_var.node_); + } + + template + std::optional read_array(const ArrayReader& _array_reader, + const InputArrayType& _arr) const noexcept { + for (size_t i = 0; i < _arr.node_.size(); ++i) { + const auto err = _array_reader.read(_arr.node_[i]); + if (err) { + return err; + } + } + return std::nullopt; + } + + template + std::optional read_object(const ObjectReader& _object_reader, + const InputObjectType& _obj) const noexcept { + for (const auto& p : _obj.node_) { + try { + const auto k = p.first.as(); + _object_reader.read(std::string_view(k), InputVarType(p.second)); + } catch (std::exception& e) { + continue; + } + } + return std::nullopt; + } + + rfl::Result to_object( + const InputVarType& _var) const noexcept { + if (!_var.node_.IsMap()) { + return rfl::Error("Could not cast to map!"); + } + return InputObjectType(_var.node_); + } + + template + rfl::Result use_custom_constructor( + const InputVarType _var) const noexcept { + try { + return T::from_yaml_obj(_var); + } catch (std::exception& e) { + return rfl::Error(e.what()); + } + } +}; + +} // namespace yaml +} // namespace rfl + +#endif diff --git a/include/rfl/yaml/Writer.hpp b/include/rfl/yaml/Writer.hpp new file mode 100644 index 0000000..c55d88e --- /dev/null +++ b/include/rfl/yaml/Writer.hpp @@ -0,0 +1,148 @@ +#ifndef RFL_YAML_WRITER_HPP_ +#define RFL_YAML_WRITER_HPP_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Ref.hpp" +#include "../Result.hpp" +#include "../always_false.hpp" + +namespace rfl { +namespace yaml { + +class Writer { + public: + struct YAMLArray {}; + + struct YAMLObject {}; + + struct YAMLVar {}; + + using OutputArrayType = YAMLArray; + using OutputObjectType = YAMLObject; + using OutputVarType = YAMLVar; + + Writer(const Ref& _out) : out_(_out) {} + + ~Writer() = default; + + OutputArrayType array_as_root(const size_t _size) const noexcept { + return new_array(); + } + + OutputObjectType object_as_root(const size_t _size) const noexcept { + return new_object(); + } + + OutputVarType null_as_root() const noexcept { + return insert_value(YAML::Null); + } + + template + OutputVarType value_as_root(const T& _var) const noexcept { + return insert_value(_var); + } + + OutputArrayType add_array_to_array(const size_t _size, + OutputArrayType* _parent) const noexcept { + return new_array(); + } + + OutputArrayType add_array_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + return new_array(_name); + } + + OutputObjectType add_object_to_array( + const size_t _size, OutputArrayType* _parent) const noexcept { + return new_object(); + } + + OutputObjectType add_object_to_object( + const std::string_view& _name, const size_t _size, + OutputObjectType* _parent) const noexcept { + return new_object(_name); + } + + template + OutputVarType add_value_to_array(const T& _var, + OutputArrayType* _parent) const noexcept { + return insert_value(_var); + } + + template + OutputVarType add_value_to_object(const std::string_view& _name, + const T& _var, + OutputObjectType* _parent) const noexcept { + return insert_value(_name, _var); + } + + OutputVarType add_null_to_array(OutputArrayType* _parent) const noexcept { + return insert_value(YAML::Null); + } + + OutputVarType add_null_to_object(const std::string_view& _name, + OutputObjectType* _parent) const noexcept { + return insert_value(_name, YAML::Null); + } + + void end_array(OutputArrayType* _arr) const noexcept { + (*out_) << YAML::EndSeq; + } + + void end_object(OutputObjectType* _obj) const noexcept { + (*out_) << YAML::EndMap; + } + + private: + template + OutputVarType insert_value(const std::string_view& _name, + const T& _var) const noexcept { + (*out_) << YAML::Key << _name.data() << YAML::Value << _var; + return OutputVarType{}; + } + + template + OutputVarType insert_value(const T& _var) const noexcept { + (*out_) << _var; + return OutputVarType{}; + } + + OutputArrayType new_array(const std::string_view& _name) const noexcept { + (*out_) << YAML::Key << _name.data() << YAML::Value << YAML::BeginSeq; + return OutputArrayType{}; + } + + OutputArrayType new_array() const noexcept { + (*out_) << YAML::BeginSeq; + return OutputArrayType{}; + } + + OutputObjectType new_object(const std::string_view& _name) const noexcept { + (*out_) << YAML::Key << _name.data() << YAML::Value << YAML::BeginMap; + return OutputObjectType{}; + } + + OutputObjectType new_object() const noexcept { + (*out_) << YAML::BeginMap; + return OutputObjectType{}; + } + + public: + const Ref out_; +}; + +} // namespace yaml +} // namespace rfl + +#endif // JSON_PARSER_HPP_ diff --git a/include/rfl/yaml/load.hpp b/include/rfl/yaml/load.hpp new file mode 100644 index 0000000..7f3fa92 --- /dev/null +++ b/include/rfl/yaml/load.hpp @@ -0,0 +1,22 @@ +#ifndef RFL_YAML_LOAD_HPP_ +#define RFL_YAML_LOAD_HPP_ + +#include "../Result.hpp" +#include "../io/load_string.hpp" +#include "read.hpp" + +namespace rfl { +namespace yaml { + +template +Result load(const std::string& _fname) { + const auto read_string = [](const auto& _str) { + return read(_str); + }; + return rfl::io::load_string(_fname).and_then(read_string); +} + +} // namespace yaml +} // namespace rfl + +#endif diff --git a/include/rfl/yaml/read.hpp b/include/rfl/yaml/read.hpp new file mode 100644 index 0000000..0d00eb6 --- /dev/null +++ b/include/rfl/yaml/read.hpp @@ -0,0 +1,47 @@ +#ifndef RFL_YAML_READ_HPP_ +#define RFL_YAML_READ_HPP_ + +#include + +#include +#include + +#include "../Processors.hpp" +#include "../internal/wrap_in_rfl_array_t.hpp" +#include "Parser.hpp" +#include "Reader.hpp" +namespace rfl { +namespace yaml { + +using InputVarType = typename Reader::InputVarType; + +/// Parses an object from a YAML var. +template +auto read(const InputVarType& _var) { + const auto r = Reader(); + return Parser>::read(r, _var); +} + +/// Parses an object from YAML using reflection. +template +Result> read(const std::string& _yaml_str) { + try { + const auto var = InputVarType(YAML::Load(_yaml_str)); + return read(var); + } catch (std::exception& e) { + return Error(e.what()); + } +} + +/// Parses an object from a stringstream. +template +auto read(std::istream& _stream) { + const auto yaml_str = std::string(std::istreambuf_iterator(_stream), + std::istreambuf_iterator()); + return read(yaml_str); +} + +} // namespace yaml +} // namespace rfl + +#endif diff --git a/include/rfl/yaml/save.hpp b/include/rfl/yaml/save.hpp new file mode 100644 index 0000000..6333c99 --- /dev/null +++ b/include/rfl/yaml/save.hpp @@ -0,0 +1,27 @@ +#ifndef RFL_YAML_SAVE_HPP_ +#define RFL_YAML_SAVE_HPP_ + +#include +#include +#include + +#include "../Processors.hpp" +#include "../Result.hpp" +#include "../io/save_string.hpp" +#include "write.hpp" + +namespace rfl { +namespace yaml { + +template +Result save(const std::string& _fname, const auto& _obj) { + const auto write_func = [](const auto& _obj, auto& _stream) -> auto& { + return write(_obj, _stream); + }; + return rfl::io::save_string(_fname, _obj, write_func); +} + +} // namespace yaml +} // namespace rfl + +#endif diff --git a/include/rfl/yaml/write.hpp b/include/rfl/yaml/write.hpp new file mode 100644 index 0000000..f6613ce --- /dev/null +++ b/include/rfl/yaml/write.hpp @@ -0,0 +1,44 @@ +#ifndef RFL_YAML_WRITE_HPP_ +#define RFL_YAML_WRITE_HPP_ + +#include + +#include +#include +#include +#include + +#include "../Processors.hpp" +#include "../parsing/Parent.hpp" +#include "Parser.hpp" + +namespace rfl { +namespace yaml { + +/// Writes a YAML into an ostream. +template +std::ostream& write(const auto& _obj, std::ostream& _stream) { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + const auto out = Ref::make(); + auto w = Writer(out); + Parser>::write(w, _obj, typename ParentType::Root{}); + _stream << out->c_str(); + return _stream; +} + +/// Returns a YAML string. +template +std::string write(const auto& _obj) { + using T = std::remove_cvref_t; + using ParentType = parsing::Parent; + const auto out = Ref::make(); + auto w = Writer(out); + Parser>::write(w, _obj, typename ParentType::Root{}); + return out->c_str(); +} + +} // namespace yaml +} // namespace rfl + +#endif diff --git a/include/yyjson.h b/include/yyjson.h new file mode 100644 index 0000000..7b3a5b7 --- /dev/null +++ b/include/yyjson.h @@ -0,0 +1,7690 @@ +/*============================================================================== + * Created by Yaoyuan on 2019/3/9. + * Copyright (C) 2019 Yaoyuan . + * + * Released under the MIT License: + * https://github.com/ibireme/yyjson/blob/master/LICENSE + *============================================================================*/ + +/** @file yyjson.h */ + +#ifndef YYJSON_H +#define YYJSON_H + + + +/*============================================================================== + * Header Files + *============================================================================*/ + +#include +#include +#include +#include +#include +#include + + + +/*============================================================================== + * Compile-time Options + *============================================================================*/ + +/* + Define as 1 to disable JSON reader if JSON parsing is not required. + + This will disable these functions at compile-time: + - yyjson_read_opts() + - yyjson_read_file() + - yyjson_read() + - yyjson_read_number() + - yyjson_mut_read_number() + + This will reduce the binary size by about 60%. + */ +#ifndef YYJSON_DISABLE_READER +#endif + +/* + Define as 1 to disable JSON writer if JSON serialization is not required. + + This will disable these functions at compile-time: + - yyjson_write() + - yyjson_write_file() + - yyjson_write_opts() + - yyjson_val_write() + - yyjson_val_write_file() + - yyjson_val_write_opts() + - yyjson_mut_write() + - yyjson_mut_write_file() + - yyjson_mut_write_opts() + - yyjson_mut_val_write() + - yyjson_mut_val_write_file() + - yyjson_mut_val_write_opts() + + This will reduce the binary size by about 30%. + */ +#ifndef YYJSON_DISABLE_WRITER +#endif + +/* + Define as 1 to disable JSON Pointer, JSON Patch and JSON Merge Patch supports. + + This will disable these functions at compile-time: + - yyjson_ptr_xxx() + - yyjson_mut_ptr_xxx() + - yyjson_doc_ptr_xxx() + - yyjson_mut_doc_ptr_xxx() + - yyjson_patch() + - yyjson_mut_patch() + - yyjson_merge_patch() + - yyjson_mut_merge_patch() + */ +#ifndef YYJSON_DISABLE_UTILS +#endif + +/* + Define as 1 to disable the fast floating-point number conversion in yyjson, + and use libc's `strtod/snprintf` instead. + + This will reduce the binary size by about 30%, but significantly slow down the + floating-point read/write speed. + */ +#ifndef YYJSON_DISABLE_FAST_FP_CONV +#endif + +/* + Define as 1 to disable non-standard JSON support at compile-time: + - Reading and writing inf/nan literal, such as `NaN`, `-Infinity`. + - Single line and multiple line comments. + - Single trailing comma at the end of an object or array. + - Invalid unicode in string value. + + This will also invalidate these run-time options: + - YYJSON_READ_ALLOW_INF_AND_NAN + - YYJSON_READ_ALLOW_COMMENTS + - YYJSON_READ_ALLOW_TRAILING_COMMAS + - YYJSON_READ_ALLOW_INVALID_UNICODE + - YYJSON_WRITE_ALLOW_INF_AND_NAN + - YYJSON_WRITE_ALLOW_INVALID_UNICODE + + This will reduce the binary size by about 10%, and slightly improve the JSON + read/write speed. + */ +#ifndef YYJSON_DISABLE_NON_STANDARD +#endif + +/* + Define as 1 to disable unaligned memory access if target architecture does not + support unaligned memory access (such as some embedded processors). + + If this value is not defined, yyjson will perform some automatic detection. + The wrong definition of this option may cause some performance degradation, + but will not cause any run-time errors. + */ +#ifndef YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS +#endif + +/* Define as 1 to export symbols when building this library as Windows DLL. */ +#ifndef YYJSON_EXPORTS +#endif + +/* Define as 1 to import symbols when using this library as Windows DLL. */ +#ifndef YYJSON_IMPORTS +#endif + +/* Define as 1 to include for compiler which doesn't support C99. */ +#ifndef YYJSON_HAS_STDINT_H +#endif + +/* Define as 1 to include for compiler which doesn't support C99. */ +#ifndef YYJSON_HAS_STDBOOL_H +#endif + + + +/*============================================================================== + * Compiler Macros + *============================================================================*/ + +/** compiler version (MSVC) */ +#ifdef _MSC_VER +# define YYJSON_MSC_VER _MSC_VER +#else +# define YYJSON_MSC_VER 0 +#endif + +/** compiler version (GCC) */ +#ifdef __GNUC__ +# define YYJSON_GCC_VER __GNUC__ +#else +# define YYJSON_GCC_VER 0 +#endif + +/** C version (STDC) */ +#if defined(__STDC__) && (__STDC__ >= 1) && defined(__STDC_VERSION__) +# define YYJSON_STDC_VER __STDC_VERSION__ +#else +# define YYJSON_STDC_VER 0 +#endif + +/** C++ version */ +#if defined(__cplusplus) +# define YYJSON_CPP_VER __cplusplus +#else +# define YYJSON_CPP_VER 0 +#endif + +/** compiler builtin check (since gcc 10.0, clang 2.6, icc 2021) */ +#ifndef yyjson_has_builtin +# ifdef __has_builtin +# define yyjson_has_builtin(x) __has_builtin(x) +# else +# define yyjson_has_builtin(x) 0 +# endif +#endif + +/** compiler attribute check (since gcc 5.0, clang 2.9, icc 17) */ +#ifndef yyjson_has_attribute +# ifdef __has_attribute +# define yyjson_has_attribute(x) __has_attribute(x) +# else +# define yyjson_has_attribute(x) 0 +# endif +#endif + +/** compiler feature check (since clang 2.6, icc 17) */ +#ifndef yyjson_has_feature +# ifdef __has_feature +# define yyjson_has_feature(x) __has_feature(x) +# else +# define yyjson_has_feature(x) 0 +# endif +#endif + +/** include check (since gcc 5.0, clang 2.7, icc 16, msvc 2017 15.3) */ +#ifndef yyjson_has_include +# ifdef __has_include +# define yyjson_has_include(x) __has_include(x) +# else +# define yyjson_has_include(x) 0 +# endif +#endif + +/** inline for compiler */ +#ifndef yyjson_inline +# if YYJSON_MSC_VER >= 1200 +# define yyjson_inline __forceinline +# elif defined(_MSC_VER) +# define yyjson_inline __inline +# elif yyjson_has_attribute(always_inline) || YYJSON_GCC_VER >= 4 +# define yyjson_inline __inline__ __attribute__((always_inline)) +# elif defined(__clang__) || defined(__GNUC__) +# define yyjson_inline __inline__ +# elif defined(__cplusplus) || YYJSON_STDC_VER >= 199901L +# define yyjson_inline inline +# else +# define yyjson_inline +# endif +#endif + +/** noinline for compiler */ +#ifndef yyjson_noinline +# if YYJSON_MSC_VER >= 1400 +# define yyjson_noinline __declspec(noinline) +# elif yyjson_has_attribute(noinline) || YYJSON_GCC_VER >= 4 +# define yyjson_noinline __attribute__((noinline)) +# else +# define yyjson_noinline +# endif +#endif + +/** align for compiler */ +#ifndef yyjson_align +# if YYJSON_MSC_VER >= 1300 +# define yyjson_align(x) __declspec(align(x)) +# elif yyjson_has_attribute(aligned) || defined(__GNUC__) +# define yyjson_align(x) __attribute__((aligned(x))) +# elif YYJSON_CPP_VER >= 201103L +# define yyjson_align(x) alignas(x) +# else +# define yyjson_align(x) +# endif +#endif + +/** likely for compiler */ +#ifndef yyjson_likely +# if yyjson_has_builtin(__builtin_expect) || \ + (YYJSON_GCC_VER >= 4 && YYJSON_GCC_VER != 5) +# define yyjson_likely(expr) __builtin_expect(!!(expr), 1) +# else +# define yyjson_likely(expr) (expr) +# endif +#endif + +/** unlikely for compiler */ +#ifndef yyjson_unlikely +# if yyjson_has_builtin(__builtin_expect) || \ + (YYJSON_GCC_VER >= 4 && YYJSON_GCC_VER != 5) +# define yyjson_unlikely(expr) __builtin_expect(!!(expr), 0) +# else +# define yyjson_unlikely(expr) (expr) +# endif +#endif + +/** deprecate warning */ +#ifndef yyjson_deprecated +# if YYJSON_MSC_VER >= 1400 +# define yyjson_deprecated(msg) __declspec(deprecated(msg)) +# elif yyjson_has_feature(attribute_deprecated_with_message) || \ + (YYJSON_GCC_VER > 4 || (YYJSON_GCC_VER == 4 && __GNUC_MINOR__ >= 5)) +# define yyjson_deprecated(msg) __attribute__((deprecated(msg))) +# elif YYJSON_GCC_VER >= 3 +# define yyjson_deprecated(msg) __attribute__((deprecated)) +# else +# define yyjson_deprecated(msg) +# endif +#endif + +/** function export */ +#ifndef yyjson_api +# if defined(_WIN32) +# if defined(YYJSON_EXPORTS) && YYJSON_EXPORTS +# define yyjson_api __declspec(dllexport) +# elif defined(YYJSON_IMPORTS) && YYJSON_IMPORTS +# define yyjson_api __declspec(dllimport) +# else +# define yyjson_api +# endif +# elif yyjson_has_attribute(visibility) || YYJSON_GCC_VER >= 4 +# define yyjson_api __attribute__((visibility("default"))) +# else +# define yyjson_api +# endif +#endif + +/** inline function export */ +#ifndef yyjson_api_inline +# define yyjson_api_inline static yyjson_inline +#endif + +/** stdint (C89 compatible) */ +#if (defined(YYJSON_HAS_STDINT_H) && YYJSON_HAS_STDINT_H) || \ + YYJSON_MSC_VER >= 1600 || YYJSON_STDC_VER >= 199901L || \ + defined(_STDINT_H) || defined(_STDINT_H_) || \ + defined(__CLANG_STDINT_H) || defined(_STDINT_H_INCLUDED) || \ + yyjson_has_include() +# include +#elif defined(_MSC_VER) +# if _MSC_VER < 1300 + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; +# else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; +# endif +#else +# if UCHAR_MAX == 0xFFU + typedef signed char int8_t; + typedef unsigned char uint8_t; +# else +# error cannot find 8-bit integer type +# endif +# if USHRT_MAX == 0xFFFFU + typedef unsigned short uint16_t; + typedef signed short int16_t; +# elif UINT_MAX == 0xFFFFU + typedef unsigned int uint16_t; + typedef signed int int16_t; +# else +# error cannot find 16-bit integer type +# endif +# if UINT_MAX == 0xFFFFFFFFUL + typedef unsigned int uint32_t; + typedef signed int int32_t; +# elif ULONG_MAX == 0xFFFFFFFFUL + typedef unsigned long uint32_t; + typedef signed long int32_t; +# elif USHRT_MAX == 0xFFFFFFFFUL + typedef unsigned short uint32_t; + typedef signed short int32_t; +# else +# error cannot find 32-bit integer type +# endif +# if defined(__INT64_TYPE__) && defined(__UINT64_TYPE__) + typedef __INT64_TYPE__ int64_t; + typedef __UINT64_TYPE__ uint64_t; +# elif defined(__GNUC__) || defined(__clang__) +# if !defined(_SYS_TYPES_H) && !defined(__int8_t_defined) + __extension__ typedef long long int64_t; +# endif + __extension__ typedef unsigned long long uint64_t; +# elif defined(_LONG_LONG) || defined(__MWERKS__) || defined(_CRAYC) || \ + defined(__SUNPRO_C) || defined(__SUNPRO_CC) + typedef long long int64_t; + typedef unsigned long long uint64_t; +# elif (defined(__BORLANDC__) && __BORLANDC__ > 0x460) || \ + defined(__WATCOM_INT64__) || defined (__alpha) || defined (__DECC) + typedef __int64 int64_t; + typedef unsigned __int64 uint64_t; +# else +# error cannot find 64-bit integer type +# endif +#endif + +/** stdbool (C89 compatible) */ +#if (defined(YYJSON_HAS_STDBOOL_H) && YYJSON_HAS_STDBOOL_H) || \ + (yyjson_has_include() && !defined(__STRICT_ANSI__)) || \ + YYJSON_MSC_VER >= 1800 || YYJSON_STDC_VER >= 199901L +# include +#elif !defined(__bool_true_false_are_defined) +# define __bool_true_false_are_defined 1 +# if defined(__cplusplus) +# if defined(__GNUC__) && !defined(__STRICT_ANSI__) +# define _Bool bool +# if __cplusplus < 201103L +# define bool bool +# define false false +# define true true +# endif +# endif +# else +# define bool unsigned char +# define true 1 +# define false 0 +# endif +#endif + +/** char bit check */ +#if defined(CHAR_BIT) +# if CHAR_BIT != 8 +# error non 8-bit char is not supported +# endif +#endif + +/** + Microsoft Visual C++ 6.0 doesn't support converting number from u64 to f64: + error C2520: conversion from unsigned __int64 to double not implemented. + */ +#ifndef YYJSON_U64_TO_F64_NO_IMPL +# if (0 < YYJSON_MSC_VER) && (YYJSON_MSC_VER <= 1200) +# define YYJSON_U64_TO_F64_NO_IMPL 1 +# else +# define YYJSON_U64_TO_F64_NO_IMPL 0 +# endif +#endif + + + +/*============================================================================== + * Compile Hint Begin + *============================================================================*/ + +/* extern "C" begin */ +#ifdef __cplusplus +extern "C" { +#endif + +/* warning suppress begin */ +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunused-function" +# pragma clang diagnostic ignored "-Wunused-parameter" +#elif defined(__GNUC__) +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# pragma GCC diagnostic push +# endif +# pragma GCC diagnostic ignored "-Wunused-function" +# pragma GCC diagnostic ignored "-Wunused-parameter" +#elif defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable:4800) /* 'int': forcing value to 'true' or 'false' */ +#endif + + + +/*============================================================================== + * Version + *============================================================================*/ + +/** The major version of yyjson. */ +#define YYJSON_VERSION_MAJOR 0 + +/** The minor version of yyjson. */ +#define YYJSON_VERSION_MINOR 7 + +/** The patch version of yyjson. */ +#define YYJSON_VERSION_PATCH 0 + +/** The version of yyjson in hex: `(major << 16) | (minor << 8) | (patch)`. */ +#define YYJSON_VERSION_HEX 0x000700 + +/** The version string of yyjson. */ +#define YYJSON_VERSION_STRING "0.7.0" + +/** The version of yyjson in hex, same as `YYJSON_VERSION_HEX`. */ +yyjson_api uint32_t yyjson_version(void); + + + +/*============================================================================== + * JSON Types + *============================================================================*/ + +/** Type of JSON value (3 bit). */ +typedef uint8_t yyjson_type; +#define YYJSON_TYPE_NONE ((uint8_t)0) /* _____000 */ +#define YYJSON_TYPE_RAW ((uint8_t)1) /* _____001 */ +#define YYJSON_TYPE_NULL ((uint8_t)2) /* _____010 */ +#define YYJSON_TYPE_BOOL ((uint8_t)3) /* _____011 */ +#define YYJSON_TYPE_NUM ((uint8_t)4) /* _____100 */ +#define YYJSON_TYPE_STR ((uint8_t)5) /* _____101 */ +#define YYJSON_TYPE_ARR ((uint8_t)6) /* _____110 */ +#define YYJSON_TYPE_OBJ ((uint8_t)7) /* _____111 */ + +/** Subtype of JSON value (2 bit). */ +typedef uint8_t yyjson_subtype; +#define YYJSON_SUBTYPE_NONE ((uint8_t)(0 << 3)) /* ___00___ */ +#define YYJSON_SUBTYPE_FALSE ((uint8_t)(0 << 3)) /* ___00___ */ +#define YYJSON_SUBTYPE_TRUE ((uint8_t)(1 << 3)) /* ___01___ */ +#define YYJSON_SUBTYPE_UINT ((uint8_t)(0 << 3)) /* ___00___ */ +#define YYJSON_SUBTYPE_SINT ((uint8_t)(1 << 3)) /* ___01___ */ +#define YYJSON_SUBTYPE_REAL ((uint8_t)(2 << 3)) /* ___10___ */ + +/** Mask and bits of JSON value tag. */ +#define YYJSON_TYPE_MASK ((uint8_t)0x07) /* _____111 */ +#define YYJSON_TYPE_BIT ((uint8_t)3) +#define YYJSON_SUBTYPE_MASK ((uint8_t)0x18) /* ___11___ */ +#define YYJSON_SUBTYPE_BIT ((uint8_t)2) +#define YYJSON_RESERVED_MASK ((uint8_t)0xE0) /* 111_____ */ +#define YYJSON_RESERVED_BIT ((uint8_t)3) +#define YYJSON_TAG_MASK ((uint8_t)0xFF) /* 11111111 */ +#define YYJSON_TAG_BIT ((uint8_t)8) + +/** Padding size for JSON reader. */ +#define YYJSON_PADDING_SIZE 4 + + + +/*============================================================================== + * Allocator + *============================================================================*/ + +/** + A memory allocator. + + Typically you don't need to use it, unless you want to customize your own + memory allocator. + */ +typedef struct yyjson_alc { + /** Same as libc's malloc(size), should not be NULL. */ + void *(*malloc)(void *ctx, size_t size); + /** Same as libc's realloc(ptr, size), should not be NULL. */ + void *(*realloc)(void *ctx, void *ptr, size_t old_size, size_t size); + /** Same as libc's free(ptr), should not be NULL. */ + void (*free)(void *ctx, void *ptr); + /** A context for malloc/realloc/free, can be NULL. */ + void *ctx; +} yyjson_alc; + +/** + A pool allocator uses fixed length pre-allocated memory. + + This allocator may be used to avoid malloc/realloc calls. The pre-allocated + memory should be held by the caller. The maximum amount of memory required to + read a JSON can be calculated using the `yyjson_read_max_memory_usage()` + function, but the amount of memory required to write a JSON cannot be directly + calculated. + + This is not a general-purpose allocator. If used to read multiple JSON + documents and only some of them are released, it may cause memory + fragmentation, leading to performance degradation and memory waste. Therefore, + it is recommended to use this allocator only for reading or writing a single + JSON document. + + @param alc The allocator to be initialized. + If this parameter is NULL, the function will fail and return false. + If `buf` or `size` is invalid, this will be set to an empty allocator. + @param buf The buffer memory for this allocator. + If this parameter is NULL, the function will fail and return false. + @param size The size of `buf`, in bytes. + If this parameter is less than 8 words (32/64 bytes on 32/64-bit OS), the + function will fail and return false. + @return true if the `alc` has been successfully initialized. + + @par Example + @code + // parse JSON with stack memory + char buf[1024]; + yyjson_alc alc; + yyjson_alc_pool_init(&alc, buf, 1024); + + const char *json = "{\"name\":\"Helvetica\",\"size\":16}" + yyjson_doc *doc = yyjson_read_opts(json, strlen(json), 0, &alc, NULL); + // the memory of `doc` is on the stack + @endcode + */ +yyjson_api bool yyjson_alc_pool_init(yyjson_alc *alc, void *buf, size_t size); + + + +/*============================================================================== + * JSON Structure + *============================================================================*/ + +/** + An immutable document for reading JSON. + This document holds memory for all its JSON values and strings. When it is no + longer used, the user should call `yyjson_doc_free()` to free its memory. + */ +typedef struct yyjson_doc yyjson_doc; + +/** + An immutable value for reading JSON. + A JSON Value has the same lifetime as its document. The memory is held by its + document and and cannot be freed alone. + */ +typedef struct yyjson_val yyjson_val; + +/** + A mutable document for building JSON. + This document holds memory for all its JSON values and strings. When it is no + longer used, the user should call `yyjson_mut_doc_free()` to free its memory. + */ +typedef struct yyjson_mut_doc yyjson_mut_doc; + +/** + A mutable value for building JSON. + A JSON Value has the same lifetime as its document. The memory is held by its + document and and cannot be freed alone. + */ +typedef struct yyjson_mut_val yyjson_mut_val; + + + +/*============================================================================== + * JSON Reader API + *============================================================================*/ + +/** Run-time options for JSON reader. */ +typedef uint32_t yyjson_read_flag; + +/** Default option (RFC 8259 compliant): + - Read positive integer as uint64_t. + - Read negative integer as int64_t. + - Read floating-point number as double with round-to-nearest mode. + - Read integer which cannot fit in uint64_t or int64_t as double. + - Report error if double number is infinity. + - Report error if string contains invalid UTF-8 character or BOM. + - Report error on trailing commas, comments, inf and nan literals. */ +static const yyjson_read_flag YYJSON_READ_NOFLAG = 0 << 0; + +/** Read the input data in-situ. + This option allows the reader to modify and use input data to store string + values, which can increase reading speed slightly. + The caller should hold the input data before free the document. + The input data must be padded by at least `YYJSON_PADDING_SIZE` bytes. + For example: `[1,2]` should be `[1,2]\0\0\0\0`, input length should be 5. */ +static const yyjson_read_flag YYJSON_READ_INSITU = 1 << 0; + +/** Stop when done instead of issuing an error if there's additional content + after a JSON document. This option may be used to parse small pieces of JSON + in larger data, such as `NDJSON`. */ +static const yyjson_read_flag YYJSON_READ_STOP_WHEN_DONE = 1 << 1; + +/** Allow single trailing comma at the end of an object or array, + such as `[1,2,3,]`, `{"a":1,"b":2,}` (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_TRAILING_COMMAS = 1 << 2; + +/** Allow C-style single line and multiple line comments (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_COMMENTS = 1 << 3; + +/** Allow inf/nan number and literal, case-insensitive, + such as 1e999, NaN, inf, -Infinity (non-standard). */ +static const yyjson_read_flag YYJSON_READ_ALLOW_INF_AND_NAN = 1 << 4; + +/** Read all numbers as raw strings (value with `YYJSON_TYPE_RAW` type), + inf/nan literal is also read as raw with `ALLOW_INF_AND_NAN` flag. */ +static const yyjson_read_flag YYJSON_READ_NUMBER_AS_RAW = 1 << 5; + +/** Allow reading invalid unicode when parsing string values (non-standard). + Invalid characters will be allowed to appear in the string values, but + invalid escape sequences will still be reported as errors. + This flag does not affect the performance of correctly encoded strings. + + @warning Strings in JSON values may contain incorrect encoding when this + option is used, you need to handle these strings carefully to avoid security + risks. */ +static const yyjson_read_flag YYJSON_READ_ALLOW_INVALID_UNICODE = 1 << 6; + +/** Read big numbers as raw strings. These big numbers include integers that + cannot be represented by `int64_t` and `uint64_t`, and floating-point + numbers that cannot be represented by finite `double`. + The flag will be overridden by `YYJSON_READ_NUMBER_AS_RAW` flag. */ +static const yyjson_read_flag YYJSON_READ_BIGNUM_AS_RAW = 1 << 7; + + + +/** Result code for JSON reader. */ +typedef uint32_t yyjson_read_code; + +/** Success, no error. */ +static const yyjson_read_code YYJSON_READ_SUCCESS = 0; + +/** Invalid parameter, such as NULL input string or 0 input length. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_PARAMETER = 1; + +/** Memory allocation failure occurs. */ +static const yyjson_read_code YYJSON_READ_ERROR_MEMORY_ALLOCATION = 2; + +/** Input JSON string is empty. */ +static const yyjson_read_code YYJSON_READ_ERROR_EMPTY_CONTENT = 3; + +/** Unexpected content after document, such as `[123]abc`. */ +static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CONTENT = 4; + +/** Unexpected ending, such as `[123`. */ +static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_END = 5; + +/** Unexpected character inside the document, such as `[abc]`. */ +static const yyjson_read_code YYJSON_READ_ERROR_UNEXPECTED_CHARACTER = 6; + +/** Invalid JSON structure, such as `[1,]`. */ +static const yyjson_read_code YYJSON_READ_ERROR_JSON_STRUCTURE = 7; + +/** Invalid comment, such as unclosed multi-line comment. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_COMMENT = 8; + +/** Invalid number, such as `123.e12`, `000`. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_NUMBER = 9; + +/** Invalid string, such as invalid escaped character inside a string. */ +static const yyjson_read_code YYJSON_READ_ERROR_INVALID_STRING = 10; + +/** Invalid JSON literal, such as `truu`. */ +static const yyjson_read_code YYJSON_READ_ERROR_LITERAL = 11; + +/** Failed to open a file. */ +static const yyjson_read_code YYJSON_READ_ERROR_FILE_OPEN = 12; + +/** Failed to read a file. */ +static const yyjson_read_code YYJSON_READ_ERROR_FILE_READ = 13; + +/** Error information for JSON reader. */ +typedef struct yyjson_read_err { + /** Error code, see `yyjson_read_code` for all possible values. */ + yyjson_read_code code; + /** Error message, constant, no need to free (NULL if success). */ + const char *msg; + /** Error byte position for input data (0 if success). */ + size_t pos; +} yyjson_read_err; + + + +/** + Read JSON with options. + + This function is thread-safe when: + 1. The `dat` is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is not required. + If this parameter is NULL, the function will fail and return NULL. + The `dat` will not be modified without the flag `YYJSON_READ_INSITU`, so you + can pass a `const char *` string and case it to `char *` if you don't use + the `YYJSON_READ_INSITU` flag. + @param len The length of JSON data in bytes. + If this parameter is 0, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + */ +yyjson_api yyjson_doc *yyjson_read_opts(char *dat, + size_t len, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read a JSON file. + + This function is thread-safe when: + 1. The file is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + If this path is NULL or invalid, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + + @warning On 32-bit operating system, files larger than 2GB may fail to read. + */ +yyjson_api yyjson_doc *yyjson_read_file(const char *path, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read JSON from a file pointer. + + @param fp The file pointer. + The data will be read from the current position of the FILE to the end. + If this fp is NULL or invalid, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON reader. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + + @warning On 32-bit operating system, files larger than 2GB may fail to read. + */ +yyjson_api yyjson_doc *yyjson_read_fp(FILE *fp, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read a JSON string. + + This function is thread-safe. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is not required. + If this parameter is NULL, the function will fail and return NULL. + @param len The length of JSON data in bytes. + If this parameter is 0, the function will fail and return NULL. + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + @return A new JSON document, or NULL if an error occurs. + When it's no longer needed, it should be freed with `yyjson_doc_free()`. + */ +yyjson_api_inline yyjson_doc *yyjson_read(const char *dat, + size_t len, + yyjson_read_flag flg) { + flg &= ~YYJSON_READ_INSITU; /* const string cannot be modified */ + return yyjson_read_opts((char *)(void *)(size_t)(const void *)dat, + len, flg, NULL, NULL); +} + +/** + Returns the size of maximum memory usage to read a JSON data. + + You may use this value to avoid malloc() or calloc() call inside the reader + to get better performance, or read multiple JSON with one piece of memory. + + @param len The length of JSON data in bytes. + @param flg The JSON read options. + @return The maximum memory size to read this JSON, or 0 if overflow. + + @par Example + @code + // read multiple JSON with same pre-allocated memory + + char *dat1, *dat2, *dat3; // JSON data + size_t len1, len2, len3; // JSON length + size_t max_len = MAX(len1, MAX(len2, len3)); + yyjson_doc *doc; + + // use one allocator for multiple JSON + size_t size = yyjson_read_max_memory_usage(max_len, 0); + void *buf = malloc(size); + yyjson_alc alc; + yyjson_alc_pool_init(&alc, buf, size); + + // no more alloc() or realloc() call during reading + doc = yyjson_read_opts(dat1, len1, 0, &alc, NULL); + yyjson_doc_free(doc); + doc = yyjson_read_opts(dat2, len2, 0, &alc, NULL); + yyjson_doc_free(doc); + doc = yyjson_read_opts(dat3, len3, 0, &alc, NULL); + yyjson_doc_free(doc); + + free(buf); + @endcode + @see yyjson_alc_pool_init() + */ +yyjson_api_inline size_t yyjson_read_max_memory_usage(size_t len, + yyjson_read_flag flg) { + /* + 1. The max value count is (json_size / 2 + 1), + for example: "[1,2,3,4]" size is 9, value count is 5. + 2. Some broken JSON may cost more memory during reading, but fail at end, + for example: "[[[[[[[[". + 3. yyjson use 16 bytes per value, see struct yyjson_val. + 4. yyjson use dynamic memory with a growth factor of 1.5. + + The max memory size is (json_size / 2 * 16 * 1.5 + padding). + */ + size_t mul = (size_t)12 + !(flg & YYJSON_READ_INSITU); + size_t pad = 256; + size_t max = (size_t)(~(size_t)0); + if (flg & YYJSON_READ_STOP_WHEN_DONE) len = len < 256 ? 256 : len; + if (len >= (max - pad - mul) / mul) return 0; + return len * mul + pad; +} + +/** + Read a JSON number. + + This function is thread-safe when data is not modified by other threads. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is required. + If this parameter is NULL, the function will fail and return NULL. + @param val The output value where result is stored. + If this parameter is NULL, the function will fail and return NULL. + The value will hold either UINT or SINT or REAL number; + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + Supports `YYJSON_READ_NUMBER_AS_RAW` and `YYJSON_READ_ALLOW_INF_AND_NAN`. + @param alc The memory allocator used for long number. + It is only used when the built-in floating point reader is disabled. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return If successful, a pointer to the character after the last character + used in the conversion, NULL if an error occurs. + */ +yyjson_api const char *yyjson_read_number(const char *dat, + yyjson_val *val, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err); + +/** + Read a JSON number. + + This function is thread-safe when data is not modified by other threads. + + @param dat The JSON data (UTF-8 without BOM), null-terminator is required. + If this parameter is NULL, the function will fail and return NULL. + @param val The output value where result is stored. + If this parameter is NULL, the function will fail and return NULL. + The value will hold either UINT or SINT or REAL number; + @param flg The JSON read options. + Multiple options can be combined with `|` operator. 0 means no options. + Supports `YYJSON_READ_NUMBER_AS_RAW` and `YYJSON_READ_ALLOW_INF_AND_NAN`. + @param alc The memory allocator used for long number. + It is only used when the built-in floating point reader is disabled. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return If successful, a pointer to the character after the last character + used in the conversion, NULL if an error occurs. + */ +yyjson_api_inline const char *yyjson_mut_read_number(const char *dat, + yyjson_mut_val *val, + yyjson_read_flag flg, + const yyjson_alc *alc, + yyjson_read_err *err) { + return yyjson_read_number(dat, (yyjson_val *)val, flg, alc, err); +} + + +/*============================================================================== + * JSON Writer API + *============================================================================*/ + +/** Run-time options for JSON writer. */ +typedef uint32_t yyjson_write_flag; + +/** Default option: + - Write JSON minify. + - Report error on inf or nan number. + - Report error on invalid UTF-8 string. + - Do not escape unicode or slash. */ +static const yyjson_write_flag YYJSON_WRITE_NOFLAG = 0 << 0; + +/** Write JSON pretty with 4 space indent. */ +static const yyjson_write_flag YYJSON_WRITE_PRETTY = 1 << 0; + +/** Escape unicode as `uXXXX`, make the output ASCII only. */ +static const yyjson_write_flag YYJSON_WRITE_ESCAPE_UNICODE = 1 << 1; + +/** Escape '/' as '\/'. */ +static const yyjson_write_flag YYJSON_WRITE_ESCAPE_SLASHES = 1 << 2; + +/** Write inf and nan number as 'Infinity' and 'NaN' literal (non-standard). */ +static const yyjson_write_flag YYJSON_WRITE_ALLOW_INF_AND_NAN = 1 << 3; + +/** Write inf and nan number as null literal. + This flag will override `YYJSON_WRITE_ALLOW_INF_AND_NAN` flag. */ +static const yyjson_write_flag YYJSON_WRITE_INF_AND_NAN_AS_NULL = 1 << 4; + +/** Allow invalid unicode when encoding string values (non-standard). + Invalid characters in string value will be copied byte by byte. + If `YYJSON_WRITE_ESCAPE_UNICODE` flag is also set, invalid character will be + escaped as `U+FFFD` (replacement character). + This flag does not affect the performance of correctly encoded strings. */ +static const yyjson_write_flag YYJSON_WRITE_ALLOW_INVALID_UNICODE = 1 << 5; + +/** Write JSON pretty with 2 space indent. + This flag will override `YYJSON_WRITE_PRETTY` flag. */ +static const yyjson_write_flag YYJSON_WRITE_PRETTY_TWO_SPACES = 1 << 6; + + + +/** Result code for JSON writer */ +typedef uint32_t yyjson_write_code; + +/** Success, no error. */ +static const yyjson_write_code YYJSON_WRITE_SUCCESS = 0; + +/** Invalid parameter, such as NULL document. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_PARAMETER = 1; + +/** Memory allocation failure occurs. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_MEMORY_ALLOCATION = 2; + +/** Invalid value type in JSON document. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE = 3; + +/** NaN or Infinity number occurs. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_NAN_OR_INF = 4; + +/** Failed to open a file. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_FILE_OPEN = 5; + +/** Failed to write a file. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_FILE_WRITE = 6; + +/** Invalid unicode in string. */ +static const yyjson_write_code YYJSON_WRITE_ERROR_INVALID_STRING = 7; + +/** Error information for JSON writer. */ +typedef struct yyjson_write_err { + /** Error code, see `yyjson_write_code` for all possible values. */ + yyjson_write_code code; + /** Error message, constant, no need to free (NULL if success). */ + const char *msg; +} yyjson_write_err; + + + +/*============================================================================== + * JSON Document Writer API + *============================================================================*/ + +/** + Write a document to JSON string with options. + + This function is thread-safe when: + The `alc` is thread-safe or NULL. + + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_write_opts(const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a document to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_write_file(const char *path, + const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to file pointer with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this fp is NULL or invalid, the function will fail and return false. + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_write_fp(FILE *fp, + const yyjson_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to JSON string. + + This function is thread-safe. + + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_write(const yyjson_doc *doc, + yyjson_write_flag flg, + size_t *len) { + return yyjson_write_opts(doc, flg, NULL, len, NULL); +} + + + +/** + Write a document to JSON string with options. + + This function is thread-safe when: + 1. The `doc` is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param doc The mutable JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_mut_write_opts(const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a document to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `doc` is not modified by other threads. + 3. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param doc The mutable JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_write_file(const char *path, + const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to file pointer with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this fp is NULL or invalid, the function will fail and return false. + @param doc The mutable JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_write_fp(FILE *fp, + const yyjson_mut_doc *doc, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a document to JSON string. + + This function is thread-safe when: + The `doc` is not modified by other threads. + + @param doc The JSON document. + If this doc is NULL or has no root, the function will fail and return false. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_mut_write(const yyjson_mut_doc *doc, + yyjson_write_flag flg, + size_t *len) { + return yyjson_mut_write_opts(doc, flg, NULL, len, NULL); +} + + + +/*============================================================================== + * JSON Value Writer API + *============================================================================*/ + +/** + Write a value to JSON string with options. + + This function is thread-safe when: + The `alc` is thread-safe or NULL. + + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_val_write_opts(const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a value to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_val_write_file(const char *path, + const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to file pointer with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this path is NULL or invalid, the function will fail and return false. + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_val_write_fp(FILE *fp, + const yyjson_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to JSON string. + + This function is thread-safe. + + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_val_write(const yyjson_val *val, + yyjson_write_flag flg, + size_t *len) { + return yyjson_val_write_opts(val, flg, NULL, len, NULL); +} + +/** + Write a value to JSON string with options. + + This function is thread-safe when: + 1. The `val` is not modified by other threads. + 2. The `alc` is thread-safe or NULL. + + @param val The mutable JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free() or alc->free(). + */ +yyjson_api char *yyjson_mut_val_write_opts(const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + size_t *len, + yyjson_write_err *err); + +/** + Write a value to JSON file with options. + + This function is thread-safe when: + 1. The file is not accessed by other threads. + 2. The `val` is not modified by other threads. + 3. The `alc` is thread-safe or NULL. + + @param path The JSON file's path. + If this path is NULL or invalid, the function will fail and return false. + If this file is not empty, the content will be discarded. + @param val The mutable JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_val_write_file(const char *path, + const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to JSON file with options. + + @param fp The file pointer. + The data will be written to the current position of the file. + If this path is NULL or invalid, the function will fail and return false. + @param val The mutable JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param alc The memory allocator used by JSON writer. + Pass NULL to use the libc's default allocator. + @param err A pointer to receive error information. + Pass NULL if you don't need error information. + @return true if successful, false if an error occurs. + + @warning On 32-bit operating system, files larger than 2GB may fail to write. + */ +yyjson_api bool yyjson_mut_val_write_fp(FILE *fp, + const yyjson_mut_val *val, + yyjson_write_flag flg, + const yyjson_alc *alc, + yyjson_write_err *err); + +/** + Write a value to JSON string. + + This function is thread-safe when: + The `val` is not modified by other threads. + + @param val The JSON root value. + If this parameter is NULL, the function will fail and return NULL. + @param flg The JSON write options. + Multiple options can be combined with `|` operator. 0 means no options. + @param len A pointer to receive output length in bytes (not including the + null-terminator). Pass NULL if you don't need length information. + @return A new JSON string, or NULL if an error occurs. + This string is encoded as UTF-8 with a null-terminator. + When it's no longer needed, it should be freed with free(). + */ +yyjson_api_inline char *yyjson_mut_val_write(const yyjson_mut_val *val, + yyjson_write_flag flg, + size_t *len) { + return yyjson_mut_val_write_opts(val, flg, NULL, len, NULL); +} + + + +/*============================================================================== + * JSON Document API + *============================================================================*/ + +/** Returns the root value of this JSON document. + Returns NULL if `doc` is NULL. */ +yyjson_api_inline yyjson_val *yyjson_doc_get_root(yyjson_doc *doc); + +/** Returns read size of input JSON data. + Returns 0 if `doc` is NULL. + For example: the read size of `[1,2,3]` is 7 bytes. */ +yyjson_api_inline size_t yyjson_doc_get_read_size(yyjson_doc *doc); + +/** Returns total value count in this JSON document. + Returns 0 if `doc` is NULL. + For example: the value count of `[1,2,3]` is 4. */ +yyjson_api_inline size_t yyjson_doc_get_val_count(yyjson_doc *doc); + +/** Release the JSON document and free the memory. + After calling this function, the `doc` and all values from the `doc` are no + longer available. This function will do nothing if the `doc` is NULL. */ +yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc); + + + +/*============================================================================== + * JSON Value Type API + *============================================================================*/ + +/** Returns whether the JSON value is raw. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_raw(yyjson_val *val); + +/** Returns whether the JSON value is `null`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_null(yyjson_val *val); + +/** Returns whether the JSON value is `true`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_true(yyjson_val *val); + +/** Returns whether the JSON value is `false`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_false(yyjson_val *val); + +/** Returns whether the JSON value is bool (true/false). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_bool(yyjson_val *val); + +/** Returns whether the JSON value is unsigned integer (uint64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_uint(yyjson_val *val); + +/** Returns whether the JSON value is signed integer (int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_sint(yyjson_val *val); + +/** Returns whether the JSON value is integer (uint64_t/int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_int(yyjson_val *val); + +/** Returns whether the JSON value is real number (double). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_real(yyjson_val *val); + +/** Returns whether the JSON value is number (uint64_t/int64_t/double). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_num(yyjson_val *val); + +/** Returns whether the JSON value is string. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_str(yyjson_val *val); + +/** Returns whether the JSON value is array. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_arr(yyjson_val *val); + +/** Returns whether the JSON value is object. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_obj(yyjson_val *val); + +/** Returns whether the JSON value is container (array/object). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_is_ctn(yyjson_val *val); + + + +/*============================================================================== + * JSON Value Content API + *============================================================================*/ + +/** Returns the JSON value's type. + Returns YYJSON_TYPE_NONE if `val` is NULL. */ +yyjson_api_inline yyjson_type yyjson_get_type(yyjson_val *val); + +/** Returns the JSON value's subtype. + Returns YYJSON_SUBTYPE_NONE if `val` is NULL. */ +yyjson_api_inline yyjson_subtype yyjson_get_subtype(yyjson_val *val); + +/** Returns the JSON value's tag. + Returns 0 if `val` is NULL. */ +yyjson_api_inline uint8_t yyjson_get_tag(yyjson_val *val); + +/** Returns the JSON value's type description. + The return value should be one of these strings: "raw", "null", "string", + "array", "object", "true", "false", "uint", "sint", "real", "unknown". */ +yyjson_api_inline const char *yyjson_get_type_desc(yyjson_val *val); + +/** Returns the content if the value is raw. + Returns NULL if `val` is NULL or type is not raw. */ +yyjson_api_inline const char *yyjson_get_raw(yyjson_val *val); + +/** Returns the content if the value is bool. + Returns NULL if `val` is NULL or type is not bool. */ +yyjson_api_inline bool yyjson_get_bool(yyjson_val *val); + +/** Returns the content and cast to uint64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline uint64_t yyjson_get_uint(yyjson_val *val); + +/** Returns the content and cast to int64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int64_t yyjson_get_sint(yyjson_val *val); + +/** Returns the content and cast to int. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int yyjson_get_int(yyjson_val *val); + +/** Returns the content if the value is real number, or 0.0 on error. + Returns 0.0 if `val` is NULL or type is not real(double). */ +yyjson_api_inline double yyjson_get_real(yyjson_val *val); + +/** Returns the content and typecast to `double` if the value is number. + Returns 0.0 if `val` is NULL or type is not number(uint/sint/real). */ +yyjson_api_inline double yyjson_get_num(yyjson_val *val); + +/** Returns the content if the value is string. + Returns NULL if `val` is NULL or type is not string. */ +yyjson_api_inline const char *yyjson_get_str(yyjson_val *val); + +/** Returns the content length (string length, array size, object size. + Returns 0 if `val` is NULL or type is not string/array/object. */ +yyjson_api_inline size_t yyjson_get_len(yyjson_val *val); + +/** Returns whether the JSON value is equals to a string. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_equals_str(yyjson_val *val, const char *str); + +/** Returns whether the JSON value is equals to a string. + The `str` should be a UTF-8 string, null-terminator is not required. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_equals_strn(yyjson_val *val, const char *str, + size_t len); + +/** Returns whether two JSON values are equal (deep compare). + Returns false if input is NULL. + @note the result may be inaccurate if object has duplicate keys. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api_inline bool yyjson_equals(yyjson_val *lhs, yyjson_val *rhs); + +/** Set the value to raw. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_raw(yyjson_val *val, + const char *raw, size_t len); + +/** Set the value to null. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_null(yyjson_val *val); + +/** Set the value to bool. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_bool(yyjson_val *val, bool num); + +/** Set the value to uint. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_uint(yyjson_val *val, uint64_t num); + +/** Set the value to sint. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_sint(yyjson_val *val, int64_t num); + +/** Set the value to int. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_int(yyjson_val *val, int num); + +/** Set the value to real. + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_real(yyjson_val *val, double num); + +/** Set the value to string (null-terminated). + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_str(yyjson_val *val, const char *str); + +/** Set the value to string (with length). + Returns false if input is NULL or `val` is object or array. + @warning This will modify the `immutable` value, use with caution. */ +yyjson_api_inline bool yyjson_set_strn(yyjson_val *val, + const char *str, size_t len); + + + +/*============================================================================== + * JSON Array API + *============================================================================*/ + +/** Returns the number of elements in this array. + Returns 0 if `arr` is NULL or type is not array. */ +yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr); + +/** Returns the element at the specified position in this array. + Returns NULL if array is NULL/empty or the index is out of bounds. + @warning This function takes a linear search time if array is not flat. + For example: `[1,{},3]` is flat, `[1,[2],3]` is not flat. */ +yyjson_api_inline yyjson_val *yyjson_arr_get(yyjson_val *arr, size_t idx); + +/** Returns the first element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. */ +yyjson_api_inline yyjson_val *yyjson_arr_get_first(yyjson_val *arr); + +/** Returns the last element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. + @warning This function takes a linear search time if array is not flat. + For example: `[1,{},3]` is flat, `[1,[2],3]` is not flat.*/ +yyjson_api_inline yyjson_val *yyjson_arr_get_last(yyjson_val *arr); + + + +/*============================================================================== + * JSON Array Iterator API + *============================================================================*/ + +/** + A JSON array iterator. + + @par Example + @code + yyjson_val *val; + yyjson_arr_iter iter = yyjson_arr_iter_with(arr); + while ((val = yyjson_arr_iter_next(&iter))) { + your_func(val); + } + @endcode + */ +typedef struct yyjson_arr_iter { + size_t idx; /**< next value's index */ + size_t max; /**< maximum index (arr.size) */ + yyjson_val *cur; /**< next value */ +} yyjson_arr_iter; + +/** + Initialize an iterator for this array. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_arr_iter_init(yyjson_val *arr, + yyjson_arr_iter *iter); + +/** + Create an iterator with an array , same as `yyjson_arr_iter_init()`. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, an empty iterator will returned. + @return A new iterator for the array. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_arr_iter_has_next(yyjson_arr_iter *iter); + +/** + Returns the next element in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_val *yyjson_arr_iter_next(yyjson_arr_iter *iter); + +/** + Macro for iterating over an array. + It works like iterator, but with a more intuitive API. + + @par Example + @code + size_t idx, max; + yyjson_val *val; + yyjson_arr_foreach(arr, idx, max, val) { + your_func(idx, val); + } + @endcode + */ +#define yyjson_arr_foreach(arr, idx, max, val) \ + for ((idx) = 0, \ + (max) = yyjson_arr_size(arr), \ + (val) = yyjson_arr_get_first(arr); \ + (idx) < (max); \ + (idx)++, \ + (val) = unsafe_yyjson_get_next(val)) + + + +/*============================================================================== + * JSON Object API + *============================================================================*/ + +/** Returns the number of key-value pairs in this object. + Returns 0 if `obj` is NULL or type is not object. */ +yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a null-terminated UTF-8 string. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_val *yyjson_obj_get(yyjson_val *obj, const char *key); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a UTF-8 string, null-terminator is not required. + The `key_len` should be the length of the key, in bytes. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_val *yyjson_obj_getn(yyjson_val *obj, const char *key, + size_t key_len); + + + +/*============================================================================== + * JSON Object Iterator API + *============================================================================*/ + +/** + A JSON object iterator. + + @par Example + @code + yyjson_val *key, *val; + yyjson_obj_iter iter = yyjson_obj_iter_with(obj); + while ((key = yyjson_obj_iter_next(&iter))) { + val = yyjson_obj_iter_get_val(key); + your_func(key, val); + } + @endcode + + If the ordering of the keys is known at compile-time, you can use this method + to speed up value lookups: + @code + // {"k1":1, "k2": 3, "k3": 3} + yyjson_val *key, *val; + yyjson_obj_iter iter = yyjson_obj_iter_with(obj); + yyjson_val *v1 = yyjson_obj_iter_get(&iter, "k1"); + yyjson_val *v3 = yyjson_obj_iter_get(&iter, "k3"); + @endcode + @see yyjson_obj_iter_get() and yyjson_obj_iter_getn() + */ +typedef struct yyjson_obj_iter { + size_t idx; /**< next key's index */ + size_t max; /**< maximum key index (obj.size) */ + yyjson_val *cur; /**< next key */ + yyjson_val *obj; /**< the object being iterated */ +} yyjson_obj_iter; + +/** + Initialize an iterator for this object. + + @param obj The object to be iterated over. + If this parameter is NULL or not an object, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_obj_iter_init(yyjson_val *obj, + yyjson_obj_iter *iter); + +/** + Create an iterator with an object, same as `yyjson_obj_iter_init()`. + + @param obj The object to be iterated over. + If this parameter is NULL or not an object, an empty iterator will returned. + @return A new iterator for the object. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_obj_iter_has_next(yyjson_obj_iter *iter); + +/** + Returns the next key in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_next(yyjson_obj_iter *iter); + +/** + Returns the value for key inside the iteration. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_get_val(yyjson_val *key); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_obj_get()`, but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string with null-terminator. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_get(yyjson_obj_iter *iter, + const char *key); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_obj_getn()`, but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string, null-terminator is not required. + @param key_len The the length of `key`, in bytes. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_val *yyjson_obj_iter_getn(yyjson_obj_iter *iter, + const char *key, + size_t key_len); + +/** + Macro for iterating over an object. + It works like iterator, but with a more intuitive API. + + @par Example + @code + size_t idx, max; + yyjson_val *key, *val; + yyjson_obj_foreach(obj, idx, max, key, val) { + your_func(key, val); + } + @endcode + */ +#define yyjson_obj_foreach(obj, idx, max, key, val) \ + for ((idx) = 0, \ + (max) = yyjson_obj_size(obj), \ + (key) = (obj) ? unsafe_yyjson_get_first(obj) : NULL, \ + (val) = (key) + 1; \ + (idx) < (max); \ + (idx)++, \ + (key) = unsafe_yyjson_get_next(val), \ + (val) = (key) + 1) + + + +/*============================================================================== + * Mutable JSON Document API + *============================================================================*/ + +/** Returns the root value of this JSON document. + Returns NULL if `doc` is NULL. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_root(yyjson_mut_doc *doc); + +/** Sets the root value of this JSON document. + Pass NULL to clear root value of the document. */ +yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, + yyjson_mut_val *root); + +/** + Set the string pool size for a mutable document. + This function does not allocate memory immediately, but uses the size when + the next memory allocation is needed. + + If the caller knows the approximate bytes of strings that the document needs to + store (e.g. copy string with `yyjson_mut_strcpy` function), setting a larger + size can avoid multiple memory allocations and improve performance. + + @param doc The mutable document. + @param len The desired string pool size in bytes (total string length). + @return true if successful, false if size is 0 or overflow. + */ +yyjson_api bool yyjson_mut_doc_set_str_pool_size(yyjson_mut_doc *doc, + size_t len); + +/** + Set the value pool size for a mutable document. + This function does not allocate memory immediately, but uses the size when + the next memory allocation is needed. + + If the caller knows the approximate number of values that the document needs to + store (e.g. create new value with `yyjson_mut_xxx` functions), setting a larger + size can avoid multiple memory allocations and improve performance. + + @param doc The mutable document. + @param count The desired value pool size (number of `yyjson_mut_val`). + @return true if successful, false if size is 0 or overflow. + */ +yyjson_api bool yyjson_mut_doc_set_val_pool_size(yyjson_mut_doc *doc, + size_t count); + +/** Release the JSON document and free the memory. + After calling this function, the `doc` and all values from the `doc` are no + longer available. This function will do nothing if the `doc` is NULL. */ +yyjson_api void yyjson_mut_doc_free(yyjson_mut_doc *doc); + +/** Creates and returns a new mutable JSON document, returns NULL on error. + If allocator is NULL, the default allocator will be used. */ +yyjson_api yyjson_mut_doc *yyjson_mut_doc_new(const yyjson_alc *alc); + +/** Copies and returns a new mutable document from input, returns NULL on error. + This makes a `deep-copy` on the immutable document. + If allocator is NULL, the default allocator will be used. + @note `imut_doc` -> `mut_doc`. */ +yyjson_api yyjson_mut_doc *yyjson_doc_mut_copy(yyjson_doc *doc, + const yyjson_alc *alc); + +/** Copies and returns a new mutable document from input, returns NULL on error. + This makes a `deep-copy` on the mutable document. + If allocator is NULL, the default allocator will be used. + @note `mut_doc` -> `mut_doc`. */ +yyjson_api yyjson_mut_doc *yyjson_mut_doc_mut_copy(yyjson_mut_doc *doc, + const yyjson_alc *alc); + +/** Copies and returns a new mutable value from input, returns NULL on error. + This makes a `deep-copy` on the immutable value. + The memory was managed by mutable document. + @note `imut_val` -> `mut_val`. */ +yyjson_api yyjson_mut_val *yyjson_val_mut_copy(yyjson_mut_doc *doc, + yyjson_val *val); + +/** Copies and returns a new mutable value from input, returns NULL on error. + This makes a `deep-copy` on the mutable value. + The memory was managed by mutable document. + @note `mut_val` -> `mut_val`. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api yyjson_mut_val *yyjson_mut_val_mut_copy(yyjson_mut_doc *doc, + yyjson_mut_val *val); + +/** Copies and returns a new immutable document from input, + returns NULL on error. This makes a `deep-copy` on the mutable document. + The returned document should be freed with `yyjson_doc_free()`. + @note `mut_doc` -> `imut_doc`. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api yyjson_doc *yyjson_mut_doc_imut_copy(yyjson_mut_doc *doc, + const yyjson_alc *alc); + +/** Copies and returns a new immutable document from input, + returns NULL on error. This makes a `deep-copy` on the mutable value. + The returned document should be freed with `yyjson_doc_free()`. + @note `mut_val` -> `imut_doc`. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api yyjson_doc *yyjson_mut_val_imut_copy(yyjson_mut_val *val, + const yyjson_alc *alc); + + + +/*============================================================================== + * Mutable JSON Value Type API + *============================================================================*/ + +/** Returns whether the JSON value is raw. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_raw(yyjson_mut_val *val); + +/** Returns whether the JSON value is `null`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val); + +/** Returns whether the JSON value is `true`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_true(yyjson_mut_val *val); + +/** Returns whether the JSON value is `false`. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_false(yyjson_mut_val *val); + +/** Returns whether the JSON value is bool (true/false). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_bool(yyjson_mut_val *val); + +/** Returns whether the JSON value is unsigned integer (uint64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_uint(yyjson_mut_val *val); + +/** Returns whether the JSON value is signed integer (int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_sint(yyjson_mut_val *val); + +/** Returns whether the JSON value is integer (uint64_t/int64_t). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_int(yyjson_mut_val *val); + +/** Returns whether the JSON value is real number (double). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_real(yyjson_mut_val *val); + +/** Returns whether the JSON value is number (uint/sint/real). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_num(yyjson_mut_val *val); + +/** Returns whether the JSON value is string. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_str(yyjson_mut_val *val); + +/** Returns whether the JSON value is array. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_arr(yyjson_mut_val *val); + +/** Returns whether the JSON value is object. + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_obj(yyjson_mut_val *val); + +/** Returns whether the JSON value is container (array/object). + Returns false if `val` is NULL. */ +yyjson_api_inline bool yyjson_mut_is_ctn(yyjson_mut_val *val); + + + +/*============================================================================== + * Mutable JSON Value Content API + *============================================================================*/ + +/** Returns the JSON value's type. + Returns `YYJSON_TYPE_NONE` if `val` is NULL. */ +yyjson_api_inline yyjson_type yyjson_mut_get_type(yyjson_mut_val *val); + +/** Returns the JSON value's subtype. + Returns `YYJSON_SUBTYPE_NONE` if `val` is NULL. */ +yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype(yyjson_mut_val *val); + +/** Returns the JSON value's tag. + Returns 0 if `val` is NULL. */ +yyjson_api_inline uint8_t yyjson_mut_get_tag(yyjson_mut_val *val); + +/** Returns the JSON value's type description. + The return value should be one of these strings: "raw", "null", "string", + "array", "object", "true", "false", "uint", "sint", "real", "unknown". */ +yyjson_api_inline const char *yyjson_mut_get_type_desc(yyjson_mut_val *val); + +/** Returns the content if the value is raw. + Returns NULL if `val` is NULL or type is not raw. */ +yyjson_api_inline const char *yyjson_mut_get_raw(yyjson_mut_val *val); + +/** Returns the content if the value is bool. + Returns NULL if `val` is NULL or type is not bool. */ +yyjson_api_inline bool yyjson_mut_get_bool(yyjson_mut_val *val); + +/** Returns the content and cast to uint64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline uint64_t yyjson_mut_get_uint(yyjson_mut_val *val); + +/** Returns the content and cast to int64_t. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int64_t yyjson_mut_get_sint(yyjson_mut_val *val); + +/** Returns the content and cast to int. + Returns 0 if `val` is NULL or type is not integer(sint/uint). */ +yyjson_api_inline int yyjson_mut_get_int(yyjson_mut_val *val); + +/** Returns the content if the value is real number. + Returns 0.0 if `val` is NULL or type is not real(double). */ +yyjson_api_inline double yyjson_mut_get_real(yyjson_mut_val *val); + +/** Returns the content and typecast to `double` if the value is number. + Returns 0.0 if `val` is NULL or type is not number(uint/sint/real). */ +yyjson_api_inline double yyjson_mut_get_num(yyjson_mut_val *val); + +/** Returns the content if the value is string. + Returns NULL if `val` is NULL or type is not string. */ +yyjson_api_inline const char *yyjson_mut_get_str(yyjson_mut_val *val); + +/** Returns the content length (string length, array size, object size. + Returns 0 if `val` is NULL or type is not string/array/object. */ +yyjson_api_inline size_t yyjson_mut_get_len(yyjson_mut_val *val); + +/** Returns whether the JSON value is equals to a string. + The `str` should be a null-terminated UTF-8 string. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_mut_equals_str(yyjson_mut_val *val, + const char *str); + +/** Returns whether the JSON value is equals to a string. + The `str` should be a UTF-8 string, null-terminator is not required. + Returns false if input is NULL or type is not string. */ +yyjson_api_inline bool yyjson_mut_equals_strn(yyjson_mut_val *val, + const char *str, size_t len); + +/** Returns whether two JSON values are equal (deep compare). + Returns false if input is NULL. + @note the result may be inaccurate if object has duplicate keys. + @warning This function is recursive and may cause a stack overflow + if the object level is too deep. */ +yyjson_api_inline bool yyjson_mut_equals(yyjson_mut_val *lhs, + yyjson_mut_val *rhs); + +/** Set the value to raw. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_raw(yyjson_mut_val *val, + const char *raw, size_t len); + +/** Set the value to null. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_null(yyjson_mut_val *val); + +/** Set the value to bool. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_bool(yyjson_mut_val *val, bool num); + +/** Set the value to uint. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_uint(yyjson_mut_val *val, uint64_t num); + +/** Set the value to sint. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_sint(yyjson_mut_val *val, int64_t num); + +/** Set the value to int. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_int(yyjson_mut_val *val, int num); + +/** Set the value to real. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_real(yyjson_mut_val *val, double num); + +/** Set the value to string (null-terminated). + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_str(yyjson_mut_val *val, const char *str); + +/** Set the value to string (with length). + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_strn(yyjson_mut_val *val, + const char *str, size_t len); + +/** Set the value to array. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_arr(yyjson_mut_val *val); + +/** Set the value to array. + Returns false if input is NULL. + @warning This function should not be used on an existing object or array. */ +yyjson_api_inline bool yyjson_mut_set_obj(yyjson_mut_val *val); + + + +/*============================================================================== + * Mutable JSON Value Creation API + *============================================================================*/ + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_raw(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawn(yyjson_mut_doc *doc, + const char *str, + size_t len); + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawcpy(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a raw value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawncpy(yyjson_mut_doc *doc, + const char *str, + size_t len); + +/** Creates and returns a null value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_null(yyjson_mut_doc *doc); + +/** Creates and returns a true value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_true(yyjson_mut_doc *doc); + +/** Creates and returns a false value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_false(yyjson_mut_doc *doc); + +/** Creates and returns a bool value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_bool(yyjson_mut_doc *doc, + bool val); + +/** Creates and returns an unsigned integer value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_uint(yyjson_mut_doc *doc, + uint64_t num); + +/** Creates and returns a signed integer value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_sint(yyjson_mut_doc *doc, + int64_t num); + +/** Creates and returns a signed integer value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_int(yyjson_mut_doc *doc, + int64_t num); + +/** Creates and returns an real number value, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_real(yyjson_mut_doc *doc, + double num); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, + const char *str, + size_t len); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a null-terminated UTF-8 string. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc, + const char *str); + +/** Creates and returns a string value, returns NULL on error. + The `str` should be a UTF-8 string, null-terminator is not required. + The input string is copied and held by the document. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, + const char *str, + size_t len); + + + +/*============================================================================== + * Mutable JSON Array API + *============================================================================*/ + +/** Returns the number of elements in this array. + Returns 0 if `arr` is NULL or type is not array. */ +yyjson_api_inline size_t yyjson_mut_arr_size(yyjson_mut_val *arr); + +/** Returns the element at the specified position in this array. + Returns NULL if array is NULL/empty or the index is out of bounds. + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get(yyjson_mut_val *arr, + size_t idx); + +/** Returns the first element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_first(yyjson_mut_val *arr); + +/** Returns the last element of this array. + Returns NULL if `arr` is NULL/empty or type is not array. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_last(yyjson_mut_val *arr); + + + +/*============================================================================== + * Mutable JSON Array Iterator API + *============================================================================*/ + +/** + A mutable JSON array iterator. + + @warning You should not modify the array while iterating over it, but you can + use `yyjson_mut_arr_iter_remove()` to remove current value. + + @par Example + @code + yyjson_mut_val *val; + yyjson_mut_arr_iter iter = yyjson_mut_arr_iter_with(arr); + while ((val = yyjson_mut_arr_iter_next(&iter))) { + your_func(val); + if (your_val_is_unused(val)) { + yyjson_mut_arr_iter_remove(&iter); + } + } + @endcode + */ +typedef struct yyjson_mut_arr_iter { + size_t idx; /**< next value's index */ + size_t max; /**< maximum index (arr.size) */ + yyjson_mut_val *cur; /**< current value */ + yyjson_mut_val *pre; /**< previous value */ + yyjson_mut_val *arr; /**< the array being iterated */ +} yyjson_mut_arr_iter; + +/** + Initialize an iterator for this array. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_mut_arr_iter_init(yyjson_mut_val *arr, + yyjson_mut_arr_iter *iter); + +/** + Create an iterator with an array , same as `yyjson_mut_arr_iter_init()`. + + @param arr The array to be iterated over. + If this parameter is NULL or not an array, an empty iterator will returned. + @return A new iterator for the array. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with( + yyjson_mut_val *arr); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_mut_arr_iter_has_next( + yyjson_mut_arr_iter *iter); + +/** + Returns the next element in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_next( + yyjson_mut_arr_iter *iter); + +/** + Removes and returns current element in the iteration. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_remove( + yyjson_mut_arr_iter *iter); + +/** + Macro for iterating over an array. + It works like iterator, but with a more intuitive API. + + @warning You should not modify the array while iterating over it. + + @par Example + @code + size_t idx, max; + yyjson_mut_val *val; + yyjson_mut_arr_foreach(arr, idx, max, val) { + your_func(idx, val); + } + @endcode + */ +#define yyjson_mut_arr_foreach(arr, idx, max, val) \ + for ((idx) = 0, \ + (max) = yyjson_mut_arr_size(arr), \ + (val) = yyjson_mut_arr_get_first(arr); \ + (idx) < (max); \ + (idx)++, \ + (val) = (val)->next) + + + +/*============================================================================== + * Mutable JSON Array Creation API + *============================================================================*/ + +/** + Creates and returns an empty mutable array. + @param doc A mutable document, used for memory allocation only. + @return The new array. NULL if input is NULL or memory allocation failed. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr(yyjson_mut_doc *doc); + +/** + Creates and returns a new mutable array with the given boolean values. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of boolean values. + @param count The value count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const bool vals[3] = { true, false, true }; + yyjson_mut_val *arr = yyjson_mut_arr_with_bool(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_bool( + yyjson_mut_doc *doc, const bool *vals, size_t count); + +/** + Creates and returns a new mutable array with the given sint numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of sint numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const int64_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint64(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint( + yyjson_mut_doc *doc, const int64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const uint64_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given real numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of real numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const double vals[3] = { 0.1, 0.2, 0.3 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_real(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_real( + yyjson_mut_doc *doc, const double *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int8 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int8 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const int8_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint8(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint8( + yyjson_mut_doc *doc, const int8_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int16 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int16 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const int16_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint16(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint16( + yyjson_mut_doc *doc, const int16_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int32 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int32 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const int32_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint32(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint32( + yyjson_mut_doc *doc, const int32_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given int64 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of int64 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const int64_t vals[3] = { -1, 0, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_sint64(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint64( + yyjson_mut_doc *doc, const int64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint8 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint8 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const uint8_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint8(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint8( + yyjson_mut_doc *doc, const uint8_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint16 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint16 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const uint16_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint16(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint16( + yyjson_mut_doc *doc, const uint16_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint32 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint32 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const uint32_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint32(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint32( + yyjson_mut_doc *doc, const uint32_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given uint64 numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of uint64 numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const uint64_t vals[3] = { 0, 1, 0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_uint64(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint64( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count); + +/** + Creates and returns a new mutable array with the given float numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of float numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const float vals[3] = { -1.0f, 0.0f, 1.0f }; + yyjson_mut_val *arr = yyjson_mut_arr_with_float(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_float( + yyjson_mut_doc *doc, const float *vals, size_t count); + +/** + Creates and returns a new mutable array with the given double numbers. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of double numbers. + @param count The number count. If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const double vals[3] = { -1.0, 0.0, 1.0 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_double(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_double( + yyjson_mut_doc *doc, const double *vals, size_t count); + +/** + Creates and returns a new mutable array with the given strings, these strings + will not be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 null-terminator strings. + If this array contains NULL, the function will fail and return NULL. + @param count The number of values in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @warning The input strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. If these strings will be + modified, you should use `yyjson_mut_arr_with_strcpy()` instead. + + @par Example + @code + const char *vals[3] = { "a", "b", "c" }; + yyjson_mut_val *arr = yyjson_mut_arr_with_str(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_str( + yyjson_mut_doc *doc, const char **vals, size_t count); + +/** + Creates and returns a new mutable array with the given strings and string + lengths, these strings will not be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 strings, null-terminator is not required. + If this array contains NULL, the function will fail and return NULL. + @param lens A C array of string lengths, in bytes. + @param count The number of strings in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @warning The input strings are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. If these strings will be + modified, you should use `yyjson_mut_arr_with_strncpy()` instead. + + @par Example + @code + const char *vals[3] = { "a", "bb", "c" }; + const size_t lens[3] = { 1, 2, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strn( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count); + +/** + Creates and returns a new mutable array with the given strings, these strings + will be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 null-terminator strings. + If this array contains NULL, the function will fail and return NULL. + @param count The number of values in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const char *vals[3] = { "a", "b", "c" }; + yyjson_mut_val *arr = yyjson_mut_arr_with_strcpy(doc, vals, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strcpy( + yyjson_mut_doc *doc, const char **vals, size_t count); + +/** + Creates and returns a new mutable array with the given strings and string + lengths, these strings will be copied. + + @param doc A mutable document, used for memory allocation only. + If this parameter is NULL, the function will fail and return NULL. + @param vals A C array of UTF-8 strings, null-terminator is not required. + If this array contains NULL, the function will fail and return NULL. + @param lens A C array of string lengths, in bytes. + @param count The number of strings in `vals`. + If this value is 0, an empty array will return. + @return The new array. NULL if input is invalid or memory allocation failed. + + @par Example + @code + const char *vals[3] = { "a", "bb", "c" }; + const size_t lens[3] = { 1, 2, 1 }; + yyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strncpy( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count); + + + +/*============================================================================== + * Mutable JSON Array Modification API + *============================================================================*/ + +/** + Inserts a value into an array at a given index. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @param idx The index to which to insert the new value. + Returns false if the index is out of range. + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr, + yyjson_mut_val *val, size_t idx); + +/** + Inserts a value at the end of the array. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_append(yyjson_mut_val *arr, + yyjson_mut_val *val); + +/** + Inserts a value at the head of the array. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_prepend(yyjson_mut_val *arr, + yyjson_mut_val *val); + +/** + Replaces a value at index and returns old value. + @param arr The array to which the value is to be replaced. + Returns false if it is NULL or not an array. + @param idx The index to which to replace the value. + Returns false if the index is out of range. + @param val The new value to replace. Returns false if it is NULL. + @return Old value, or NULL on error. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_replace(yyjson_mut_val *arr, + size_t idx, + yyjson_mut_val *val); + +/** + Removes and returns a value at index. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @param idx The index from which to remove the value. + Returns false if the index is out of range. + @return Old value, or NULL on error. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove(yyjson_mut_val *arr, + size_t idx); + +/** + Removes and returns the first value in this array. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @return The first value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_first( + yyjson_mut_val *arr); + +/** + Removes and returns the last value in this array. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @return The last value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_last( + yyjson_mut_val *arr); + +/** + Removes all values within a specified range in the array. + @param arr The array from which the value is to be removed. + Returns false if it is NULL or not an array. + @param idx The start index of the range (0 is the first). + @param len The number of items in the range (can be 0). + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, + size_t idx, size_t len); + +/** + Removes all values in this array. + @param arr The array from which all of the values are to be removed. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_clear(yyjson_mut_val *arr); + +/** + Rotates values in this array for the given number of times. + For example: `[1,2,3,4,5]` rotate 2 is `[3,4,5,1,2]`. + @param arr The array to be rotated. + @param idx Index (or times) to rotate. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_arr_rotate(yyjson_mut_val *arr, + size_t idx); + + + +/*============================================================================== + * Mutable JSON Array Modification Convenience API + *============================================================================*/ + +/** + Adds a value at the end of the array. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The value to be inserted. Returns false if it is NULL. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_val(yyjson_mut_val *arr, + yyjson_mut_val *val); + +/** + Adds a `null` value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Adds a `true` value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Adds a `false` value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Adds a bool value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param val The bool value to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + bool val); + +/** + Adds an unsigned integer value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + uint64_t num); + +/** + Adds a signed integer value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num); + +/** + Adds a integer value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num); + +/** + Adds a double value at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param num The number to be added. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + double num); + +/** + Adds a string value at the end of the array (no copy). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A null-terminated UTF-8 string. + @return Whether successful. + @warning The input string is not copied, you should keep this string unmodified + for the lifetime of this JSON document. + */ +yyjson_api_inline bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str); + +/** + Adds a string value at the end of the array (no copy). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A UTF-8 string, null-terminator is not required. + @param len The length of the string, in bytes. + @return Whether successful. + @warning The input string is not copied, you should keep this string unmodified + for the lifetime of this JSON document. + */ +yyjson_api_inline bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, + size_t len); + +/** + Adds a string value at the end of the array (copied). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A null-terminated UTF-8 string. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str); + +/** + Adds a string value at the end of the array (copied). + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @param str A UTF-8 string, null-terminator is not required. + @param len The length of the string, in bytes. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, + size_t len); + +/** + Creates and adds a new array at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return The new array, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_arr(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + +/** + Creates and adds a new object at the end of the array. + @param doc The `doc` is only used for memory allocation. + @param arr The array to which the value is to be inserted. + Returns false if it is NULL or not an array. + @return The new object, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *arr); + + + +/*============================================================================== + * Mutable JSON Object API + *============================================================================*/ + +/** Returns the number of key-value pairs in this object. + Returns 0 if `obj` is NULL or type is not object. */ +yyjson_api_inline size_t yyjson_mut_obj_size(yyjson_mut_val *obj); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a null-terminated UTF-8 string. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_get(yyjson_mut_val *obj, + const char *key); + +/** Returns the value to which the specified key is mapped. + Returns NULL if this object contains no mapping for the key. + Returns NULL if `obj/key` is NULL, or type is not object. + + The `key` should be a UTF-8 string, null-terminator is not required. + The `key_len` should be the length of the key, in bytes. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_getn(yyjson_mut_val *obj, + const char *key, + size_t key_len); + + + +/*============================================================================== + * Mutable JSON Object Iterator API + *============================================================================*/ + +/** + A mutable JSON object iterator. + + @warning You should not modify the object while iterating over it, but you can + use `yyjson_mut_obj_iter_remove()` to remove current value. + + @par Example + @code + yyjson_mut_val *key, *val; + yyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj); + while ((key = yyjson_mut_obj_iter_next(&iter))) { + val = yyjson_mut_obj_iter_get_val(key); + your_func(key, val); + if (your_val_is_unused(key, val)) { + yyjson_mut_obj_iter_remove(&iter); + } + } + @endcode + + If the ordering of the keys is known at compile-time, you can use this method + to speed up value lookups: + @code + // {"k1":1, "k2": 3, "k3": 3} + yyjson_mut_val *key, *val; + yyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj); + yyjson_mut_val *v1 = yyjson_mut_obj_iter_get(&iter, "k1"); + yyjson_mut_val *v3 = yyjson_mut_obj_iter_get(&iter, "k3"); + @endcode + @see `yyjson_mut_obj_iter_get()` and `yyjson_mut_obj_iter_getn()` + */ +typedef struct yyjson_mut_obj_iter { + size_t idx; /**< next key's index */ + size_t max; /**< maximum key index (obj.size) */ + yyjson_mut_val *cur; /**< current key */ + yyjson_mut_val *pre; /**< previous key */ + yyjson_mut_val *obj; /**< the object being iterated */ +} yyjson_mut_obj_iter; + +/** + Initialize an iterator for this object. + + @param obj The object to be iterated over. + If this parameter is NULL or not an array, `iter` will be set to empty. + @param iter The iterator to be initialized. + If this parameter is NULL, the function will fail and return false. + @return true if the `iter` has been successfully initialized. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline bool yyjson_mut_obj_iter_init(yyjson_mut_val *obj, + yyjson_mut_obj_iter *iter); + +/** + Create an iterator with an object, same as `yyjson_obj_iter_init()`. + + @param obj The object to be iterated over. + If this parameter is NULL or not an object, an empty iterator will returned. + @return A new iterator for the object. + + @note The iterator does not need to be destroyed. + */ +yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with( + yyjson_mut_val *obj); + +/** + Returns whether the iteration has more elements. + If `iter` is NULL, this function will return false. + */ +yyjson_api_inline bool yyjson_mut_obj_iter_has_next( + yyjson_mut_obj_iter *iter); + +/** + Returns the next key in the iteration, or NULL on end. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_next( + yyjson_mut_obj_iter *iter); + +/** + Returns the value for key inside the iteration. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get_val( + yyjson_mut_val *key); + +/** + Removes current key-value pair in the iteration, returns the removed value. + If `iter` is NULL, this function will return NULL. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_remove( + yyjson_mut_obj_iter *iter); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_mut_obj_get()`, but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string with null-terminator. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get( + yyjson_mut_obj_iter *iter, const char *key); + +/** + Iterates to a specified key and returns the value. + + This function does the same thing as `yyjson_mut_obj_getn()` but is much faster + if the ordering of the keys is known at compile-time and you are using the same + order to look up the values. If the key exists in this object, then the + iterator will stop at the next key, otherwise the iterator will not change and + NULL is returned. + + @param iter The object iterator, should not be NULL. + @param key The key, should be a UTF-8 string, null-terminator is not required. + @param key_len The the length of `key`, in bytes. + @return The value to which the specified key is mapped. + NULL if this object contains no mapping for the key or input is invalid. + + @warning This function takes a linear search time if the key is not nearby. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_getn( + yyjson_mut_obj_iter *iter, const char *key, size_t key_len); + +/** + Macro for iterating over an object. + It works like iterator, but with a more intuitive API. + + @warning You should not modify the object while iterating over it. + + @par Example + @code + size_t idx, max; + yyjson_val *key, *val; + yyjson_obj_foreach(obj, idx, max, key, val) { + your_func(key, val); + } + @endcode + */ +#define yyjson_mut_obj_foreach(obj, idx, max, key, val) \ + for ((idx) = 0, \ + (max) = yyjson_mut_obj_size(obj), \ + (key) = (max) ? ((yyjson_mut_val *)(obj)->uni.ptr)->next->next : NULL, \ + (val) = (key) ? (key)->next : NULL; \ + (idx) < (max); \ + (idx)++, \ + (key) = (val)->next, \ + (val) = (key)->next) + + + +/*============================================================================== + * Mutable JSON Object Creation API + *============================================================================*/ + +/** Creates and returns a mutable object, returns NULL on error. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj(yyjson_mut_doc *doc); + +/** + Creates and returns a mutable object with keys and values, returns NULL on + error. The keys and values are not copied. The strings should be a + null-terminated UTF-8 string. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. + + @par Example + @code + const char *keys[2] = { "id", "name" }; + const char *vals[2] = { "01", "Harry" }; + yyjson_mut_val *obj = yyjson_mut_obj_with_str(doc, keys, vals, 2); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_str(yyjson_mut_doc *doc, + const char **keys, + const char **vals, + size_t count); + +/** + Creates and returns a mutable object with key-value pairs and pair count, + returns NULL on error. The keys and values are not copied. The strings should + be a null-terminated UTF-8 string. + + @warning The input string is not copied, you should keep this string + unmodified for the lifetime of this JSON document. + + @par Example + @code + const char *kv_pairs[4] = { "id", "01", "name", "Harry" }; + yyjson_mut_val *obj = yyjson_mut_obj_with_kv(doc, kv_pairs, 2); + @endcode + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, + const char **kv_pairs, + size_t pair_count); + + + +/*============================================================================== + * Mutable JSON Object Modification API + *============================================================================*/ + +/** + Adds a key-value pair at the end of the object. + This function allows duplicated key in one object. + @param obj The object to which the new key-value pair is to be added. + @param key The key, should be a string which is created by `yyjson_mut_str()`, + `yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`. + @param val The value to add to the object. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_add(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val); +/** + Sets a key-value pair at the end of the object. + This function may remove all key-value pairs for the given key before add. + @param obj The object to which the new key-value pair is to be added. + @param key The key, should be a string which is created by `yyjson_mut_str()`, + `yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`. + @param val The value to add to the object. If this value is null, the behavior + is same as `yyjson_mut_obj_remove()`. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_put(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val); + +/** + Inserts a key-value pair to the object at the given position. + This function allows duplicated key in one object. + @param obj The object to which the new key-value pair is to be added. + @param key The key, should be a string which is created by `yyjson_mut_str()`, + `yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`. + @param val The value to add to the object. + @param idx The index to which to insert the new pair. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_insert(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val, + size_t idx); + +/** + Removes all key-value pair from the object with given key. + @param obj The object from which the key-value pair is to be removed. + @param key The key, should be a string value. + @return The first matched value, or NULL if no matched value. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove(yyjson_mut_val *obj, + yyjson_mut_val *key); + +/** + Removes all key-value pair from the object with given key. + @param obj The object from which the key-value pair is to be removed. + @param key The key, should be a UTF-8 string with null-terminator. + @return The first matched value, or NULL if no matched value. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_key( + yyjson_mut_val *obj, const char *key); + +/** + Removes all key-value pair from the object with given key. + @param obj The object from which the key-value pair is to be removed. + @param key The key, should be a UTF-8 string, null-terminator is not required. + @param key_len The length of the key. + @return The first matched value, or NULL if no matched value. + @warning This function takes a linear search time. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_keyn( + yyjson_mut_val *obj, const char *key, size_t key_len); + +/** + Removes all key-value pairs in this object. + @param obj The object from which all of the values are to be removed. + @return Whether successful. + */ +yyjson_api_inline bool yyjson_mut_obj_clear(yyjson_mut_val *obj); + +/** + Replaces value from the object with given key. + If the key is not exist, or the value is NULL, it will fail. + @param obj The object to which the value is to be replaced. + @param key The key, should be a string value. + @param val The value to replace into the object. + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_obj_replace(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val); + +/** + Rotates key-value pairs in the object for the given number of times. + For example: `{"a":1,"b":2,"c":3,"d":4}` rotate 1 is + `{"b":2,"c":3,"d":4,"a":1}`. + @param obj The object to be rotated. + @param idx Index (or times) to rotate. + @return Whether successful. + @warning This function takes a linear search time. + */ +yyjson_api_inline bool yyjson_mut_obj_rotate(yyjson_mut_val *obj, + size_t idx); + + + +/*============================================================================== + * Mutable JSON Object Modification Convenience API + *============================================================================*/ + +/** Adds a `null` value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a `true` value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a `false` value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key); + +/** Adds a bool value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, bool val); + +/** Adds an unsigned integer value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, uint64_t val); + +/** Adds a signed integer value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, int64_t val); + +/** Adds an int value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, int64_t val); + +/** Adds a double value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, double val); + +/** Adds a string value at the end of the object. + The `key` and `val` should be null-terminated UTF-8 strings. + This function allows duplicated key in one object. + + @warning The key/value string are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, const char *val); + +/** Adds a string value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + The `val` should be a UTF-8 string, null-terminator is not required. + The `len` should be the length of the `val`, in bytes. + This function allows duplicated key in one object. + + @warning The key/value string are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *val, size_t len); + +/** Adds a string value at the end of the object. + The `key` and `val` should be null-terminated UTF-8 strings. + The value string is copied. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *val); + +/** Adds a string value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + The `val` should be a UTF-8 string, null-terminator is not required. + The `len` should be the length of the `val`, in bytes. + This function allows duplicated key in one object. + + @warning The key/value string are not copied, you should keep these strings + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *val, size_t len); + +/** Adds a JSON value at the end of the object. + The `key` should be a null-terminated UTF-8 string. + This function allows duplicated key in one object. + + @warning The key string are not copied, you should keep the string + unmodified for the lifetime of this JSON document. */ +yyjson_api_inline bool yyjson_mut_obj_add_val(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + yyjson_mut_val *val); + +/** Removes all key-value pairs for the given key. + Returns the first value to which the specified key is mapped or NULL if this + object contains no mapping for the key. + The `key` should be a null-terminated UTF-8 string. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_str( + yyjson_mut_val *obj, const char *key); + +/** Removes all key-value pairs for the given key. + Returns the first value to which the specified key is mapped or NULL if this + object contains no mapping for the key. + The `key` should be a UTF-8 string, null-terminator is not required. + The `len` should be the length of the key, in bytes. + + @warning This function takes a linear search time. */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_strn( + yyjson_mut_val *obj, const char *key, size_t len); + +/** Replaces all matching keys with the new key. + Returns true if at least one key was renamed. + The `key` and `new_key` should be a null-terminated UTF-8 string. + The `new_key` is copied and held by doc. + + @warning This function takes a linear search time. + If `new_key` already exists, it will cause duplicate keys. + */ +yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *new_key); + +/** Replaces all matching keys with the new key. + Returns true if at least one key was renamed. + The `key` and `new_key` should be a UTF-8 string, + null-terminator is not required. The `new_key` is copied and held by doc. + + @warning This function takes a linear search time. + If `new_key` already exists, it will cause duplicate keys. + */ +yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + size_t len, + const char *new_key, + size_t new_len); + + + +/*============================================================================== + * JSON Pointer API (RFC 6901) + * https://tools.ietf.org/html/rfc6901 + *============================================================================*/ + +/** JSON Pointer error code. */ +typedef uint32_t yyjson_ptr_code; + +/** No JSON pointer error. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_NONE = 0; + +/** Invalid input parameter, such as NULL input. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_PARAMETER = 1; + +/** JSON pointer syntax error, such as invalid escape, token no prefix. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_SYNTAX = 2; + +/** JSON pointer resolve failed, such as index out of range, key not found. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_RESOLVE = 3; + +/** Document's root is NULL, but it is required for the function call. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_NULL_ROOT = 4; + +/** Cannot set root as the target is not a document. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_SET_ROOT = 5; + +/** The memory allocation failed and a new value could not be created. */ +static const yyjson_ptr_code YYJSON_PTR_ERR_MEMORY_ALLOCATION = 6; + +/** Error information for JSON pointer. */ +typedef struct yyjson_ptr_err { + /** Error code, see `yyjson_ptr_code` for all possible values. */ + yyjson_ptr_code code; + /** Error message, constant, no need to free (NULL if no error). */ + const char *msg; + /** Error byte position for input JSON pointer (0 if no error). */ + size_t pos; +} yyjson_ptr_err; + +/** + A context for JSON pointer operation. + + This struct stores the context of JSON Pointer operation result. The struct + can be used with three helper functions: `ctx_append()`, `ctx_replace()`, and + `ctx_remove()`, which perform the corresponding operations on the container + without re-parsing the JSON Pointer. + + For example: + @code + // doc before: {"a":[0,1,null]} + // ptr: "/a/2" + val = yyjson_mut_doc_ptr_getx(doc, ptr, strlen(ptr), &ctx, &err); + if (yyjson_is_null(val)) { + yyjson_ptr_ctx_remove(&ctx); + } + // doc after: {"a":[0,1]} + @endcode + */ +typedef struct yyjson_ptr_ctx { + /** + The container (parent) of the target value. It can be either an array or + an object. If the target location has no value, but all its parent + containers exist, and the target location can be used to insert a new + value, then `ctn` is the parent container of the target location. + Otherwise, `ctn` is NULL. + */ + yyjson_mut_val *ctn; + /** + The previous sibling of the target value. It can be either a value in an + array or a key in an object. As the container is a `circular linked list` + of elements, `pre` is the previous node of the target value. If the + operation is `add` or `set`, then `pre` is the previous node of the new + value, not the original target value. If the target value does not exist, + `pre` is NULL. + */ + yyjson_mut_val *pre; + /** + The removed value if the operation is `set`, `replace` or `remove`. It can + be used to restore the original state of the document if needed. + */ + yyjson_mut_val *old; +} yyjson_ptr_ctx; + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc, + const char *ptr, size_t len); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc, + const char *ptr, size_t len, + yyjson_ptr_err *err); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_ptr_get(yyjson_val *val, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_ptr_getn(yyjson_val *val, + const char *ptr, size_t len); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_val *yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t len, + yyjson_ptr_err *err); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_get(yyjson_mut_doc *doc, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, + const char *ptr, + size_t len); + +/** + Get value by a JSON Pointer. + @param doc The JSON document to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `doc` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_get(yyjson_mut_val *val, + const char *ptr); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val, + const char *ptr, + size_t len); + +/** + Get value by a JSON Pointer. + @param val The JSON value to be queried. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The value referenced by the JSON pointer. + NULL if `val` or `ptr` is NULL, or the JSON pointer cannot be resolved. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Add (insert) value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val); + +/** + Add (insert) value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val); + +/** + Add (insert) value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be added. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is added, false otherwise. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Add (insert) value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param doc Only used to create new values when needed. + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_ptr_add(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Add (insert) value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param doc Only used to create new values when needed. + @param new_val The value to be added. + @return true if JSON pointer is valid and new value is added, false otherwise. + @note The parent nodes will be created if they do not exist. + */ +yyjson_api_inline bool yyjson_mut_ptr_addn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Add (insert) value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param doc Only used to create new values when needed. + @param new_val The value to be added. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is added, false otherwise. + */ +yyjson_api_inline bool yyjson_mut_ptr_addx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Set value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The value to be set, pass NULL to remove. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val); + +/** + Set value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val); + +/** + Set value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Set value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The value to be set, pass NULL to remove. + @param doc Only used to create new values when needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_ptr_set(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Set value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @param doc Only used to create new values when needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note The parent nodes will be created if they do not exist. + If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_ptr_setn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc); + +/** + Set value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The value to be set, pass NULL to remove. + @param doc Only used to create new values when needed. + @param create_parent Whether to create parent nodes if not exist. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return true if JSON pointer is valid and new value is set, false otherwise. + @note If the target value already exists, it will be replaced by the new value. + */ +yyjson_api_inline bool yyjson_mut_ptr_setx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Replace value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replace( + yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacen( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacex( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/** + Replace value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replace( + yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacen( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val); + +/** + Replace value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param new_val The new value to replace the old one. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The old value that was replaced, or NULL if not found. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/** + Remove value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_remove( + yyjson_mut_doc *doc, const char *ptr); + +/** + Remove value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removen( + yyjson_mut_doc *doc, const char *ptr, size_t len); + +/** + Remove value by a JSON pointer. + @param doc The target JSON document. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removex( + yyjson_mut_doc *doc, const char *ptr, size_t len, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/** + Remove value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8 with null-terminator). + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_remove(yyjson_mut_val *val, + const char *ptr); + +/** + Remove value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val *val, + const char *ptr, + size_t len); + +/** + Remove value by a JSON pointer. + @param val The target JSON value. + @param ptr The JSON pointer string (UTF-8, null-terminator is not required). + @param len The length of `ptr` in bytes. + @param ctx A pointer to store the result context, or NULL if not needed. + @param err A pointer to store the error information, or NULL if not needed. + @return The removed value, or NULL on error. + */ +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/** + Append value by JSON pointer context. + @param ctx The context from the `yyjson_mut_ptr_xxx()` calls. + @param key New key if `ctx->ctn` is object, or NULL if `ctx->ctn` is array. + @param val New value to be added. + @return true on success or false on fail. + */ +yyjson_api_inline bool yyjson_ptr_ctx_append(yyjson_ptr_ctx *ctx, + yyjson_mut_val *key, + yyjson_mut_val *val); + +/** + Replace value by JSON pointer context. + @param ctx The context from the `yyjson_mut_ptr_xxx()` calls. + @param val New value to be replaced. + @return true on success or false on fail. + @note If success, the old value will be returned via `ctx->old`. + */ +yyjson_api_inline bool yyjson_ptr_ctx_replace(yyjson_ptr_ctx *ctx, + yyjson_mut_val *val); + +/** + Remove value by JSON pointer context. + @param ctx The context from the `yyjson_mut_ptr_xxx()` calls. + @return true on success or false on fail. + @note If success, the old value will be returned via `ctx->old`. + */ +yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx); + + + +/*============================================================================== + * JSON Patch API (RFC 6902) + * https://tools.ietf.org/html/rfc6902 + *============================================================================*/ + +/** Result code for JSON patch. */ +typedef uint32_t yyjson_patch_code; + +/** Success, no error. */ +static const yyjson_patch_code YYJSON_PATCH_SUCCESS = 0; + +/** Invalid parameter, such as NULL input or non-array patch. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_PARAMETER = 1; + +/** Memory allocation failure occurs. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_MEMORY_ALLOCATION = 2; + +/** JSON patch operation is not object type. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_OPERATION = 3; + +/** JSON patch operation is missing a required key. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_MISSING_KEY = 4; + +/** JSON patch operation member is invalid. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_INVALID_MEMBER = 5; + +/** JSON patch operation `test` not equal. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_EQUAL = 6; + +/** JSON patch operation failed on JSON pointer. */ +static const yyjson_patch_code YYJSON_PATCH_ERROR_POINTER = 7; + +/** Error information for JSON patch. */ +typedef struct yyjson_patch_err { + /** Error code, see `yyjson_patch_code` for all possible values. */ + yyjson_patch_code code; + /** Index of the error operation (0 if no error). */ + size_t idx; + /** Error message, constant, no need to free (NULL if no error). */ + const char *msg; + /** JSON pointer error if `code == YYJSON_PATCH_ERROR_POINTER`. */ + yyjson_ptr_err ptr; +} yyjson_patch_err; + +/** + Creates and returns a patched JSON value (RFC 6902). + The memory of the returned value is allocated by the `doc`. + The `err` is used to receive error information, pass NULL if not needed. + Returns NULL if the patch could not be applied. + */ +yyjson_api yyjson_mut_val *yyjson_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch, + yyjson_patch_err *err); + +/** + Creates and returns a patched JSON value (RFC 6902). + The memory of the returned value is allocated by the `doc`. + The `err` is used to receive error information, pass NULL if not needed. + Returns NULL if the patch could not be applied. + */ +yyjson_api yyjson_mut_val *yyjson_mut_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch, + yyjson_patch_err *err); + + + +/*============================================================================== + * JSON Merge-Patch API (RFC 7386) + * https://tools.ietf.org/html/rfc7386 + *============================================================================*/ + +/** + Creates and returns a merge-patched JSON value (RFC 7386). + The memory of the returned value is allocated by the `doc`. + Returns NULL if the patch could not be applied. + + @warning This function is recursive and may cause a stack overflow if the + object level is too deep. + */ +yyjson_api yyjson_mut_val *yyjson_merge_patch(yyjson_mut_doc *doc, + yyjson_val *orig, + yyjson_val *patch); + +/** + Creates and returns a merge-patched JSON value (RFC 7386). + The memory of the returned value is allocated by the `doc`. + Returns NULL if the patch could not be applied. + + @warning This function is recursive and may cause a stack overflow if the + object level is too deep. + */ +yyjson_api yyjson_mut_val *yyjson_mut_merge_patch(yyjson_mut_doc *doc, + yyjson_mut_val *orig, + yyjson_mut_val *patch); + + + +/*============================================================================== + * JSON Structure (Implementation) + *============================================================================*/ + +/** Payload of a JSON value (8 bytes). */ +typedef union yyjson_val_uni { + uint64_t u64; + int64_t i64; + double f64; + const char *str; + void *ptr; + size_t ofs; +} yyjson_val_uni; + +/** + Immutable JSON value, 16 bytes. + */ +struct yyjson_val { + uint64_t tag; /**< type, subtype and length */ + yyjson_val_uni uni; /**< payload */ +}; + +struct yyjson_doc { + /** Root value of the document (nonnull). */ + yyjson_val *root; + /** Allocator used by document (nonnull). */ + yyjson_alc alc; + /** The total number of bytes read when parsing JSON (nonzero). */ + size_t dat_read; + /** The total number of value read when parsing JSON (nonzero). */ + size_t val_read; + /** The string pool used by JSON values (nullable). */ + char *str_pool; +}; + + + +/*============================================================================== + * Unsafe JSON Value API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_type unsafe_yyjson_get_type(void *val) { + uint8_t tag = (uint8_t)((yyjson_val *)val)->tag; + return (yyjson_type)(tag & YYJSON_TYPE_MASK); +} + +yyjson_api_inline yyjson_subtype unsafe_yyjson_get_subtype(void *val) { + uint8_t tag = (uint8_t)((yyjson_val *)val)->tag; + return (yyjson_subtype)(tag & YYJSON_SUBTYPE_MASK); +} + +yyjson_api_inline uint8_t unsafe_yyjson_get_tag(void *val) { + uint8_t tag = (uint8_t)((yyjson_val *)val)->tag; + return (uint8_t)(tag & YYJSON_TAG_MASK); +} + +yyjson_api_inline bool unsafe_yyjson_is_raw(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_RAW; +} + +yyjson_api_inline bool unsafe_yyjson_is_null(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_NULL; +} + +yyjson_api_inline bool unsafe_yyjson_is_bool(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_BOOL; +} + +yyjson_api_inline bool unsafe_yyjson_is_num(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_NUM; +} + +yyjson_api_inline bool unsafe_yyjson_is_str(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_STR; +} + +yyjson_api_inline bool unsafe_yyjson_is_arr(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_ARR; +} + +yyjson_api_inline bool unsafe_yyjson_is_obj(void *val) { + return unsafe_yyjson_get_type(val) == YYJSON_TYPE_OBJ; +} + +yyjson_api_inline bool unsafe_yyjson_is_ctn(void *val) { + uint8_t mask = YYJSON_TYPE_ARR & YYJSON_TYPE_OBJ; + return (unsafe_yyjson_get_tag(val) & mask) == mask; +} + +yyjson_api_inline bool unsafe_yyjson_is_uint(void *val) { + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_sint(void *val) { + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_int(void *val) { + const uint8_t mask = YYJSON_TAG_MASK & (~YYJSON_SUBTYPE_SINT); + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + return (unsafe_yyjson_get_tag(val) & mask) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_real(void *val) { + const uint8_t patt = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_true(void *val) { + const uint8_t patt = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_is_false(void *val) { + const uint8_t patt = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE; + return unsafe_yyjson_get_tag(val) == patt; +} + +yyjson_api_inline bool unsafe_yyjson_arr_is_flat(yyjson_val *val) { + size_t ofs = val->uni.ofs; + size_t len = (size_t)(val->tag >> YYJSON_TAG_BIT); + return len * sizeof(yyjson_val) + sizeof(yyjson_val) == ofs; +} + +yyjson_api_inline const char *unsafe_yyjson_get_raw(void *val) { + return ((yyjson_val *)val)->uni.str; +} + +yyjson_api_inline bool unsafe_yyjson_get_bool(void *val) { + uint8_t tag = unsafe_yyjson_get_tag(val); + return (bool)((tag & YYJSON_SUBTYPE_MASK) >> YYJSON_TYPE_BIT); +} + +yyjson_api_inline uint64_t unsafe_yyjson_get_uint(void *val) { + return ((yyjson_val *)val)->uni.u64; +} + +yyjson_api_inline int64_t unsafe_yyjson_get_sint(void *val) { + return ((yyjson_val *)val)->uni.i64; +} + +yyjson_api_inline int unsafe_yyjson_get_int(void *val) { + return (int)((yyjson_val *)val)->uni.i64; +} + +yyjson_api_inline double unsafe_yyjson_get_real(void *val) { + return ((yyjson_val *)val)->uni.f64; +} + +yyjson_api_inline double unsafe_yyjson_get_num(void *val) { + uint8_t tag = unsafe_yyjson_get_tag(val); + if (tag == (YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL)) { + return ((yyjson_val *)val)->uni.f64; + } else if (tag == (YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT)) { + return (double)((yyjson_val *)val)->uni.i64; + } else if (tag == (YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT)) { +#if YYJSON_U64_TO_F64_NO_IMPL + uint64_t msb = ((uint64_t)1) << 63; + uint64_t num = ((yyjson_val *)val)->uni.u64; + if ((num & msb) == 0) { + return (double)(int64_t)num; + } else { + return ((double)(int64_t)((num >> 1) | (num & 1))) * (double)2.0; + } +#else + return (double)((yyjson_val *)val)->uni.u64; +#endif + } + return 0.0; +} + +yyjson_api_inline const char *unsafe_yyjson_get_str(void *val) { + return ((yyjson_val *)val)->uni.str; +} + +yyjson_api_inline size_t unsafe_yyjson_get_len(void *val) { + return (size_t)(((yyjson_val *)val)->tag >> YYJSON_TAG_BIT); +} + +yyjson_api_inline yyjson_val *unsafe_yyjson_get_first(yyjson_val *ctn) { + return ctn + 1; +} + +yyjson_api_inline yyjson_val *unsafe_yyjson_get_next(yyjson_val *val) { + bool is_ctn = unsafe_yyjson_is_ctn(val); + size_t ctn_ofs = val->uni.ofs; + size_t ofs = (is_ctn ? ctn_ofs : sizeof(yyjson_val)); + return (yyjson_val *)(void *)((uint8_t *)val + ofs); +} + +yyjson_api_inline bool unsafe_yyjson_equals_strn(void *val, const char *str, + size_t len) { + uint64_t tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + return ((yyjson_val *)val)->tag == tag && + memcmp(((yyjson_val *)val)->uni.str, str, len) == 0; +} + +yyjson_api_inline bool unsafe_yyjson_equals_str(void *val, const char *str) { + return unsafe_yyjson_equals_strn(val, str, strlen(str)); +} + +yyjson_api_inline void unsafe_yyjson_set_type(void *val, yyjson_type type, + yyjson_subtype subtype) { + uint8_t tag = (type | subtype); + uint64_t new_tag = ((yyjson_val *)val)->tag; + new_tag = (new_tag & (~(uint64_t)YYJSON_TAG_MASK)) | (uint64_t)tag; + ((yyjson_val *)val)->tag = new_tag; +} + +yyjson_api_inline void unsafe_yyjson_set_len(void *val, size_t len) { + uint64_t tag = ((yyjson_val *)val)->tag & YYJSON_TAG_MASK; + tag |= (uint64_t)len << YYJSON_TAG_BIT; + ((yyjson_val *)val)->tag = tag; +} + +yyjson_api_inline void unsafe_yyjson_inc_len(void *val) { + uint64_t tag = ((yyjson_val *)val)->tag; + tag += (uint64_t)(1 << YYJSON_TAG_BIT); + ((yyjson_val *)val)->tag = tag; +} + +yyjson_api_inline void unsafe_yyjson_set_raw(void *val, const char *raw, + size_t len) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_RAW, YYJSON_SUBTYPE_NONE); + unsafe_yyjson_set_len(val, len); + ((yyjson_val *)val)->uni.str = raw; +} + +yyjson_api_inline void unsafe_yyjson_set_null(void *val) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_NULL, YYJSON_SUBTYPE_NONE); + unsafe_yyjson_set_len(val, 0); +} + +yyjson_api_inline void unsafe_yyjson_set_bool(void *val, bool num) { + yyjson_subtype subtype = num ? YYJSON_SUBTYPE_TRUE : YYJSON_SUBTYPE_FALSE; + unsafe_yyjson_set_type(val, YYJSON_TYPE_BOOL, subtype); + unsafe_yyjson_set_len(val, 0); +} + +yyjson_api_inline void unsafe_yyjson_set_uint(void *val, uint64_t num) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_UINT); + unsafe_yyjson_set_len(val, 0); + ((yyjson_val *)val)->uni.u64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_sint(void *val, int64_t num) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_SINT); + unsafe_yyjson_set_len(val, 0); + ((yyjson_val *)val)->uni.i64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_real(void *val, double num) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_NUM, YYJSON_SUBTYPE_REAL); + unsafe_yyjson_set_len(val, 0); + ((yyjson_val *)val)->uni.f64 = num; +} + +yyjson_api_inline void unsafe_yyjson_set_str(void *val, const char *str) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE); + unsafe_yyjson_set_len(val, strlen(str)); + ((yyjson_val *)val)->uni.str = str; +} + +yyjson_api_inline void unsafe_yyjson_set_strn(void *val, const char *str, + size_t len) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_STR, YYJSON_SUBTYPE_NONE); + unsafe_yyjson_set_len(val, len); + ((yyjson_val *)val)->uni.str = str; +} + +yyjson_api_inline void unsafe_yyjson_set_arr(void *val, size_t size) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_ARR, YYJSON_SUBTYPE_NONE); + unsafe_yyjson_set_len(val, size); +} + +yyjson_api_inline void unsafe_yyjson_set_obj(void *val, size_t size) { + unsafe_yyjson_set_type(val, YYJSON_TYPE_OBJ, YYJSON_SUBTYPE_NONE); + unsafe_yyjson_set_len(val, size); +} + + + +/*============================================================================== + * JSON Document API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_val *yyjson_doc_get_root(yyjson_doc *doc) { + return doc ? doc->root : NULL; +} + +yyjson_api_inline size_t yyjson_doc_get_read_size(yyjson_doc *doc) { + return doc ? doc->dat_read : 0; +} + +yyjson_api_inline size_t yyjson_doc_get_val_count(yyjson_doc *doc) { + return doc ? doc->val_read : 0; +} + +yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc) { + if (doc) { + yyjson_alc alc = doc->alc; + if (doc->str_pool) alc.free(alc.ctx, doc->str_pool); + alc.free(alc.ctx, doc); + } +} + + + +/*============================================================================== + * JSON Value Type API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_is_raw(yyjson_val *val) { + return val ? unsafe_yyjson_is_raw(val) : false; +} + +yyjson_api_inline bool yyjson_is_null(yyjson_val *val) { + return val ? unsafe_yyjson_is_null(val) : false; +} + +yyjson_api_inline bool yyjson_is_true(yyjson_val *val) { + return val ? unsafe_yyjson_is_true(val) : false; +} + +yyjson_api_inline bool yyjson_is_false(yyjson_val *val) { + return val ? unsafe_yyjson_is_false(val) : false; +} + +yyjson_api_inline bool yyjson_is_bool(yyjson_val *val) { + return val ? unsafe_yyjson_is_bool(val) : false; +} + +yyjson_api_inline bool yyjson_is_uint(yyjson_val *val) { + return val ? unsafe_yyjson_is_uint(val) : false; +} + +yyjson_api_inline bool yyjson_is_sint(yyjson_val *val) { + return val ? unsafe_yyjson_is_sint(val) : false; +} + +yyjson_api_inline bool yyjson_is_int(yyjson_val *val) { + return val ? unsafe_yyjson_is_int(val) : false; +} + +yyjson_api_inline bool yyjson_is_real(yyjson_val *val) { + return val ? unsafe_yyjson_is_real(val) : false; +} + +yyjson_api_inline bool yyjson_is_num(yyjson_val *val) { + return val ? unsafe_yyjson_is_num(val) : false; +} + +yyjson_api_inline bool yyjson_is_str(yyjson_val *val) { + return val ? unsafe_yyjson_is_str(val) : false; +} + +yyjson_api_inline bool yyjson_is_arr(yyjson_val *val) { + return val ? unsafe_yyjson_is_arr(val) : false; +} + +yyjson_api_inline bool yyjson_is_obj(yyjson_val *val) { + return val ? unsafe_yyjson_is_obj(val) : false; +} + +yyjson_api_inline bool yyjson_is_ctn(yyjson_val *val) { + return val ? unsafe_yyjson_is_ctn(val) : false; +} + + + +/*============================================================================== + * JSON Value Content API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_type yyjson_get_type(yyjson_val *val) { + return val ? unsafe_yyjson_get_type(val) : YYJSON_TYPE_NONE; +} + +yyjson_api_inline yyjson_subtype yyjson_get_subtype(yyjson_val *val) { + return val ? unsafe_yyjson_get_subtype(val) : YYJSON_SUBTYPE_NONE; +} + +yyjson_api_inline uint8_t yyjson_get_tag(yyjson_val *val) { + return val ? unsafe_yyjson_get_tag(val) : 0; +} + +yyjson_api_inline const char *yyjson_get_type_desc(yyjson_val *val) { + switch (yyjson_get_tag(val)) { + case YYJSON_TYPE_RAW | YYJSON_SUBTYPE_NONE: return "raw"; + case YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE: return "null"; + case YYJSON_TYPE_STR | YYJSON_SUBTYPE_NONE: return "string"; + case YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE: return "array"; + case YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE: return "object"; + case YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE: return "true"; + case YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE: return "false"; + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT: return "uint"; + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT: return "sint"; + case YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL: return "real"; + default: return "unknown"; + } +} + +yyjson_api_inline const char *yyjson_get_raw(yyjson_val *val) { + return yyjson_is_raw(val) ? unsafe_yyjson_get_raw(val) : NULL; +} + +yyjson_api_inline bool yyjson_get_bool(yyjson_val *val) { + return yyjson_is_bool(val) ? unsafe_yyjson_get_bool(val) : false; +} + +yyjson_api_inline uint64_t yyjson_get_uint(yyjson_val *val) { + return yyjson_is_int(val) ? unsafe_yyjson_get_uint(val) : 0; +} + +yyjson_api_inline int64_t yyjson_get_sint(yyjson_val *val) { + return yyjson_is_int(val) ? unsafe_yyjson_get_sint(val) : 0; +} + +yyjson_api_inline int yyjson_get_int(yyjson_val *val) { + return yyjson_is_int(val) ? unsafe_yyjson_get_int(val) : 0; +} + +yyjson_api_inline double yyjson_get_real(yyjson_val *val) { + return yyjson_is_real(val) ? unsafe_yyjson_get_real(val) : 0.0; +} + +yyjson_api_inline double yyjson_get_num(yyjson_val *val) { + return val ? unsafe_yyjson_get_num(val) : 0.0; +} + +yyjson_api_inline const char *yyjson_get_str(yyjson_val *val) { + return yyjson_is_str(val) ? unsafe_yyjson_get_str(val) : NULL; +} + +yyjson_api_inline size_t yyjson_get_len(yyjson_val *val) { + return val ? unsafe_yyjson_get_len(val) : 0; +} + +yyjson_api_inline bool yyjson_equals_str(yyjson_val *val, const char *str) { + if (yyjson_likely(val && str)) { + return unsafe_yyjson_equals_str(val, str); + } + return false; +} + +yyjson_api_inline bool yyjson_equals_strn(yyjson_val *val, const char *str, + size_t len) { + if (yyjson_likely(val && str)) { + return unsafe_yyjson_equals_strn(val, str, len); + } + return false; +} + +yyjson_api bool unsafe_yyjson_equals(yyjson_val *lhs, yyjson_val *rhs); + +yyjson_api_inline bool yyjson_equals(yyjson_val *lhs, yyjson_val *rhs) { + if (yyjson_unlikely(!lhs || !rhs)) return false; + return unsafe_yyjson_equals(lhs, rhs); +} + +yyjson_api_inline bool yyjson_set_raw(yyjson_val *val, + const char *raw, size_t len) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_raw(val, raw, len); + return true; +} + +yyjson_api_inline bool yyjson_set_null(yyjson_val *val) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_null(val); + return true; +} + +yyjson_api_inline bool yyjson_set_bool(yyjson_val *val, bool num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_bool(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_uint(yyjson_val *val, uint64_t num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_uint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_sint(yyjson_val *val, int64_t num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_sint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_int(yyjson_val *val, int num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_sint(val, (int64_t)num); + return true; +} + +yyjson_api_inline bool yyjson_set_real(yyjson_val *val, double num) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + unsafe_yyjson_set_real(val, num); + return true; +} + +yyjson_api_inline bool yyjson_set_str(yyjson_val *val, const char *str) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + if (yyjson_unlikely(!str)) return false; + unsafe_yyjson_set_str(val, str); + return true; +} + +yyjson_api_inline bool yyjson_set_strn(yyjson_val *val, + const char *str, size_t len) { + if (yyjson_unlikely(!val || unsafe_yyjson_is_ctn(val))) return false; + if (yyjson_unlikely(!str)) return false; + unsafe_yyjson_set_strn(val, str, len); + return true; +} + + + +/*============================================================================== + * JSON Array API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr) { + return yyjson_is_arr(arr) ? unsafe_yyjson_get_len(arr) : 0; +} + +yyjson_api_inline yyjson_val *yyjson_arr_get(yyjson_val *arr, size_t idx) { + if (yyjson_likely(yyjson_is_arr(arr))) { + if (yyjson_likely(unsafe_yyjson_get_len(arr) > idx)) { + yyjson_val *val = unsafe_yyjson_get_first(arr); + if (unsafe_yyjson_arr_is_flat(arr)) { + return val + idx; + } else { + while (idx-- > 0) val = unsafe_yyjson_get_next(val); + return val; + } + } + } + return NULL; +} + +yyjson_api_inline yyjson_val *yyjson_arr_get_first(yyjson_val *arr) { + if (yyjson_likely(yyjson_is_arr(arr))) { + if (yyjson_likely(unsafe_yyjson_get_len(arr) > 0)) { + return unsafe_yyjson_get_first(arr); + } + } + return NULL; +} + +yyjson_api_inline yyjson_val *yyjson_arr_get_last(yyjson_val *arr) { + if (yyjson_likely(yyjson_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(len > 0)) { + yyjson_val *val = unsafe_yyjson_get_first(arr); + if (unsafe_yyjson_arr_is_flat(arr)) { + return val + (len - 1); + } else { + while (len-- > 1) val = unsafe_yyjson_get_next(val); + return val; + } + } + } + return NULL; +} + + + +/*============================================================================== + * JSON Array Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_arr_iter_init(yyjson_val *arr, + yyjson_arr_iter *iter) { + if (yyjson_likely(yyjson_is_arr(arr) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(arr); + iter->cur = unsafe_yyjson_get_first(arr); + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_arr_iter)); + return false; +} + +yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr) { + yyjson_arr_iter iter; + yyjson_arr_iter_init(arr, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_arr_iter_has_next(yyjson_arr_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_val *yyjson_arr_iter_next(yyjson_arr_iter *iter) { + yyjson_val *val; + if (iter && iter->idx < iter->max) { + val = iter->cur; + iter->cur = unsafe_yyjson_get_next(val); + iter->idx++; + return val; + } + return NULL; +} + + + +/*============================================================================== + * JSON Object API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj) { + return yyjson_is_obj(obj) ? unsafe_yyjson_get_len(obj) : 0; +} + +yyjson_api_inline yyjson_val *yyjson_obj_get(yyjson_val *obj, + const char *key) { + return yyjson_obj_getn(obj, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_val *yyjson_obj_getn(yyjson_val *obj, + const char *_key, + size_t key_len) { + uint64_t tag = (((uint64_t)key_len) << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + if (yyjson_likely(yyjson_is_obj(obj) && _key)) { + size_t len = unsafe_yyjson_get_len(obj); + yyjson_val *key = unsafe_yyjson_get_first(obj); + while (len-- > 0) { + if (key->tag == tag && + memcmp(key->uni.ptr, _key, key_len) == 0) { + return key + 1; + } + key = unsafe_yyjson_get_next(key + 1); + } + } + return NULL; +} + + + +/*============================================================================== + * JSON Object Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_obj_iter_init(yyjson_val *obj, + yyjson_obj_iter *iter) { + if (yyjson_likely(yyjson_is_obj(obj) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(obj); + iter->cur = unsafe_yyjson_get_first(obj); + iter->obj = obj; + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_obj_iter)); + return false; +} + +yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj) { + yyjson_obj_iter iter; + yyjson_obj_iter_init(obj, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_obj_iter_has_next(yyjson_obj_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_next(yyjson_obj_iter *iter) { + if (iter && iter->idx < iter->max) { + yyjson_val *key = iter->cur; + iter->idx++; + iter->cur = unsafe_yyjson_get_next(key + 1); + return key; + } + return NULL; +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_get_val(yyjson_val *key) { + return key ? key + 1 : NULL; +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_get(yyjson_obj_iter *iter, + const char *key) { + return yyjson_obj_iter_getn(iter, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_val *yyjson_obj_iter_getn(yyjson_obj_iter *iter, + const char *key, + size_t key_len) { + if (iter && key) { + size_t idx = iter->idx; + size_t max = iter->max; + yyjson_val *cur = iter->cur; + if (yyjson_unlikely(idx == max)) { + idx = 0; + cur = unsafe_yyjson_get_first(iter->obj); + } + while (idx++ < max) { + yyjson_val *next = unsafe_yyjson_get_next(cur + 1); + if (unsafe_yyjson_get_len(cur) == key_len && + memcmp(cur->uni.str, key, key_len) == 0) { + iter->idx = idx; + iter->cur = next; + return cur + 1; + } + cur = next; + if (idx == iter->max && iter->idx < iter->max) { + idx = 0; + max = iter->idx; + cur = unsafe_yyjson_get_first(iter->obj); + } + } + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Structure (Implementation) + *============================================================================*/ + +/** + Mutable JSON value, 24 bytes. + The 'tag' and 'uni' field is same as immutable value. + The 'next' field links all elements inside the container to be a cycle. + */ +struct yyjson_mut_val { + uint64_t tag; /**< type, subtype and length */ + yyjson_val_uni uni; /**< payload */ + yyjson_mut_val *next; /**< the next value in circular linked list */ +}; + +/** + A memory chunk in string memory pool. + */ +typedef struct yyjson_str_chunk { + struct yyjson_str_chunk *next; /* next chunk linked list */ + size_t chunk_size; /* chunk size in bytes */ + /* char str[]; flexible array member */ +} yyjson_str_chunk; + +/** + A memory pool to hold all strings in a mutable document. + */ +typedef struct yyjson_str_pool { + char *cur; /* cursor inside current chunk */ + char *end; /* the end of current chunk */ + size_t chunk_size; /* chunk size in bytes while creating new chunk */ + size_t chunk_size_max; /* maximum chunk size in bytes */ + yyjson_str_chunk *chunks; /* a linked list of chunks, nullable */ +} yyjson_str_pool; + +/** + A memory chunk in value memory pool. + `sizeof(yyjson_val_chunk)` should not larger than `sizeof(yyjson_mut_val)`. + */ +typedef struct yyjson_val_chunk { + struct yyjson_val_chunk *next; /* next chunk linked list */ + size_t chunk_size; /* chunk size in bytes */ + /* char pad[sizeof(yyjson_mut_val) - sizeof(yyjson_val_chunk)]; padding */ + /* yyjson_mut_val vals[]; flexible array member */ +} yyjson_val_chunk; + +/** + A memory pool to hold all values in a mutable document. + */ +typedef struct yyjson_val_pool { + yyjson_mut_val *cur; /* cursor inside current chunk */ + yyjson_mut_val *end; /* the end of current chunk */ + size_t chunk_size; /* chunk size in bytes while creating new chunk */ + size_t chunk_size_max; /* maximum chunk size in bytes */ + yyjson_val_chunk *chunks; /* a linked list of chunks, nullable */ +} yyjson_val_pool; + +struct yyjson_mut_doc { + yyjson_mut_val *root; /**< root value of the JSON document, nullable */ + yyjson_alc alc; /**< a valid allocator, nonnull */ + yyjson_str_pool str_pool; /**< string memory pool */ + yyjson_val_pool val_pool; /**< value memory pool */ +}; + +/* Ensures the capacity to at least equal to the specified byte length. */ +yyjson_api bool unsafe_yyjson_str_pool_grow(yyjson_str_pool *pool, + const yyjson_alc *alc, + size_t len); + +/* Ensures the capacity to at least equal to the specified value count. */ +yyjson_api bool unsafe_yyjson_val_pool_grow(yyjson_val_pool *pool, + const yyjson_alc *alc, + size_t count); + +/* Allocate memory for string. */ +yyjson_api_inline char *unsafe_yyjson_mut_str_alc(yyjson_mut_doc *doc, + size_t len) { + char *mem; + const yyjson_alc *alc = &doc->alc; + yyjson_str_pool *pool = &doc->str_pool; + if (yyjson_unlikely((size_t)(pool->end - pool->cur) <= len)) { + if (yyjson_unlikely(!unsafe_yyjson_str_pool_grow(pool, alc, len + 1))) { + return NULL; + } + } + mem = pool->cur; + pool->cur = mem + len + 1; + return mem; +} + +yyjson_api_inline char *unsafe_yyjson_mut_strncpy(yyjson_mut_doc *doc, + const char *str, size_t len) { + char *mem = unsafe_yyjson_mut_str_alc(doc, len); + if (yyjson_unlikely(!mem)) return NULL; + memcpy((void *)mem, (const void *)str, len); + mem[len] = '\0'; + return mem; +} + +yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_val(yyjson_mut_doc *doc, + size_t count) { + yyjson_mut_val *val; + yyjson_alc *alc = &doc->alc; + yyjson_val_pool *pool = &doc->val_pool; + if (yyjson_unlikely((size_t)(pool->end - pool->cur) < count)) { + if (yyjson_unlikely(!unsafe_yyjson_val_pool_grow(pool, alc, count))) { + return NULL; + } + } + val = pool->cur; + pool->cur += count; + return val; +} + + + +/*============================================================================== + * Mutable JSON Document API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_root(yyjson_mut_doc *doc) { + return doc ? doc->root : NULL; +} + +yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc, + yyjson_mut_val *root) { + if (doc) doc->root = root; +} + + + +/*============================================================================== + * Mutable JSON Value Type API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_is_raw(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_raw(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_null(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_true(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_true(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_false(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_false(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_bool(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_bool(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_uint(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_uint(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_sint(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_sint(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_int(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_int(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_real(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_real(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_num(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_num(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_str(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_str(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_arr(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_arr(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_obj(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_obj(val) : false; +} + +yyjson_api_inline bool yyjson_mut_is_ctn(yyjson_mut_val *val) { + return val ? unsafe_yyjson_is_ctn(val) : false; +} + + + +/*============================================================================== + * Mutable JSON Value Content API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_type yyjson_mut_get_type(yyjson_mut_val *val) { + return yyjson_get_type((yyjson_val *)val); +} + +yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype(yyjson_mut_val *val) { + return yyjson_get_subtype((yyjson_val *)val); +} + +yyjson_api_inline uint8_t yyjson_mut_get_tag(yyjson_mut_val *val) { + return yyjson_get_tag((yyjson_val *)val); +} + +yyjson_api_inline const char *yyjson_mut_get_type_desc(yyjson_mut_val *val) { + return yyjson_get_type_desc((yyjson_val *)val); +} + +yyjson_api_inline const char *yyjson_mut_get_raw(yyjson_mut_val *val) { + return yyjson_get_raw((yyjson_val *)val); +} + +yyjson_api_inline bool yyjson_mut_get_bool(yyjson_mut_val *val) { + return yyjson_get_bool((yyjson_val *)val); +} + +yyjson_api_inline uint64_t yyjson_mut_get_uint(yyjson_mut_val *val) { + return yyjson_get_uint((yyjson_val *)val); +} + +yyjson_api_inline int64_t yyjson_mut_get_sint(yyjson_mut_val *val) { + return yyjson_get_sint((yyjson_val *)val); +} + +yyjson_api_inline int yyjson_mut_get_int(yyjson_mut_val *val) { + return yyjson_get_int((yyjson_val *)val); +} + +yyjson_api_inline double yyjson_mut_get_real(yyjson_mut_val *val) { + return yyjson_get_real((yyjson_val *)val); +} + +yyjson_api_inline double yyjson_mut_get_num(yyjson_mut_val *val) { + return yyjson_get_num((yyjson_val *)val); +} + +yyjson_api_inline const char *yyjson_mut_get_str(yyjson_mut_val *val) { + return yyjson_get_str((yyjson_val *)val); +} + +yyjson_api_inline size_t yyjson_mut_get_len(yyjson_mut_val *val) { + return yyjson_get_len((yyjson_val *)val); +} + +yyjson_api_inline bool yyjson_mut_equals_str(yyjson_mut_val *val, + const char *str) { + return yyjson_equals_str((yyjson_val *)val, str); +} + +yyjson_api_inline bool yyjson_mut_equals_strn(yyjson_mut_val *val, + const char *str, size_t len) { + return yyjson_equals_strn((yyjson_val *)val, str, len); +} + +yyjson_api bool unsafe_yyjson_mut_equals(yyjson_mut_val *lhs, + yyjson_mut_val *rhs); + +yyjson_api_inline bool yyjson_mut_equals(yyjson_mut_val *lhs, + yyjson_mut_val *rhs) { + if (yyjson_unlikely(!lhs || !rhs)) return false; + return unsafe_yyjson_mut_equals(lhs, rhs); +} + +yyjson_api_inline bool yyjson_mut_set_raw(yyjson_mut_val *val, + const char *raw, size_t len) { + if (yyjson_unlikely(!val || !raw)) return false; + unsafe_yyjson_set_raw(val, raw, len); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_null(yyjson_mut_val *val) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_null(val); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_bool(yyjson_mut_val *val, bool num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_bool(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_uint(yyjson_mut_val *val, uint64_t num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_uint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_sint(yyjson_mut_val *val, int64_t num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_sint(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_int(yyjson_mut_val *val, int num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_sint(val, (int64_t)num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_real(yyjson_mut_val *val, double num) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_real(val, num); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_str(yyjson_mut_val *val, + const char *str) { + if (yyjson_unlikely(!val || !str)) return false; + unsafe_yyjson_set_str(val, str); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_strn(yyjson_mut_val *val, + const char *str, size_t len) { + if (yyjson_unlikely(!val || !str)) return false; + unsafe_yyjson_set_strn(val, str, len); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_arr(yyjson_mut_val *val) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_arr(val, 0); + return true; +} + +yyjson_api_inline bool yyjson_mut_set_obj(yyjson_mut_val *val) { + if (yyjson_unlikely(!val)) return false; + unsafe_yyjson_set_obj(val, 0); + return true; +} + + + +/*============================================================================== + * Mutable JSON Value Creation API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_raw(yyjson_mut_doc *doc, + const char *str) { + if (yyjson_likely(str)) return yyjson_mut_rawn(doc, str, strlen(str)); + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawn(yyjson_mut_doc *doc, + const char *str, + size_t len) { + if (yyjson_likely(doc && str)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; + val->uni.str = str; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawcpy(yyjson_mut_doc *doc, + const char *str) { + if (yyjson_likely(str)) return yyjson_mut_rawncpy(doc, str, strlen(str)); + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_rawncpy(yyjson_mut_doc *doc, + const char *str, + size_t len) { + if (yyjson_likely(doc && str)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + char *new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_likely(val && new_str)) { + val->tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW; + val->uni.str = new_str; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_null(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_true(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_false(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_bool(yyjson_mut_doc *doc, + bool _val) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_BOOL | (uint8_t)((uint8_t)_val << 3); + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_uint(yyjson_mut_doc *doc, + uint64_t num) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + val->uni.u64 = num; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_sint(yyjson_mut_doc *doc, + int64_t num) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = num; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_int(yyjson_mut_doc *doc, + int64_t num) { + return yyjson_mut_sint(doc, num); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_real(yyjson_mut_doc *doc, + double num) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + val->uni.f64 = num; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc, + const char *str) { + if (yyjson_likely(str)) return yyjson_mut_strn(doc, str, strlen(str)); + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc, + const char *str, + size_t len) { + if (yyjson_likely(doc && str)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = str; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc, + const char *str) { + if (yyjson_likely(str)) return yyjson_mut_strncpy(doc, str, strlen(str)); + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc, + const char *str, + size_t len) { + if (yyjson_likely(doc && str)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + char *new_str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_likely(val && new_str)) { + val->tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = new_str; + return val; + } + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Array API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_mut_arr_size(yyjson_mut_val *arr) { + return yyjson_mut_is_arr(arr) ? unsafe_yyjson_get_len(arr) : 0; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get(yyjson_mut_val *arr, + size_t idx) { + if (yyjson_likely(idx < yyjson_mut_arr_size(arr))) { + yyjson_mut_val *val = (yyjson_mut_val *)arr->uni.ptr; + while (idx-- > 0) val = val->next; + return val->next; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_first( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_arr_size(arr) > 0)) { + return ((yyjson_mut_val *)arr->uni.ptr)->next; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_last( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_arr_size(arr) > 0)) { + return ((yyjson_mut_val *)arr->uni.ptr); + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Array Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_arr_iter_init(yyjson_mut_val *arr, + yyjson_mut_arr_iter *iter) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(arr); + iter->cur = iter->max ? (yyjson_mut_val *)arr->uni.ptr : NULL; + iter->pre = NULL; + iter->arr = arr; + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_mut_arr_iter)); + return false; +} + +yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with( + yyjson_mut_val *arr) { + yyjson_mut_arr_iter iter; + yyjson_mut_arr_iter_init(arr, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_mut_arr_iter_has_next(yyjson_mut_arr_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_next( + yyjson_mut_arr_iter *iter) { + if (iter && iter->idx < iter->max) { + yyjson_mut_val *val = iter->cur; + iter->pre = val; + iter->cur = val->next; + iter->idx++; + return iter->cur; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_remove( + yyjson_mut_arr_iter *iter) { + if (yyjson_likely(iter && 0 < iter->idx && iter->idx <= iter->max)) { + yyjson_mut_val *prev = iter->pre; + yyjson_mut_val *cur = iter->cur; + yyjson_mut_val *next = cur->next; + if (yyjson_unlikely(iter->idx == iter->max)) iter->arr->uni.ptr = prev; + iter->idx--; + iter->max--; + unsafe_yyjson_set_len(iter->arr, iter->max); + prev->next = next; + iter->cur = next; + return cur; + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Array Creation API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE; + return val; + } + } + return NULL; +} + +#define yyjson_mut_arr_with_func(func) \ + if (yyjson_likely(doc && ((0 < count && count < \ + (~(size_t)0) / sizeof(yyjson_mut_val) && vals) || count == 0))) { \ + yyjson_mut_val *arr = unsafe_yyjson_mut_val(doc, 1 + count); \ + if (yyjson_likely(arr)) { \ + arr->tag = ((uint64_t)count << YYJSON_TAG_BIT) | YYJSON_TYPE_ARR; \ + if (count > 0) { \ + size_t i; \ + for (i = 0; i < count; i++) { \ + yyjson_mut_val *val = arr + i + 1; \ + func \ + val->next = val + 1; \ + } \ + arr[count].next = arr + 1; \ + arr->uni.ptr = arr + count; \ + } \ + return arr; \ + } \ + } \ + return NULL + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_bool( + yyjson_mut_doc *doc, const bool *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_BOOL | (uint8_t)((uint8_t)vals[i] << 3); + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint( + yyjson_mut_doc *doc, const int64_t *vals, size_t count) { + return yyjson_mut_arr_with_sint64(doc, vals, count); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count) { + return yyjson_mut_arr_with_uint64(doc, vals, count); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_real( + yyjson_mut_doc *doc, const double *vals, size_t count) { + return yyjson_mut_arr_with_double(doc, vals, count); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint8( + yyjson_mut_doc *doc, const int8_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = (int64_t)vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint16( + yyjson_mut_doc *doc, const int16_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint32( + yyjson_mut_doc *doc, const int32_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint64( + yyjson_mut_doc *doc, const int64_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint8( + yyjson_mut_doc *doc, const uint8_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + val->uni.u64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint16( + yyjson_mut_doc *doc, const uint16_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + val->uni.u64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint32( + yyjson_mut_doc *doc, const uint32_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + val->uni.u64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint64( + yyjson_mut_doc *doc, const uint64_t *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + val->uni.u64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_float( + yyjson_mut_doc *doc, const float *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + val->uni.f64 = (double)vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_double( + yyjson_mut_doc *doc, const double *vals, size_t count) { + yyjson_mut_arr_with_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + val->uni.f64 = vals[i]; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_str( + yyjson_mut_doc *doc, const char **vals, size_t count) { + yyjson_mut_arr_with_func({ + uint64_t len = (uint64_t)strlen(vals[i]); + val->tag = (len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = vals[i]; + if (yyjson_unlikely(!val->uni.str)) return NULL; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strn( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count) { + if (yyjson_unlikely(count > 0 && !lens)) return NULL; + yyjson_mut_arr_with_func({ + val->tag = ((uint64_t)lens[i] << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = vals[i]; + if (yyjson_unlikely(!val->uni.str)) return NULL; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strcpy( + yyjson_mut_doc *doc, const char **vals, size_t count) { + size_t len; + const char *str; + yyjson_mut_arr_with_func({ + str = vals[i]; + if (!str) return NULL; + len = strlen(str); + val->tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!val->uni.str)) return NULL; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strncpy( + yyjson_mut_doc *doc, const char **vals, const size_t *lens, size_t count) { + size_t len; + const char *str; + if (yyjson_unlikely(count > 0 && !lens)) return NULL; + yyjson_mut_arr_with_func({ + str = vals[i]; + len = lens[i]; + val->tag = ((uint64_t)len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = unsafe_yyjson_mut_strncpy(doc, str, len); + if (yyjson_unlikely(!val->uni.str)) return NULL; + }); +} + +#undef yyjson_mut_arr_with_func + + + +/*============================================================================== + * Mutable JSON Array Modification API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr, + yyjson_mut_val *val, size_t idx) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(idx <= len)) { + unsafe_yyjson_set_len(arr, len + 1); + if (len == 0) { + val->next = val; + arr->uni.ptr = val; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + if (idx == len) { + prev->next = val; + val->next = next; + arr->uni.ptr = val; + } else { + while (idx-- > 0) { + prev = next; + next = next->next; + } + prev->next = val; + val->next = next; + } + } + return true; + } + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_append(yyjson_mut_val *arr, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + unsafe_yyjson_set_len(arr, len + 1); + if (len == 0) { + val->next = val; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + prev->next = val; + val->next = next; + } + arr->uni.ptr = val; + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_prepend(yyjson_mut_val *arr, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + unsafe_yyjson_set_len(arr, len + 1); + if (len == 0) { + val->next = val; + arr->uni.ptr = val; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + prev->next = val; + val->next = next; + } + return true; + } + return false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_replace(yyjson_mut_val *arr, + size_t idx, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(idx < len)) { + if (yyjson_likely(len > 1)) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + while (idx-- > 0) { + prev = next; + next = next->next; + } + prev->next = val; + val->next = next->next; + if ((void *)next == arr->uni.ptr) arr->uni.ptr = val; + return next; + } else { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + val->next = val; + arr->uni.ptr = val; + return prev; + } + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove(yyjson_mut_val *arr, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(idx < len)) { + unsafe_yyjson_set_len(arr, len - 1); + if (yyjson_likely(len > 1)) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + while (idx-- > 0) { + prev = next; + next = next->next; + } + prev->next = next->next; + if ((void *)next == arr->uni.ptr) arr->uni.ptr = prev; + return next; + } else { + return ((yyjson_mut_val *)arr->uni.ptr); + } + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_first( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (len > 1) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + prev->next = next->next; + unsafe_yyjson_set_len(arr, len - 1); + return next; + } else if (len == 1) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + unsafe_yyjson_set_len(arr, 0); + return prev; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_last( + yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_likely(len > 1)) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + yyjson_mut_val *next = prev->next; + unsafe_yyjson_set_len(arr, len - 1); + while (--len > 0) prev = prev->next; + prev->next = next; + next = (yyjson_mut_val *)arr->uni.ptr; + arr->uni.ptr = prev; + return next; + } else if (len == 1) { + yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr); + unsafe_yyjson_set_len(arr, 0); + return prev; + } + } + return NULL; +} + +yyjson_api_inline bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr, + size_t _idx, size_t _len) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + yyjson_mut_val *prev, *next; + bool tail_removed; + size_t len = unsafe_yyjson_get_len(arr); + if (yyjson_unlikely(_idx + _len > len)) return false; + if (yyjson_unlikely(_len == 0)) return true; + unsafe_yyjson_set_len(arr, len - _len); + if (yyjson_unlikely(len == _len)) return true; + tail_removed = (_idx + _len == len); + prev = ((yyjson_mut_val *)arr->uni.ptr); + while (_idx-- > 0) prev = prev->next; + next = prev->next; + while (_len-- > 0) next = next->next; + prev->next = next; + if (yyjson_unlikely(tail_removed)) arr->uni.ptr = prev; + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_clear(yyjson_mut_val *arr) { + if (yyjson_likely(yyjson_mut_is_arr(arr))) { + unsafe_yyjson_set_len(arr, 0); + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_rotate(yyjson_mut_val *arr, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_arr(arr) && + unsafe_yyjson_get_len(arr) > idx)) { + yyjson_mut_val *val = (yyjson_mut_val *)arr->uni.ptr; + while (idx-- > 0) val = val->next; + arr->uni.ptr = (void *)val; + return true; + } + return false; +} + + + +/*============================================================================== + * Mutable JSON Array Modification Convenience API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_arr_add_val(yyjson_mut_val *arr, + yyjson_mut_val *val) { + return yyjson_mut_arr_append(arr, val); +} + +yyjson_api_inline bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_null(doc); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_true(doc); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_false(doc); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + bool _val) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_bool(doc, _val); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + uint64_t num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_uint(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_sint(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + int64_t num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_sint(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + double num) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_real(doc, num); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_str(doc, str); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, size_t len) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_strn(doc, str, len); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_strcpy(doc, str); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *arr, + const char *str, size_t len) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_strncpy(doc, str, len); + return yyjson_mut_arr_append(arr, val); + } + return false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_arr(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_arr(doc); + return yyjson_mut_arr_append(arr, val) ? val : NULL; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_obj(yyjson_mut_doc *doc, + yyjson_mut_val *arr) { + if (yyjson_likely(doc && yyjson_mut_is_arr(arr))) { + yyjson_mut_val *val = yyjson_mut_obj(doc); + return yyjson_mut_arr_append(arr, val) ? val : NULL; + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Object API (Implementation) + *============================================================================*/ + +yyjson_api_inline size_t yyjson_mut_obj_size(yyjson_mut_val *obj) { + return yyjson_mut_is_obj(obj) ? unsafe_yyjson_get_len(obj) : 0; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_get(yyjson_mut_val *obj, + const char *key) { + return yyjson_mut_obj_getn(obj, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_getn(yyjson_mut_val *obj, + const char *_key, + size_t key_len) { + uint64_t tag = (((uint64_t)key_len) << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + size_t len = yyjson_mut_obj_size(obj); + if (yyjson_likely(len && _key)) { + yyjson_mut_val *key = ((yyjson_mut_val *)obj->uni.ptr)->next->next; + while (len-- > 0) { + if (key->tag == tag && + memcmp(key->uni.ptr, _key, key_len) == 0) { + return key->next; + } + key = key->next->next; + } + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Object Iterator API (Implementation) + *============================================================================*/ + +yyjson_api_inline bool yyjson_mut_obj_iter_init(yyjson_mut_val *obj, + yyjson_mut_obj_iter *iter) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && iter)) { + iter->idx = 0; + iter->max = unsafe_yyjson_get_len(obj); + iter->cur = iter->max ? (yyjson_mut_val *)obj->uni.ptr : NULL; + iter->pre = NULL; + iter->obj = obj; + return true; + } + if (iter) memset(iter, 0, sizeof(yyjson_mut_obj_iter)); + return false; +} + +yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with( + yyjson_mut_val *obj) { + yyjson_mut_obj_iter iter; + yyjson_mut_obj_iter_init(obj, &iter); + return iter; +} + +yyjson_api_inline bool yyjson_mut_obj_iter_has_next(yyjson_mut_obj_iter *iter) { + return iter ? iter->idx < iter->max : false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_next( + yyjson_mut_obj_iter *iter) { + if (iter && iter->idx < iter->max) { + yyjson_mut_val *key = iter->cur; + iter->pre = key; + iter->cur = key->next->next; + iter->idx++; + return iter->cur; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get_val( + yyjson_mut_val *key) { + return key ? key->next : NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_remove( + yyjson_mut_obj_iter *iter) { + if (yyjson_likely(iter && 0 < iter->idx && iter->idx <= iter->max)) { + yyjson_mut_val *prev = iter->pre; + yyjson_mut_val *cur = iter->cur; + yyjson_mut_val *next = cur->next->next; + if (yyjson_unlikely(iter->idx == iter->max)) iter->obj->uni.ptr = prev; + iter->idx--; + iter->max--; + unsafe_yyjson_set_len(iter->obj, iter->max); + prev->next->next = next; + iter->cur = prev; + return cur->next; + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get( + yyjson_mut_obj_iter *iter, const char *key) { + return yyjson_mut_obj_iter_getn(iter, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_getn( + yyjson_mut_obj_iter *iter, const char *key, size_t key_len) { + if (iter && key) { + size_t idx = 0; + size_t max = iter->max; + yyjson_mut_val *pre, *cur = iter->cur; + while (idx++ < max) { + pre = cur; + cur = cur->next->next; + if (unsafe_yyjson_get_len(cur) == key_len && + memcmp(cur->uni.str, key, key_len) == 0) { + iter->idx += idx; + if (iter->idx > max) iter->idx -= max + 1; + iter->pre = pre; + iter->cur = cur; + return cur->next; + } + } + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Object Creation API (Implementation) + *============================================================================*/ + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj(yyjson_mut_doc *doc) { + if (yyjson_likely(doc)) { + yyjson_mut_val *val = unsafe_yyjson_mut_val(doc, 1); + if (yyjson_likely(val)) { + val->tag = YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE; + return val; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_str(yyjson_mut_doc *doc, + const char **keys, + const char **vals, + size_t count) { + if (yyjson_likely(doc && ((count > 0 && keys && vals) || (count == 0)))) { + yyjson_mut_val *obj = unsafe_yyjson_mut_val(doc, 1 + count * 2); + if (yyjson_likely(obj)) { + obj->tag = ((uint64_t)count << YYJSON_TAG_BIT) | YYJSON_TYPE_OBJ; + if (count > 0) { + size_t i; + for (i = 0; i < count; i++) { + yyjson_mut_val *key = obj + (i * 2 + 1); + yyjson_mut_val *val = obj + (i * 2 + 2); + uint64_t key_len = (uint64_t)strlen(keys[i]); + uint64_t val_len = (uint64_t)strlen(vals[i]); + key->tag = (key_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->tag = (val_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + key->uni.str = keys[i]; + val->uni.str = vals[i]; + key->next = val; + val->next = val + 1; + } + obj[count * 2].next = obj + 1; + obj->uni.ptr = obj + (count * 2 - 1); + } + return obj; + } + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_kv(yyjson_mut_doc *doc, + const char **pairs, + size_t count) { + if (yyjson_likely(doc && ((count > 0 && pairs) || (count == 0)))) { + yyjson_mut_val *obj = unsafe_yyjson_mut_val(doc, 1 + count * 2); + if (yyjson_likely(obj)) { + obj->tag = ((uint64_t)count << YYJSON_TAG_BIT) | YYJSON_TYPE_OBJ; + if (count > 0) { + size_t i; + for (i = 0; i < count; i++) { + yyjson_mut_val *key = obj + (i * 2 + 1); + yyjson_mut_val *val = obj + (i * 2 + 2); + const char *key_str = pairs[i * 2 + 0]; + const char *val_str = pairs[i * 2 + 1]; + uint64_t key_len = (uint64_t)strlen(key_str); + uint64_t val_len = (uint64_t)strlen(val_str); + key->tag = (key_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->tag = (val_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + key->uni.str = key_str; + val->uni.str = val_str; + key->next = val; + val->next = val + 1; + } + obj[count * 2].next = obj + 1; + obj->uni.ptr = obj + (count * 2 - 1); + } + return obj; + } + } + return NULL; +} + + + +/*============================================================================== + * Mutable JSON Object Modification API (Implementation) + *============================================================================*/ + +yyjson_api_inline void unsafe_yyjson_mut_obj_add(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val, + size_t len) { + if (yyjson_likely(len)) { + yyjson_mut_val *prev_val = ((yyjson_mut_val *)obj->uni.ptr)->next; + yyjson_mut_val *next_key = prev_val->next; + prev_val->next = key; + val->next = next_key; + } else { + val->next = key; + } + key->next = val; + obj->uni.ptr = (void *)key; + unsafe_yyjson_set_len(obj, len + 1); +} + +yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_obj_remove( + yyjson_mut_val *obj, const char *key, size_t key_len, uint64_t key_tag) { + size_t obj_len = unsafe_yyjson_get_len(obj); + if (obj_len) { + yyjson_mut_val *pre_key = (yyjson_mut_val *)obj->uni.ptr; + yyjson_mut_val *cur_key = pre_key->next->next; + yyjson_mut_val *removed_item = NULL; + size_t i; + for (i = 0; i < obj_len; i++) { + if (key_tag == cur_key->tag && + memcmp(key, cur_key->uni.ptr, key_len) == 0) { + if (!removed_item) removed_item = cur_key->next; + cur_key = cur_key->next->next; + pre_key->next->next = cur_key; + if (i + 1 == obj_len) obj->uni.ptr = pre_key; + i--; + obj_len--; + } else { + pre_key = cur_key; + cur_key = cur_key->next->next; + } + } + unsafe_yyjson_set_len(obj, obj_len); + return removed_item; + } else { + return NULL; + } +} + +yyjson_api_inline bool unsafe_yyjson_mut_obj_replace(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + size_t key_len = unsafe_yyjson_get_len(key); + size_t obj_len = unsafe_yyjson_get_len(obj); + if (obj_len) { + yyjson_mut_val *pre_key = (yyjson_mut_val *)obj->uni.ptr; + yyjson_mut_val *cur_key = pre_key->next->next; + size_t i; + for (i = 0; i < obj_len; i++) { + if (key->tag == cur_key->tag && + memcmp(key->uni.str, cur_key->uni.ptr, key_len) == 0) { + cur_key->next->tag = val->tag; + cur_key->next->uni.u64 = val->uni.u64; + return true; + } else { + cur_key = cur_key->next->next; + } + } + } + return false; +} + +yyjson_api_inline void unsafe_yyjson_mut_obj_rotate(yyjson_mut_val *obj, + size_t idx) { + yyjson_mut_val *key = (yyjson_mut_val *)obj->uni.ptr; + while (idx-- > 0) key = key->next->next; + obj->uni.ptr = (void *)key; +} + +yyjson_api_inline bool yyjson_mut_obj_add(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + yyjson_mut_is_str(key) && val)) { + unsafe_yyjson_mut_obj_add(obj, key, val, unsafe_yyjson_get_len(obj)); + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_obj_put(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + bool replaced = false; + size_t key_len; + yyjson_mut_obj_iter iter; + yyjson_mut_val *cur_key; + if (yyjson_unlikely(!yyjson_mut_is_obj(obj) || + !yyjson_mut_is_str(key))) return false; + key_len = unsafe_yyjson_get_len(key); + yyjson_mut_obj_iter_init(obj, &iter); + while ((cur_key = yyjson_mut_obj_iter_next(&iter))) { + if (key->tag == cur_key->tag && + memcmp(key->uni.str, cur_key->uni.ptr, key_len) == 0) { + if (!replaced && val) { + replaced = true; + val->next = cur_key->next->next; + cur_key->next = val; + } else { + yyjson_mut_obj_iter_remove(&iter); + } + } + } + if (!replaced && val) unsafe_yyjson_mut_obj_add(obj, key, val, iter.max); + return true; +} + +yyjson_api_inline bool yyjson_mut_obj_insert(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + yyjson_mut_is_str(key) && val)) { + size_t len = unsafe_yyjson_get_len(obj); + if (yyjson_likely(len >= idx)) { + if (len > idx) { + void *ptr = obj->uni.ptr; + unsafe_yyjson_mut_obj_rotate(obj, idx); + unsafe_yyjson_mut_obj_add(obj, key, val, len); + obj->uni.ptr = ptr; + } else { + unsafe_yyjson_mut_obj_add(obj, key, val, len); + } + return true; + } + } + return false; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove(yyjson_mut_val *obj, + yyjson_mut_val *key) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && yyjson_mut_is_str(key))) { + return unsafe_yyjson_mut_obj_remove(obj, key->uni.str, + unsafe_yyjson_get_len(key), + key->tag); + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_key( + yyjson_mut_val *obj, const char *key) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && key)) { + size_t key_len = strlen(key); + uint64_t tag = ((uint64_t)key_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + return unsafe_yyjson_mut_obj_remove(obj, key, key_len, tag); + } + return NULL; +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_keyn( + yyjson_mut_val *obj, const char *key, size_t key_len) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && key)) { + uint64_t tag = ((uint64_t)key_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + return unsafe_yyjson_mut_obj_remove(obj, key, key_len, tag); + } + return NULL; +} + +yyjson_api_inline bool yyjson_mut_obj_clear(yyjson_mut_val *obj) { + if (yyjson_likely(yyjson_mut_is_obj(obj))) { + unsafe_yyjson_set_len(obj, 0); + return true; + } + return false; +} + +yyjson_api_inline bool yyjson_mut_obj_replace(yyjson_mut_val *obj, + yyjson_mut_val *key, + yyjson_mut_val *val) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + yyjson_mut_is_str(key) && val)) { + return unsafe_yyjson_mut_obj_replace(obj, key, val); + } + return false; +} + +yyjson_api_inline bool yyjson_mut_obj_rotate(yyjson_mut_val *obj, + size_t idx) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && + unsafe_yyjson_get_len(obj) > idx)) { + unsafe_yyjson_mut_obj_rotate(obj, idx); + return true; + } + return false; +} + + + +/*============================================================================== + * Mutable JSON Object Modification Convenience API (Implementation) + *============================================================================*/ + +#define yyjson_mut_obj_add_func(func) \ + if (yyjson_likely(doc && yyjson_mut_is_obj(obj) && _key)) { \ + yyjson_mut_val *key = unsafe_yyjson_mut_val(doc, 2); \ + if (yyjson_likely(key)) { \ + size_t len = unsafe_yyjson_get_len(obj); \ + yyjson_mut_val *val = key + 1; \ + key->tag = YYJSON_TYPE_STR | YYJSON_SUBTYPE_NONE; \ + key->tag |= (uint64_t)strlen(_key) << YYJSON_TAG_BIT; \ + key->uni.str = _key; \ + func \ + unsafe_yyjson_mut_obj_add(obj, key, val, len); \ + return true; \ + } \ + } \ + return false + +yyjson_api_inline bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_TRUE; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_BOOL | YYJSON_SUBTYPE_FALSE; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + bool _val) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_BOOL | (uint8_t)((uint8_t)(_val) << 3); + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + uint64_t _val) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_UINT; + val->uni.u64 = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + int64_t _val) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + int64_t _val) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_SINT; + val->uni.i64 = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + double _val) { + yyjson_mut_obj_add_func({ + val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL; + val->uni.f64 = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val->tag = ((uint64_t)strlen(_val) << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val, + size_t _len) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val->tag = ((uint64_t)_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + val->uni.str = _val; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + size_t _len = strlen(_val); + val->uni.str = unsafe_yyjson_mut_strncpy(doc, _val, _len); + if (yyjson_unlikely(!val->uni.str)) return false; + val->tag = ((uint64_t)_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + const char *_val, + size_t _len) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val->uni.str = unsafe_yyjson_mut_strncpy(doc, _val, _len); + if (yyjson_unlikely(!val->uni.str)) return false; + val->tag = ((uint64_t)_len << YYJSON_TAG_BIT) | YYJSON_TYPE_STR; + }); +} + +yyjson_api_inline bool yyjson_mut_obj_add_val(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *_key, + yyjson_mut_val *_val) { + if (yyjson_unlikely(!_val)) return false; + yyjson_mut_obj_add_func({ + val = _val; + }); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_str(yyjson_mut_val *obj, + const char *key) { + return yyjson_mut_obj_remove_strn(obj, key, key ? strlen(key) : 0); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_strn( + yyjson_mut_val *obj, const char *_key, size_t _len) { + if (yyjson_likely(yyjson_mut_is_obj(obj) && _key)) { + yyjson_mut_val *key; + yyjson_mut_obj_iter iter; + yyjson_mut_val *val_removed = NULL; + yyjson_mut_obj_iter_init(obj, &iter); + while ((key = yyjson_mut_obj_iter_next(&iter)) != NULL) { + if (unsafe_yyjson_get_len(key) == _len && + memcmp(key->uni.str, _key, _len) == 0) { + if (!val_removed) val_removed = key->next; + yyjson_mut_obj_iter_remove(&iter); + } + } + return val_removed; + } + return NULL; +} + +yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + const char *new_key) { + if (!key || !new_key) return false; + return yyjson_mut_obj_rename_keyn(doc, obj, key, strlen(key), + new_key, strlen(new_key)); +} + +yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc, + yyjson_mut_val *obj, + const char *key, + size_t len, + const char *new_key, + size_t new_len) { + char *cpy_key = NULL; + yyjson_mut_val *old_key; + yyjson_mut_obj_iter iter; + if (!doc || !obj || !key || !new_key) return false; + yyjson_mut_obj_iter_init(obj, &iter); + while ((old_key = yyjson_mut_obj_iter_next(&iter))) { + if (unsafe_yyjson_equals_strn((void *)old_key, key, len)) { + if (!cpy_key) { + cpy_key = unsafe_yyjson_mut_strncpy(doc, new_key, new_len); + if (!cpy_key) return false; + } + yyjson_mut_set_strn(old_key, cpy_key, new_len); + } + } + return cpy_key != NULL; +} + + + +/*============================================================================== + * JSON Pointer API (Implementation) + *============================================================================*/ + +#define yyjson_ptr_set_err(_code, _msg) do { \ + if (err) { \ + err->code = YYJSON_PTR_ERR_##_code; \ + err->msg = _msg; \ + err->pos = 0; \ + } \ +} while(false) + +/* require: val != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_val *unsafe_yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t len, + yyjson_ptr_err *err); + +/* require: val != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_mut_val *unsafe_yyjson_mut_ptr_getx(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/* require: val/new_val/doc != NULL, *ptr == '/', len > 0 */ +yyjson_api bool unsafe_yyjson_mut_ptr_putx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, bool insert_new, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +/* require: val/err != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_mut_val *unsafe_yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err); + +/* require: val/err != NULL, *ptr == '/', len > 0 */ +yyjson_api yyjson_mut_val *unsafe_yyjson_mut_ptr_removex(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err); + +yyjson_api_inline yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc, + const char *ptr) { + if (yyjson_unlikely(!ptr)) return NULL; + return yyjson_doc_ptr_getn(doc, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc, + const char *ptr, size_t len) { + return yyjson_doc_ptr_getx(doc, ptr, len, NULL); +} + +yyjson_api_inline yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc, + const char *ptr, size_t len, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return doc->root; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_ptr_getx(doc->root, ptr, len, err); +} + +yyjson_api_inline yyjson_val *yyjson_ptr_get(yyjson_val *val, + const char *ptr) { + if (yyjson_unlikely(!ptr)) return NULL; + return yyjson_ptr_getn(val, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_val *yyjson_ptr_getn(yyjson_val *val, + const char *ptr, size_t len) { + return yyjson_ptr_getx(val, ptr, len, NULL); +} + +yyjson_api_inline yyjson_val *yyjson_ptr_getx(yyjson_val *val, + const char *ptr, size_t len, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (yyjson_unlikely(!val || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return val; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_ptr_getx(val, ptr, len, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_get(yyjson_mut_doc *doc, + const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_doc_ptr_getn(doc, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc *doc, + const char *ptr, + size_t len) { + return yyjson_mut_doc_ptr_getx(doc, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc *doc, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return doc->root; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_getx(doc->root, ptr, len, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_get(yyjson_mut_val *val, + const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_ptr_getn(val, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val, + const char *ptr, + size_t len) { + return yyjson_mut_ptr_getx(val, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + return val; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_getx(val, ptr, len, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_doc_ptr_addn(doc, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc, + const char *ptr, + size_t len, + yyjson_mut_val *new_val) { + return yyjson_mut_doc_ptr_addx(doc, ptr, len, new_val, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr || !new_val)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + if (doc->root) { + yyjson_ptr_set_err(SET_ROOT, "cannot set document's root"); + return false; + } else { + doc->root = new_val; + return true; + } + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + if (yyjson_unlikely(!doc->root && !create_parent)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return false; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_mut_val *root = yyjson_mut_obj(doc); + if (yyjson_unlikely(!root)) { + yyjson_ptr_set_err(MEMORY_ALLOCATION, "failed to create value"); + return false; + } + if (unsafe_yyjson_mut_ptr_putx(root, ptr, len, new_val, doc, + create_parent, true, ctx, err)) { + doc->root = root; + return true; + } + return false; + } + return unsafe_yyjson_mut_ptr_putx(doc->root, ptr, len, new_val, doc, + create_parent, true, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_ptr_add(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_ptr_addn(val, ptr, strlen(ptr), new_val, doc); +} + +yyjson_api_inline bool yyjson_mut_ptr_addn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + return yyjson_mut_ptr_addx(val, ptr, len, new_val, doc, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_ptr_addx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr || !new_val || !doc)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return false; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + return unsafe_yyjson_mut_ptr_putx(val, ptr, len, new_val, + doc, create_parent, true, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc, + const char *ptr, + yyjson_mut_val *new_val) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_doc_ptr_setn(doc, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val) { + return yyjson_mut_doc_ptr_setx(doc, ptr, len, new_val, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + if (ctx) ctx->old = doc->root; + doc->root = new_val; + return true; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + if (!new_val) { + if (!doc->root) { + yyjson_ptr_set_err(RESOLVE, "JSON pointer cannot be resolved"); + return false; + } + return !!unsafe_yyjson_mut_ptr_removex(doc->root, ptr, len, ctx, err); + } + if (yyjson_unlikely(!doc->root && !create_parent)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return false; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_mut_val *root = yyjson_mut_obj(doc); + if (yyjson_unlikely(!root)) { + yyjson_ptr_set_err(MEMORY_ALLOCATION, "failed to create value"); + return false; + } + if (unsafe_yyjson_mut_ptr_putx(root, ptr, len, new_val, doc, + create_parent, false, ctx, err)) { + doc->root = root; + return true; + } + return false; + } + return unsafe_yyjson_mut_ptr_putx(doc->root, ptr, len, new_val, doc, + create_parent, false, ctx, err); +} + +yyjson_api_inline bool yyjson_mut_ptr_set(yyjson_mut_val *val, + const char *ptr, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + if (yyjson_unlikely(!ptr)) return false; + return yyjson_mut_ptr_setn(val, ptr, strlen(ptr), new_val, doc); +} + +yyjson_api_inline bool yyjson_mut_ptr_setn(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc) { + return yyjson_mut_ptr_setx(val, ptr, len, new_val, doc, true, NULL, NULL); +} + +yyjson_api_inline bool yyjson_mut_ptr_setx(yyjson_mut_val *val, + const char *ptr, size_t len, + yyjson_mut_val *new_val, + yyjson_mut_doc *doc, + bool create_parent, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr || !doc)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return false; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return false; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return false; + } + if (!new_val) { + return !!unsafe_yyjson_mut_ptr_removex(val, ptr, len, ctx, err); + } + return unsafe_yyjson_mut_ptr_putx(val, ptr, len, new_val, doc, + create_parent, false, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replace( + yyjson_mut_doc *doc, const char *ptr, yyjson_mut_val *new_val) { + if (!ptr) return NULL; + return yyjson_mut_doc_ptr_replacen(doc, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacen( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val) { + return yyjson_mut_doc_ptr_replacex(doc, ptr, len, new_val, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacex( + yyjson_mut_doc *doc, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr || !new_val)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_mut_val *root = doc->root; + if (yyjson_unlikely(!root)) { + yyjson_ptr_set_err(RESOLVE, "JSON pointer cannot be resolved"); + return NULL; + } + if (ctx) ctx->old = root; + doc->root = new_val; + return root; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_replacex(doc->root, ptr, len, new_val, + ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replace( + yyjson_mut_val *val, const char *ptr, yyjson_mut_val *new_val) { + if (!ptr) return NULL; + return yyjson_mut_ptr_replacen(val, ptr, strlen(ptr), new_val); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacen( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val) { + return yyjson_mut_ptr_replacex(val, ptr, len, new_val, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacex( + yyjson_mut_val *val, const char *ptr, size_t len, yyjson_mut_val *new_val, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr || !new_val)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return NULL; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_replacex(val, ptr, len, new_val, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_remove( + yyjson_mut_doc *doc, const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_doc_ptr_removen(doc, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removen( + yyjson_mut_doc *doc, const char *ptr, size_t len) { + return yyjson_mut_doc_ptr_removex(doc, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removex( + yyjson_mut_doc *doc, const char *ptr, size_t len, + yyjson_ptr_ctx *ctx, yyjson_ptr_err *err) { + + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!doc || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(!doc->root)) { + yyjson_ptr_set_err(NULL_ROOT, "document's root is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_mut_val *root = doc->root; + if (ctx) ctx->old = root; + doc->root = NULL; + return root; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_removex(doc->root, ptr, len, ctx, err); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_remove(yyjson_mut_val *val, + const char *ptr) { + if (!ptr) return NULL; + return yyjson_mut_ptr_removen(val, ptr, strlen(ptr)); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val *val, + const char *ptr, + size_t len) { + return yyjson_mut_ptr_removex(val, ptr, len, NULL, NULL); +} + +yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val *val, + const char *ptr, + size_t len, + yyjson_ptr_ctx *ctx, + yyjson_ptr_err *err) { + yyjson_ptr_set_err(NONE, NULL); + if (ctx) memset(ctx, 0, sizeof(*ctx)); + + if (yyjson_unlikely(!val || !ptr)) { + yyjson_ptr_set_err(PARAMETER, "input parameter is NULL"); + return NULL; + } + if (yyjson_unlikely(len == 0)) { + yyjson_ptr_set_err(SET_ROOT, "cannot set root"); + return NULL; + } + if (yyjson_unlikely(*ptr != '/')) { + yyjson_ptr_set_err(SYNTAX, "no prefix '/'"); + return NULL; + } + return unsafe_yyjson_mut_ptr_removex(val, ptr, len, ctx, err); +} + +yyjson_api_inline bool yyjson_ptr_ctx_append(yyjson_ptr_ctx *ctx, + yyjson_mut_val *key, + yyjson_mut_val *val) { + yyjson_mut_val *ctn, *pre_key, *pre_val, *cur_key, *cur_val; + if (!ctx || !ctx->ctn || !val) return false; + ctn = ctx->ctn; + + if (yyjson_mut_is_obj(ctn)) { + if (!key) return false; + key->next = val; + pre_key = ctx->pre; + if (unsafe_yyjson_get_len(ctn) == 0) { + val->next = key; + ctn->uni.ptr = key; + ctx->pre = key; + } else if (!pre_key) { + pre_key = (yyjson_mut_val *)ctn->uni.ptr; + pre_val = pre_key->next; + val->next = pre_val->next; + pre_val->next = key; + ctn->uni.ptr = key; + ctx->pre = pre_key; + } else { + cur_key = pre_key->next->next; + cur_val = cur_key->next; + val->next = cur_val->next; + cur_val->next = key; + if (ctn->uni.ptr == cur_key) ctn->uni.ptr = key; + ctx->pre = cur_key; + } + } else { + pre_val = ctx->pre; + if (unsafe_yyjson_get_len(ctn) == 0) { + val->next = val; + ctn->uni.ptr = val; + ctx->pre = val; + } else if (!pre_val) { + pre_val = (yyjson_mut_val *)ctn->uni.ptr; + val->next = pre_val->next; + pre_val->next = val; + ctn->uni.ptr = val; + ctx->pre = pre_val; + } else { + cur_val = pre_val->next; + val->next = cur_val->next; + cur_val->next = val; + if (ctn->uni.ptr == cur_val) ctn->uni.ptr = val; + ctx->pre = cur_val; + } + } + unsafe_yyjson_inc_len(ctn); + return true; +} + +yyjson_api_inline bool yyjson_ptr_ctx_replace(yyjson_ptr_ctx *ctx, + yyjson_mut_val *val) { + yyjson_mut_val *ctn, *pre_key, *cur_key, *pre_val, *cur_val; + if (!ctx || !ctx->ctn || !ctx->pre || !val) return false; + ctn = ctx->ctn; + if (yyjson_mut_is_obj(ctn)) { + pre_key = ctx->pre; + pre_val = pre_key->next; + cur_key = pre_val->next; + cur_val = cur_key->next; + /* replace current value */ + cur_key->next = val; + val->next = cur_val->next; + ctx->old = cur_val; + } else { + pre_val = ctx->pre; + cur_val = pre_val->next; + /* replace current value */ + if (pre_val != cur_val) { + val->next = cur_val->next; + pre_val->next = val; + if (ctn->uni.ptr == cur_val) ctn->uni.ptr = val; + } else { + val->next = val; + ctn->uni.ptr = val; + ctx->pre = val; + } + ctx->old = cur_val; + } + return true; +} + +yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx) { + yyjson_mut_val *ctn, *pre_key, *pre_val, *cur_key, *cur_val; + size_t len; + if (!ctx || !ctx->ctn || !ctx->pre) return false; + ctn = ctx->ctn; + if (yyjson_mut_is_obj(ctn)) { + pre_key = ctx->pre; + pre_val = pre_key->next; + cur_key = pre_val->next; + cur_val = cur_key->next; + /* remove current key-value */ + pre_val->next = cur_val->next; + if (ctn->uni.ptr == cur_key) ctn->uni.ptr = pre_key; + ctx->pre = NULL; + ctx->old = cur_val; + } else { + pre_val = ctx->pre; + cur_val = pre_val->next; + /* remove current key-value */ + pre_val->next = cur_val->next; + if (ctn->uni.ptr == cur_val) ctn->uni.ptr = pre_val; + ctx->pre = NULL; + ctx->old = cur_val; + } + len = unsafe_yyjson_get_len(ctn) - 1; + if (len == 0) ctn->uni.ptr = NULL; + unsafe_yyjson_set_len(ctn, len); + return true; +} + +#undef yyjson_ptr_set_err + + + +/*============================================================================== + * JSON Value at Pointer API (Implementation) + *============================================================================*/ + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type bool. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_bool( + yyjson_val *root, const char *ptr, bool *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_bool(val)) { + *value = unsafe_yyjson_get_bool(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type uint. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_uint( + yyjson_val *root, const char *ptr, uint64_t *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_uint(val)) { + *value = unsafe_yyjson_get_uint(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type sint. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_sint( + yyjson_val *root, const char *ptr, int64_t *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_sint(val)) { + *value = unsafe_yyjson_get_sint(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type real. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_real( + yyjson_val *root, const char *ptr, double *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_real(val)) { + *value = unsafe_yyjson_get_real(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type sint, + uint or real. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_num( + yyjson_val *root, const char *ptr, double *value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_num(val)) { + *value = unsafe_yyjson_get_num(val); + return true; + } else { + return false; + } +} + +/** + Set provided `value` if the JSON Pointer (RFC 6901) exists and is type string. + Returns true if value at `ptr` exists and is the correct type, otherwise false. + */ +yyjson_api_inline bool yyjson_ptr_get_str( + yyjson_val *root, const char *ptr, const char **value) { + yyjson_val *val = yyjson_ptr_get(root, ptr); + if (value && yyjson_is_str(val)) { + *value = unsafe_yyjson_get_str(val); + return true; + } else { + return false; + } +} + + + +/*============================================================================== + * Deprecated + *============================================================================*/ + +/** @deprecated renamed to `yyjson_doc_ptr_get` */ +yyjson_deprecated("renamed to yyjson_doc_ptr_get") +yyjson_api_inline yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc, + const char *ptr) { + return yyjson_doc_ptr_get(doc, ptr); +} + +/** @deprecated renamed to `yyjson_doc_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_doc_ptr_getn") +yyjson_api_inline yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc, + const char *ptr, + size_t len) { + return yyjson_doc_ptr_getn(doc, ptr, len); +} + +/** @deprecated renamed to `yyjson_mut_doc_ptr_get` */ +yyjson_deprecated("renamed to yyjson_mut_doc_ptr_get") +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointer( + yyjson_mut_doc *doc, const char *ptr) { + return yyjson_mut_doc_ptr_get(doc, ptr); +} + +/** @deprecated renamed to `yyjson_mut_doc_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_mut_doc_ptr_getn") +yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_pointern( + yyjson_mut_doc *doc, const char *ptr, size_t len) { + return yyjson_mut_doc_ptr_getn(doc, ptr, len); +} + +/** @deprecated renamed to `yyjson_ptr_get` */ +yyjson_deprecated("renamed to yyjson_ptr_get") +yyjson_api_inline yyjson_val *yyjson_get_pointer(yyjson_val *val, + const char *ptr) { + return yyjson_ptr_get(val, ptr); +} + +/** @deprecated renamed to `yyjson_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_ptr_getn") +yyjson_api_inline yyjson_val *yyjson_get_pointern(yyjson_val *val, + const char *ptr, + size_t len) { + return yyjson_ptr_getn(val, ptr, len); +} + +/** @deprecated renamed to `yyjson_mut_ptr_get` */ +yyjson_deprecated("renamed to yyjson_mut_ptr_get") +yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val, + const char *ptr) { + return yyjson_mut_ptr_get(val, ptr); +} + +/** @deprecated renamed to `yyjson_mut_ptr_getn` */ +yyjson_deprecated("renamed to yyjson_mut_ptr_getn") +yyjson_api_inline yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val, + const char *ptr, + size_t len) { + return yyjson_mut_ptr_getn(val, ptr, len); +} + +/** @deprecated renamed to `yyjson_mut_ptr_getn` */ +yyjson_deprecated("renamed to unsafe_yyjson_ptr_getn") +yyjson_api_inline yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val, + const char *ptr, + size_t len) { + yyjson_ptr_err err; + return unsafe_yyjson_ptr_getx(val, ptr, len, &err); +} + +/** @deprecated renamed to `unsafe_yyjson_mut_ptr_getx` */ +yyjson_deprecated("renamed to unsafe_yyjson_mut_ptr_getx") +yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_get_pointer( + yyjson_mut_val *val, const char *ptr, size_t len) { + yyjson_ptr_err err; + return unsafe_yyjson_mut_ptr_getx(val, ptr, len, NULL, &err); +} + + + +/*============================================================================== + * Compiler Hint End + *============================================================================*/ + +#if defined(__clang__) +# pragma clang diagnostic pop +#elif defined(__GNUC__) +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# pragma GCC diagnostic pop +# endif +#elif defined(_MSC_VER) +# pragma warning(pop) +#endif /* warning suppress end */ + +#ifdef __cplusplus +} +#endif /* extern "C" end */ + +#endif /* YYJSON_H */ diff --git a/meson.build b/meson.build index 0af687d..d8ec305 100644 --- a/meson.build +++ b/meson.build @@ -1,8 +1,10 @@ project( - 'draconis++', 'cpp', + 'draconis++', ['cpp', 'objcpp'], version: '0.1.0', default_options: [ - 'cpp_std=c++26', + 'objc_std=c++20', + 'objcpp_std=c++20', + 'cpp_std=c++20', 'default_library=static', 'warning_level=everything', 'buildtype=debugoptimized' @@ -12,6 +14,21 @@ project( clangtidy = find_program('clang-tidy', required: false) cpp = meson.get_compiler('cpp') +objcpp = meson.get_compiler('objcpp') + +add_project_arguments( + objcpp.get_supported_arguments([ + '-Wno-c++20-compat', + '-Wno-c++98-compat', + '-Wno-c++98-compat-pedantic', + '-Wno-missing-prototypes', + '-Wno-padded', + '-Wno-pre-c++20-compat-pedantic', + '-Wno-switch-default', + '-Wunused-function', + ]), + language: 'objcpp' +) add_project_arguments( cpp.get_supported_arguments([ @@ -22,7 +39,7 @@ add_project_arguments( '-Wno-padded', '-Wno-pre-c++20-compat-pedantic', '-Wno-switch-default', - '-Wunused-function' + '-Wunused-function', ]), language: 'cpp' ) @@ -40,7 +57,11 @@ if host_machine.system() == 'linux' endif if host_machine.system() == 'darwin' - source_file_names += ['src/os/macos.cpp'] + source_file_names += [ + 'src/os/macos.cpp', + 'src/os/macos/NowPlayingBridge.h', + 'src/os/macos/NowPlayingBridge.mm' + ] endif sources = [] @@ -49,16 +70,16 @@ foreach file : source_file_names sources += files(file) endforeach -quill = subproject('quill') - deps = [] deps += cpp.find_library('cpr') deps += cpp.find_library('curl') deps += cpp.find_library('tomlplusplus') -deps += dependency('boost', static: true) +deps += dependency('coost') deps += dependency('fmt') -deps += quill.get_variable('quill_dep') +deps += dependency('Foundation') +deps += dependency('MediaPlayer') + if host_machine.system() == 'linux' deps += dependency('playerctl') @@ -73,5 +94,7 @@ executable( 'draconis++', sources, dependencies: deps, - include_directories: incdir + include_directories: incdir, + objc_args: ['-fobjc-arc'], + link_args: ['-framework', 'Foundation', '-framework', 'MediaPlayer'] ) diff --git a/src/config/config.cpp b/src/config/config.cpp index 3ad95d3..04c65b0 100644 --- a/src/config/config.cpp +++ b/src/config/config.cpp @@ -1,9 +1,3 @@ -#include -#include -#include -#include -#include - #include "config.h" #define DEFINE_GETTER(class_name, type, name) \ @@ -21,9 +15,11 @@ DEFINE_GETTER(Weather, const string, ApiKey) DEFINE_GETTER(Weather, const string, Units) const Config& Config::getInstance() { - static const Config& INSTANCE = - *new Config(rfl::toml::load("./config.toml").value()); - return INSTANCE; + static const auto* INSTANCE = + new Config(rfl::toml::load("./config.toml").value()); + static std::once_flag Flag; + std::call_once(Flag, [] { std::atexit([] { delete INSTANCE; }); }); + return *INSTANCE; } Config::Config(General general, NowPlaying now_playing, Weather weather) diff --git a/src/config/config.h b/src/config/config.h index 6b9cd13..00b7121 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -1,13 +1,9 @@ -#pragma once - -#include +#include #include #include #include +#include #include -#include -#include -#include #include using std::string; @@ -29,7 +25,7 @@ class Weather { public: Weather(Location location, string api_key, string units); - [[nodiscard]] boost::json::object getWeatherInfo() const; + [[nodiscard]] co::Json getWeatherInfo() const; [[nodiscard]] const Location getLocation() const; [[nodiscard]] const string getApiKey() const; [[nodiscard]] const string getUnits() const; diff --git a/src/config/weather.cpp b/src/config/weather.cpp index 673d39a..9ad216d 100644 --- a/src/config/weather.cpp +++ b/src/config/weather.cpp @@ -1,83 +1,77 @@ -#include -#include -#include -#include - #include "config.h" -using namespace std; -using namespace chrono; -using namespace boost; - // Function to read cache from file -optional> ReadCacheFromFile() { +std::optional> +ReadCacheFromFile() { const string cacheFile = "/tmp/weather_cache.json"; - ifstream ifs(cacheFile); + std::ifstream ifs(cacheFile); if (!ifs.is_open()) { fmt::println("Cache file not found."); - return nullopt; + return std::nullopt; } fmt::println("Reading from cache file..."); - json::object cachedData; - system_clock::time_point timestamp; + co::Json val; + std::chrono::system_clock::time_point timestamp; try { - json::value val; - ifs >> val; - cachedData = val.as_object(); + std::stringstream buf; + buf << ifs.rdbuf(); - string tsStr = cachedData["timestamp"].as_string().c_str(); - timestamp = system_clock::time_point(milliseconds(stoll(tsStr))); + val.parse_from(buf.str()); - cachedData.erase("timestamp"); + string tsStr = val["timestamp"].as_string().c_str(); + timestamp = std::chrono::system_clock::time_point( + std::chrono::milliseconds(stoll(tsStr))); + + val.erase("timestamp"); } catch (...) { fmt::println(stderr, "Failed to read from cache file."); - return nullopt; + return std::nullopt; } fmt::println("Successfully read from cache file."); - return make_pair(cachedData, timestamp); + return make_pair(val, timestamp); } // Function to write cache to file -void WriteCacheToFile(const json::object& data) { +void WriteCacheToFile(const co::Json& data) { const string cacheFile = "/tmp/weather_cache.json"; fmt::println("Writing to cache file..."); - ofstream ofs(cacheFile); + std::ofstream ofs(cacheFile); if (!ofs.is_open()) { fmt::println(stderr, "Failed to open cache file for writing."); return; } - json::object dataToWrite = data; + data["timestamp"] = + std::to_string(duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count()); - dataToWrite["timestamp"] = to_string( - duration_cast(system_clock::now().time_since_epoch()) - .count()); - - ofs << json::serialize(dataToWrite); + ofs << data.as_string(); fmt::println("Successfully wrote to cache file."); } // Function to make API request -json::object MakeApiRequest(const string& url) { +co::Json MakeApiRequest(const string& url) { using namespace cpr; fmt::println("Making API request..."); const Response res = Get(Url {url}); fmt::println("Received response from API."); - json::value json = json::parse(res.text); - return json.as_object(); + co::Json json = json::parse(res.text); + + return json; } // Core function to get weather information -json::object Weather::getWeatherInfo() const { +co::Json Weather::getWeatherInfo() const { using namespace cpr; const Location loc = m_Location; @@ -86,10 +80,11 @@ json::object Weather::getWeatherInfo() const { // Check if cache is valid if (auto cachedData = ReadCacheFromFile()) { - auto [data, timestamp] = *cachedData; + auto& [data, timestamp] = *cachedData; - if (system_clock::now() - timestamp < - minutes(10)) { // Assuming cache duration is always 10 minutes + if (std::chrono::system_clock::now() - timestamp < + std::chrono::minutes( + 10)) { // Assuming cache duration is always 10 minutes fmt::println("Cache is valid. Returning cached data."); return data; } @@ -99,7 +94,7 @@ json::object Weather::getWeatherInfo() const { fmt::println("No valid cache found."); } - json::object result; + co::Json result; if (holds_alternative(loc)) { const string city = get(loc); diff --git a/src/main.cpp b/src/main.cpp index 60f5f61..2f5bd2f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,17 +1,10 @@ -#include -#include +#include #include -#include #include #include -#include -#include -#include -#include -#include -#include #include "config/config.h" +#include "os/macos/NowPlayingBridge.h" #include "os/os.h" using std::string; @@ -49,9 +42,10 @@ DateNum ParseDate(string const& input) { return Default; } -int main() { - using boost::json::object; - using std::time_t; +int main(int argc, char** argv) { + flag::parse(argc, argv); + + LOG << "hello " << 23; const Config& config = Config::getInstance(); @@ -97,12 +91,13 @@ int main() { fmt::println("{:%B} {}, {:%-I:%0M %p}", localTime, date, localTime); - object json = config.getWeather().getWeatherInfo(); + co::Json json = config.getWeather().getWeatherInfo(); + const int temp = json.get("main", "temp").as_int(); const char* townName = json["name"].is_string() ? json["name"].as_string().c_str() : "Unknown"; - fmt::println("{}", townName); + fmt::println("It is {}°F in {}", temp, townName); return 0; } diff --git a/src/os/linux.cpp b/src/os/linux.cpp index c881e69..1c3506a 100644 --- a/src/os/linux.cpp +++ b/src/os/linux.cpp @@ -1,8 +1,9 @@ #ifdef __linux__ #include -#include #include +#include + #include "os.h" using std::string; diff --git a/src/os/macos.cpp b/src/os/macos.cpp index 775f984..b788cb6 100644 --- a/src/os/macos.cpp +++ b/src/os/macos.cpp @@ -1,12 +1,14 @@ #ifdef __APPLE__ -#include #include +#include + +#include "macos/NowPlayingBridge.h" #include "os.h" uint64_t GetMemInfo() { uint64_t mem = 0; - size_t size = sizeof(mem); + size_t size = sizeof(mem); sysctlbyname("hw.memsize", &mem, &size, nullptr, 0); @@ -14,7 +16,7 @@ uint64_t GetMemInfo() { } std::string GetNowPlaying() { - return ""; + return getCurrentPlayingTitle(); } #endif diff --git a/src/os/macos/NowPlayingBridge.h b/src/os/macos/NowPlayingBridge.h new file mode 100644 index 0000000..0cbfe85 --- /dev/null +++ b/src/os/macos/NowPlayingBridge.h @@ -0,0 +1,14 @@ +// NowPlayingBridge.h + +#ifdef __OBJC__ +#import + +@interface NowPlayingBridge : NSObject ++ (NSDictionary*)currentPlayingMetadata; +@end +#else +extern "C" { +const char* getCurrentPlayingTitle(); +const char* getCurrentPlayingArtist(); +} +#endif diff --git a/src/os/macos/NowPlayingBridge.mm b/src/os/macos/NowPlayingBridge.mm new file mode 100644 index 0000000..dae0296 --- /dev/null +++ b/src/os/macos/NowPlayingBridge.mm @@ -0,0 +1,90 @@ +// NowPlayingBridge.mm + +#import "NowPlayingBridge.h" +#import +#import +#import + +typedef void (*MRMediaRemoteGetNowPlayingInfoFunction)( + dispatch_queue_t queue, void (^handler)(NSDictionary *information)); + +@implementation NowPlayingBridge + ++ (NSDictionary *)currentPlayingMetadata { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wold-style-cast" + + CFURLRef ref = (__bridge CFURLRef) + [NSURL fileURLWithPath: + @"/System/Library/PrivateFrameworks/MediaRemote.framework"]; + +#pragma clang diagnostic pop + + CFBundleRef bundle = CFBundleCreate(kCFAllocatorDefault, ref); + + if (!bundle) { + NSLog(@"Failed to load MediaRemote framework"); + return nil; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wold-style-cast" + + MRMediaRemoteGetNowPlayingInfoFunction MRMediaRemoteGetNowPlayingInfo = + (MRMediaRemoteGetNowPlayingInfoFunction)CFBundleGetFunctionPointerForName( + bundle, CFSTR("MRMediaRemoteGetNowPlayingInfo")); + +#pragma clang diagnostic pop + + if (!MRMediaRemoteGetNowPlayingInfo) { + NSLog(@"Failed to get function pointer for MRMediaRemoteGetNowPlayingInfo"); + CFRelease(bundle); + return nil; + } + + __block NSDictionary *nowPlayingInfo = nil; + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + + MRMediaRemoteGetNowPlayingInfo( + dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), + ^(NSDictionary *information) { + nowPlayingInfo = [information copy]; + dispatch_semaphore_signal(semaphore); + }); + + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + + CFRelease(bundle); + return nowPlayingInfo; +} + +@end + +extern "C" { + +const char *getCurrentPlayingTitle() { + NSDictionary *metadata = [NowPlayingBridge currentPlayingMetadata]; + if (metadata == nil) { + return nullptr; + } + NSString *title = + [metadata objectForKey:@"kMRMediaRemoteNowPlayingInfoTitle"]; + if (title) { + return strdup([title UTF8String]); + } + return nullptr; +} + +const char *getCurrentPlayingArtist() { + NSDictionary *metadata = [NowPlayingBridge currentPlayingMetadata]; + if (metadata == nil) { + return nullptr; + } + NSString *artist = + [metadata objectForKey:@"kMRMediaRemoteNowPlayingInfoArtist"]; + if (artist) { + return strdup([artist UTF8String]); + } + return nullptr; +} +} diff --git a/subprojects/packagecache/quill-4.2.0.tar.gz b/subprojects/packagecache/quill-4.2.0.tar.gz deleted file mode 100644 index ebbf9a3d6cedd4bb9152a3838faef1f7b26905c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1290165 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%0DJiH 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 z z@_7}+9!mo*4k;-7O^9`cXpzg<^wh!}(Z5quwKQS1I9o9&II$>jGS;S86tFD(mu|Ay zP4J6uu~G^A6~|w3`jw_%6V%wm1pYx!Ptem7^mNR|r{JH=M27!r;lEqycP>e9NX4kR zB>W}7?eQ}{pTzIkH2AAIUZjAg)9M*^3IzWeYAZ91@0gy1Ut>!f=oh|ttf85HEx})n z^b7w12<=6I%@c9{D?yFrV|aO!O%8U}WhUNnJH1>;+Ja@n_iykO?zQ{}=BCW`si`tI zumxE9hNF)zeFJbn={qc|%=L1ew90kTD%VNIgJo`rm$@Nc?uK-^8z#zJE_b~gl_ttj zX`&pJVs;rCl)lUsWZ4^9%HGjh?hdxv%T0EfRgo-nS=37?eODQ3B+I-7_My@voi2BM zvh)pXw<>o-8Dg^?uG|ev%G}Uc?uIg#As(gF4Qz8QdqWw1VY_na8(_aK&2cePXdFYK z&S9p0t|_SpiaJJIFtPKax^z#9AL+zG?&dBOPltKVY~u$cE$4{hTsEkQ4H$d<4jVXF~n>ZZZtter)G?^Vy08=WnB_B7GbazEbFYJ?Jvwwt`>1f z8&tY0cV*S!Hlp>^GT z-XNDSq1Oa0B1(`l%*zt>Wu@Ji3%%4N7E9z#zb>pwmQWQymyc#j@3r?}LBMYzVGSP0kTmstB)}EXm zVZTP`S`9fe9CV_%4=Mx-p?l!R#i>X^5TERxElb+VKmspvN(U3ka4A&)8ACUOm0O}x zNjlX!d!^ROe*$B=Ddiy%@mnGT!vN(`1X-rm=}QH!!L$NV2m+eZs92*xDQG;-pLDrp z)xn7O@jxn!Oc3F24$NCPKC|gbTVR0UX2rYTF*L9?LbIqkU#|3u7X@5`f%BG`tYg(> zLAfv~3Q5!n#}RV~HmoDCc7Y} zaZvy&k2CorEn&IXDv`n6xR!N?t9Ol7FOs@)(S1c|s`KV>Bs9|3h0cp$ge?-rV*;%j zBYQ=)RdtH1io+5v)`zt(AeCP1Uc6?g#Y=ahvLVwA=y>AkR0y0389K1JK}x_>0Ib6` zT5%Yfd!B#~3!MOxWj#p=Rl}={^;o$T`B5I;B1-zHB6nCelCeH+g;;S2r&eqXLPitl zt-c~8`X@wNa8ARuiM%wI@Aqjq4~~^y6i-MTS6+D8zA9am>C&qCiE;sg9U#rou2Xe) zr2b-?8r-!Ed5BVMBU{D-dw{=QlnH_nsNiCn#agQLYEv-_3V(z-UlSVY2u8zwSi~4W zVfC=KvcL-tDk-z9tfMDmiACipd_tCwejhScF4 z#jKI>r;%elqK#GMDGcvaxyOVARMth{**}+cSKbxbnIXuo`l{T6kZYRKlIrue2ml13 zPT+Oy+=#Tk7TT+|yQqFPaw2;r#6w&tsH1qYk{iD?k}&?Jw1s-}tYmRH}1GmFea z0+Y@;k{pC>q;;8#F!l#@DRf#yRO+|SDkGr?Wpu{o^oR}&^hU#j5gi7mI;WcENRJaB zJduzhiK8VBX{%SkVH%h^m9sM3l&WAMb!|k1>Ps{f*zyQoOM^2L@vR%BM50o|IBbox z{JX4gBs6_l>>FzfqVPf$o2couAp+L$TcHT}M*)NstBi^AzaW#OGdX7#vdXwBGc{!; zyHbL-I(Ou>x!r-9V7DR~>?w*)1vfdNV%?Jnk~EeD;{->#sU4d~_)b8Ka&==3&b3}3 zRGbDFg;$3Wn7RN1xK>f|JbzdTkv;vx3vHQaN{_J{$1#2y{bC?5f(fr=R30_Je+j`7 z!ad1e0-7R^P-e}w1eOHaK;4|M#wQRn3nq(F>MS_jobgr=5?JRCQ$8TYavA6f&|;qH z#du?gFg{$f3#_N6N+8}j1VOIU)cN}~8AiD0aDwELKsTy0m|il)pkl)g%ly^WFT9ATQ{NvqsLUJo{k z9BQ*Qv`ptKZE&2CoJ`3FNeZ>tF}(Ju6x*U449;zF>>W7#(nr*;u46UpF1Nnpge#Cx z_0`O-m(CYMCp=@vQN~G0HuB80AfQ%rAgphEJ=^1v?Ji&1W!+*dtcTgfhBZ-P^mSkK`h~XEXr8IpkFqGNaSl15ORxiufi6v|2WpUIDlUyh#`~Z5Xuqw+)6@%%9JVirBPRZ)_yr8|P*f?g)pgNz& zu$<=ruW@3Cx)B^eM|O>A9NC;moQ3@Y4B1SVv!-et52>`w3{@rNt|2Vl!X-d1eHT)Y zw6kze|G*GqyrEEccpdkfmxy(MK421-vJTUird<$S#@+5D+awf<7vCpn8mX7|42}Q~ zs=Bv-=U^P$|6DTg3|AAX)1-3jt_39VDe+x1hFoy;Y-RwM_(*{g6XnAk85oY1NaCb` z6G;;|tdzHiM|FTEvRG*6g_C&K_&DtNtboGY)e<3m|m+xo;KJa^l?>dk*mx6aOBteDH|(b z*qIUz+`!xs!8JZ4LZE;Or2LhRs)Bk$bpqiWU+7Y3!Qc+Ux(6xTCB(D#1c zW&lI=bT_xc8y*UU)`UZAYZx8Su?^NPrUx*-M}JCOLh{Hn#;1}K`QU^vTlBVW61kc6 zdUAwQNd7&RPUrN$anv~IK+J}5uV)e^?U>zU>f+j4is{^O2e-SL*RrNXA<0UW8O)}- z(pM#MtDM0vg@~Qb0XpY`>q@M(JO|@e;-NT4ZHU^$;~5dfnM?<=GHMJ8LlHgK=#AE2 zUPxb*w)2_sEE%OyQf7l^S2W|IghoOrLETvHs}gn|8L)t;!Mubzdf<49dlB5hxmfOe zA$x^u(RMH}P&RzBaG?`BmD%oQzs7aI1^i+oDhelz%jDDB=U@ zL)WT5>V4pWO+|Qowj53^7wk8hJzyr{)=aj0n%|=HkDzst6(Mifv?4sfB;yz@3fxD4 zEU=aMMKwv`d&J#e=ZBp81<+nyE}!B#-0Ad2RlrM=fZRdg#rQ{%SKHKeTj;LNp2uj5 zP8|n_Kzg{gb+Gmz@ev_Op8|)4ou-~?6Br|o4I$%a)1zS9rwy9(N40A*Ym~D9_&AR! zgrm?6G%7$og_$$whQ+l0d$L%;C`&P#a!=|UhYF8_=lF^3FU+1$z@buJaGmiQ9=+VY zhi%e%lv#n7u%LjoJlKeMIux~LV8p&!rQkP1S02d1@C*kAcaz9QpD4Prc&T{~*CV{R z9-a0ptlca{Hai%B=gja~&S#*c26oI9KAV|VT+ADmv4)!KMT+0fGuBZa3X7+Ev}7T4 zxs`cgZF^D_nu(*T%3};W$QaPDzhr}dK(5y*?L((akB;q4*@S2&T_|65Z7qGG? ztIrC7l_<%RCs1al8k|lOA4;G~ZD(_7c`C8mQ&gd{#BWS=Z($cW>*vx0@ zA1Hn&aal%8p?*U1^j7`&k!%JYe(9(b<;}GwG}00pS6&MV=JAgy0QC>TcAnDn1bkKA z<1_3!%U(`vhsPAFgCC0=aG^{%O6QVQbPQG}t8@PyEc$fBeoH0R$-YN0wj&a*s3Ps*2fV%v5kO#Mc#Dg0vk3O z`BLM6kefoA7rT+k$R-$#(Z5|9f)`r!65eS2%D_=+Mqmv#=xEbfNVjNffL=|T;Qp`m zH#Xs)<5?42&5cX&uh_J~{%C5!KSo(Ywf^RY2Ji*svzY`(c59}FvLfYhMgT#m>Yg^@dN7Rtnp$z6A4BOd4`P;?Bihjvmp!y>02X9`XP7ts`NE0nTpgGy{v{h z5Tw_ZsY2826i)CuT5J{is?;-0t*spIn(+3pi6l5>H$!<1{{9(Jnl)8G>Bfe+r*wqC z>Dr<3VwCO)_Von|X+3VREkxw^s0w3ZKZVmNpR`iQ(`f!qq1|B2W1%`GVh!Oej+%_a zv0G5~)qvt8Ot_TcQ+#F;0A~b2QKFW!KxrI>)F}3}`w7r;ala$WGR+-UKOuPt9^oD? zBbI}TC^Sw!IE*t{qAyFZ6!3e1Z30VbwT2o0>MK~gu_@3*3lUx@Bq0#ZNN1M>_TZKl z4|ZuOtb4L#?zx3HfpN={2EA-E+!YP?g(A^l-(aaoFRq3PAGT9v_EC)t1pz8xDX~Br z3j0>lR4zce*>Gg5si0x>SMv8`*&cRmqXYtK&7{N8&YA$x4AJjNr^wqXKirwG3A!D& z1D)E%(3~02UQxA3WDefdwZ1>t7w#PC3-u3|jI=8txN~q0${UmvK@JeKz%luhJToa{ zvo%hSu!r+bFyCoNBOyDJP%|I}bS0B6B4`;xRaRizQhb!wpm-nmnrWqy@({xb;gaTN zGeHG{j8PrLBBu%qBuC9S&$%_RcA~~$On%VgC6ybPr*w&UE{UXyIttp%)F5h6_~tvy z>Kw6`h$t-Wu9yqHaL%|_c#`8bN7b)6;0;j*jQY)Ge5y}HCglmp%#nJiSlJV>(wO{P zF7A3RDWr;siIuY!cp2|O|J+FbaNkI%KROg<)DSAKC@I5LFRs+8I$}_!hsTcKQ29;; z#j`+3LrfW2mn4q$wPL8ZVJWP{G)m*B;1g)gREA<@sOU^0VPtGmyu`7jz;~Ag79Eg~uGBYKRWT>0Ki3#+-_Q zw}4iakpx(1NC!T6nT=2Ed0C?DJ zi>6FDmba)X!!tUWv>aq2k-5Nj)6yvqg# zGE+d45<-1d9?Jg^Mn3ru)2}>eoTQ8jt3KQCiuK>o4ZCf>B z`dfz5`%oP=%?)7K;2p-`8s>5L?<^nRriqgk9VxK|VCydHd$Pg$Gt zP+Y(QhqCan7FHZ(0vX~`@z_3P12ovEz!3=#fvj4GQ_GD$_`X^{_dzon2a?mA(t*Bd zS~{*nl%t7IKh)S9|&Wg7;H8wUcsR6t1TGlzH=BebM!WZgMn=&e1 z_8aionI?@flFk@6uLL5>t(Hd!Z%#xZU?Gb@YyzrYcIuaWIzkwv80kd;`4Id|myq5{ z=XI?v6-$SlKaCJk;t}nB_Tq^|25ACA5qCiH2;3lzd*qd){$&xngtaHT&mk?O)qz_8 z0D~__RhY*lcmwrNM8ES?EuNT?&K9c`t|nF);Jtc$o+Cf zSF;T)U{0AeXwibwL5NIL>#K6=98l30qOJ0&VlAcJCK$N^3ckY*f&GL)I>4(#`+}vKVa2fZ5|u^R3ZxL}j}`^UxFt z49vH@{(&-JKXX6^$1uI4ih(UjCzmxcw7_C4w87?^tqMFIh!TuzHZs+g?`g!k@fYEPD3r@vHyG^i;`F24M;DyZ zxYhDlhn$(D3|Ca`M9oCugEl=#R%ujp}}ka}zbd0|#}t|%vCaQ-YM zWo+U_+ez+1$wHl0maU_s`wGGw0oNctJJkn9?IwvFNfB|u$!kt6S?K(T-YkL@(P5~i z1~Go%OfV?mzqBxdg6P~#!i3-=h|A(n%IE6+5-Qq5PhngX*pv%cXo?`|-Qr)6wsIxab7zueBHD}`y zWr9+AoKzy2La&TOC`L`Ac?`tUP%L4AA0OrQOd>ySrMSCNx&9z%9jMyXL+(QU782py`hq9ogX}cCa-FopVXmLAidz_X?65?3q+Z%CBocZziFyvl znz##$M2t{e*(+>Bsr(p|08MZsC7&}aMIP?r)xBABL5wPaSbi9bpmB;q57J~6Mvtch z1)azT9v&mRhm3hT()GQ~r9KLF}t)QcR#ZWB0lBDyK<;*hd}XP9t%5sR0Hm{61tCad69 zX-uc{xgr`}1|!DV>ckS7K14LoP>yr}DuEjSbQiXCi|4VjH)Mf&!q?Fijs!cv%O{Z~ zTzff!ouyOt=`j&H3mLe!uoC*KAq=htF`&@bA)+g_w6ma!QSKjbm{n9ia}y$H71VM* z7D~KQIEE(0-0|g159^_txPW!(#Sns|2=Mb!TurTJ#?Sd(fq2jX4zkRX)^dfJ!;%kn z<63skji>3yqhCeg1-K~<#$SiQgB-U+g^FqWp=Q27)?!>V?Vn(44F!^z6TVW7E1#Q&&J0oN$8p~p~Fj^6CHqqjU_G1db-t42AmROuR$fN6)0F8WBeb`Vy~v;F;&CRuNmH zwwA(0r@14U(I9#u>IuD7Sfo#Wn!8Z3xF6E_~#24DXGj$c_<$g}WigcZMSncP&?n;+{Fk<;pHt z{2>U%TNCUZ4n;-=nV1fM)}G=x$4S%!5k<_PjGlJJsi9$*Ct)IjS^=oIr%P9AS%)-P+$ZuvVPSt`o($>(DU!lF6CvOh*4fh7|cQ9H=1$*Kx1DO^L z2^M$14GMS$u1qxjS*FA(y*w!hy)%F@ubDf$Im6mU-Y0+oF6|I8$9-fh2?Nd$# z)TfMr=E2k$?c@Oa3p^=m4<(HhWzF$QVIU(xzeW}XV0L(KBr0-|0BA(1NN4HfPf8tI zWnC3+YD)?>wbsHdt#Q|PG&NiO(Mb4xA-SV9HmDgh{o*zzrS(S!gF~VIsF*|<9PCC; z#Qh!#q}zX}n3Y^?U|YxfScXf1SY zK&0OE8M%p-#+3U=!9YlM>11PyP8E_|0K>%}OIRlEJ8?bpOu(gmM6(SEu4lT`)1{5$Tt^Tp2dvdqhgU^AVZ<2!5S zd~TuAt$w_-fs<_xEa*hEs1;G9oEsd?SvCy-1f-lYAyCpHpH0t02~8xh#NC5XCbU4H zUNE4?ygG|k@GcuM-SEzoA}s9P@?%l;PJ7dlAbcxL;pB+ z{3{rrZU#;zC@VXcO{c~SF%QMAWFTP@qF{n*i6pinJGeNj<7Ot2o=(aLLNBfsO~m3U zHg|CtZ#IxJbM>iAQc&*rra9tyF+Gy!XZCh+#EWJmaA#zu_(E!C6-+6i4!R4?^Mw}A zXY~_Po^!<2+{C6ap4O#yKRd+ggMAU`zxd1*;JG2A_A*CElei95#L5MV8(L-gli9&e zi`Jj9z?(rH1dLo&HCIF<;0&T{LSga{RHFJ(UI&A(YHp7Pj&_Cfxodb=GoiPnrzVK4 z6*=>fP;jVoMX0|=*!{Hax+uaUr7eu6r%I^f<)$)~nw z+^{e()NK|IxD^M5(uRg_n684@Pj+?+kb`R7E6=_M@f8#1Z0!;y9@Wt3c*S9!CN3!; zOR{19s)f*IqWcP~bkvks5ip}L_f#2+M_|wip%DaNyy7mRiFjPZOv-7JA&fi{8d?(? z8Ubkgt`VA16ct5v1w;4>gv~=h)@o%~f$;Q3b+~Rcr$^I9HohE~>g0SfBaRx41HfE# zjDe~=+<&b9Xg|~gsGbyT>bPhL0A5?fRSfU|TAEstf#`IR6lBdE(-|G=J+{_=Ot3e4 zZ2d8G${&kU2cfr+zn~yLUA@Cj#PV4i=Xnw+hkX%ak^utzIXVe#Zpf?EPDcqc%AJ8| zT~*`~FJZ0Q#|9wYn+^MzPztNRqY*X%!8_o?$eBs#`!OckhVW_(1dW8$x1cL}ZEJ~4 zEF-g_F}!V?qjkz0%Q4xI;oYReQ3-1@4McPe zYu58|x<+NN1+p2ojdYfekjz1%4tF_aV=nY>#~xQi+n~L$a2dI_M2$`O!c-wP7VPA_ zk|QyN;h!`|+5OqgW>!})>3go6(ycnUOcdzvBQP2!w?RPuW`LSvPipPyy9BgA>k0uE zQ^E=!8tM=B@}VFrpp%MQ=oElWv5kIk#UK}l@eEV%5>Ov{(7GyCX-XLy-{b0so1EAL z$(d+gl`qi)V)#x*h_u2ik44hdiOp>ktewh`xFyURC;dn??J`;HT6Hp=xe7V2kfYq3 z=O$07LpTNKi>Yy~QXBa=R}8}Jddw8=i^z5!8yxVLmjA}4Q$*PKM4c?x9H_$W=&9vI z#uR0U%`}uA722BG)c8mOj`Dlkb zc8(FigQBy-uIyN@xpXTHURxS;$UPxQA;^l-_xgN_h#gl;7z%GeFZ7K_l~WXlgL}(? ztv^6GShOL~TcN;{N&v!m1sT$5*`iEX%8`HSUOYU{a~ba-^e-?qqskpKAgt=3Tu08= z%n6;r((b%XKxw!V$c&U%5T}R?_j6Ee6mm@{uV`Vh@KIq@!)3)ohv+qZ!NI|Be@}#@ zM4aH5oRnjL zW6X6NGTpOfN4)DX2kkHmu$&v)*$W!QUrq2=lRprc1J3Yx>p!cg6?wq+P*tm5_K#;t zIB&&3?^_wo&F6ZDm-v8JW?b2dUjDCB+6rcEYBnk=5yH)V4kG9}Dz@(=RcBw9%6u!4 zHsf&o(n*MtJh~`BIFEa};lZCNO-o>49PH}m9HLPHydKasXJ{jYER=X66Cb08sEms# zVJ8U`607ym4S4Frn4l=a+Q7QTghU}GfGLAFM&?w0p2sAtvXL6kV{}N)Q5Xo3bYUAD zHBIs)#;q}|-kwXKN2bt3B^7(VVnuNi*PG^w3FP!T5`xG=zA8i@2s32?_vDK;>=QxJ zaONYQ=!GKq7{of1J~ECrSdUpgflHwR~f)FVw zkHJgnblYV@dk~UVn|z0J#W}|`JDU4c@J#{DWr<2@V`dsY$Ub($uqXW08)`sG8?&-@ z4#HNlMvSaxmU3zs`CK|FVS|mh200?uf7~oTxt?>P&4`+1588Q6auIIvJ}c&MYP}|` zaB4*b^nt#?U}v=a0jPk&(2;{)c_vtihz}v&*j#1?<2!K&NX=-GfyzQo!540lnBK4> z*;LsF;%zagl!q|RRV0Qty__WQJfH`I5TYDiKUgv{JY!@)$c0kr?iy0G181^W+O=q4 zgwf)!Zfb1sPx+gcF7_vrHMRZ(xh<-f1X|hGjg1hBIAPj&Wt_>pbb&S4*di_=X_<-{ z%cB@jy*SW>&jRKuzoj@qjafx@dlOWnmNT}+XmKhTjO?p|Ju|N|L(7@*-9|`&K>x3= z%IyJm!wxxQHI8RN4Y>7SKP1Jl2HAW;b{r|rT9PO)li;_f*+Dqvmq1Qb)mq#oR>X!p zgd*`b(S{fhbsmwB7Pzl5Ds)UQ9U?<~I02MCAjs8DkFtkc-*3SSTY<)D>AesE&+K%! zl2*=EJvEXxy0}FzU2pby@d>h(6SwfEx6)psl{I4s_c9obare@b!%*8(iasusv zGpYZ{maL6g!^9_|+$xW6#pr5CD%Oi9kMJ3|g74<{`OA7egn8GRz zY*H}^5WN3sMv^0W&g57c%HIHuWMC#K=Mob2Uo<{m-;#a74;@(0+FzK*gH7;nMzfYVrfx{2$I~v0zQ_Zm*Q=F;3H3e&m8!xk z@qPr&<{Lc^xgdjx3Q3*dNb;B#M^N=-RnTfu&6Q|SP)*adY-UnT)3t20QkpYaHvIPD z%SM&I;|14tZPjQcFj-p;D$KePr@Ia(O#AFAan4{R@pqJ2Npr*x1=TfO{4h7A4~Y+U zt?Z$wMnZ@5u9rP@S0Ve4tu8o6oKnCEo}99$D+f9(N2)@UvxcA=?atKKW9{uyg}w4b z)oSeN@F#;^-6JcQBt3-LZe9wSl5q<&xH-5EoZ~$2g@B7~?ono~`>T1dzulCHk0F3P zw<^`pUJdt1Og>+g+^s21(3ME8#lY3*@g7(@1`jrqaXeQNk*FIvH}i!BsQKtt7(?J0 z%$mi>C={l6ObK*};C|;UY^I1NEB+|cx^1+KzMm%vDYNRq0SISD$j@{f*f>AB7?@cLc+}xu(YwVBB@Y? zwvYnP2cEIm9z{m+3Shuvnm>Ra&m?@LOr^6@DZttXE!$*5n$#>x*N*M5MuGg8xEQl? zu0paU5~CBmw(FcMQArTFM6vw>j@+eUkiOkg2eN-am4T#uS+GK9#a_up2))iA+i&L# zDXbJ#3u-(Ta$=}&U}acyxEAsA!fUIg4;Qi|IN)Cm(iDK=;jmZW6lOAgvgJtp=S4Nh zBV5!UTKi|o9g@~5TpL)+6juMz#nKrA2Q8-M=F(|O&7Gz*g*JWG6b2Z84bHA-n_Dhj4v5d^ z7>2iZgy_tyH0l}vlI(=C^*jF`UO?XCnFi0a#O&FIi zOj|lBEXw$mNSRKUVzK&lcsBM&+C~#R4NkL1!sCOiqt)meAXg$bY>Pa9(FP8CcTT!% zI^C1rn>M&@knCh=XtZdr#uJk8>mwu#L*s1UOBm?d;Hzb!O;cVFc1U1!5R`3^#on-O zYdpo*4wT)2!toq;Gc8gxa08O|e!JG6v?$R??;0g6t>m*$fb$jOS9oYY#hV^Koa2D zMI0KFGRzBoXNGijiCF6gaZ ztXN$%NZr9gPOM3_BoOKr#0k>m`C!o#2{%#vgwBzw+cGdg zpj`$yeB7+`@M7fQV|TElwll#kMMQAiXFPNj@YLdNNtyjrIn23pfzMELE+Yj*juhIS zAc+U78j!%CDbAc}ST5EYNg2Pqwe!^8M606HnBO!x;Tg^M!J zfxgmI#~bbw@naboD!uDRVzD`L3eErIBXONpAayQZ?{ON!t7d!}YWco?Szjyzh|%1` zF7dL{0=7Laf)&sc$r_tQjWD01m-@tLFnH|JjE~QC64Cx&!WuHO96<*W+^nmO-pRT= zF_2F;+%`Bg&@&Y5>kUVuPz$l#q{k7w1LGvXoS)>O5h%A-t10yomk~!Uo3`ybp|_I| zEfugDzpR6%SX~c0aN=HLe?XyxYz+glE`X=9rZ{T>B-B?Wcus3^uH31`DDNVvgEuwG zGsUGZ)YpO9%SfbiV6ePTl`AN|Dy<-xsF-N+o!pM4Ggvuf(o7_3sq~Md0><3>?1~Y= zV|4$#owIA8vtwXj)t=ft#p`CggLb83qhK$_x~QS{Oa2aRlEtmF+&7(mcfNV< z+SZBwd&lPK!RxcxKCwa91}e5sSF3Zhd6b(E7m@ei1|mX_gZW&#hfQLaW_;X3yGU?2 zI>7!I=?cxlafK);UY(Y(>&xovA=L{aK1oDpLuG{SU{)0 z7i4|sMMQjvbII7AJz!2{%&divB#_5hd%P-x&}ozD(zuPz{Z1#@KT}d4G_#0Q4I#68 zh+DwI-#5@T3r^8{>8tXX`kfZu9Y#=n@^|CZi}8Ewri_#OUE# zA|Rn9k?l_$S86zw3p!^egumogzh7N}gk-#Ai6l`A=p+jPnJB9Xx zKQc|=WdZ*Hk5WVX`UJa&xW*60VTmkkA7aB!+`hVRU8Z1UeKF~ zs|f1J&6VC!ZZ7#OdFsW4_L>$T#2Zb`i&T)o3#$TIJ%D#2>l1`XhRGq;l%B6gIXl9g zOJ*a{AxNTK6C8q$b%)ov=M;#ZR>|{TZ`Ddi2w*rc56blzPp1|Fy+vZbNwzGU_l33^ z;#^YMIjDbD01a4#2~G_h5p&rAwfaN-Sci%Yl*wbAp-5yV0`-- z)RHCe7QuVcS4JlSip*skDxwaOM;{CIZmcCR5?VJH)NSG=MlqGaA_-7S1>XnzK1UC3Bq|$#N+rCNJ{;ky~ABz z!QQppOQ9_omAb?q8yN)1adCbT8WU{Opu1OzM=ib{clE5A(cs;~@;a{^ou6SYlrR%m zs-T>RGIEkgCeBf0yg;k4(L;XXAB9hPD#1=$`!nPwZQqv+HlK_jvpld|;% zbpQ~q3jd_uF~-SfZFcS_ruo^5@j^tuW$l1|NyXA##W&TJxndNJ5u7d(|LWmzZ!eaa z4|fa$6!bu}-M_)-FZx3d^bd4}Bb~vau9@7dTJId_?P@O}p%7GK;n^WB;#_f$=EVZ2ZZh8u zF-sx2-eP;4`4#nK5-p(A;{J^{VW z$05aKWdczniAikisL0k)s34G@-XJ1<$7D@N(2+4QpQ^z*!YX#R*x@xrO6-_R9cl(j zoP^y}lRW2o9FQ~`?3qs9x?X(&#RPPM6Ew3Gv<6CL8J z1gfkWgeDrN^y`Fj^B#%L$z}E;olgY);|!{+|FFQo2cPgQL;_T=2LyH;G z9Cji&OQ_d)N@epYDuRt&qF`+;feSr}Txeo%!WTgop@6TLEa#7cm*&{dI1o!0MF|^2 zRX(PMTzWsRdT8*2O4-IO+X>gLYYkQot(JU(J*L)IweypUp|Fn0^|{C3FFcNdy}bgD z*HdjY(8j^Lgi);W>;@qLXOd4lUFE329;ObW2AdvK!kvvOk$}gGl-laiuJ7o0QM7fQ z^w7I!QJg#(UVV3V166Ia=49(L9_OGFW$d4G;NrdnRc+Jh#O|_~cJ>A%Oh^m|!F%mF zWyO4Qw94X^!Go)+IqZOPFHspVwXE0{2|E%dFy#R`kzdj?e@$*5fCFK`5A_gizCYu8 zK$#pXaM*Gk6?bK*p~YXeBDe+|_fa$ih{7+b*ix|yeks!P80BmIwgq@S?EY!YoWhL{ ztP@bY5}Z7kCtlX%>mqW&@)3p;Ve^rLO&TJ{pM3>uUrdI}fvsbf(ek0X((n}JE5-9M zQzs<1TQkv?$iYuRXS1YGv3@I~mVrVDo`kL(W-Sd^VW6}319W~C>Lo&yz0HGg&=7+l zYBVybyK`@(LqC#9O@zx1XDvith;DhDt7@CzDva3g5q^ov#3mB#(Bg}arjb~D!iqa? z_f>J0pgcY@i`$|)W)8}l5%OnBi$o@~3dk9Jp_F401dSN(?;7ZYnv20GuNA28ut0Nx zJStdQSkt_-govh&eT1YL32CGpx=2;7wa|TpZOcyb9-z)<>lAlIKqz84&aY7|54OP* zE&ZD<8z5#*F*poOI?&Dzes3>g`j3-l|Q+1dLz?B>2X_w>#6&s?((XfS-g5n@R zPGT8r=_QpIDJZM*BcdG91r=Q^q?>iw<&pm3zLDsPp-`|ZBE>Tv`;SQvK%_VtW;b(D z-qxf?S~CLP50<3`@#R_Y$R>EfDBj}+=lqQtqVzJC;pFSku*=nO4WUX}6sFl}mkh{_ z1)68%H>WZQD`r9bX%6rnkscrf02A|S4Gn&d6~tXQXvM%rM~wt7pHVY62|(hVgTqXU zHmEQ+?+tl)7>ztD%r_KNm~U<>s4zd10`qd>3d6CSvn6M=L5kbbj$`OB=$HjhC^{)^ zJIv|!cU9&>Wiq(ITglMLnm}=$@(ZC;Q0yL{lW0yvMPP6n1HJNDdKoZ_JBa{VtK}+* z?q>ry_&gn(w1I;PAVKt$#+%i=Z`dH~4)g~1PBXRH%BE8suabPv^oUQ^PLutoLm=(i z?YYB3v<}@ZzS*rX6Pryy?%vf&7W8y1TiLq4c;U`S_!y|hzHZ!Q#+D<|$J~gV-7&2~PxT!nXJXKkG+OG%DGttX`##{nckrt? zd8AENnLV+ELLS$PmTQ_gmkXdbF-+!x6JAwiC%Vi9jl6tQ4sn->VS_8m*g6a3T{_n& zixO>2+Hp^^Fr>_iWxxykkd(#$&}9%QND$Jz0>05tbnF6qBNyE~WOY2{cGVVHl%P7b zyv|1nRnglU>=+nAsb!~#3tOrn@6Hm}QLzH8?U;a=iosc3tyD$?TB=(pIRL|*hIa_{7{w6a)tryX`1wp6oZX2~@IK}yI zxUYAlcUD;pE^Pqa?z%o86)+5D;b00**XTfB&qCWjoT8nxFAb&8QTXX~)JECqpp2qK zk)w4BtqyyWnr$o?DPNJnIp++@t2MmIu83d3? zP2(dZA`@RFjcGK*#L`$HgeiH}IM?+kwvI%9>~^>>Oj2BTIMmw(Y|E%Kkxs<@9MGQn zretrZEo`g3g91jQg?Aa53{!gny9+HBW4azd zov_&xG_Scd#waJ5@{EcbZ-&pS9(Tl=BYC8(gx=WDuydk}fhanOzl zmf18mdg(u&yN1WMv3OUddl&h+2DDh)Hlm@v!Cr)pkyf-Ka*&5rus{yb?Si<&I2c!2 zLImWHErOIRtXRbhyzFXtW>JcGjMYOD5OHQGM%8);9$buW;qU^!WY7sepACxymNv%`DM(M^PX#q@80hiIs> zK2;Yw#t3C!wW+Yuj2I@nS@s0Ux=^CWRta{5fwBR7CbIF}wcTkGUPAGKyFx=d&lqO* zKY=ya7dyioX0{A_h<10DLHG-HCyU6*FUlf#In3@ISrHBm!9MJfDCos0&~=C-1Q(da zm?j&Wn8tZZsOS+L)t?ClQz*ivcfB-12_s42Xgsz{iDNK}r6EKfw>8bs%>NUH1`Md@ zGoa~2k_^&-gl3_wE+tE0ks|@DC6ni5x`&6*H6e0=r4FTs`|mDtyXjcWXBh4a_Jl^d z2Zs8B(NcN>;&`hdL-n2Q(~&B%`caM|99cu)$um-pm`1%J=rcEckk{0wGI;q7ULJpm zVkVr$)iZbf)~Fah?lFi>q|ToWv9MUXd><>gMYVw>$%(WAanOo_pV}se zp^bDQJ+~h%ige#Xte>Cii-K@2-G*md5$fh9{K4Od+S&MuZ1CVZ_79VU7 zv?_LL(P>_3&qWvT44VRju}SHxOVE)~z^ znRIM@Qox}sLwEKVg^5@ zvy8&-JG$rUKE~4UN^)#TLL#Wvv+3kl>}N3tgeX=!zM8D+=8et-Bnsb%!UPk~no?D}4ceq3QJOuE z#;9h$8P{_-a6*CM;(|^I^!tnHlF`PBt;C}|om=NtTMvs;1uYvvna%o}&^`{4sz@a5AMV@-tc92~O_6mY)ZQ?p|PipS|*>IgV+lv~-hMKMhPX1JyeK-(4klnu;rmvww6xo zW&SR-Hxbg7kSB6r2f-y)>usY2=1PDe4>iV7BhHwNoj_I{+j}vsE@6zC2^pD9>p)|f zYOE>4E=`N5mkEf=#nxc!tl3?P_FAp76z;nVnRv+*K&=kJ}|r%+8Q&MNS39f9ZJQaZ3`*^ zJ5*4tFK}#QU`e2{p+>L<9wC-p>vseDd2rtDoDCas|f<7SGI zYT#aCf~j#Eg=gcEND%8gvn_Dp0VqHx%q2 z_9#s05}Y^^0lD_UmJIbcbIMLE)uIBZVx2y6+&)$6o!&~(_Ougm{|P@>l*SCaikWDb zD9aQ|Zb}pKD+CLqvyc)sBe*bq_zsr_P^seI=ZCRIB2m{8XbLpcLp{HG0f{$T}>6^$)zO>K>B%}uTFePe4=OJhaD9QL8;PagC`_DT?aO5IoPx_fZ{ zCO=%h!SWg$3lSDbBr{>9rkrL8w(xvaj@+djR_{>wk5Z1*4-qnl8YIujJM;_}p=6I) zSwOp-Ob2|C!4={DbpwO6F(22?zvvhaV|>wZ?Mz379@dRA{*C*n@RTTq((VuV@J?AB zrQJV5H-Zg!XjKnP_`;(>tpKF#OS{X&9F_o@*p}0R_r54uu z7iJgMAW{zdW|;&wgTLZN&fs7<0Z_iG*=Fc*4L$~VNzdwq$9D~^TMroR;eK8S;&}EF z*|VBiw4iE9Koi=Ce8olt!6RvNvfi%%Uom;wtYDs<9JT z8pB@54%95DPCg*S2>W^jmLnZofL><@_>mc4+kN#y$fJ#}2z3o~Mp&QvnU+`MZ*TW6 zjArxZLZ1&}f}ssrLb%<(WvkD}y5Z40jY3k8-McUlsK=dQAzo6Hfou2-U6?6{;LVE1 z0$}g2UMS$pAfd@jB-)|xbgR4jCoEizy*Uvmp*nN4e_{Ppl6BJOhV77o40=mFgc(1M z!pxF7(Jds9JVeuTa67moS7)VM#(0WMsFk4{j%GzHhRuU9xRk=~!Eg*SRi8xNxgK!~ z>K!cyz~c);sjKr3(!d=l0Xqw5vP=D`;!{wk^~C4nUjjGK#Q0+A%ybs2jlg$J4UlL% z5TCYfldY5&a65K=b4#Eh(6Epbq=%|oyXNAbK@eVN zyUuaR=hMpCw);=0#w9&1lSD$sGGq z+0%BHDa$QUb*v|K@I@WBX8GU`*t3$z7}W4cHW#Pw7SeTaOj$9FMDzt4=Rf<5{a5}e zkpJQ)M8F2(S!2>l&&@kZ%YV%+ZOzSY`LC^M@qhLIJ@Io)a*9y#(sr)B(#T{2B2^3u z`c#72h@Rl~O4!uv8d~cb+oBB(%NiChYhDs)S-kjtm43FIQ|#fs^eK#&jQZ9PRtme{ZyTn23|%l%VrEj9jNCX+DNnxm_%TzzZv;y`nozj_tyJ+-85_b`zuUBknw z>KmKzBw(#le3f`46dzaDD*a~87;mp!vv!F!k($nDhI(TogX3$)MvZ8tut~E)GzA(1 zO^ub94%l89H#b``v+`IbbQ~iPm=OQCa*z$Gj@@Umk#FohC6n&X4^2ke#!@R*b>-jJ zw*sGGPbH@?784VV{qZRvQ(If5KR(@F+1S|9TInCpLKBVjA!41v+HP!Of8_yo2`@l& zQqIcIA8cDpvF#r}lNlI4j-?aS3RslohX|9S)L(0@cy5CI#kh~YSYg6}4DW+)*xAjl zvJduz!KMa29?QkoV}QAjm9i`wR3`vbK*!nr_1;(Tty!G;;x~09!~LOEtFntj$>GkX zWUeQ@u?xtGLR5R@1o$x~KqRfCbnf;__9UZ)xqNbh$K_VFKxtW z&6!j1@mLKo8Ro=fjFZbw`(Z*_msI-MbilMsN)lE2CpdK$v(E;j@;HCSIhJ}F%q&LN zv`0tR*4n&BN7pJxC&$G2iLIqcV;WIfmfIW6Tx_DfVL97Z5)r(`PA9DRa`4`^w=KuJ z%xnl?z-=~W!ggst;Y56(Go46h+fz)RSq{)-r+{IRwUvc5RsNakKCvd+V^|?@Q2f2z zP8peKdJr1iDPp!PC01G5D2dsm(XwfdY1#IlOv~2AZGqN3NzKLo$<%CV+@qY?*dU2X z8yEstq4ov2Ge;$I%SW?Ejpvr{iBEDmfl`pP(hI87VA@8^_V%O|k0;FK;$kqt#8>ep z-&Tnal2a5IHfq>bEC7L3YF?XYV(nZuy^$ZJjl>pBZGpDM%K_(<%~$L4gyY>b&C3mZ zC;wyiliS!pliSpyHu0t<+VnOqo$L8+k@FiFjCA@p<;}dQC|*4ZAt4l+nNRUQYRb&R zXgZfmCtdT9OJ_<=LOh+y=aw_Esi{?4V^w2gV@9i2|f&x^`O16$=}%IA|%B0F87{xm|-F?ntxpL&zXYJH#-fz zX=$U+>)GdqCjJL?3O`MYPjc&IUpS_SsxlOpEXf~Mg6|D3#;rf{3bU7L%Z%?)kz40Rr_JGi3Y!Nr`#+W3PsDz68Dp+w(zjm?xe5``c!D~AW6 ze>4xca{lUn#ztT^##_zBWj6w@(Rl6%yT0BVoA&T}Un(b}5yC~48sX36*@6XME!9;b z&$=IMuVApQW=vuS0)ZNW5yeei&J~>7at1Vd;<@LNZyXz@=fUcxs@ivULbhoj6{c~q zcKkJJ1a6*d4NXZm9Y$=Ui3J$O$H{9Bbl$V_&A-y8nJTJs#YvgkYmM&w+1j?WMe;(c zF6p+k%r!H#{8!Z7bE0lr)1DS}n_B-X>hAQ>*VZbIzP3Gb^fmog2JxPV#Y^_^M0i+J z{#|vB*2YFn>1b%2Yo(*9jM4!+&>mDenmMa9E^eHi($U<)$g`w%abrsp{@cQJmxev2 zf;27tkGA1)>vD5r+a59EH8=hzQ&ZWO_ZU5!{*&n`EX;e1no90&B9P%xu8Rp>H=VJm zZn|mPn8Jp^r7{p~geB_;*l~`2@AJ zYOX#|lf(=yX_;g9l*j&|2C#<}!!88t{Ok65XVcHrNDn}yG#t!0VYZd!JuMBC!wZ50D3l+brGH@7wjcb?*AeeiQ_ zfUcApsD zsEOfAm(GTlmNYHaQOsA7v}FZDE$tGJ z#)byn-_p2~7V2Z_RgN8!Qf3XpcgNK8?89Sya1k;xkKHqA%f<44PtJ_b**i++|2DNX zEp8~pe`#%N`)~g59{73vk=K7walp#%aCgOCdsS5I#r~^!{pr0P33qmm3=Rzduryt` z1Mc33jVsB{&Y_+T|GM?>^Y8ZydIElon4Kx{B6inH57E8%*X=|{=P|~NvETp4{-2*^ zFK11@gMEI-IDM{$&!hDD82CJy%diRCYY;wXqeGqSbDVvy9@jpPYM*17EZl!a1tdi$ z@-fx#ino}l;RyTvCiefkE9{D)ik^xN7(d;TzNDgJ$%_>gd!MDg8@-^S;>M3vRJ`jk z_1*k0R#d$0qZJi5+@rozG+|qmfnV*z{(r;RSVhHOuBfQke|<&8+kaY7;X6SPqDbHT z*tedFH2ZJ7B2i(oZ^9L+idaQ}eQIKhsj;H%^~WnZEB1Z^{J_6^v!8wT-3NZ&wC}!e z+;`rae7<>anm5n)mbbmd_vW|0dEUJJ58VH)Z#&?C0}t@M<)F78bimu$=L4XTz2M2c z_jwb0@PIeZd-DOa{(1eo6$id)pWxoDd+$|Q@rDEU+WWx0Ucas4J&f1(s@Quk_?Q3e zx9>i0eAC`<*lQlUeDVPm75nbRdcOCY-{{-VH*em&ioM>j_dajjcfSJR(r%WlBW-uvwJhBxlZt~DIU zuCadXv(Fp%*_%%V>&JnO2Oasww+C0hqq503xT^U}*KGQK+n(z9-o39sR`C|r(i;xk z`@o9hDqgRMezydl@Av)0Bl&BNxHwk#*=u57d~*8bi{`gI_NE(KYkD3z_4K>%UUlBn zN1X0|-=)@DkKFdVjyrz5pzX|Mhh6#eU%$L^uRVL%kC#7m{hu4B5A1n1 z`q>A2bMO3pO>emAwR0K{e*Zz=cw)=Yw&z-(zA+O0#s$B-#aQv$_6N4VUh&XzpZLgM zKX%oNzis{9h4*~=?-M?m`GEtL-1xQge)EU^ z)d#-k!K2@L>%jI4w)8%A&#HNKx4hK*nRk4!t9#3VFHdd$ru7pmweGf!lfP@~KkE9} z%h$Z;tJgk#(#c)Z^Hx3?{GW@`7cSp+_8Dhf4Jve=cNAe z?eJ~qU-ZG#s&3f)fq^?$efm9%PFQi=^JivyV$G`$eAjQ^-16tW&wb^Q%g=n^=|8{o z$);-$f8dqyJFouHyZ8C_IX}P03@1asjQ8Ahz?zDctM>czo2}=beD1;4@%q2sV!tK% zh4=Q<>@c&(UGd5E^Y1+Cwb!0`?A-6H|M|f;UwGaJ?tbu@c|9*Kx~%85s}CML=;9}S zu>Om$Jb2Pk^$Wgy%V~c)?8>t~@{h|7KK1th`Dy&PkN^6#+R2AEeZK7{7xY}X{)H#9 z!7Ki@{nCpbJMV?VJ{P|D`eVO))rZcx;o2Y=sLb$|YXv-^|3%q@?6=bk^F zYkuqC9mkEYPgcMB%4OGViyD2OFb}-o#rqyT?~smp4~>}LKOyD6D?1cD@r*NWIpafH zOYvTbpM9PmY#smEKW@&v`=GOS-2GBCd-e~Tv&-Ic+xzdn@VZpR^-e> z4{dw=<2^V2Y0dL@U6g7cd(VfjJ)(cpXO{eaW!v`c4<6BULU>WvZ};i$`RSP-Td=aS zsr75gmhP3AGj4k9gv%ay-};U}!$jzo_gv%qw_D@ zr|aWCJ@-rVRvvV=|E}OqH~;0Puf|V#aq~rg`SE3!{q@B_Q!@7ARaFb-fA<*7U^c z126mAQO|8RZ|>W1?1J^l8y-v6wS4qTZ>n55bT(T>cbt0bM_!;|?fu0cH@y4k)mQ%H z6U%=1T-ty3oe#9Oe)OjM@(XX?knDM`?djfA@4N1Tnxnen@%Zxp+v~6s16Td#OO@R< zP4}<y^1=;Gr#$@N83#^Am-Zj={2kx9`;N8iUj6g*_z$n${?r9uulw@47d~*s z{x^;OWXI|&tEYFgT=?#ePaU1St@@M6Z+`5+%lf|h$?)n!t53b-j>!)V}X0vHQfICy%=C#??*R-}u@6eCI#= zjmj%Na@Oj5#*)d4#xCzX`$spmz4})F`Hz3{xRayj9k}i9w=ezTZ02{#+O@4ye>mp% zAO6dhhO0JKEpLi{=DZ)?@UG;(H@|bH{|z7A_O<^#E1TwTyI|YA9X0up_uZLoy6OB2H+}4w z|2gZjub*@8x37KwT{|vcnRxj_J+F-|yZMKYpL55teV=)L;F`nVv--}bp1XZ}=k)&9 zb^q~gXa1=B&dW}{?t*vx`g6yF19sl_oZ@&87e?04&V_vGY&;CdA*~@-^*Za>n^;gGl z`{9B`$3ELN7GCwK3$`tJe9XM{EwTKnRbRfo|6^Zy?$D-H5HX=HC;@u6Su`bMEe`M{louW_A5xXPnbJU9;(^ zFF$|jwhJ!q=s4)I`Dfhy)9aSqd%>00Ht(Evuw)iVyZ^m+pLNc`->dn*OS-=EmRC+}9r?k!r}O6zz3s8= z{QvFz)1m)3>Y3A*LjtS9%uE1$hK`egT( z6>mTLyPsHgb5rd8JB>|`2CuvP?8nb+>ihPp_nmaYX}^5*g6dQMde)Xx_d9LJUHb=b zc;J|HU)}Xzf3EUVpL+I@ubuwRuN{BY$txdjtNmf1`L+i--hXHNL7Tq)rj_4Z@#3ep zEa+VQ^wXDr;EX??e#nk3OYVK_{KlK#(dz$9z-oSa$7}l^p1k>{ z{jNHG>Y*PjedzCt4!e5EvTG|l??2LLG6ptZzSr_KYnsnHB)a)cpZ&!R;r;*kk?FTC zIp^5t2A^H^;6FBh@UtKf& z)o)(Da_`2U4Sy-K>5|UV&i~qHZn`l1?z7K+>^E;nKK!)rXScr^eOuebkX?#jeVFAog-<+$+U zkN@VOmVdnG^@{P!zH{Rr8rMj6c=yp)-nZztzkamy>zlXyxoX*~s}DWyq>lSOvbyc! z%euQlFMRg(iuS)(Oub(5@OKV+?B%n5d;6tNUBBXr&<8$u$P-`x=yPwr{DjnHHRgjg zJwIOb%ZV3nSX&u*HFf-P_YPLv`2)W5a?1x!_}#;&J+Zjyg0DPq{cpA$dhsF0 zta{&HzjEf?-=BVKP4ck5?i0Je>A(B_8^7|G#dWWKc1sI?(LSGEe_`#PTE6!}-w9v& z_Rl&WZR_~(&&N-GZq1#SFT3HT<&A&s+J3Ql-Q&M~{?aQ|hrjmyy@2{htbFM7-d7KK@KeM0{NEW*{%*n3fBj(l=r_Oi zy-ywatp!K*-gC!_=i07ca86It-%tCTy>0uQTMpd*x5ckqd*$zb{KvqTP9FNjZQpp{ zu)7buDD>F_&i%xtE6sDF-@fF+4HvHr-28>$^S?R!U61x1{ZPXZU)}4M8#bSI@5L`K z3w&|u1y6kYl|OI!#5t|Ef9ae%f_2ZdoqG277Jv7SGtT(&zF#|cOZBH?f%A8aUHbm@ zZyh;5cJq11TyWK$4LASx>g^AIf73gw&pYTXlV`5{F8ciM4*Tns^9J6|-t&Jyx$M`E{^ZL~J)dkkF_=1Y|M|b)=kfo&*H^jj zy3HG}-v0HDhjuL8=dxwj-*9i+(+8Y*@Ihxi^`{$e`p`a~UUy;b!nW_XUVg+ME?;o^ zlFz?h@t&7H`1LzqX!_B4zkl+AAD#MC^&Nk0yYh&x>)-YDc>||CJ%4Ka!9%Zn?XYjX z{n{O8e(=6+hb{Yg{I1_FJUsZB``+-?o!M*W|Lm~O{IPq#<$d#CIVbm*KYp<7nVx4q z`{mrvzOm+K-`}v`Q{Q;@#WPOddgH;{-t)kjr-Z(6>4}$q>4PsNj=Vnd`6Ca%_|hJ0 z<&yKafB5x^hAZBkd_M4x{pO87w)DV% z-hJZBd;KGS`NdY^md7?EZ@X~K#}4`J(7-j@w*Bp_-(6}v^3kR{UHKTz z^@2r4ebq;{e`M29)`Bnocv0o!+cvk~G5MjrFWdIfr_OnA@0C-ZI{HsX9{9OcXC7~@ zoPYcJo8B{j?DKbAxcRzWkA|ZN2-^MV~wB_PUnMmmPOx zcqsb2Cs)opdHrQS-2TA$O=mxF!pn^>-S)!6{Z}ve_OttcDE8Uk{VMz1S1!Nu)UiMQ zuJyfDR?V+&KI4HculC+^x5egc^!l}{FTDRphxC8@pk&j=8~^d++kgAX53Duczx{$Q z9sXJ@T)Fr?_MJDJb^UwKzx~i#Hhu8bV^)~cdmnMjTi*NLPo93mZzt<>3vT-DwTJ)h z)-`Wm^FP=Bpz86_pY3RTY~VvjeD0~$Up60k&w00e<_p(;Ye&-~zkc+N_1{|Xk5At` zl&b0a=m%p~@{NzqZ}SVzSu$u@zx(B?3r>iK=Mm=f<#=Hrg; zcz4I=HqCqAA>HRK2;Fq(doMWjt#!lgeeY;_cxd>xZ=Cv()&-}2b;0HLjcvK$?4hpE zO=rGeK6*}ku^L zLchKyd3?U@U1!!LzV*h(o;kSr;N*M0dH#NtZ%@7Zh67G+Y5CLqi&xKU{qmiQo;ZEm zAD)eU{MpZ2&p&$lvX8$s@6+{*KK0&v550Bxg#F(C_~D1<&Z+wJ;I&gv-t^_W|NiQk z3qHQh3SD=~lJjpiKG_#LG|=*?6_=gy^rE{)>n=U$toZ-Nx8K@#%jwS^_S3!2xnTQ+ zk=U^}-1mdtO-q}tOD@?z@tG@Qb&sq*D?VYKcj4mXj;5;l+wVB_jvJ2rDx8l8UG?(F z-XFPq+pW_#e`0d)!;_ahA057VVBOJat8(wRzw`N1w)fod>S6(K-v0&x&4eQN) zpE+~MB`XKduKRKKIMbBA{dDK$e}8eZ{iJWL==jI)AO6ASE8f`ga((#B-<_TPL*IU{ zZSA|^@qM?xvj2s5UH6g7Hy^MwyX4=Gxqs-e6W(^+Cl23q)W^PLRjoYRgl%ivS*PB% z{mxrjF8avrM<=o;R#z>Kgy)?XzV?TwzTEnbqt3bcvS8I8SKt4wum0)UuBVq=_vCFA z`FDN&gfqt9v1!MKV_!P>hZ}Z0dBN%<79MbEeai)(Is4RC4;zSuw{6>YXkz)MmLKJs zPP_e;?(~OGdh{3T*7*MLTKj>wedU;IANk}l51qLqa?_EwO`rJ&d;e3u z_j*Ouh1OSVpMCSzTOa;G{E}lXTlm67U%T+>@Ozh@GxUYkf84V0ngc&JvCoy?dBsw_ZRzI^!KiNPyFDjzJ_C-Svq~e2AY%g)_!YtN~7oNN62g6M-6OA z-hAKon@>Ka^K+Y@efoi~eJg$S{U0jJGtQrR=U-|K-}>?J;lnLAKUR0h3c&T+5gHbUJBf~>YDp5edf7a#>Osr<(;QqxM<|glTX_3qW9mkaK{rnF3rX(kF#D$ zy!Dp&6_0h_c)-|6-*3O;!&mS9wlg<=;j~}9ddSgNeKxt{#-}GfF@5NRm!0&$l{M=x z?7elndDH%%Yl_{O_`;`;yzzu%f4RN(+>wWlKlY2uj=tqj``!Mz$fHM?q3C1FuZ$$t zzyI`?E_|T#t-n5P|96~yea~%wdAND~{IRoRZ~MkM9~isj@Aq$*zvQD^kGg*T>5s+V z@Rem}Tvc~_!zoLb28=DfFMR#T)C*Up-~RuR_t#-FA+IJ9`s5?ouncyTSg{nk3??sx5b*0;XB_u2Q}=Q;Dq zf616S#&7(_m@{)agR)SX!-MLh!!g)|X}&)GUM9q=xof59g}*8@g(m#rcYl{eF>9M$8znvTr+P zI%}ALrZ7uapBx>C_6vYGnU!O_^aPqAu{aOgmut4l1!V-gfT#6eq@GG|PEX>ei3nz_ z=iI1{28`?}kqJ?QdKAhP$p@nAR8?D1RXO>e!J&UIHxFvq$N1_VC1u;gAcoL?1ENmL z@46B8<$QDT>OWkJDjJidSi{bwybz`!In6Nzhj`9Ek5(r(4>ghB*k9Gq za&tcD;hUG7;dD80ma_2a0Q(BN30c9#O^e&XH;ze=SL^Y98L0B?BSJA zd!gH@P+Pl1DPiX@M4$VKdD~)LM~%g)`b_MH0MAk1)XtRZFEQp1420hH2wQT`bGRHt z@R-Be!F9rjY%3V2h)#^JU#NCJP)MmMS^`5EZXai*7=CZyE5gWN@um6#cvXUbZ`Pi{ zKb2&e=&T!Irwf?#QvU(R8cs5GW<3KjovJ|MO$} zf0z4i$%=>A>e7M6g9%L4gDM2SekwbU)~yqflm<_Q=o!b55y<~S^*4kjA|F;JIbWCs zcd~CErTOsbBc-!E${t2V&saqAR9}CfJ?bucq`8LckUR%w%<=qnx=#;{ zg}Gk0$sgut$bIEuTSZ}{1K$4xvt-sXN@j?2`y)GL@6`sqhji&;$PCepaKs++BP?t#xEpnGWkmwrg+SE z89iX!HcZu&_;_m601gc^M9VbAfs`T6;)TRquwHT65*B&oNH*uBcW@~fMrg8=rBRLX zED0WZIfGuQK6-0Ei&)?TI!w~7b8w>;Pj0-t@#I}ass33=r$nwCF6Hw47XP~tT4t-9 zpTZva(Cqv$CiC^))3ve z$k)xPkjuVG^~f==ppwlj^ehYRt0VAuuu@Bttb(th=f&6Vm}w&)_OxgfiqzHu!l+HI zSp$(qWa-g^{2dXy{4+Js+kBOBCE#pt0|AOuO>c_5e4eJi$S@vZmrO_ z4)%KN>L^fZ64Qf0z-kiJHsYgp8g^JOJdWix0_j;r0!_?SS_^v>5f?8Ccs|{`mri%~DliuP6L&#O!=NrKZLIGKN7^u?xew0Krc^$;s?5$Ps&KJ zaI5-`(feC&{kqj!vMGq30OCn2vu8!Q%Fxjl7lXZ;x`Ft{M23faw<`-18{9{`_mv{s z(n=l%lJ+mF=&Fd(8Y>?;x31Bq`=U2f#kAkOc9480UXj}|1qau0kUqZWc4JAnAL8Sf z$WYKO1ox0Dh5Kv^FhxWlwzz6J@-NP+Y8tD*9XvX<=Ov;G8(>ukukfffq^OI6 z^k8s*5{wFcU>nZRh+iX!5TwpcMge1~SSq)wj#w&;s>@tbC*Pa@0Gf^OL-qQ1KDzJ% zm#flExYg!DoBI9Cc_GVK%1XAfW^_p#0u|id`+oyIliaG%rKy;2GfBWPAeGeZ)k9QY zlKvtYh%ve&K+|64T+1Un;LsaUZzeOrtUe2g9Se~6LIf*|Bk9&0@ZG`9CkIT=|6bjV zuA29|N%oDq6?()JkIW#yWdb*JXJ^(Ub+nm#RH%{6MT$1WkjMg774NFd@%Cqd{wqJ_(z*jabzZS1am^`!{M_<;2)tbK z%T2Ez0MttejfqP z*~oNwxrs?SkKWNTNo3Nja;e+ybgI;QbJuo{Wmrv*m_ug^yZUUtriXT2m4cH&0~xki zXO&~pdyFj$<8>1^t+|kCs)=*&kfCR8Rb9ys z=gAJlPqtut8ywW)eQ^$~edb&MU4~w3i5eJ0yBDQ37jKWKyvliHSl~rUcf+yxD5p(wBqgM0IFsyiZJ~nRW-m z!@TAzIt%-J>ecVP+!lyB!Wbn}q=!PRPKkF?IQ>|JnT!L5tV7FtYT)>@+h>tOzWmX9 z9>+L&t*GawlvSIDWd zjs>~qY;Z^Mm;zlta`EyJ(SmgxvLo6swdGtbndTDxGOr3pki;xfq9D_yvw&TDb(F$D z_@EWj;hj~L!5nzrox>yhp%pK|$+)7vy1`znP>+#YtH(^rrd%FMAV?%kf}t=z(!=%2 zR8*(bnOKzcI67>5+Njr7(VbE4Qdf-9ljWC{hswv9#6sJbnl>?7fuB>)s%E>FZ6C60Hl_vH5CgjnfhS1LMfKxJUZ zbMpD~`m|o`9GcnkBC~=D{TjX3_Am;1@*OU3pxfO4a@&!cC0@nYz{JSu`$>b>OV>OO zJIC6~RN8LoseD<@!BHM_eOG&Q;R)x_y@wL8o_D4*P82h&5E2i9Q({98l5mlIzN9JnIEDrLQ( z?Oa8E7kp6UYs$K+(TbSn&BHpiu=|ReD}D2|ULG1%v4J?D zi@9TC+55YpB}IxC7a?2g5)B1xe}2V%kBG@qzowp8{XTmvhZtVUoWIOa9EX|ZXU(j7 z?emlfi=K;ZmBEk_1@{{&Y4Yl4Ar>2w_%VC+a5|l2TFOG?Tr}SYR<30iw`U16i9)MGe;j5pp;H3&m*n)LKGho zP9cL#*2gFvDJfo_R9zn_asReIr_!}CRtSBi(49(or?I`(uQYW#DxVJd%T(G6s~dqH z5~s)8rrlcU{i-fsErd7H6M>6(ellG`4C-E4XZ&) z73gydpCr6{%cQm03Lx~u1X?nQlIx6%pkBJBw|F}}*_3VEj6qnoE}pZzcUdzzGDm03 zAWDa8QOdr6pc$5j&*e@a>hPPT7J*jY2Z;YizM&;S=wZSWTPgUsnlBiQRRgJ_zvQ1N zrPodUB7r?Bim}RDlr%$^N~*c03}B=ZyPFd9iqys&@YV>BdS^)6YD9lm`x@ncvD-Dn3aPy&>5*aIiU`x!*S><$E8V z^MF}d=WJVcKshMIqqD$|Rb>bTL1Vf$qtxR!LWP8gQ9|Mdgmj}Xv8nM{oP2uqjs!>fV~F@c;vcH&l~=qGp9%ybMd)10OD7v5|u8(E@_ z?}rj%$KqNB5%jn5r$)J)O3&*=O-QI`5DzH4L^W6IAnJJBf3h#>D#)fcdqqvq^^L;gM?$8ptsU$xnU6W$TbQYsi4&4T#? z<1x%2qE?`cb;g^rf0DejU!b3PEt5m2bj43&P0w9YB`^})w$$dyY%!M*t2mwN2`LL` zUO8!Co;t3GPdO&|do#xiT7AoMe7_i380B(>Ez-_hC%&83HbbSXsxQT+_5h|+@GcsX z{u3Z#zvD?lb>E74wyHqYWzcCXTB{z9L~I@0H^^pgJYB{k@Y)*MhM&2xbc=#X4C?D* z64)4&Lr3JI9RsfT9X0is#X4(E=nl4J?k{1Eg4V%zKm7%z-PJvEpEY!W^d)tl5Y^x3 zoi0p}NPCaF5)C^F;<@d^vY$qL53n!bYFz|ysTQ!j9CQ;rnH$R$6Pp|G`oD-@N~{Km zEmHan$(O%Kia4*)&DPg1_&@xwgTqaRcpFKYi`-Nvy}r2mRA$DA%IRk%g)=!cnQ*IB ze9xrrEW?$-SDWhpg*I+Pjcs#}N(eqLUQx6EUKK&_slW~vc75uyhV}sMRY#nh|XmrWb*G6%}=m!6p7Ho2Jt@vl+s&)9? zcBpQfiG;~^7XOv>ZNvX3GQqlnUYZfVVEH@X{n{REzbHe1v zo7^HEb}FVlx1W6cZsZWkBp9NiFBp}0vjuM}wyOaLn;S;FoVTAGN$4Boss{2|vrQQNf6`g#3IJ^h{vP0TrV}7XwDBJh3=r~>%zs)OgDu`! zehoTkK@XVS_i@%8FW6$>vHfbhH}@&v$^R47{{Ih}lrRr0nhGmasY#1eaJjzq@l?25 z0mn5{r0?L(kf2j8KVj}&=cq->x!6fubalLGOhWR9QSNKr#+~E89`2UiD~>ddy~^3D zo4BRaSo7q+aw32u;Hp69uGei(OGEn?uS&|QT*Q>=eCa!Dse&Q~P;bQ!fndJ__P?da zZt#z^p)GwcK82qehZ?Dts9)>*%x?X`Hg8U8^eo!DSP6W!?=mEqr#SrRhHYz7jV|#tkRX-+ye|YI>^h>g6(faq+#CMB@!}<|5%< zt=H&Y@ykE@1s~)4UPh6oj^rwkM@rI`_WBg=?u^3(%(aQ{_k}^6(@?sVKnj(q5CHe5 zofX@0iXo{fv}f{doUHrPBtWtZ)^BCTxJtQho(o5bXn1olPFKAZeenr}&H`w}I`ZZq~0sdu#8EfJw}E4AQW zxbyNS#n3QFXFcV&)}pd*Ftb?^HO2)9@&iysv_xN~Z|t?{&2uiW%I(!O zu*wI7B=(f_#JkDkXFo2E!0sg45?4*_7_B45z}UJu)YSvck-1*5-f0h?X4f&r9)VZ*vd*L(csL**|m0zyE#iE2Kb#oa6! z43iNB>HZpbf1^v8fu$yu<;E#TC#2Q!CHF2z1RzI=4`Q>hie1&tN>XO zVxbj$awC0wJCQrusi2-tCK22nd|}q|Kxau5JSh9Q6s(x5p{sPEF5Tq~yb$?3B+U7V&E2+6=YAJar}YhGZKRAx*PW9|{H zl^T^TG@==jDHk`+g`XBRbe?}J%r}()JHs849IiV0mmYe(ssq-7110Fp)12OOzn3uj zN%w?XtRK8S;iJW(mprz~pc&`))9 ze8K&wRzR_CY}4X_y7ORg@U|xAz^MZ+H)P!J$xv@t)->WNmZ8hTPQi#?*Lff`riD;x z`QZfxR&?ZZb#9%XY(YIOc=Fjp%kIlixW46PLda{m%_2)0cAaM7sC_b>ZmYO8k>~k& zdO9V&hTO5jI$%^DLEmF)9>9J_m#tJCo%u5&q;kN7zT;biNu-^Rcfvx#b{*%Wikp~L zaF?gYsFuB|3nXR`JnN;nb~Cr4ox6R4bVt*0f|hETu`pNFlXH{3*RzxrGH?~k&qv@m z*?o83>-y)v1hfAENB_rB`oD?W`DoqC$Q(78_%o%`VbZ=P*-dCk3?T6!5NP~%suhSD z$!keVb(8#)MBaUAGjnxdORDxAMi0hEWC)%2oQ^4UZ1ZLUF%IJY+o{da__(mCF)c{>lQ*y_A@0kXj5ntaT`6N%#4L0Txy6XUK1)=%=2J}Fz4 z!fGO5(+L3{7AwoxKjFtl5;$3TxyLBxgg)x;JtFw&^bbNqMbj7yidOt>>~FbvYgI-Idb>=*>5+` z8qcbr1X>1VDg^C zsxNXyss|oS)qS-Y=@Z zm@$uFmX6C#bp?cPnZ4agG=D){Lc!8;fi(4^J7 zcKK=>ijhwe$np)`s>eKZP<~J?4v>iLTyMX|O;vBJ!nF)5q|Ngof}Sv}=R?HTyrP}P z{B^qi)QTv7#=6zc-!neHnqth9soxOeB%LIwrhAZ3C$RHDLKryqZvGBJHtESAx2k=h zFL3*2zf5-(+|t}L&78%*6gz~qGct~$VVrspnXDP2Qr57+lHtK8_96wO236NB()c?5 z%r_}@t$J{9X|8XaZ+pxPj>x3J(u|uNnZ8LG7OJ~H8b5gyHuuaGC-?=%0g%j{8~)wB-h!1h_eQu2Tt*V1DwT{va*7yvOP zJpF)Ihce$Yf&kGxJ9$L_b9yZ^Fr4n*{9KR8aS36_H^o!`wc>9Pw)tcFT;KF#j6+`8 zQsyBH?pd0|Q1i((?RcEcslTK#9pu4z#4H3JE<2V@{sV~>v$hVT0yL-on29?~s+tRP zqZM#FvWQtXi0oAf!^w;)NBdCCJ}(&fvO`<>j;g#v<45ZAt#vsVmE6>oS}m(f@yZH@ zh}aG{&fzo&Rm}y?4RrtYDvWzsM8k`|&;Y`dKfc0Gt)9${13~Ny>$lxd3Ga9wPH=+t zLOTC|ep|ykSchwaA}0@bCh#ludfF=Y&8a+@r*COX&b-3R*KwM7%?;xxkmGhKgb(`nnw!O0!v((U<2?(f5x;{=|2-RaM9<6U8SSERdUulsvQF(Es_yLrfBbQh zcZRM%{oWPI(xXFn7r^vygS(DQ8rDmDVayFcrc$)aaJ zb_*E$!~>2$>X4nva$IxG4ed8BLtg8M=G5_hy(m92I^5=pQ~1ZkjtN)PhuK;?5#nIa`424}+}Q3qmHv-o)LTx->n}D-#l!a) z=R+cwLg!1kc)zmcTAob$PtFQoe@V3U-%Rz3OoACj133IpH zUpQ%D=NAc$A)SPLYg|a0fctD`*XvI2*`4uAy=$(spv?ZK_cnb>^hGl-lCynx)b)N~ zOhZ?`_B;z(>$$_7we2RBB{kT3d1ow!8d73e``I&vo=n3U3^w&T7_s<8B6$g(?lzfS zl17(&r}J3NH(f}iiW{p9DTI-bXpa5M0p5RJ{uS{XEc^E{2KjMytfho(+7;&6yS^58 zxO0iqG1nS5stjWD&T)05SU=#jT5r=S9s4);Q~e+&hsIO-M`N*13OudsEJdS8=~Bf& zZ5EeJH3tJt`*8;i3_H^l^|{+`Z|nw;B{TPB3lGz`mDPvM?si#3P^BfzSi#i8nIxVJ zM8fnL4YPniphAqV3S~}!e!R0A+Ky2#IQ-!LsUnBs+x?7N?PrqKjiCJn*N|}B0 z&j$Q=TjbCAyA?kuBq6!~H$&zq{<{^wDgIq;=Vn-m{>FQ6gG4HwmYu4xE+HCL9w1=_ zv&lsjg9`hiuD;w4MAW1*#(RO-cnptOOTa%G8hp?))bp+*jIC9C1w_~U#&R+>d$hfJ z9i2Ti%RU*vOW@N-zb5b6rL+-wF18^!D}}I&;j53)2=k3Wk?{+y_!@kuAIPO=VjWoagx2v zm=@2;*@dgeqc)edqS>qAhW9mRix^eF$5@{`4vl(K_Br$X;P`u@GV;vfcUrtm#fc3B zKaXiGKkryxR66QrV3z7B5TxZAtKLyi7d)%~!)(7InM^Mrr&Y-`!1S(OgacY;LBu3w z>2MTSyZ{7r`2#AkG|=t5Ebqd2?;@T`oT|OOy1Gg|E$yfOLzAz>ID`gHI4DUiRR@pX zdL5aIy@=9&Rx88m>y5}>caTn8$}eU#V{+TJ&yjJX!g30wsmzbXuX(_vpke|F+(kYo zPhEqEL)JDdLp%sR5P()p3$%+Nz60ZUn^J|ykQYPyc`D<(=dZs5y$84&pFo4!6Q) z5P&KOI@vxiA|fKXl9EEbt&@lB+_d31%b}SuqzyYKW-6Jy81O1pWVu$|*Z7WBWnIc9 z&U8xTXa)3gu;*c&t%QdjN;BG)@#Bs49a!@oY{6uSgVULW#3sSk3&GJPCU@sReaKNM zNzHXO97Sx@FU?K7WEFBA1@u9zI)MrbsSWm&9_FGaBgsa5;YT+P)YeR)C~;C7c4GK zl?12-%Vl@6UG(;z0D)7zy)iK{5#0t_o^$VL`Ypcv{PSbti$f1uDVjD+m6Wi{7kgce zVCxK^6c^Pveixr7H*aaB82zl`EWV#`{94#Ih}C+~ijIVYMeW7^_83P`LdjrlncC*X zlmwLCe{dG;OGa-Di@hVtMmvnHIdzkzor-AjGdUOcTgh{AQR6_sW*8z;GqUI46ooeC zc6S7u@nbU~U8C_(Ylb93hW$C+&&MOPoF1z?a|Awx=*F06FX~f~pg-Xvs{)TJh<#FW z*|5A(rCn()1q+@#e?lwSYGPc_ALk1A6!^X6bewSYa!wTkHv;i}Q~FL7^= zZM#8N#!SR9%h)f_w8MWTqd*@vSTm3BhldGq6I4T6HcQ7#pbF)e4s$IgXZOijO_NQO58oXFn zCUdz9IU?2Y62g4NckF1uzl#A-fAUaZB7i@Jz>BV4 zn@$BR>odq&wy;H-$RFA7xX&0K!t%2uURjcm_|X2l3f)Krl7GN$VM za;a`S*+!^ix^QH6F1E)wIHHM?k`WC98|F|W!X zm)a=nO*$27eTl^UpP_1LV^gDgOtomaDyk3*e%1eGctIxJAI;GZL zJz(JE{ngyFahHwmj`I1+Q`$qSpF$cUw&!W6ukPPxU2jr@ho9=WD8?1nby{{a)gS^p zXL7?bdy)*K8@%(ZaR7dfko*3AFEPa63eq4Mq#%c=;;nr9Zq$sG!KX61fe7 zXvgw{BhX2dIMv^d08jhn&40zs|0%J*DOY%o){z_CPE*Q^^Vn~U#0=#g5j*%_60Je| zQ>}?NsG2?s8BP#Rg|~MV^4%Krp1<1-FQ0R5ku?ii>v!Yk*PF`4SdCOLDDZZ3+g$jm zslgYUoFiHj;rp2GpYJxMaE-6QUp>aNE>uiqA8(CVVm7Q&rr4615ty;VApm(cH;zxE zk}G;(;Ag0k3hA>5`iRneqR;_oP^jBcxZw<@kMeXePO9EfxOkph+6Z?itfQ8UHpO8c zfnA*bLe8b`A}i!twS$&WbGd>#nHt{-MEPO?<2!9I=hT^YFo^G##w^-iUNsPz%J6uH zqNMW>w$+d~6NGQR&|W7dak{5P6{8k@k({IjbAIty?g?ipL_S7@JywRo@`)hjM{1P- zF3aCO&X$AinX%Wxb6u$XP^=!mmTCQU;o_+&ZOr=p6c;>qdPT~{IeY4WkjEf=r>l-8 z+-O_Fj_EJGUXK}Oe4LvY+CUj!ROO(*rkv7eWpk3W_CEVJ2T{uNUr^8~k6KSSY9$6m zp2c3eiI9K99AqF_CK6l%aHq75>Ehx^vK>)k5Ufg(erhejb9r!F&I|x_pMfTj&{0)4 zf?k-rlwf3E21>*`!4eaQoCM0UG@#t$jq}KrG9b!2KNWrw|LmcNOVIl-HrsGj`z#!6 zC*7jx0m#jP6&RDB*V5Vy=y$&!y|`QOrKTQbP6PhOr78-&{p&PdCi#8S0<~EmNGLgf zW6X=%I@#(^KcrTcb!tv@yZ~5vpJXj>;XZI9g3nZ<#cvQIW8%r zSwXRfrPW;Fy^Z}cl2hcnxJI;XM)L{s=gUpt`Qx(0=~mg}8U8ODyAO>DqvQOD-ns$xl z1tnArhzQN1N%mT)<%73ne;F!StAn?bO)t|suO_+h?caWt1?mx}DsPl+`cO5{^@vUU zl5F-JqX*9kW1R?$@`NqvKc6cl4!3z7o}<`Q!47|iBgyv_YoO>C z6g`Vr1b+53NiUMn#_F>gy2eEtwj9Qr3a*|ix@DHUlaPO}Mn@s+g0(O|M*v8TkNT^Jwje&R~JzD5dn_Q{+d}+(uATMLN#lefhxu4B9)YixE z{>OoRWiKZG!Ukg{0KMs04{1#xx8{X?#d#eS?&D&hxqtgf?8gV*&C50B&F!#=8idGN z+PXwz(p!j=k+uv=bVNk3e#SMGz*pL--Pa0r_Ys9{pgZDk<#LKos|&Gd`R_No;oXwf z=3kK<3dI&%$e_!iNQI7HB>8)X84-bkW}HGC`&$$WTcfZ-l0Vdo{?h;_s_-A4anaJe zC#N9GPn4o8>ibZ?k6Hk*s{enm#SnT3gRbY!llIk(hqrR*$f?Q@)hNAJ%6`yF;_bt;cZ>%id9u;pl zr73^w)pXJ_4|Ctj+>5ehU{*z-g!Y=S>@g0H~%%S zyklS}afc#h(V%MjC0k{1uA4-#s}H4;gUo88$5L&Zo11JNSIi~dTJE;G9UIP+HjW)C zyCqbmhIdF*G-e=28B`gc%yNjyooYKi3g$*$aKRNOY6~weCzZUdACVhN2ZI#^!{)j^ zTxQR13>Kz|i4f!Ojph6z*|?SJrw9M@@LHfK&6-d_IectQT%M6#Az^U?AxCU!461@M zClnAyF8oM-!}lI4nj)~P^=%H}HAhudM|+ic$~I@H@1KBU(b@u2bDcc@s+tO_K(Cl2 zW!M$UEAXPcNCY+Y<~_Y90?~ZZtzI4#@kK85%&FZ<7>9Q$Hl_-$dZ_QV_u&wt;oSxDHO&Y(jiHsa&Bud~I z+*DgjB89sV6^QucH*hnD#8Of1MApP;M{xpRYDCLNSRe<-sLwA(mSw1b~S_rP(xrvUL zR4h7~M(7Wr@|u(A4rGSyzTt`18-gGPhrbjCeM|~aRaU~PIw*F}BHcFi4mG>rVY}7b zx#a{t0Jn}$jk=SnzoKr{=6z@V;5$i_zeqHXt=Nh()J4)#c7&~R*^)!%v@%KlIQXqx zK`WZJoD^X6rE66mc@MLPDmt4Bij5hrq@?!}V|C~*(3&9oY`*B7Jn|ef7anTdnvqD? zqEWT2qqM$?q>31Be7wO~S+oGPrp8p5k3RoCcNa4|^Ipb75dGdYe}gl(XLLASvXy^ z+3{Cvq`k9@|Lm`y?}&-vS2bY)#|l?lv+#rZ%*kTV2N(<_XR5I~iCyk-E8TviCXbkq z=2&SQq^WGFZ`F|JwL4w$IKzFB6uj8^z*VQ@p!rbm4u-Qj;bx>%2N~}@shUe;iJL5# zxE=Itox7djwG*^T3X^wr#f-29MmR9^i81qVhyS$&(B}0LOd{s@mVnd@Ja@Z;X>g7% zkvx$MN6e5&Rdq!DS|3*t7N3z?u36_eMRIF!3Y+F9t^z@Zgj?v6XAHwx#)5lO3+sJU z!vqa3gnIR}!=w8P^O<*=icN5#V%$Cao>#v8bgfYkfwG(?3ImPVL^m#CS^QKWo81X( zxA+1}wLnarj$LOTjyXM6J;pWx*?h zKS}f@45UimwbboI`$hZDNN(oU4{lmPO4)QhOULhnO4#x; zoKU!yW3fb7q?Mc{d6+3uE*?JH^Q`_ib9zTO)h@_~n z1A6K348HshlhADGaV=p41sY#DF@av2N0`?vi-Z@-2FE%XZ2>fT`EAWOzw=6-aP5)fk@F`KW99pIqaSMuk@k9y(KEb~5lim$ZWV)g$J;4CjGafC~~qzYw>|EVgW$joo`;m1C13<7}#G?C^-Ea?rP=jb2~KkfN9 z6@Cvx|IgpU_-(6E-!wL6221hLyY+rP;*m3&s zER+LO%LnE6ldIPB;@;2D!z}5VdxK0xdHZTFB6&VlGgC2gq@DoE^Mew7xLzwUg$=ta zL<~>a4k$Q<@BA2_?i+Jo)BQ$58u5&}{jsi88MYuyUHH*zaqd%_oU=0i&vnc4pz}yQ zW7&;gBnsnMHPBlobUspE^8?; zNPO?)+E{${JR$cD$-yqxpZVv_E+J9Qx~BTuMNLCK z-B=i6r&X^&)+ufoQ`hZeBi#6a!Q()}Q+!u#GjDv$LzgfYaWWU-_UUhlAe*Nw_eaWv zTIvW#>)QKso)c#S+knYuD#D8D|q=fy+l-czDb4%trUpr9M zr&35D1eo}EELdimvkY)lG@AS)*5wUEU|vX?EGdQ_ivCCPh^V`WCW=$k0KYstlpAu=UnF|?zqIA)zXe~_2O zAgS)-nhcRxN{Jdx4)*vm3^eAUdz0wTf@%Xl3~h77(n z`RYR(_rn!_(}Hw*Yq@5qT_LXMFbm+I;42GAYQ?W5C17bVI`jIAwb zWcG2_h)JUBMkUndoj(ct?j2w}12{tu%m>w3T9L=+^JRU+>EX8!m%$W@zeqlY0cZ0Q zD^b41i#j?+abwEaIpy(x;2Y&UY}MkX+4C8cLA=UTmXTbls;bsc*GL}le;8h$5|$`> z^*)ml(=H={DLu;I5}fs^r9>rcX^EKCJ+A_PsoBme;`_Z`;v_c*8|~bKj(y76QV7~H z$)weuVZ>)V@i^?GaL)ea?X7NKxo)*7^b*k$C8;7}Kf`{89nR6<;Ktdew4^l!+6!Ge z(l{L*Ej_jV7y-Y1i!ND*yy*z6r2)EzCYgS8qBp+N0}_xZxKsHp}qni`Klu{%M@G|R_&3@5Ib zP0Wg&lHo;^JziW=Ya;IU4!N+to)~NIW{%l}sdzp>6-~5+t&OiG0W4#}fDjQT(ST$1 z{#Oqr#*DY<(w}5+;Iq~0a^0)N{oe@>92o{O#Vge2D?ftLb)IVig*)w`lzu$L*Iem( z&t#4AV+8t%@sgPvAq(*hpzHFAqo~BN{qGghJEZ+_lKpW1b*iv0i4b(|6iRK)F{GUp zR@)bCb$qAsqTm4Q6WZ&krdnlE^!lYU6pWts7Z&su>cqG4uy|A?9CQ5Vk=5hFz>AXL@Q%RP&zK|w;1 zt{@KKPF2f@2%UJc&OLi{PtBgl2NF`g#GgJ#(d5z@VJ3|=rjElsolA_0vPKGHJs$1n zjR@(j{E*HXr)}1>ScV7>Y&dORP5(VDL^hxjz$X+D{hfn-eU7T>6gYsaNNbku#PdraI=GB6}qQoD*pEB z_M_Wn-7zPM{1E1;!7BEuQA==7tqSX@Tf#ytw^%q8vD_R)&7aQ|T|}o6;_Siw`g;*~ z64zJ~K!fmDyA9+bQt|U@nI0n@Vvo^ho1b~-nvUut8zj?m=qxJIp-kOQrh@BkZWL9E zi4woKTr;h-ja~_?e_jh3U$wfy06*-aCyZF$!|2yp4wUXI zYAZ@2L;DISuB9eUy{E?X(>>pWt)B4#evyc~OHk$stU+d9MjvVWzJ4@{XoF-S6NB+^ z2|pwKg4&TykBgH%F_&FeyBe-NTCG>nP35U>2sIZ^g9-*$^oh_!9>9X->E|}DZDj?T zG+Hxr#lw@|I;Go}VaMJj2RIZN1W4C<=!M+ldeX!d-gBEc;CDM&@|en1_yB6i-XtHj zxD?V2f9~k4i~)g}VBAh!7*tqd1NOPPqf;fbf^XAOzJS&E`?<$K<%hi_Kx}q8Cey~N ziu*~%dt}CO0su<`>DVDHB+U7~`-_CmK(bzjrjM$1lo24fc6=&(o-MNvK7# zTO}&QK0fOJ#o`mlhUAT&lDs)>)3a(UkRGQeDMl-KY3B@RwmaL z@k$PY{^X7_U76#Tzet4fOg<1U>Yc}!bOU_}Qm|u|j=LGFgI1eu$gQ6(JneH8f@rSZxtIe@)RNR(EU&pQ z)EStlQWPs`RpOz5i#faM+hHzw!u|M8)AJRK_M%KPt&Q12A7J^!oh#0odTQa#slCpN z;Re1oGcJ2w_F6YoLA()EZMnF*S;mW+y5^l+p?{Y;_S>od{GR^v4V!WZ);U&Ju}Ub- zp(fc!dTEeXS+h<;h|6+7ELP?7(M0b2+#YWQE)18b!*7tM72KhKn$^K<`E-bJa6Lii zig9p=QANBw$Z+q2AG*$jg~){4q56E~;)aCN`|n50rB!B5v#mrj9oPcvAcpo^p~+OC zQg;drbR=ZUe&)`%%6p-F!@|`n1uQtVDz{%h5oaOVG5349o<5rbndgDUvuYZ5n<}q5 z;3V>~Wl}XW!IsXkxz2a!J5mF@h5qcPo-ci;Q0Gw_NS9*CKiI!6v^8vZ9^o61fvqht ze;tVB=j->aVw{VlRARKK4L~jzoDVhU&*~-nBq!|FyuRzFQ`5%K4gm3q@t0uTyivbM zx*d5N2!Yp4eIBom!|gur4;xjzc2IC=QiGC^u&h4%&7cPHExr49i)kqWifiHVfM;y$ z>{C(i8eZ$zAb*i)3`x8zm^5{YhUecd0_i=LBp~0p;R8XfM*aTM&Bp}Ck^&>FaZ?1?`&z*3%Oas-C8V?D^ib957s=x-knkpl zg7Zc-nQod)cfnHfj%>Xo`46+IO{@>@AB4w^X9CeF#Ai-tNzBXZZy?{ZYTTX~-;7O8 zcqGVa0Ys>z+3Roh6$CJ@h~_UaSi1f&T}z4 zK$s5}ICF51)<~ZT<%pHe%8#e?uR{YJ=XC@!drDjqT&eRy#v1qxES{Y+xggXUSeHGe zYm<_WYAg9RZEC5=?l8qN%7K=`%>Tg-HJc+)zsaE}#q;mREuvNPcKMQbUhB=ALOaI@ zLKlSYr-n6)$tWWyC6v}lsu9D^rJ~0NW+k#mLu=K7;{^tdUeP`Drnw@rDKK87p|vcF zWELv%97mswRLk@&9|R7KPrH)b&@ug=&v-m1x$$-)_^EA zLwXAU0;5qtiJBTdglueoqHbvuYqx`MF`5R7O<6LIT|OVw;vQf!aGrD2VmgraGUpU-cHkX2nZwM) zr@=wkNXQalM9J}}O}p{U<0u7nUxis|)&dACTdI&^-u;I@>{B~yjpu;?D&)>L)#L>0 zcFDi$=xuFBnuSz5Pv4N-`A0rjPP(`1E}(0)MM~SBq3aSXt$IM-&A&{EvZzF>I#dg} z|BgHx7qe?l^|7zwost_`N@L_y;7cpMBkA0(!d!f6Af2xcOv43deu=+Gehj2Gw02g* zcm_%vEpg&A4%R}5fso}V4dz^y3j^R_?yeOi%8%n13cKZqnO5&ba0gPR7J=Uhn^wRN zqRu6E069R$zaD1B8Nn9#qF8SfOap>@T8e}_>wO~2G!u8RXg83j(@in$WERMr8E?e7 z;3cK2im%e3OT}I6XvXVCmSP!v8a#L*iKrZJ;+poIl4gH6MBBHan|sh1F@~Kj)@+$pQXblDFTE^U=A)bWiy4(FfycM@FkYa-Dn` z8R0!9SNwF9dsE_KUfpsJIt-->mCyXXbQT^yxaPSOcm1)UU`)*}XY(UP0bRdG%tBI3 z{G--)9%fwe1^i3|k2?-)iNFJWHapO^eQ-=fkE^u7Z(mX2NkY=`gk)%)@qIXK5P~=) z#eb;TywFeODw-B!RpPe$IL$XXuVjb7ft6AmIS_Ihg4&&a$^Jll@LBwD7GKIpu4F-` z|0;?JR)g7upo38;4lyysPE{URKO;F)u~*psKw2GJnn;soQy`W<)4e+5SolJKT$)d;}#|2rW~Z1lLa|G+qsqH-KB2#3Gmw?Ohlj;el`w>w%Lj< z*f9vPI>ehen2x{mD&DcnF$9sH3)RxC&JM&+*$4OjSmSM<`+Wf&01!P1kq=|$Vf3%1+c2j|1peEpg?KwoHjlM=dc7o@sZ6iut9M{A z;|mk@_Bhqbh`F#>wUu%KP7dJL%Jbxpwg!vCI*)~uywjJ;Wqf&S{eNCP?z9#Kc6Lgt z9Z~txe4{cD)_$#)uasAdHJ(qgZY&)Cp`@( z>mO&{kRx2I{AzXwR5hGQZtaN;?Cpt6;uxQAX%Qx7Xc4aYgsJ)g6VmEE`Ywwk9xq$T z%hD6`li$P^FK9CO3dh+*R|AnsrtBUzsf}Wx@n)*Wr1rZFO&?6nq`mGyYubl=RRi~F zWr;;cS;5R`d!4+0k^IqpG)(QS%TIl8oO$xtMIyU*nr@q+V|=WS7aH>XJx6#iDI%BA}YR?Yuif z%Z=x}S2KE})c_G_#Gfo26=CKp@no~=9&8(ge#@z~lYE{$E3PiH?G4eh9HFVQB!@m6#Lw<15RB z!`Tg@EyH_Zgu!ktaN$|a=F&hUAlK25fmb0to*fr3DEn?3ru3oT6DYRZwP4&3l-C_A zDfe+r198Ik48NuO0sTI&-wqsc$-odu_G0!6LhLOrQ_j*WIvXxgRBFvxmFqlkHC%A} z1o`#k!M$6ZdR(1)f~2yv`K;Kk*cP(VI75fT7==Wrb~98!1n^{C_LP?XW4|2}k%MC@ z+Lrw%NkqiA-yaf&=3xmtS~uo<5>>(n0^zi*m^g;yyeWCL2BiBmKEbLwUcg>5b5n^! z{C8-Ma*Ozi z_xqe5A2ZWs8;^IvX`~0~dL6>PXd>>5r1F6%Lq5M7ndkBP1Kz{ehwH8x0=l7gw;7%# z3T3xiKGu)4sX=(u$H#tAv z3zXs*ic3ygv8J^Lix{Z}6Vxh^r<|NrpjK8dGE4Oq&hgYr8=fWoRgZBm@|x>+5ZTxP z_d46PLxOHsm3;5czI`1~0648xq_TtSOf2KWA$jXKAatsESs@$xl*vfs2`?578eJ%H;(%PZ^Yw4bjuiPIC&v@F`LbQGYW|!^1 z9w%j&{35Z3`rMy8QRL%y#8#T|U+~W)49HRGOGwlRqPJ~dqAdaSZy{8h4S)yw40*jV zb{j#u&Z|SBocyO9!lbmvz+Kmzff7`t(Y9L9a-Yf$wPRl6XlMS|v|BE4o+~evcja*R z>tHoqms2F^GM5P~P9#>mB9`M9376D@`-w(aAF*x9J@+JT>0wxr8CB$t^H`dES>kRn zxLX&SGQ0-W5rVMkVZH|_&nh(K4hIjBmP&`^3>q?fHUS+#c0|x@4F6j8`??0om%l+Y z%`9`p9$h%*@D&j;fat~(T)c!FPckj|;pVQMd)b?Y}FQ-(nTd^Xa- z%@X;dvGn?W=1hPks|`Ehl}~Obx`+zIy%H6!!=>s10_Z)>-Ni?CvaStn6~!!MfAelk zjMC~7Azw?_&;DMuToM{VHLEWasV#EI0_()VOomWjJ;gZ5pHK)H`j7B0cGZ03J7loI zuYkEhIl)8_Rr)t|`#6n;ea@-6DbF|m?!mknTK%Fn#u-**d{9fOQfW~{vzYB7D(jag z2n=UcQsZT@68Ee!I*_$%s#|7{s!_4~X=&MP6Dls+x6tCP>0tIu?Tbamw75oM{6>U1 z(E?8cio!tWG(!`HCe@4Vd6@iiQL(5mo%7CYv*C;JMrIhfX$%qVYD7OltEDE!K&$uho=okE9i2^ryL%D+f*rt2J_ z!ermwvslR*9;j%dl1&C#BnQiNy)^zX;aDJRbd~u<0%@wt*Bafx7#@?FEM8z(AB!;v zh)5VNd}*G(?m)`Ce{HTwDnH?Wjk695ieelln55E*`}Uutn*q^kmsGZYz1{R>DeT3X z4m8~&l$lckZz8nmuK+9wLN$`y+Nh|`(Zeb!Ng-IxNZ zeRj-6vcE59!H>!P*`DPFpBHLZ1cOJT_mqxuq@lk^Dh%F!$K3vFx&jbQWjUmM=r}q} zzJk-OGJiOD-)Hz6ROwJV5pg17=>8|PtDx)M(N>j!eeHG8%krY)16kPF@e22viMhHj zbMFw{cmME5&gQg7jE45FYaGO_O2m6=Hmm7|{pDbP78L7C=&^U1s>E%kMGL7XZZB67 zi4%!a1h^SuD&~}g+xg#==08Wn;y3>SYx*z5QN6!NLKXlV-6B>^+J&@2uXB7S!t!T- zk(7^V?(JPo6VAJwz0r?@StXnjpyN-M9PCf{YAQW?$Q_qAVg|goo#s$F8m^IwYLz?q zZ`_grQfSzCXlde~4xb&ldM1VYNo#zZOHj3b=HKd3`jgGMa|5WPkJVyg2!2TVgJ9o| zWan;?j9Rf91S=Dr#`ILaC{L3e-YOYp|M%-xH=`9IPC0g!iPH4m;{FnLN2vfoQuqen z(h+DR;ZitxAWtxsUt~r(te|5b&QlV38hUn2-!q%y^Wy2|kI(r=>#dYLeC@txrOW;_ zy)Q=&J>C!MlU^{e#m_MbYn0G;UKfA-TFFA@v+#98&Jg#DWQPLL%qFPU@BH%@$;<$J zYm0oUf2}dA;KF;Be-PMr(Syr+jAZsoZ-D>2!VPdm!;8dP#4EWS%blY+w zmudM&p!+%I7YR9{H2$nTU>4g|(w%Z-lz22u<$V$|Gl&jslgJfbrQ&Gdru#**ZjVYA zvAeH;F(Mc= zoylC8$|1S4u%(}OEk&I~S?_+Tm^R1R9Vn#t*>JVchpcx)%z-D2{S$I)nRcy5zquqs zCm}ArzUD_sV<7U!_m5#`yXp?Jaq}^~ep~y(!x<%5j&@h$rqt}Ap$c_jyr!*}Mjqhf z!S*@?YY-q6jdd|hlvq7yqUbENk#irj!MzOeL+*@ni3j?<3YTloB-=`s;jX5=>TjGw z=6@KSHD#{_*T)cJCKcp(PHQyiXXG7qgpLyQ1k*is)hx#4sX}me12!9NMh@Z|Wtcx_ zby8bw%vE!J8R@{nNcr-6=1p0e^B`9^fCtJb?yQdur;u}f+DHIdWawMGo>>?WYD%y;H}nd$9|)Q>WtUCgny ze6CVs5M<>(5JHx?S1B`|;gUlnbycQQ`9o{pv*bSQ%C@?7B6}TE%rZes)D+f}SLXPY z3Q=>g>-5#`39DOqhY&J#BWb)l1G?ZqZm_f?Sn;F(?tBL=gf!Wdbvt5H)HjTL?AW8 zoTF1Ssik#wRFzAXUNUi6{3x#b11~+^S98w2QZ1m`e54BYajIlMGGLZ(q%1NfrGJ~c zE^;(Aj3{-OHkdfKQt}VgA_UWMuwMvyK{j$^XAh`m(!eLr3e%vWiysJb`RD%2Y#k?} zyxA*eX+P?lmq{_+hd*z?UB|-dI%}U|aFWR=jE*ax!?;f#YoEEM;nQYf_;b;zX=7l? z?TLZ85uyWwdzR!`)%+B>q_hsKGCea`App z+mjx*4O>@Ksbq4LX#;43VAal84Kuy$JE}q2g8GWkJ}S>c!}eD2@gV7M9UAT&iwED*Kk4n(Fv3!|CB&6QD! zKm_v`+S7QJ9srO_b+fnZG5Bl!@pYc9QA57)Wx2_;q>HkZ>#Tn=Rjx`*@C;*GSq7h3-W7>o$3KqfZ!ThPI=yn$aEEOd~|`38KVtR$2SP%{43!>CYg3 zYOB@vwEW+gLeg1OZfR48OWzg)p)^|=Z)?6S>i1Qri;SLKfj1+fa(VObQbo^T^Lvt}}xaErWL7v4Cc$J17up{sCz)tw4=Jy`6ABgEkL<>WQ zs)$I9?a55IoUmqaCw>$pQ3h9t-qHGjJ*pCm z(i=e3s>c;Xv~ee=KWk`wg**_tq&rU3nUA#=ZI1UvaGU-aQK5o7*Z7uLz{m7*uAZ9W zR3XwL*uZ$T{^f7?Bwjv7Rz7o)rsKxHsQ#Xn(UYkUL`&^dft@JqjTOSIdYi9+*Q&te zZoCN^RcQH2q;2V+ozkK`Wvvz0i2#v&F?L>`_HQ~^!Yy1TLF@); zv`z_wG5KBA_Lr{2s8iOF4e5T=Z;ShLW&~)PSeXjVo0fH))e;w~la>Y_GjHeWE#K(a zeVS7-2>Y?M)Cm^@yWHI@^e*maw&mBqqxFyw{d_xB%+iEsiU%{x2Vj)pDXKzSrS=8s zY;enjo2>48(#~=m+-iCd@#RHd@bta7cLv2i2=~E{T+Cx4`Q}b;EL+r(jFClQ@<(|; zJJm*mDhDzxby_n_?YA7gOQ=1WuGhPQ!_EA)ePkhM$FM<-hPqy~g3nF8a$wfOr$@`& zt@Vyej^YFK2(AyQnVs$S^&s=-hk1JJ?cjmPNm7)r1aI?5vnK2oF-MhY3k3A!L%DqW zY{ydN2?NFDajWQcYkLI%(>9+>=&>_X1tnE!4itS5m6gcQ8B>rg?iJ3dqd3m-Y&>Cn z=o#t4&?PFAbF$BqW=#zg))W^&pjBLf^+UJWX!;MDF;!jdkr*Y$AndYhqw5d?<V(rFMYLGgpf(M#Nn=+RvPamlZO-s7eLLMvpr^X)NPjTmq1 zh)}-qVmPi`gNp%h3vQ0mp^^k4s+wHo=9bCErcVjIHKPVEo;O}`ypz1W!#PRY&s79g z8TdF?U+nOU#1aHKFA~tB5_d!C-{EF0ak=AT6Jzr@$x$fUK2fxDrEat|&2lG5-FTy> z!y}PS>o#X;URh_uBnVK0*?=Tf>hp_{HYzBjVc^H!viHTc`vOLKhp8(u10m|3sZ(Ql z_$BHw?(waHWa_zoudMM`9`&EHmqu%{p642_m>#Rtc;;I|0&^*dobgPXJhmUN9N0De z!3OH#5KS;T5rD+Zn$DQ7{1n8Gx^9Wo5?Fd|2W@9YI=`+P z8i|efdfH=rR@Rj_JGC0~gO6S3jtnW&%j-?$dN)_g`)Auy@_fif4f~*R6 z_T*KUX(9Or<4dVRKerf2>&MLDYdPqm18hvBa9NV#r7JE^yj8ux!o9aQVt@!vmRl?_ zbqCHGu9_!Pfhyy_h^Zk(l}81|fcVb@^6WDWfUdlwrI?TEGR#^iZNt@GPX68JnX1Nu ztiFSE6F{#?Qg2^E^E)!NSkVR!0gr{aRWFpE`F-B`TIvmRGUS$sgBN+tL+T5Er)LPH zN_m@MfQ6-*VRtemegT1&zZ6#gRzM27=P6bM(X)3`s~U*+xD4#fXI?N~kYA8OwOOR` zdMA3)<@Ol4lFI00cXKG5yR}JBmr<6HmE{$6;v5*QOxLQreENQ}_vL~1@ ztHaKX69OxC{$smHiQ@_LU+C8qsc}n(u$qhudAFd3D#2im?#ivl>l`YZ0V;98NHU== zAs4f~aiN(0DOHulyz`8O>?P13f=_|)&V!vGj+_IJa%~RV#vO&0EJ<%_&M%%9dE8er zMN9rEKU$Faq*jswI}Ud%t}{x+==e6fWk!>AkKeH_ph=#7R<<$W0s~pA%#Ly~M*A>O zral*Je)cS{kA3-c#yVrXJxkOFxx3mC5uvNA>d;!ap_dn+++sX|@)t~d0MUys7K-t3 zmRGzC54Cya-n!e?LRMy`ly`BL4LrXgd?fAjF#K$2?$o67YkY7tx!mVyU&i9K{N8?# zE=_gy>u0RCm3JmzIS0ta6jPtT6I?uj_XlT`nOwqYkcS*MK77~@e`_&HX#4oN8qR;v zLyewjaiHLy_@XmbeL0tkTEy9J&Vq0UE@!GGOKj{XgI6kF?T#o*p`-FSajWA{AeIUH zJx()W+k74HVT3((^>G>y#3nAi!P@6asC9!~s{L5Cf$FK;sZfNa8cK8g$X^IR76~a4 zTzS8Ggd6Aa)l%PiUln+u6*b+NN)@j2Y>}@K8+Ea|N|Uq^X#3@aw$d^peDKc^OG9FE%P$gxEjP-$bKA0wVe^-+j20=Iwl$d$dr8cWxdAl0Vs#l(yUPhLoDn8DRRr>1onWRqRrM&Dg)5CT=`XsX8V1Oi&;VO zC|Ey@8BKGi*>I6GO{yr`L3=bi&4ho?gi-W!qh~Ft1wLm#XdX<|k?Z`5Kv(4FDx;wc zE5NMBRR%G|AxwE@UcU3%A@;A5$)369k4^V$@uElaVO({>ATH@V>7=4N__G7xIph`B zhYyV{iAHh{BJXqy^*>$d`DDX=F7Q#An41j86%p<^&wKqP8Ag}451uol+$-q266gE-7lnS2s~+7SaMBDr2abN}%M-~Za}K!2Dym1*V^ z_Q2jZt>m=ajiLd)J6@=tHRBRnZUt26k2Cg9!P{^N#(`Eos<-(7?BLr?3J~fALtLg* z93l1nO#jCK+OfKvI#G&tUm3}8tiv+QB7<{%)VNb)Gjll{b(Y-ijOb_iD|B`8lwt+t zVfuxCxpPw!JHU}r4bDuMg}LViW0pp?D3Lo;!;JBdJu+KVFLvY!J05x-Rl|r78g!}IA6sYFOeOUAl#Hm9yK01{)i*6Yi%gDApYVOFNc6b%rt@P?AI#P7D zB1zWeP<9_OOA(*~Gfb-c983)aoAi5$lY7c5I9hGU@%78PC8oMb1XjxLiD*=Wjy^0n zQ)rAbfQ!@r_F!1OkE8wj67SUeMwAD+RfN+EJ{KjTD_If?qh;-2p5lHq1)xI-Tz88% zFrVo50aKH@Z9RR>{Ze)t-o_V_f37c>7?7V3#vnyy#ODw3r);Y9fuUh z--Zg5kM9>aDLgYBJv+YCDbk)Xs{5Ra7~kj6F5HALSzY=(&(9Fv^x)n4_NubuYe_>E z;xES|q6^1_&U;Hq8Y6JMV^^2Nef|5X6r6q*daNRRxF^GtTy$%e#{Z+QU_Ci{@=$*B zVRR#QM>Y)wD`!C3OYwHC+k@kGJp;VI+vrNPyrnsG*uiYPzFlZy z;;&t50EoR`w}AUAVM30QRM|4>LWcrh1xeb%AJERlM10u_j_4g|5B+z4Bv6#X84w+* z*<;`%iG^D_A`p2128BOdNO>Ly0~)9Z0$_j13M1Icdtd#yCe33iUmqRGHr^6=*3<5l z3`aG?_Xk>3nsq7zsi%fcUtm7CEHCBy%ziNOSrZ8fGwDUmg1#wHXk0w)Uc8z_-astZ z61f~^{#2+Zt>kDH3aAaYPl;8RVeDXP=XpW*9LTe(0z{76RHbyp_IRh;M~T*>I5@m9 zsFk=itJEyf;_pB~RxoB_<0x4*V9JueQ{#ZASaC*t>)Gy>m=XE2=MUh|57QI1Uf7vWv%2&bs%F@r#cl#+%e zYh8-4Q|=12vRDUl1W=6AGXQ2~a!{os`Bkea;xE3VYHqdFDILEL_5t`c^b7h;~KQjk<{yCqf)SsO%(mjY^z}^wWkb-!N~xLPr`C zF~k2Upszx53?bCXHK(Hc65@X}2AfOztZt$1CK6rm={ez~*NOP<{nIoyPIn$xN`sE3 zn?kbSt)ej2W{JAgebaSNm2SsrEF_6*JYOU7D!B0+VYbojZi&|T_|AL?z#$JX*9x$u zS+Rp5`V3W+6K4A)ij^U8D1zfVp%__9xi3Knxkl`p3pP9~s^`^vf;&%46t@OdJfTmg z;>P@p`{6;TIfaQ$;s_QK$Z7Na#;s9>kO5B&Uj;DT7l5$D+j&LEFfY}2_Ue5+ED9@- z@_{L;w$FOS+nImKV`J?Jym4+$sNsVH7`S4FqqK)F?lq-s?GHpH3TOY7xa_MvWi&xD#w5tc4D&RLgV%FjNjEO*f+4?7 zavP+&Mx{1&+xvg-wLEtWo>zCisQiu^w=FFN3QQS3=b)Y!c9YLFC}+f*6p#6?DB7z! z+7pryr%%496c$w^%eLRP&?J_zYDW%NwLf1efXpz0=k@8f^d)DVIgQsq%38e8o0AH&2IlL5kRN#&SsoTF~1Y8`PlE?aHiSO20vixy%;=%Kb~_9L|QN_YmYW~ascP*ZmdTI8;uLHNe&7Ephl*Pv=>Pa>7=RW zlK8)*C9!fk8~Tl%-hs@<;Vfw-tGyDV*4`;z$yo6nhon))XU-Ze4jZpMZs}HuRf(rE z@D!jYjruY$UUqnt1Jwdy(^Nx9K?M$!2Ldrl4=*g)M2)i*;>!GQp4@N1ED1VtGe>j4 zglKA&rIMKE!H-mD#@_Q)ofQkO1qFO1XXG^ESW^vRp~yL*!ET7+hLgAjMC}D9E-CFA zH?d)}(TZBy-gq#OQ(++bMLS%#6|P37<`cc>Gc{VZG}!r~)AF52**&A`UCE1iF4;tr zTR47Yt+=1P1E-wAjnz<}rYAM=I1kJAl>S7&*VdBToB4t1E8vMKGrmF`PvPv)1r&Ci zCz$rF)^*)JD)??V3tRV>oU-n9>19+&z6^)YYUnhD!VSm5DClr&9sQ_;t16Cx5yYoJ zL?b;bYUsfSk{NFOtmyYGFMl57so>Knp6U2kAy#o~EGm&Iu}F3VRb(ws70Ui*zo}jn z;zi!)N^Q?fOb>TmUMIY4C-PP8ni}_oYO*CbH^*BX%PyGE7n6xjLXG7dQ-L61mrCP8 zW_?xaxRL3}FSgPrxDh)&RagT8strN+EkNTFBVAKX@&MIwu9+)|`VA|886+{1A)RUe zR=sLUbsLY1Xkkrmvp?L4_J#|U$Xq&J)0ab*%=;P zGeZS>#)a3z{QTti=^w`YhkJ>%qe>CRP?~z=c?_LObXJnQTV9e3p5|S=IeM@E-4L5p zQXMrcN#bj9;Pd$;hHx{7b8^X*q%_xT7Y>6cF6?hde5lB$zirhncJlDwE}kHH$YLYA zS8A$D%X-RL*|S^h=H&Qv(>wuUU1h5iP@rkkv%+^RT$R^t;MfOMPSewKqMeIQt6*#@ zI%nm+=85_`zFeW*T?s7`Gj+59flFN@!?B3ogDD@hD`*;ICK3+>xaB|)Q>WoVj9uF+ z=7u)iTBt~Zp}#S3Rn>K^2#mom%WtN_+!@Doh3d3@+Rsw4UApphD}>}o7Sl^w+m3TOTn zpBn2+->s{$=n9Nwle|xqU-=(xKg|mkF zD*Z)L9N}h^W5%i?CD~J4ny5u}u~{uv&~)UxDn&IR`ccc~tb2)WlUyHaU7WX@Oqb~_ zj`_LQszmdPq;nxD7&mo&i}mcv;1>yXfYC{^-Pt3G+=oB*Jk-#i2CB%F;R}SA;tsx~ zkpk&K`IX{>2v^C(;10ySS(NsmQ;&V-ntJs>Zo8Ecl>Fk#-PH6i)?wDy^tC)5qyBoz zA>OINWr=*C4W({<{QJUmurDN*bOoe)`jsu}^^!ZdmAL)-kB31ae7{H{Tlg=vDzEO{ zfqf;77Ykb954y_!=2gzWx9zN3lHQa5CoE4Kt;>VbbkJaw#k>dBrs9Jvp7Hj26Pr0# zyb_9G0nNnyGY~;vkF0W6q(`UU4L7X$D$gTWhi_S&5$fW-n?#v=Y@7smLW39qk`1IOwEX7P;cl0P6;>K)QBA%)Dev$Kv?6oM#Pn005roXdjBaJ$9?) zKVP(eybdP3c6mfe~zH&hQhwNZ3=N5nQm0`C;TQ0YI6QQ_~cut*{n zCzd$}t%pT_s=zb*=iz}7MFHun;VRIxq(L ztQrxUW9C=W#Co0a&SpPi&Y*zQqwRN&d?4jzEHkXy$uFG?5n}##zlo$C^lXZ&=GC8%8{u-7M zGPrz;t&n#;<&kBCXI)>5Huw2>&UG(;oZ;Hs-2chCkUa=u9mE&P>q(7GAohDr(+4DT zXk3FSGvaSgntI?`mliyLEE>7l+`;0KHAuG^J!Hjk?3s!mL%v}Ybl{J0zDTbJyTw*w z1)^~NWjO|1ZS|L#poPRSm0{E%B-+hkbOZ6#|39~#n;&|-wFG-6V{A|8Gxt>Ngg*|s zxeWNvl~`zHTX$2QmP#EqrK{Z(gHWL&i8!d~>P z}GyTWD75qpW`d$8X*(UogG^ z-htr9(Ud7}IgNin3Kn7+z-Gk{ChT=6DTM$Hr!*h`g%IOE{^3B4^SR3|c_Cx8`+FP4 z*9nj{|649o!{&}+@Kw?F%*F>ZP@!>xM$a1@Dso}N%uUta4*z#Rd1IuCF}Xb1=b_*W zIG%C(v#31eAKP2lf7{;booiF~4DmSryTH4@R|tY-IvWz#&xzn-mMk+ zB_@cjc;t4?!NWpzH3BKbZ`+}D#Xh))^zWi9!53Gm4&KE5x!jKHSPR2p*XiUxLb7#{ ztSU}x;Y^k{aIg!qm^ZrXn^wh+Ghqu4qv451&jE0?R@v?E5?`zn2JY3~f1NYZ+8=wU z{nn(sM(|pcbrnBq-h2ruTc6q_i?u$z%brK!BeM{eF>q*Q~hW+U|wWf`fAkW~WC>^UAZU@ocvNJpAb%-CxEF3?o;b5wqQwGAt9-ouRvj?vo#bm3th_qe)&1}?`j^~qKoKIAcX z*|Kg*z1Zch&642^H7$m;^s8p6iRoz*6aefQm-He-s||bFNzclttIitVNp-Nk*X(;y z<*_v1l&)p@j+}vkk@Cs@b&f$*(iB>4?%LzCAhki%Oy5~E;4D}`E=jh850|33HE0ka zIVY8V+Cu1n(BugqGdJ{+Ct^3=R*wCA+0Ibkv+ZMc8NLIrO8GuFY#XGzp!$bY z`le&ard7PXw^?R(XXk9$C@C~`S6xRNUtz^ZWt*zFrK?DMgqd-kQ#E-G^ZD5rs;bHQ z7jgIpYe8T*bn{v3=gkVor&&>{z4|>{lz}wMAZ4S&qkGpLW3!9qMXw)ZHeR-ey)jem zNkEK=iU3iEKE2;Gms$9G22zE&K+{aVLe1g)Z%aDeORSM^SA3?>dYL$1NVq@YB2F=5**X z{u4f~kWUO+Le>P)^V5`hHxLyg|1l(*vMg-Qd3B^TKwhmJXwcD1EQmpeRMK7Y;)U}4 zSp!SGY7UI@&5DS^E@I%hi`q?xab-tw^%qhCBXpy&z~qZiOr*ft60z)*EAKLz@yFnc zq=0Tq_r+-CGEYadIKo$*K{m_iPy#AVLeX?zz`KmAiem~@zQM6AQ$Df<{V`Mix*`%R>4{t zina^c(9zbARSjjYtHwysUWku?V-du zQz1z5Dm1&1nor0JP~|3zT0scJb9q2&biV~)ui5GKvVJ5j?hlxg5|DIA|Il|8He-cj zTB=?>jWB&aFc1i0U31#G!R}&qJS^6M@SG8HNHUyI`U~6-l|~bzVr@*~YJbhxT#4uysgt0{VRdPFj|At#lJIB_F2icxbPE|pbOB8w%B@IO zrXxD^s}2r{#|3PZRK{<~o1z4kU)g@ix9txrUY~N8#$e_naAj~CnBZ#%Nf(bU#)so# z=JAMup6(FN65|FkSNv!@{;z@N(0-3)v))0j2BEMtGoc#xRlBtsoB-HRRil!DGTHM6 zN6tR|5*co2$hxc+X(`%VBxGnN7cXTovz4&lqvOedGA?gSdipl_VYX#DBm&E!`Ez1S zyT0%6k~z!BD0#XH8y}Ja>NLRZYl;ZIhEdARi}GGwMO|sD;y^x)eXTY25lv#5zRs;H7uFwxIi{UV zK3t`v&(eF}77ZK+#68_i>#38RQ&eri>!Xq?k(u8_rrwt}&FP|c169Y;9(*TeKBMal zXNK|XBaRqSb~>{e9!9AXHPvG_z!20_L@j@3MD*G(k~bP#|IuOJ;QuGy{O{C48a7iv?&SIN==>p(tVdj~bXMaTJcUd{U!POpU#h^{uIE$zi}aF}a(?f!xJ zzo0IE1Y$R7Co&zAMC|up6x?X!-in*PZ*Ey!15G#MQ-_OR$X%gkEI9OZ7VaCbY%ubw zRP=gWXjesbJSM=G%?xL{J(;IGpKHNREI>GCh~7XJ-{M1r|0+h~3awI)m zl5=BacDsx_37~d_ye6KIwW5sH&&Ijtl;lvp&N&zlzVe9!<71pVP0{;ap;JC`WSTB- zzY}?Dc90j??@yAOe?fyaytvz0)H?Yp#t27zJ3Ya|{DN`!yz(}<2EMdXuv_TaO@ox2 z*WdhoLhcI}0a8lCIcPjEDC+QZyXAD*2gQ8{(*7cOCjKS%k_w8wh`D_5%hyiMECF)T{i0TFy$26A`MYuKTFzsKokgS&NM0eKzO3(6Z%hoK0(i)T6sygx z?~}Mdbvw9*?O!oQsrC|?U5R69{+p7de`R$WP?`lL)!7~`37yVGrTlkI-Q+8p`HNKh z$A-UZ)amvrYBti$gh3S|xZa$j`l`%*HZ6`1&~O6s)Za#@V#11i-HbXsHzKyD_~o30 z>W7$O*>?ehypV`k5Wr2i&@O?FP>As3%nfj5nbM zUXy=Sw~wDt4(1w&nCH;>^WVFn?el)1jxWh1Px_tlBg#bfNs&FQ@~jR*mYgqGP@#@Z z`_%*{jYClfHF4^O1sQ(3@hLl}pljoa-K%34+G8JmZ1@AtdrPxqk|^*a)Cnb5MDz*8 ztAAyxDZ;9yyUVI((-{R11^Vc6dsE3L&@&eg^9BoMS5$Sy9g}jgejHF2&^8Rn@*@-8 zooQ}=*E;i?u6lTuZIO>R(OOY(02b)8g=3&h?FmAm#C8#7LXBBwRh(a7YtBO-7RS%+ zyiaH;w0Ia3EniIPs`BYb=V!$&`ZK2a)KL<+VJ0j@$3)Jj|9*xhVYAjKKf@k2d8N#p z%KM%sXU%(`QKA817&{0wSJv|Bk0iJ}qc2@n-?AJ-codC6jjhMpTX5+EGnbEd`Xd4F zQM19xRA7}zeP8h+Zgq{r$E$I)3PO@{=7Wk#1`n!kg;+lRIHe+3M^MLkDBnXt3kQa6 zcO8FwhQYtj$_>RnF@ZTP<9+@#dUJULky!pB9Fsjb+I!^xMcaReHMw;C0x)(_Kq;c3 z3Q2$f0SUdjX@P`hLMIgI1PB;9BI;J@H6er!0tvmBP=&43P!vM1DorV(AVt9Pxu55) z=bZQZ-c!DHUHriX_sp7gueIj)n|o#rU*yH9PX;@qVr_Y@H8bphW-;Kkigd|gow0J; zhqK}(& z#KrAInWGXwUfyIo62fA&CG=DC+J7rXm?v9TuTTFJWGlQ{qhu|D@xQ=VnoI(FCay#& zKGZ_j$z{}E<8YYn?>|=WKgabyJp4!*H0}YuE-WkyJs}9D{bF*AKY0E@E)y3ur}LMH4I?Q*D8cR=>DS(o!;y_+aA z{iW{nT#t6x=Vlr{)k5qngH|>kqyFLD7X}Q|M+#M8E|GsMqZ-=4upk) zva*7x>~R*3G<2=Cl|6E$u%rf~tD(xqamo22Uc%PhuzzSKAY}{>t}VTU4i=U@70D>} zk-sgGQbjg4j?h}s^Sn2^jK}34_cTYexP1*v0}o(~AO)!V@d`8KfxuVSULN6SGdPyI z+25cKfkb0C^xLE3rnUF}TSop{PAlSFz4BX*w~Ghv8)v%7250X@kvhW^uZYD+ZC8GK zNvs#Pd??vbVCkY#=+pntNAT36h3|vqFQmt{uz(;1mt7ETMs8vO6AN>CNn+0v1Y%dN zfAJM^NT&^(;UmX~mBM6$;=p~MI8mufDQvFlPm-xL4|{qF`yQx&KJmo02m7{;I2W-= zOM&+PXYJCzJt=FIgvOt6#qY&^KkXkXDK_*yw4yFm#03T&B)nj!vr^&@M7d^@9)iT= z(&R(=}mf9f>XWqI*Jn1Ca0tNYlccDttO=@ z+7C>KtuZh;Z%m#r4E7Z$L>FYP$)C}F*xCz(6(F&O8eN}=|14KW$#Vtu55*_d5+45< z68=&~LG~mZ$&iEz2o|T5rdK>0*T=?MOOjftIb~VGU>=0%nD*=Is3r8Io5y--cvJ%4 zmGeVtYHkPCJ^K-UEHK`-*n`h;Fn)a&!>rQ#n(n9 z&!<;phuEz>Ce9uepy_<>ri7 z$rYcGqUvBMLrG13>QQ#S6cwZ7mOGz*rY%_*^ety2BMd3=J5x1SP!@jJLxac)((U2p z?$$Z2Yh3~$yQj}jTWyTp(6tAxa=DtTa$L%{Jq~~`I#~OrQNTXXWo%;H@K(`az>5~j za)?0vhCToLb>9gD!CH~OZ^N2WtbKLTRM;pzeY45*O~%d1+2ayzB)%va3w%US(n)eb zje@RO{6kSiL4bt=m96ae z15uJ&sQ7_?PWwQqK?RDUy`LlO*jDqNEcQGulU3hh%{}kMcsP0-D%03qmt&>k=DGKa z2~=BCE8c(6LTAsqP6+>i{L}!Kg3C7$TN!BS$RU%qQufBvZTJh_W0nHH@f!&l)rT$a z2c8#eLU%VRgu9Q-D{!F(i>MrLQ9>Xj3>_UGJlSeOO&cwLZ;vg4I13aQ)Jx2y839&w z!Y6og0x6~EjVe85|D#kJB5?Xk&Ts1tt600guN z`c21m=B`c~;j=r<0;afiSEU{vwltAvPFTmJT7?U{{2*^g-9_^Xt-XilDJuqe9FLif z5v70VM@(SE`x!8=Qm<~zn2l+lsf1gH_xZf|*$kM15fm!&M2-iIg-M(B)8-t%`JZ{2 z8#{je-T=7Ql`cgaD9?}+@B231Qy)YdSDZkAE?SRs8;UuiUq8XxVbFQ*KapqP1B5f=GE>9G_K!yv4jy ziWMSX--H6`(z?@RG{p_~Y3hNdxdzX^EuBr(EK!Ngeq=tOY4`Yjp+B7aw=q3 z4+Ymp6XBj)NZ76{zj|cUdgWxHYMHWt?CI^#h0M*K^$`L{iL`6RrA-BybMkfTSpy3$ zl|Rfr(H36uUbb%3Fm~mX2v#>hiFm?l%V==X`yksr$BTX!&-w%^T`Y$a&8Eg zPZaY!sCY4~CCMvjY_a7W*|t=1x56m#A6I3Ub~yj%6TT3lQ{*_7WHFvNW zCUI4%`cT=F(eBK984{UhqZ~03pz29zAGvM;J1$wzJ5aW@Yg;zPJJ@jWa~rTQIocJy z0SKkk{P4PE=jUa}V~aMDB~kOrR|-(qTVz;7S;jWZoYT311_@@gr3IZ!(X86>sU?T# z7#fj8$T-Sf=tDRZ*vO#$6U+6#H0yczmIW7%==d@cc7;P0mS+4n@Fr52zpsG33lL<< z`y$}~i)nv#>K9Y=pU!;Z12*^JZ#^@M_|783{qhVgu8yi4pH%j6=(j*I!KlOA9&3Li z<(KyF)0EHGF3s37oELvWEbnfaab`8QVMXR3_r{u>d}I&^fgeA>_L$(s$Nw2Iu(&yt zL?x|$>$qTm3|0)~i)h_sPBs$hsLgpH5>~cUjS?xE(+XPXv(pMj_}OST_1CmNlBmtE zZ;xGxl4-jVcvHcrBom^3od-F&_}v04YDUS79+m)=ssh-){IiGiswnwu75o9_cf|Qx zJLy|lRpsT_C7dz$cZ$9ZO@pO|4(+LS-bES&LeGY=OESDog&R8RCoAFQex2YB_Yn#4 z?0ae3{NlDNq>ayEL6phONG}_j)S7$q zr$3m^{$etcXInfTczfo}bM3NW{C*Y@2$#RF_U*Dwtok#1H%|py;oo?|4W|;34-W$y zJpWsT4cJgw+Qr^2*gR3YcB3pqnN!e5HHlY}kS5ASW>D`Te5e9*U=UTH8}8gB7-fS! zAP){xd*=~U50p@b$xSxVxgY2()Nnb#;k##PHJ*KzDJy$cu4m^9MQe2~m8~5! zR-xi(YhOPgx|xsxYT6F-)@{k{hTm2FClol{m!H0I7?2;-ZlDdtU4!anrY-|^Mcf5L~g=S)!G!BM<9b`g`sa+(yv@~zpqQQw9tKi7(Hf#Gf8tzD2TMkHKuRQ;+DPNDNX1oTHl+U zV=$)?=rq!c0~2BEppk~{?P}ndwdJ(iZ?k>zECI@`89g<`AE3tu&^b~59L~cGm02^- zQVkGs_mSnb7{#*NR;8Wca?)^_H;LZv63#Fs*Oa^zb2XVF9i zDx=tWx;@U^y~K)D%E&Te{=<#$ERj3sS6vOu6>PGU!5tfp5n|-^>(_!2f`spXsU>0J zW|xCiG905nexmMYXJYmTQlzif_ig8f_R(>@DV~ErcwgNcwgcN)~lqo1G6K76y7@Y%^_LzseIhSmHWPwggPlp5D<<0jB;7JPm z*CKOG=+ll9eX;40tsY6TLg$GFA8~rKuy`Ux;Sne9vhnuDuDX0`c%%!!$K-t36Io-I zX}LZ@SEw2lG94@G;>RG!mhN`1;n@tM!~4ESp{92?#EA6FZ2i7{pK>nDLy5&|i=X0k2_Jw)kacf{v z@m+39N$W(aez{ z@%}IR=On=*?4`$}-SU~~K2qI8EESM<4(O5wluMwpHGW()b+kjpdrks;RpxV5zST$< z^anY@+>H0`M6t}jb8)ExJqS`i;E%+Xsst8|E*Xv+p78ag=dSlff0`)2iV|W#hgq`* z5WnZB>84u(EZq%X<3WM9^E3x z#_@-pZcNb@lI%k_h(aO+FS%NKJp zUFs?3D?E5tB6#_soY_m#s#>rW(T$S7iyNEIu%V&vR9kBdH4e$8aSSh+ExIZtC^)9b z&B-_$It7SJBty%_0oBO)?ro4OpZXP$=k02w#7 zMDafxbnO8qnU;A-xun=!97m#AlAKPhsb)Vy)!JSLc30L^YW7#wy^t%Ys3Kc!Za073 z$xWH`LDj5KbVFI&XPZ@yG7n%#a#dHJd(rIU!x&{ti@*a!iy94doMpumE@d`8Dx#vl zEP7LU=v4w&f37xx`>BI`W=s<+_RjwDF`*dmTd>6NpT}pFj{cB>`jg{DOt69a#-yB8N7Me1)sdT3+l=VCx6(jTFd>){*o! zufIO?W|7xv6l?Z9a}CZ8E6P;&2Rnz0p0CTV4?@vl>sCTYe0iuwE4l6B`aAn3e`J%i zRbl~ckn@eqN7~-k4L@-SkgyIGmE&oPfPguY8=xW-$ruC>2-H~ZtOBDm0)Ft=!w^vCI=UD&qGVFJ? zMmfg3wn3miq9hAGPj<1_Z6WwPLJ*jX;+=viSw@y`-ia$XW@h=SvyOqK$c=o7{MLY= z1xlsYy}`P?(ADeZeV+IJb@9hbz#&=O$c=!Vr`D#qe!Q0$rjwd;&PD;k?S(j4$wlBu zd9EExia;$sxlc9o@Tk*0<+rw+1Pdn3^b9>dWhNkD((;vh3tp&gs^puQWFfccW*^($b|rJz%|E7jr3|pWyRJMGof`p4S-?9W(Wz;fhRI9eK_ku~ zukuV;%S>^!o#zSN3iUSV$~J;nfBfJhpPtSkd+m=(lcv*URjKaaE0yWqm4}@C5gi-E zXPNQIvlk~Dz3qrZdBBzq-0ckUOhvDs4d0+(^+0Wyg=87dxxh@>TOvS(5$A^rGgt>s z_a6dLkG~0wx>LD&W}7!yOTRJ{2JNiEreT^p`__&yavhwE+=jQQR_pkp;ub#JeJk36|d5ot8W>&qRDgW7NlKUVNCQ}=NX+aW(DA~ zs6r~QVC_J|{ZHLi%ZF*E5*xrC+uqUB_irdNsKyEiN<-nw(|ZeOMz~ytx1Lesj^3YB zGq=XYS;&hS(1|weqw_$~^XU}`Q5Gt=4+RV)&dILB-rpprI4}u3NPYjo#;bH4>g=Sf zW*j)9uGapDtESIry1%B*mK@VF+pyvb$G}NY!|T?nqArq62-ADv^5d)uFH++A8Ln&Q zY4kp0_3puRwqAqO~cznE~dR`^fyT`Y)zep9Ki&*Y=JPCA4BG z*BqP|LD-TgDPq}78E~!lb28#XM<^Mq7||$Xx^?w9FYhPkVklQa1&OU=A@G?8$1?B! zLNGc;TJ8yQdQ-kNuC(^2S#(m1|6J_T*QoC*o@`1vV$(@NwJhdieg+JJ*S>=ErtkPnEmaA40vocwDEA%uU~v zuFcAteu;5ORUF+*m_rG5glnuUl(X$9#=C`5_~25k>3<}6IbuyuZ+m;h{3(vRPeR`? zG1hvE*or6>#~`#~MC)4EDRsv$mkbogvYS*XPoEMuWeo4E1u;>%tr>B zirKoZX*DpZjLI9g>@zX14Wlt^{pzxKliULlxTI-BWr?XwmW>nAv2XMSMJbX&L|%U> zVH3vAeUhl6X5u{Hsq44*SLTew zYVs#Zr?G4E&B>#uvH+}Kb)07r?c05ItZO#-#4v(N7$Ets{itDO``R0!h^QW%th`T~ zsIr)!ip8q4e6*uU$&sIi6bDiNw!;uzRbZL0`AZt!`Ptg|gw(jz{FK$}2(FnrAI?%w zZSNE`cSCb(Dag)@mg?JT<~kqLbpOQn(lvwE*beg~>(_Y-99SQT{5D~9MpclF3i?LQ zM@niye`^e$F;9vB*DoNLaf(r&G<{jxl2k8X6~5wbDb9$3b;RL7gLhm`8)O{1vlwpN+XagZ& z1gm)2A0E`%vyBaOjPIuJ%OV=^+~0J4koCjwI5#rHwX20Z5j9lpK_m7{xCWOr#>cWb)8&7H*7jm}cNfrEUYyGj?r~yL17gohsewKYAFPp|!CztNY)_cobK2N4yr4dSq`M6cCx+Xw2~i`39(E^U}5 zxC~FU?vqsJ|HLon1X7xrZK!&889VK%#gv1Az@j+^!~^ciws(HMJa#yF+TcALc!;+_ z_bgv#MqKkqmgfLXCvs-*8Bv5lN%oS`#~Zb5g6QHm0om@a7OC1}@o$;ahm;h8@4H*a zYvy)$XNeIbhB38h_f~oX=dgl-=>x;|7#(;rW%LE&P+EA<=T^8;YS300XQaRM4%{cp zmhAyp+X-Z5Q8KfE*K%zQH}j=KGq0xF?E70)?=4y6p5#TCG}zmDx30^x(8kDWFPJ|h zk0BLD`Pn!VsNyyY>l~qi!cfv}Gkf5@xC4x>XZfVS;rZ9chFJDl?b=IcR=P{72udz! zj`x{CKsiB9nEf0eDzL!Z8mE!-M_krlI;z2fsX~*aZa5{=Hrz{Vl_b4b3_+kEt1?Hj zcmuhEZAIt4na^=XSbL|kAF#0$pGbp{u{)F*GoAFMw0ngLD-sFg{_jYX5yLM)`E5@; zv+$~gZ;u9FcMR*abEslVh45%e#%ZBG@l9-MWu-r`S2(#ixna+K$ybQAno`9kjT?gA zl~wW2`uVZ>84JDLW-U^_&{Y`ZIDlRpEAP@*?&OkxOzN+d7QwN?h8VuMS zIRNZ)Jy(apF@vZe2N`zuM}MsR2O!2gS?_*5{YRh=;Lpm!*RqOJcDfT@W#cepsD4f8 z?KS5Hw|d}K6DzrWK}Z+yaT?0vy&FWqC-0BX_Cn}B?Or}=7TK6=faZa3=KMmJ)aH6) zXSeaolb81f!qvMyzYK6DmzW!JiUk=IZGNs88ee{0aZ=e+iL@Di=!s66RsAQfzJa?n zZmp7CKJ=unmR74El6?uXfo>(g;6%G1kwMdiS-FKspoYtAwlvB^mhERfYi}70ll|(P zqwt5DhHhITkcs9dOk#=wGz|#T#)2j37eU3u$;uWeJp8}Ef#l!iVtX`4z-49KR94%l zy|2nN(5!asX!YWcp|p!BG7X|Fy2OnbX;9p*uVl`*Dm84wzdSbJd_UAK)=gQ;+`thU zeWcl!B1LKDk~7wXNDXP?SJLeCbfvr>7|wukbR=ryFBgGvt9ya!2{2kYfq71)GXT5A zhYlB@<0^GUVCtozlz?oxyg;EYbg;-&jn`lQrrjehPf*75=!qsL+3EOSOdf;lMPb)b zJ0gDY@`Wm542Rd2#G*B%U)K3I8M{>oZCYCPoWWcN?Vz{^gi1N?N7vO{xys#G(dWPT zllsS@YoQj)TtYB2v>q(tI-^10T864ex9B_=8k*EOUBkpAbR#O#OA?>jTk~ew7+3M| zgg<7KYI=S?4B#pxaqqR(ah%8BXDH9U=s$qZ3HUsEV*Ak82=#D&UJ6xzDHEEV)qaV; zkx=%6B8RL_1$!C_2eMK~sSQVAE*P$L}Qt zn(ch~dG%XB>tguP&aUx~7KxFL`=>DZ508TmHTW*(Zrs1px92_^oTgVgmu7%#$({TB z7MEDT1WI3g61GT)>OY)X7ubjK4t{!ZCW>-W;AcYpF7##n*ra#A<=*f1nvb)dEAT|5 zytRW5J5P4?W4*+wa62SLCE``CUsfPn%12?apAFYj%_FK#!89Z2)+wg(Urfva$0@;h zqDgIEu~Eh&?qe3UxEnr8l~j4Ad}t}V#jd)LID8Wf#z8JE*XH&Oh>!dBr82IBcao@tkK^= zepfxE)AtXiE2>KxeEVU>TN_pPa-6$HrPv@BI0)NSSHw+yWmu=kgCzz*mAqbZtqA)K zYe2Ezawo^c{71E+YE+G#@j%_j*Vaor!`wSw8;NSFX`^(MElBBW`Q7wDA0<-e{B4Z0 zWrO7(7qWIb&s!ZxXHUB{n!NYcBJNkv_ zx#d$Q|H1sh+o3)WCMMab5M5(U@^WZI-0pqMZoBAFZrh|xLLM4>91VN0B z&h__GAN2Xr$Lrdt_BBS^15t|n*U5>ko}0cdYwKAp-CHDXr#r4t{4%-7)~k|#oH*xj zfg_bdN&!Oqlblb@KK}PK%92~+uo|)kkg{M-YzZVFF?YOxM8g>$?QL*F=gq;TnklLB zs1GkM2`|8P9FM5u`WXWGZ|{z$Zl(&}NPKBC3ub(*RbK)ZFpJ{G*Kc_Qh6(f=R1mhk zK2-tiWX8VnxJSO~aWZ*0pzYS8pg`1*)y@83=0$*hY76AUBT>mf*0Fj1Po90b z)ido~Ph(RA>n1`V=3L8_{6^%XCus~1l8cwaS*WdP%T}r&;RcIOjWZx96m^-Y;KAm) z?_0A6O7PncNX%{zV2np$`JWSRQC{F|F*dYdd_0qCfe)qc?YBF zy7{=PF{-LPub0uHp8NV4*rHRHU0e;w*K8BXE(16)?J)^k%pyN%1h_>@6@R|z9#a@TU0`v z48s|^!-fbwAnNeF%#+Wx=>?Df3%mX;%)T*~nTv~j-pes8dj54C&$YqS{FMRywqyNO z>g``lP7w2nFJ%%-6BfNXA@?$LLbjgM3~>1%5+!a;SXlZaAFrWJ{2)g{9ODSaE2MDMU7RZrkt)zfS5{_&I`^VfXymjriLXgWbyu4zSMm(JQS zdvTmvsy74qdqdooj+O!Smgt7hozAPua@I2M`(vAxjLc}?%FfxuC-{?}LdS&Nxul)9 zBRK|C#TJ024tLP5a$_>{iDl3n*QZD)GlUUmg4)ax6`|3qo%?_0vVY4NNNH0BO+L0Q z`Ca;$GRy3TS%P@UIQF5fu;u4xaG3gwn}pUZAppUh>kVu=em)HUBK;B_H87B01*cQg<&xMnw;hPc-)f>^TstG42I{cSjfZQIf+Ab z(LS{|yCCGYj(jJ*hrz?34HM!#c=T^&bnOu#kH&%IL0sRM;db}Lt-~2Ez}cvaF$^e8 z$GRNF@gka7U`dML!D(00Wd1Z#Wz?l&L&=e^NFx?cf;pN<{}{h@KyvDWUA`U9V0 zxU9ZwM`0QM0a{0w?j?&(a@zKkmHjF!EBLSLtf$l_yfuC@rdVFr^jE%k6tmDkl`BTS zrHl{2oL)Xfw|N^uU>pwFEATkK`8$98*9N_?`gcNB*vHp&)T}f z<3G<2Z%Jh$r)h7Bdb@8n&ur0N$lHR{QjTU~(GI_uYEM;<4NbBYzT3-KwFTgBzJ2BM zz+x3dd|&h44;RLsSJseek>`7jdquB>I~rf^^?ck?x3nTYdgMJUdS^z{n>?$9fFQ!p z>gfJBL;N>|Zb!Nh<;D7=d8GGym>UL$H&5fF<-K#q1f9KN*&h>;8CTS{g< z;z=92S4|pDOt!uJDw5FtEhy^BR5hPie`39#y1BNL#Av}SDp*|OQCDjf$SZKTLjp%Q ze^hWUOH-|(^cBJ%ZQ33Gqe#as?D}ZS&(V|r^9cA`_@QgA3Ck7@q$!$xl&CPNM80TQ zDj+YJ#GAtzkTRwni!{R`N$?JF5HUVJDnRyV`*NbEg{WhsE6QR&{0RrVC|hCCalC{) zw$+?x-Gs40H$c_@akU-O2vZhT!;X}FVk9~4wiqnhGmFL2#Mb7+Huf`#-7A3mr2)g2 zw1?S`6DdP+MYN&yo4IOXQQWYVMPk;YvLHr|4e`NLFzl2h_2kWA}pZ%tyCZB~p z!;OpI`7OckqfwTreYf{EjzE5zUP<7|yqko%Z`|&-G=fmZc>dLxCzt^_D-Yu$ zF+uVf+$TO~Z2zsZ)7BNEFtu%0i+HqdO^hXxwiTbdPEnc_9+$(4I@KL?rx3tM169zG z5LNAiv&do5s|dDM-fR0i)^Xet2-iq}rqJK<0cJ)7A@!r9qubc8{?k{P-D+GFC&_`w z;9|1x)G9zHke=oFDp=)GKnd~t@BvJe?B?AE{2B;}w zWlH6QH}jHVu-Vu!kv0R5x=I0%S6dC6wp1M_mcI3{T~D-h3hD8>Bkt)e4ALKdU@@oZ zt=n=adytX4=JpTy=Pr)_J2|B=(dx};{H9V`49Rj0PJnIt)sE9)P6sV+sp|YR$L1)xk0cZ>T1E?m%2m5 zkwh0bT)Xw}z{E}J>LwmDFV6Nou`so%iuSFJQHLxX?QRPe+g818JZxDG=sx+oUc;=iGReMrIXg2{5iFM8EBxTvM$?gm4eo_mokDK>4Ezz z4H9v?2x=Q+O}9r}PVPNHY%q;K&VM?}Q$~gUWN2JnrLk|Fs>rre;L{uHH28O6;_gn? z<-ZFP`x4mGKs;j|12V72_%=kScez5l^~Al=ZLKGA_ zrj1AX6m!sJCAksmIj)Vs(HXE$3fe^pv(1Qon(qACwYidZYhpD*dA8e6wAivzEQODp zf+%f-h#)L_!w=@$|Gp9KWVv}?1gvcrw`?A7X*RCw$#o-MG|v0hEJ94nU|NSL{PQt? z^luHWERjf{$wm$|aenBHlkm}BkMw$OEeT^%Mz4|Rp$)L*?kA$$v#juEneD?6MQ#_p z=>*TYq3&g*KTDeF_NPW}FhRb!`sQ<|9rP<@>l81I#Ff6JMIzFXPBoOLf6o<}!Vx%j_ed3$OGkr zM5H+bf6Gn5KmHNelPG7ikS;%U6oEzJXhqGI&2LNqPQ+hwN53M_Y6M#Gn3V zFwC%)7zzB>- zxpJtoA$EM)52HTvmF*^Zc5IKw4DQh2|HuDqyO^R-7{D=-w7Isrmon@eo@2heC zhqTYcQ6e%8i=KgzkImUS>Z=i3x^%tk1@*F@Ti?8K;@#=3ta@r<$6Zh*4%B|~3aIB= zHv^S>Mnn^jFGj~5UjY46sQ~3goOZENL=leIx*<_!wW&hpRTKz>yO87ZtH82inYOCBVXOfKEmY8E*rMs|#*1$10{ z03gDm!?gZ6JadovYIgDfzpXW&N(BS~RG4~+Gy#3C-T6JismBjC|8qsSZzGpk6K@7P5m5@8ht5tdWrp-O){N^5lE=425E5RS3c+Of5~muND%}cqq%2k#Q|n zd{elAk#pZ*Efs2uCdw{Fjx=%C@1viI4fO{<*N_p`{qtJ-RiHeNoEu|MvhIl%uaj72{q)c0OEfDV(~GMXHg(<|&niY54#D7Vs74*1R*Zxe z!-Y}`K>+~liCavr0gP&uf}R@%;}XqjLFQFb5*9-lDP$RR80`DAdq_+&b~+oWd~+O5 z$>3-fH9JGeAF3T9zuqS2{xzSMXkaLz^cqI9OI*q_h?dprj~}6wB(SmbaAS64r~eAR z%XH?;rcwLsOlU*%T#Q`hB`94dJU%{YC{ooR;M09O6Iu4EX2^~4P)~dHQ-*ju9WW?q zg#KD@9LvU=BW*4cIm~+8{Y0jLi3yPX=#ChSuO9evdM~;u0=cgGY2hWDqyJq+{wbq zKs*8{D>8F;=!f66|CRYq9odX9xR&F7d*9!O@S~&KhlY&WHRkPBn=kFNZM?F5<`(4l z*$WWviFTS$>9}=uMz9B2K<;z|5K9-mZX(ED|=;E^2!19kFt{36*|%O zTV=zujFO-J8Vk{F8C$w7>1-osKf{GSaEg2TFKFE#09V<86<9_PVL=~-IGAPL6EA*C znZI0e9M{smH0Y1Ks;l$2hJCd)5vC5}lLJU#_p^Z&{ZRJ}+AN1BI_aY@P^O=W0}3o@ zc;m;+^NT4%Gf0(2NE8vYhNR$T@9Soo4|fZ8r$7+eRoglqT2>w>w0iS^|3^;vPchiH zJpaONo4ank!Z}!`uTWerb}6`MQP*-XD|H)iOnEP`nYhvUG+-#6&ep1ThlyVbKpy*$ zUg_qjy$(J-sp29RgPQF6^m)dpb+(^07xRw`sp$yVZJ~v~n`f@7c2s8R^9ocnn)9gl zzC*^(*u-3HsYVg#<)QXEX$Xj^m&R~=WZF(Bk(OSBxO}VEv##u8{jzRT{fkfuf`=qCBxE!^;b2J18F_*mB4+kmFJzxh>bz4{g}aU z?ulY;#Q$t2mqzy+{r)(G{+fCF(agEa(^3{i&SmIuKyjzY*BCiM9tsNS(!;e7gQuHd z3=4~wMU^oq%WLfUnvTt*f78@VEri&=(9~okGM+9Dl*{d_Jrd0O{noF1{AVZh5BI|^ z+;MUKWcTL51{TLlOR+#8>RmQL?)=ie^CM#migfVwBtvmN&XG?4+Ny^Bz}HtSViqS^ zbpQEOPwW(`>)mWl;3|3bC3z%gvVIFr5p5+C)o=Wxab{YrdvGIj#aN~4eOUd_U-NF& z6+}$nDDU#Rg)eY+j@c#%ae$wwd+X!o+L~W#bPgQOBPseuj6Ex1-E@U_*Wn$}1T}S~ zb+WPv{i4WCMJ?FmF3K%bBuwO$QBJQ`k+s2YjOxqB0~fQN^>*9Zh_Ze#nWeTDqH^hT z7XN*Bgz*rFADSn;&^2lT^+Ex}&9B$7_svmGHM7cqtQgn*QqNr^qDr0QWpf$VWq*d# zBxmu1inU3}eO$uJ4A^mpe7yL{p!}4aejo%z?VEAZr1Z!Cl<)+?z6z^%FQ3{`#j2il zHkA)%E$;S^+`5i3%QV2S#6D>G7(SVhr|Z_(cpd2ImU#Ysc`Y6YyLo+t)8$((;nZJKo3J|CX0I;#CFJ)=%Mw4YX{2}MK zX;j6k+c5G2g}0Br-kJ28Zr!Ac=9M0?xf#HWf3w1KwrBl?cT}HRIG55PvpLX7aE|O7v%GR$m{?$$I$=r6pj4hpg26KnexQ#H~ z^iHkaa?^2+ljyb}Y6suMZVu`S$S9RiBPw~U?seLho z$5f_)JHHVH@f}fKJoC$9-}`#-5&HVIwVZg=QQ*i{;PYHu@9-tC9EGEQ(AoG$q-N5! z`%TkIMHdkPEjC5nb+Bt&I(1$ewp}Ja^OjH15ca}=5Zxcc5$~9G1v0K zrC{MKf!X_oa^w}pYsVsxzW2P7T+}38o(DOCDN-HOE}nA<7CLc=<`?!{n@qI8e5@Li zg&x7Ee~`MbiAXIH$!^fPBq5w{eKfYG^g@eRbpKy>{xVn!NgX|E;PAU~NdE3L?Dk?{ zb=ks$rhElh!r-(iS(SM(2ZoA}4N1>Rb=(lL(v&wGJnH8%GuT#A<~^5`4RGElE4B1^ z-l8{XEbZm-CFb$U^QG#-U?G<<9`hPgrn`f-d(B_>*3&xlko$h-=Xj@(Vg_V#Ygu&0 zi`%+pMBhmT=EYL(pViKQ*4vy)3U=iIvzSQmri+bsBWbm?URcggNy4>}D^P{5C{vFq zL$nUYYMCX(|0X$?nV1g@s%RA!wLGdI&AIo5@ z0RECCXv@CVSNhch*S`kpTfaLEGS!uoHaE6aMR@KRnC*>XX8Ne$jf2cYr266aI>yZP zs^0(yBtSR?iCK!%Ub{2z5;I7xJs;CtJ+#-Vdhrb}hwXY_@}N{rn#--FH!f-ni`llV z!s*_kP4inr{;W|si-?8@j8hRNx~ric*>jkqp5=H|MT1olSh3#upM{&8JUe zFc0REuT1|V*(F+Hra$IBmycTU|6t{4-IG;y2V)rO+hXc{JifFEQmL2cHIW=|9z-2j zmp;Ay?&6kn>7a}a%QA0mcU|n-2XmX6l3gqNRl4XWpwv1_U;r6SN1!-Awb(AbX{B@ng@Ljw%jYAG2ef-FgmPZrQepk0G757) zLri7v25rPuH)Mvujkye_E&E&#$em9v*hO&N(zUQqj%^<3e7 zDpZdfXb&M7!&0B0tv~+zQ}SK; zIKd%U{DYF6@1m!N%GQW8jRivjL2A}w>Isc0B}rh7f|M3o$;N660D3+T69`%nQ7wyo z2HDk0Xs9?qRQq(hZ$bM~_cl%CW3pR`^>^xRiPa)C552?YF=9P)QHHrtXgB}0Y^%ue z)M6JNOpw@ zS+{!5fZ(}vF+UZbXSfO3!N(L~k|QSlX{xX7~u1aa=mqI4zm1XstR;j#rx25>9Cpa5*zH$xNjR36$Znw2ZhN~&yZ8A`Z_jEk%`llKL7 z?Uq$YFu!zmp)oc^7KaVn{Hr|WADH4KN{-1J=*alwlo@#ORo#|nOVUx57WL&N z?l(K0z5FB3@2mN4T^P&b&1HjfKVe>zx@O+6JYHKv^7?AQ*=Rd7rgm~w^?UM$#nap7^+4lZz1kaZN4{04whO$GRl7KS zsI2tr1=lBK|3f=T37>GO1*wijy*Ei~pXZA85{3{9mchm|aq(@u3#H$dA#kg{wg?po z1MB8}1kJ!xczi5cyL*G={?~9FGWxGzTIQML#f{hOc>(wVaj~ny+y>g`rUbNBr}nSe zq`wZxM9yMO+By|RXJ|A8t|pK1O=HLtJZnZ6>%<5sXm6`i+6R7`mf!CwCeDNrsicd1 z>Oxq2Fa0ML%9wL2oC|kf8psmtmXNi5%H=2jVC&S-`gZnSr6GsKt4mTFTIjIsC*Mmm z^_#b`bAw>aGWi@?6)Pg|mfPuW>Ux^5bX1Fr}h^UAZP|-P~LNEh!@gWKauyJ`q19!jwPL)l*F!R?Kol`aQAmsbduNw5Dr z*Sbb=J=m|b=yx2$ue8{)3M8pZ18%kwx!m5?HWKg}7LM=BMf-2fc}NaF4(chX^UplE z(UxNo18sIAI?_iuGGuJmD;-ij(z+SM8LX_(*ZiHrc-u`rJ4st_>x&uT64#N|gBd~V z<=j^bF^T37O69F_+Ps$F2G0=vJPt&L+kU>9D~%t%IH10XNQze%=a+He91TsaM=sa0 zPAC{z=J!sm*CiD##pKMIxDcA*bvOAF*izr#&E=Dgx6n0oZf|`Ws@!i*rUi?%Z~*QR zlMHej>E!j}XI^qNBr1=4?9)rrknoB5r8drfS(l}Kn3#BNW^>?{e)0z!N#zPd;`b-E z0lZgAGLW47pau#ftTpVoRaNksa##~OqdVXU_=SWuAD>;!=ar7wtr&kNx$myjYPb!8 zs7OpR^YPR4rhvyZz&|3Ep5F0wDDK+{=l)X>oFTA3c(Hm_q+86#+`uq6IR?y*43y&O z6e+~=mN1YY_DqJLZJuVJz+2h&@~5i2l0dP+jjw>OdBmgH?jT{SRrd5BU|2(Qb9{!H z@6C}^$yTo|=Lp~*fqrj{{KC(qxyI;ziDld0!CYD$8%r|(YT&c3H+7z zVh*BQ3Q~PADk&s;xMKgj-FxTc73}zIJlgD`h0grI+d#p<0HBm{1u_%nK z0e=#+d+$49bCdVdhfAOwgMlK12vBb6eu6{0yEt!mG1)`JnVo|bS8A}qGd4Tt;nSoK zmt4WLx=X#ADv-?10T@+Ch_7;`Dv_X2g`#RJTq6g^Jj0im+*mQRh!QmHSgB1}9xg83Ien7)0SE$ULV$iX$QCcS6frNu9<?-V+EfJ-tD1O-m6BE-K#T>@J>R=-A^4w7551VSMU zf8M3=Vmo9~L99i#E?y~(%LPrM`Xt2R_VJTlF%aHA|43@bG{eTpto~NJy7`pE!;CqPj?B4%_^mkN zv$7wPZ?5@^P_}p2c@UuAh9#uAr-XE=!6I1PZuCMDSKUbiJ=sp1FhgQVr|lrkPsvXJRY0o0Ons7CU%r?9Y7uzPI&xD= zo!y*$^rK1Ucoa9<4m}B{6i1b%imqed7b?{zIasvu0HgPF-7Ji`nuyC+eGAgrK1mKRVz(fkaX5Dz#o1n)VYigBzk zg1m9_+43T%?Bvd-68BE+$CTG#u&w37u;1mcDLi}!ly<6k4?H@d6ndYKiFHX8I}90{ z#x#Cl8<(8B8f95*(VqaxvSPURn13I*9pEVXkm6VKY>w!ZkwLYcLu7ne3gd|Hb0|JO zWd?JnSiL8uJoKu10swuvPr)tET!xR=!2NOAPa zPaS>tS5YZ_6{?J{oZN74#ud8#U}++!a>P&1XDy{@bew>?VD?w#)xIQ!8FchbNF-X; zy`|NVAH7GgsJw(6UBn+6otMfdpyHLT7p7PjIwgDQ0jq8+ z!hX2_#na1_OoFUxWu7T%TqFh7>%zqnNlBwiw!60Z-9R1MT8`Mk)7G%ENSX~d>9fuz zdT;w+_Bah4un~a#-utI6-vF8vopvqGns)>YVMfQ?-bqkGpc*#x`xC_RmoNQB<}BOK z9b7^>fR4#a&6&HHOMCgdWuAJv>ylI#UvP?C24p)=R_ltB4ILscnkGET#8%EdAm(rD z*CyGsm6>Ob9z!EthlaVVSj%U`g=1^NxHL@g8n19P#S~DBtP@g+L> z#+tog1X36X1BzNJrd#}CNW1lI34*_*y@$V0HbR-L@&GCCX|b#Xq?m@+<7so~lmJ=75%@6X+! z5TUe0hado@@ZXFn%n-BaHV7{O)DHijWtcbCkt;EZ4cXug!%M%+@vSk#AF!AB9J*2_vc z=B$%?u%EBE%;cpQ*6gY>pI!tTrp&084AH?e;M%YYcNTNw%fHn}74ZwUaGfM>@=2+pys&CK0Ohn*d@mGV+{+ zr9Fu2{s*n)Y5h~o)dLCfO@P^U5e_>WcB#|j5$c{_!())iMWdr&_8muNYwu!`&cEzW z`)`UM1XVa3zoqO=ofOo{3~c0HX%M5qZa?quE=udlQFl$1Agjb>E~1wd)I*QbanK!>yCDqA45_P6F-lj*vNtEH^BVb*pAANj7a9Ig=v;2t zHJcs$h&Jr_b1Ll1)a9)zap6s)1odzlW%j*MSB!yGLr=A*Y_-tj_?D{#16`B=K@a2b zuocEo{E)ifpV*1>x$CPI8Rk`Hv$4_VY-e7hxi>4eT*9@H=oDF?`T^qlh|ITNOi{71 zm{@@S{uS95McoUEwObEg>*#8hTPqZ0$yJtoB>rMDqE=qqOIw^y@?X$FN=vSV+T%;D z4pb~>{0UoW7@Zc28qe}kDT4&pC@vDUO634Sy!yciWVFxO0*W3_*^7!+i~W4PZET-0 zbEk(~ES120eMn}+adHC$WozCgvV zR69hriHNqagHj?lluBg=Z059!e1y_KP)a$D&;vn+g`1B?s}Q6FG%tvE^ujKEgl%Tj z7Kf83zayAUEF>1(au5wvp$l|~L9`r!)*y%<`4&R2ziblxQFcB~BFEq64n>(0`1DQ; zd-91V41*Ro8MRM*pAVk_aQ1`p)Q?0x+GdNZJ$vwqKsROF(Dz?Vx7sRyF)_XB%S^Lo zJ40-h)H>8;)s=51qlQ)>6Fhf1GT0AqK6n1fR+_|JP(k;PC-ZJujL3)D87b%aSBQ-7 zy;fcG)l(dF#zJ7oIV3}O_vtu zScfY0`dIqag7Gp0Y4MWicUozF!UVOpZwDx};S;|FER|HOD!H}XceqY(Q3{~nP$W0(3 ztso>|Sm2S)yx&VXw4)R-DSw=+5IyMw`Dq&x$U3H|AuB zbiWkA{q)RwkVzNtp^pCU4KL!2_&E;~V`MaA_720xemoVJPIP0~i*(>K#rarVh6mV5TCbSEd!5t%Bus(dAoI`CJGE^w*zxR& zRm=vFaV0yV3K*KD|^X zH8`fH3t9Hc-MBHmB9mTfo7_b-IzWGoMR3L--#DQtKm4eZ*hR%NMuqFnJK^F9t$vh1 zY6fL7iLoy251dcXZOI^fZu#7?Ja8ki+>1t?K#yxr494Sov3^H>TkMtw!mqR&>qmx+ zo4Db0;2GnUf(gggrn2A`0e+H8Xk{E1_wa}wzDy~VVd?XU>A#KR4p*5*L`7M z;Ep^WgvYYJ$J)*2_}C{CE#dPQ*(LZF_s2PmSbD)iBCh@4@-mbBVEcOc>=CX!vc<|4 z;St{+Fre~HWf9zey?rI9)AUKGX4fu_M^n5^`fMpl+8I%CB(U1uAOGt4ho}eVj2Aiv zY2H#Nz-l@r%ZFwQ(hg*6U?_SYxXdHTl-v#3z%DTNYSYq(u1RG_Dcmp|lj3~HfL-^~ zpOUZYQNHEU24K&@Q98QfOH&(W!1{qrYD4|~bdmH(-Kxx&sl@`Rf6lBJk8ZH8&h7ct z26-fg1>OQ^-S{XqqaVHGV67|!ugBzQ3~%XpnqZvEAKu(GL|W+dmH+`6iP)#s-ekzq zxK&@COAIUvhM{CYv)F{5$Wx=D`w!kN1)**@OuQfCd|0*A+6Nhw%=J}OyaIqof<`o*N6gFxOP5w30rUeGW5x?y;~rY>y$p^t=e7EhdKVQeWX4@Yg# z>ot(RRcGo06*0i-zV(~#k1x&@e7=Bq6Ie9yoklQLYhrpkH+1t726wL%=9kONqUw!7Xb)ose}OxV^sIP<*nG+9K&^=qu#b42DukhA|lwM@^^YkLaZ8$;NWL|HsmUVd<7YaqNT{rPYsS_p7YI{T=Q=@ksMy6-;|F=IcO_i zb-q=?*1t*H3LEL*Jyto|+bYwW!f^wD8w>_7bn8{V?6j%lhG!g2`zE zZF=}*i>@Nyif^TkNhJgEshfzQ9Hc7{muB(G^pKR4{8|xClxvqFn&#R*bCABhzE&y@ zgkiGdG5~&H9<=MqmOJ~9!$f-O1W)aw)3z0#HRNWp#iu}8NS?cIo~P=r14?Z}1Mj@Y zulB`kxgNjR;auX_Y7@%P|mJG00 z`jWezE&I?4fXI=8c~Z)6z9Q8N*I0rk_B`r3a2I3&>4zEnot)7DhKDEBt=)E;(7tF2{Yg}SZ$IwlU^tKRy3 z5@P#Rl@Tqn#-jZ3E3_2(PWbM93!FD5v$?*3L}@GS$8oRDTfjxFMLo@faxjJrZ;d2K zf0lPbSzL@ek6Lfj_i~*AM4CL1h>bB&31aeVe`0!($8;#U+N@2m3{N@r@kBh72F% z->d3&=ByL|7h#gk=qp<9#dTB zfw=c(4V0CY@#C!apI@jWinqHPdB90SfweA1z#lo>6U~=Om@QxVBCq|F{yb?pcKuZ6 zgQQUT* z9{W#uujDT2Tpu9*M%=-^Q}NwvcQ~peEThi1@+XOc!)H<)7zeOuxHFQQB`b zym7!uj7%`n!|g+%LO$2a(yoo!#GHT7yj4kq$xLn(w4}8x29l&RJOI70ISu;K4_g>q(0QghPQ?IeK8%b%!AF1tZ+n6$nv1GOqSdKe3ri#ox!|)_G7W=)$ zFW%~s$?%bLyEA44N}lsTfW;8p-8#C{(Q(ta@BZ(QS*A0kE!}v-gdWx8|m}`Xo@`L7n2B8=sb2;7HK$Gdu2J~A!sl`?KSjH6d-rC(7=#8dQ=`OSA{f5 zayLsAOL(;(PjYde4_dNZitODk*Y;CRU)|d9;;=oRo_B5;d%)^%rCEAOdaY#87YKxD z^xl;x?ll<}Pqmq<8slSbIV62d>aR(2-gIn3=_PFVHS&s%hdk|pNeh5-;-fwA$#P+dCqr&iUQnGN5NG!B zxD9F#s7ItEj0$qHka!;x1)o>{xiJUr(W?pPMOf>oMKZ6Rox zv1EGNTjnDFUVu&7S>paz_P#~%t#0RD|VFr9X4NdyxH}bpjLzb7S>avY$FVXls zCtZf{>O}G!i0V^9Skdu>nT%){yxL2;bL-iNG-o%=P{Y5Bl&*JLa$stHBXj({VviBT z&K@c6?f%C9D@PuOBx+_kQ$5-3I&rhG?=^&<0BuX#H@$fN;$s%_hgl&$RRc2hE z@qQMBM2ubGb$#Wvu#S7)YSb5gem)U#Z@f+x6-6s64OpL%vK$>>j(Zp>-RvX79?5zS z2)*c#pNYma%%+T4>K_25L}_zu*L)JOtO`I?ll8soD^KHQN~TnZ@_ZK0k*H5CZTw;) zlkPq0<0;>$U#|$Q9vRC&c2S|O1LPOH=btJT>a19M@?{4`k1m#B8Mf;sqS;lB#zMVx zd~yT?s|~TagSmeBQtPn%8G*`*=JEJmkWIUnGMT&y+mtGpkGRYD4U+-&A_%$E>(}{( zO=G6XDaZs7f!V^pZmBt_heg5wJh^x347VP`a)-G(d#n2 z+CzG;sJq|C1w~tbQdGg1P9nty02W;rg@!B8V8Y%p@UZEO`h*R5xWg5z3hHc?$RACT z5-`l=3mzCP!&&8TgB4#MN9q&F4)G82VBidZlG~Yy)Y(UWj%Dz}IW^BR#xkx#Ub&knfhQhFx?F9V|D}goMEK!i|I7R z2zDd(Jcs3hkJ zh%u0jL^p88!hUEEdAq$=3cz6|t!wXLYj&N=T1p2h?gyD-LYXV0+patJKJ2Hbgk-Iy z3R^#qAAtYpnjl-5M3p}XYCU+%KGxD8ttmcxM7*o%C;Wa0FM^uEBjk8ZlqmOOG$ha| z(?k9KwX9c0?KB8d_U9-!jOD(6`@n%|yzyP%EBWQ2!n{HjqVmGAXv-CKH~9cYJ2STI zbA`ws)m83S2*L&yNmF|^hUqaj^MOKn0p;N^yq z*<3S=9mi}j6b40`TZ~^1n8S%LKpZ#_0xNJi@mKeX3)}du5`?D-HnCB6?g8YKPk|md zl{9a86CfCchoycR3w^|PTk}!*l9|0?KR}I?_g>7nWnFnxOp{s6hA7v#yz=P1krZTn ztDBA+QsYC*mq3NLs$(%3769#RTh*BEeta>Gx?)}VjO%5TIA4T5*cL23P@T9EnZBUE zk6FPY8d5Wo!$jIRdLW;ZaS@%*w0})WK?zT^d@$2)P5`&+{G-o>wl`!#N2}`m4`C^5*g%LG<s{Vtv7T_2?1;t8&JiZ>coy!sxXwhnc{BB-t{ z+X5X=i__1!Ze3#viGlRLgd)gMii0 zMyVF-{<5Z1~vsu zKe*tXZc3N7FhCo4e9{Y`p;-^_U}a4`H9SyEdpDRBTkXOAx4%jAckeBp{+`xiTYEaTJ4_)Y z=h*N~Gh3g?1nc=R!_0uT?_D>_=#_Jh8K|uA%k`OL<-NGkxrGl#XP5eEni(9lqbP@y z);YW5*3kUfnB;s1Zrg#ij|GH>#1~`usNvg4fb~hxT=U%fhMr( z!YlE}GKMdsA+IkfVa#H(rn)dVgLrK4<9hT@f&~-1(&Ci>y|hIw1v3(uT>x(u|y9#1KNgV#~x&ptflgtExJ47P0OqvJ(?Rn zFZcYkS?6T|f#gEJV#LQ1TU2JkPbk!RPi& zg)TWc0@8epHMSRj1A5*=^n|ze`1k^6o`|@r_*>?*?ZLASl;&6iQ?&ar6!x=kj&LA* zsXq-H2~3`IImjF?y{30TxL#`$;>EpWtAf;Np|fOAhBcCpiD`Lq8HekNEh!-Pf|r58 zM)FYfjaRZNbISKl3?3WvnmP#%eYa$mhJ_E-jim5=`QKtu|4~j&y>*eh(P%o=qP`lg z>+PeCO<5^WW!*)A)v~RL27v%}pYWmnC{13g0HSN^H92*3w_wcxkkqP_u+VEd84m!Y z)ZQ^zIaWZvaN&rn{oY00xg0US!Ioy&<54!yYgo?Hbd7I8+l6M6+m+-)Ed|dsNFKcP zpL3cYiq>gV)NF)(wXS2v7py5*ZQF%u-b)kT`sg&-B?cN5EE4y2ueeGZr&l&~gTXEz zI2Gb2pI_%Izcupx)qru{!diMy<-*zi1LKj#hh6^50|_VVDHxp%i>Fd)rmkBlNW+N@ zLSg{F7b63`iCx_gkg*HJTEseD8Z%bFY#e#1L#G^=kY&uD#jm>{*d@q9aG6V z5O9!UnpzsNAkVD{zIXQp&Y$fz8qGz?_Omn_@i}h$f=s{w1iBjP=yIq^IAk)T2=>}l z+XN!vIM+)M0eiMeYcv6~B6{kUUJdt%P5@2(z`?uo!_1SD_zKOvCF^>r3FqLD_~Ww6 zEFN!z8Q}dp$Ej{;;4yE%Fp~5Z0ND@5>b4q~OLtj3|GCDK5!@yMTFLg~#5 z<;?zCX77|ik4$-g*Kx4PE%JCF(A4GWErDoXtAK=ghz)77bm?;UoqDY0dV6djrOx3D zg8qT=Hm$r#T4T|YN9ax(q>+%(O+>=_!J4(+RQ9p@o7JYNwTH`-O? zD10ZbV)EEs>1|ZGnuY}+>95W-;ZNW8g5q?_7CGEBHVxIheNwPS&7|C(>7-T@pPR}P zKS8Bt#mlZXVX5zTUuVo6Pakei)LA5FE>B>7zg%xQj}1jS2cN5s0T4DFKj?f?weH?w z@uhG)-m1>Bg)<;`t5?7Ut--M;}S!rnNq84$z_@8WA>%AHrV5aK0ni({)uas;B*ry5x5)I|D29a zrM}tMK09_pX3Z`5leVAVaQf9uoS&$bnr&udJeFk#lwX;)~C;DZJa^m`5#JZK%LySYy%7yS( z-h6zk`}8C2%oA&6!mBER7qKHTJ3e*;`C(Qq_oSG?FKdcBRL}H%>bgQA1o1xSFnQWz zfjSEJ9Fp1xcx|_CUcUqtdL&nFwKQ0I^g^_%>ceI*ugKourI=)tOCwjs_;8<7r^A)` zC9z>XMT5!sWseyN4>AG|f$dv7K?f~hHvV8bFKzzS;FDVK%urcv&w|CIp?1^GGSz@Q z;czacx)*o*RWl=@iM3;`Xk;Cf;Pyn_+?%+0eOv_?FW&qjN7~G;mv_?%9yU-i(qSMC@h>^r_@<{^d z2iiLIRzTx7A6ZM%+*(apa@^pgGdxe;80w=mQ}AknUpn zehluiBp2eE$n2mZqVQ7IT1pcz4Y%|+9UelYd<^wOPd1_JY)Fk6xf?Q*0@<5v%tuDj z6SAF;lf)%AvtP~aS=W2KfONW79J}V_`K&g2Ga=Gz0KH zs~Lpr#>15}@HH2m4E_sOI{LT7D>S-`cvG*fExN97CN$5+AZ!eq!0c(xK&g|bTQZO+ z;Q`mCjL`FQ3C%>bMG7=QL~pu(ur`@wFv49MmEAa!-D;mRWJB60zu{8kylWAbvF~L; z$$v3)D6eZ9e8p+O&F-b+^{_1 zR(0;!0xaLcHB0Dhu_NpddCuY&)3qRUKPkQ2bv{cNvnllvr`sB>2oNz!d_V3F^RC-w zRW}NA+bgYiFp#W!a!~3C6aHKqF5;qf*Se~FW2sfe+G6c`oRVIL^&_U&0SyN*^Kh>$ z09beBd(~OH`1C;0<}H~@F0;YumbKcq++HM|0Lm1Nreeub$*UA>U+~M zh&1`r?6Kn)DF3U5pWbobWL7aQDRUwpR)S${u9ODCw!Z1+c4YsXdLtr_$yz?}U%xJi z@;oY@IiKaGC?9~%uQq|A+r+L7pr{)L*OcHVETFiU?qFgLGFU3**?Uj|8z`&rF%w(n zL&rq()oWI`h!{OuyOUw;nk~*H1LFK=D@nQOj19WZ(j-k50nvezN(O7{Y_h6I4Pp#R zT|E#u-Ty7`9$&Hm-DmrEFPv!}SqU`WR%YDj>7c57L z6QUN~PDoyxu*{eXrG4KW)@oCURt`-@$x}VuAlGZfm>4@WER9`=RfuFzv+tdbQkyw8 zWmU)_dcM=45H3_b4)wR#m$lv_2VD-$9jNSBd`%yhjp@xg6*DA4Jq$5SY!ZAoCk2}H z+2;cyl{q--K!Vp5cI3;O7j4#{NsLzmAm{y5vVvIQOJDEV7iJR>mvO|M@lE;eNX`~z z(K6$b!=+jMzwS3&$ngCBhv%_hKY8lTj{N%+S&0h7Rp1oTXA}}Sl!i%NzaV6kkyrS| zRQTMbaP&U3zPnLN}2b~#6wLMv3$0q!JL*nOS#?%&y~qRcbZ=8V(z>v$uN>76h6116 zbV1?`KGzcVd_#&RCF3~To4d+tW;gjbZ)Errowd zXWfp9ReOpq`5JVY`!!opzDgk3_#qIgZ!nnLRL0`y~e>a;0mwB@gK-(KC6|EkdFqiU<68p&=3fjWpr5 z?*zZj2{0dLc_j2SeooQuPkZHcw`HifZk&Y?Wctn=)`ao{Fot(~CN?~tL3w;X`a%jd zqEA}{WvjkmTM z3yFtBU=U7TvVJqYM%YyFxt(y{(jFSgZW5&yAW|wjk?7h25UlCWb&I?mZSe3!6DIc_ zwtz>2P?b*!NhWwbI=oqjatxb%=nFUXoIkWyZQ`tCVty!JIoud{`TWFuV2G5Z{HrA9 z77pg)w&0+*o=5ZOv?QM&q8wvC-5Jv@{C@;yNXaCwnfc3P*Cn#{7(I0xFEO<;7;4YU zK%fAE4_Che*pta8a})ersQ#CNd3o=}EJbD7m|fapi}c&esVc7P`qD0;5+9DQY$3eQ zk&h>x0WOBC5}fZ*7EEHj_%)1m*xY82|6)j-^=} z3$!JoxwSUV;WQ`mp<$^BxX2m@ZY4LC&>@KH{<7-P0Y{7B3D}-Xbu5{fXq-=hq<-zJ zDWe$a;I<5RRjvF$cCEWZl-+U*V+W89@{H@k?K7^xrpjmqmfhj7^;>4`Cc2T7@)SQw zvplqI-84xbI_)wzu^}1rPEh#8IR68A*@*temjS<+GW`0@rr?V|s``Fj!MV08Z9so9 zg)8Nj4YuiP^4P1mU3==J68OiY%(Ic6l1f*v;DT2s!Ti>{m@3Jk@#Q#+4bwPToA{w| zH}~exfBdIWy2>k>NXRR4h4E#n7jX&d=l6iygL*h<6&9T&!A)`7s!?B zgu}`13K@nNHNo4FLuzvXk)=gFM{&c@gl4_bJgzq_ec=!k!MDxJAfbHHd+6gIr!8Yb zoJZTm&6wrJ(|jAzbCs4_jRR2J&6fr-a$?KfY2ZnKk{K!Yg& zx8}72;NT&c?Q>++HRm`zsSIFvMv~~Eue8s4n4D+mkWapVb}jaqPO0=h(7-B)ii0EE zRAD+F(bpg?v^3cYD#SCfWKQXOaW;M&oLb6^^F&`oYJdo@a^9!tN`?>VR2W;r%T({o z#ZQbM6!yoDy|8c|aJ|Cm55T#(&7nD#uIlxGNC($$o=Q%jw1%_aNfQ(R@rSQuCn|m} zjwd(^Nr6Amm`02z854R+M@i?%Reh2aIOX$ zb@9!Va2gMSv&d)5Q|9BnQ>RZRZG_onG^OcLA(v$!kuG;+{0};J7ohMEILtllZ=Vs9!VNsw-sAjT7!eM2Uc=O zwg*6AVd3XY7x_O&P+WLAFW;f81l}pVIc+(UYIbS;6FvDmh{L(`gXP`kIBRcG7X4Y; za6?Ks+W2J5KSA`beI8runQ)yLU+pM`mPT1;5s0{C0|y9J=i1E~ZG+AooR4Otat{d0 zR5RTu=jR#ovi>ylrcb5L#}=QrhQ{Ff_zuD8s2|ub~o_o9Rw+i zVWHzxu@f*z$IUG~I{JdZ>jQG?M;6SS&a>5ux~J!00tW6Ph*!&G#`;5duFT*W{Y0bU3DZQv^yB{+ z;%7J2NBfn*Z#suytMjU=Sjw%1@7x?8sIaH9hS(thQABV1Vc8HlVQ3EHsiFP;*~a{b zy0h5V<#!6N4H>3>3{xMk?9k$XHlHIZeYF zPNez|YEx1n`uMcu2U($MS6yg1S~Rq+CKd7bv5QmBPXVGb-FU!muNBMv7g}EBqHmPF zwiOl?Dn%|uAD$(Go(~N}47&*m_0u^bQ+3&O1Oj;_jPUs9e;UmHq4aIQsTSCki_zjo zmX?Q7Wl(+=0a2;fn%rw79~XVxxlN_rq2$?cS3nT(rzgCy>n|bg1n%0+A>z)2PJTgb zoxuU@Vv}V>c&2OJ{z9mIxyN=`237n$wl~YLuW0DCf0lx;Y+Dg=A|lR1t}lu&iFj92 ztF7_cg|~b2maBZSsI;q_0Uwat)14Nj8w(V#p*3wUPZ)4lW$Qld`_dm;(Mc`roJ202 z!Rrb`-Y*MqYuUNG zb#6cZA5EhnE7VmR`6K+9g{v-UHX}SL3rySegpwjaClC?1i%WQXyiQh3a)^6!lT%sX zTC&)Yl*Rx-kmkmz^Ue`HuydV6RHcjN}z+ew_ zFc{R||93q>^}oXZ`oD8==SDqKPq{XJpIL8+1=)fFWoKY?F$VpqxTVur78Ks3o`AHW zX?q|i>p@hw-D?N($ldheLk(T9Pm1AI!UdD}(kEqqt--vNduuyUd7nq~0w$+&ny^`HVU`0H91EXB2$Dud_5&P$! zppwbZPhSx}4X7b!eQC%^i|Br`dwQ*ax&4Tq<|ZcpZhofr$+_ZEevR}htz1-$l)3X;U;Y?5Ox zYQ+T|mmqBw4lU1E7ZaPe9Sct#;d&P|l^Bc$u_iF+5GXx+``@ELCEH)3&+p?`@Ulh4 zw9M%Tv2?cjmV8*cb^aP1ju9KFLmLkIfx)^RD=wPkmkkG#=dlD&A73fSp~O`^yK~Lu zHp}Lw4eztqGvtXTSy4ys6WuLJ1ttMbX|HA>Z?q&1ywR_u?AACoWRQiR z6Nki^>pfL?&xP(Zk4;oFMvl6-4O|tM#Mb6S!BkE9!Y^Sbb2OoBLb`QCN}e+i2!q}J z9a2!Xe5rDn_|;;PCAZ|NO`ql@9xrf$2B%mXqP% z0PNZ3d256k_g0<_oBta})erQ1^{`;Y@Y}irT_0jA3vjc$us?12kmIpyb zA5Q@Ye8h6_K}qC8Hg1KygM%X~d0YEk&U@!0xpm6}g|?IAzjuZH|L3m)Qooo2 z1iL$E>+W%UvZqI7+iTLiBGkE!jPw)*i7j<@dLkH5MXUiLKDFUJt?GQ$3MG^HaQVwG zrtQM}x`{e8M%v!{X~GNs8=I4?#P=16U%hvL(;Lo>NVNIQ-~* zrNn%H+%Kjx<+M+o^@UAMznCVw_P-c^sr{ZAP=3N|_oM$($rY8=W1)g$uW}pyuwoVM z2q&7!2Tmtd81V_{`n;pnizN~x+qI!Zn4D?1ke`teMi>%Vx_Dz;;6&&OG823ZG$ zvdac7SffT#Gr4nDur}OwBTHNe8}1Y^7=iq|;*L{5l5}T``)zn2k3VsD-bvNB)?%f~CUxGk-^M!60ZME*+FK}!@h6#D4sr5sf? zY*<8GC$G;p0fFlORmS}PB`ma}4_^Y_T+Sm8J^2wg^d;#uO@^Rfm%Tx69tFH@LQR=H z6Mfh-=sz7j6xe$EvDMvgbGy4S30A8|e5sff8f#kF_X$c|(c%v}8DrorXWu&u|1k^? zjb&I=dl|+}nUqGadq>^01P-^%@XRfXXcCS{aLWS#>Ha}K*wN!q49hsqEiT7Y z`?sBi3;W#{`Xk)q9F|#S5>&4;8fgIsqfTPkgqLEbxK4R5``1)lJ_i5OGNf(Tst4t3 zM_v5<7p1oxX0XZ2M`&i4@|Z>0pl!5oA&PS~Vbqdv|y_?kR8_t42y5_qizKQ8@?ddOjr zYceNK<*4F=veE0va71o(YsYfFmf)`)!FbJEsP&et2ckKup!8VKm#|SbfRu*MqpGMj z)vz~JO8Z`onqZpE0LXq6C;KBKH*;M-(0tUfhNPDOam1aB$kI{1;e)U@5s?|PvRTD_ zbqr>gONttj<7ZYj{oEYR0@j#Z#X9jvU9YtZztDflV$^|kLZIk(D~fvm-J z>vNRRoQ|4xb<(zT+^^|tfg)0zGw&mbj~EYR0YUW7`1G7#4uH!Em0zhpT`5{N3zvJl zxxShe*r6Xht?F@SmgfOI}mR0Skm-;8gsy(?e6@&zH|IPsnZ*mP|-? z*_LiAb2@y^-J}Ve*xj~^jpi9CEROEEO+$tKdh=^iM6;oIa${*k+6*JlbEck#2t%jC z53l#MUR~KE?+4DAPxj&3$X-NrjOQ0xAD#@P5UF5%0@I*!gyGG@53ze% z`xvTqg;gCHRxVpk=ud0@b7tM8FlQg%U~VqkVxOHJ*nHRKv}O3{wR~Wt_iWg`*A-(W zY;q?LjUEX4`?tSHMd0_-XKIf~IX$Rck6Lt%zH6m-�F>HuSXn!H2t31VhA%W?Fh? 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

cofa_ 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

    m65MOETzu4EIYzDr?D(%@1 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

    -9B@bRrqjxnYTFUr3D)Ao0^K|yvEV5iJ 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 wwzS$~zx_|UN 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 z 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ⅇ-Rn{<~e>j{MgSlYbw-pZk|i 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�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%0AiL5;X|6=J~H}g89qF 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

    @1= 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≧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�$J!TOaiFa3>J@LXu*v-;?_8-2O4 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 HMG*cE(jrs+ diff --git a/subprojects/packagecache/quill_4.2.0-1_patch.zip b/subprojects/packagecache/quill_4.2.0-1_patch.zip deleted file mode 100644 index ef6ccf2785db3860748c9103063f29a7a1e5a6b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1401 zcmWIWW@Zs#0D+%D8U1y3rjO|a&%4fjPwlj1E4B7z$*Df)&>_dF)-+{Ffd4> zsr2!5cJ&K()k^~EPKgbS&!24|Q2#u5&ZjG0D{lYVVJ<%Bm{dZ_oV3c41Dx|X`Zio% zalfuyCHK0g$BFXqzsslpynOo!Uv10oZ*p?`?f)^{jn>Hhpj`6pD&N17Ey*nzXAM2G ztYu?4_-5-lY|or`xxIPBglsd!ZJ&1k4uR`6x+?aTMiZS;G7 z_kq)Vr{^72<$V!6Avte7G|qfH>o4%eK;^`P3*YB_y?ock`I`Th3l-6U3r;Qletf-W zjK{aclBK4y5(}UE~~@2 zOByae56xeDVRmA}+`YOyrGZ700eZ4$M+Ia#CS-m;THFS;zI2QfC!($w8ldQjv_ zcIfH0#Wj6frmmRA6WkWblkPwV5JOB*J+p4<52 z$VJI&tskLW&Z(@zsa%%YH;v~93PpxEC5M-9h%D5aD0f)@vQwCd^5m&uKYR?AUXs7i zn^D2#)7d7rDP)t6aFn{z6Q8CXUGb3_S3f*evT%A|df1*r@%b8ub!`VkKGyzF{K<_- zsfEBa&9gqkW(p$%g9bALgE(4B%}p)N&x54X)}YgQOolvrK8sGQI-#`d!t@Z%PUoXj ztNBAkTaV0Mc2;fWWY&x8*KgLjz@D{J=i3drY9qnJ+ACr{em`e*TwgNW@KQSSjGPZS z=YHJ%l2+xa$=mxTMoclyNyyQ^M*CuPeoHg&j-zic=m%ZnHk}!B|MT;Y87X^(ZY3pg zyVb`oU)XX)>VlKhige~9D<3xLHecU%!Q*&H#^TZjpG7aDK3Hy4Q}7m?lDo$0(UHlF z(kmT!G#zDIx3-G>x#D2Q5b-s=?|00rB%T?L-O7$fU%Sg^J>LC`+2D$FXIR$iS7BOQ z{iUfl>#7$j3Qc5ts^ZjnAp1jB_}rZ{rdWFvStiy0@0tT3gPNZr84ak7ql~ zUOZ~s#t~n5YQ+QTY!11ADoK6~{>RdF2{0aKn~B(>1*FeslIFD{QdfJ=7)?woB`g9Od`y` header dependency in the frontend -- Replaced `%(structured_keys)` with `%(named_args)` in the `PatternFormatter`. This change now appends the - entire key-value pair of named args to the message, not just the names. -- Relocated certain classes to the `detail` namespace -- Replaced `sprintf` with `snprintf` to fix macOS warning. -- Reviewed and removed gcc cold attribute from a few functions. -- Minor backend thread optimisations when logging c style strings or char arrays -- Improved backend thread variable and function names and fixed a bug for an edge case when the transit event hard limit - is reached - -## v4.0.0 - -This version represents a major revamp of the library, aiming to simplify and modernize it, resulting in the removal -of a few features. Please read through the changes carefully before upgrading, as it is not backwards compatible with -previous versions and some effort will be required to migrate. - -I understand that these changes may inconvenience some existing users. However, they have been made with good -intentions, aiming to improve and refine the logging library. This involved significant effort and dedication. - -Bug fixes and releases for `v3` will continue to be supported under the `v3.x.x` branch. - -#### Comparison - -- This version significantly improves compile times. Taking a look at some compiler profiling for a `Release` build with - clang 15, we can see the difference. Below are the two compiler flamegraphs for building the `recommended_usage` - example from the new version and the `wrapper_lib` example from the previous version. - -The below flamegraph shows the difference in included headers between the two versions - -| Version | Compiler FlameGraph | -|---------|:--------------------------------------------------------------------------------------------------------------------------------------:| -| v4.0.0 | ![quill_v4_compiler_profile.speedscope.png](https://github.com/odygrd/quill/blob/master/docs/quill_v4_compiler_profile.speedscope.png) | -| v3.8.0 | ![quill_v3_compiler_profile.speedscope.png](https://github.com/odygrd/quill/blob/master/docs/quill_v3_compiler_profile.speedscope.png) | - -A new compiler benchmark has been introduced. A Python script generates 2000 distinct log statements with various -arguments. You can find the -benchmark [here](https://github.com/odygrd/quill/blob/master/benchmarks/compile_time/compile_time_bench.cpp). -Compilation now takes only about 30 seconds, whereas the previous version required over 4 minutes. - -| Version | Compiler FlameGraph | -|---------|:------------------------------------------------------------------------------------------------------------------------------------:| -| v4.0.0 | ![quill_v4_compiler_bench.speedscope.png](https://github.com/odygrd/quill/blob/master/docs/quill_v4_compiler_bench.speedscope.png) | -| v3.8.0 | ![quill_v3_compiler_bench.speedscope.png](https://github.com/odygrd/quill/blob/master/docs/quill_v4_compiler_profile.speedscope.png) | - -- Minor increase in backend thread throughput compared to the previous version. - -| Version | Backend Throughput | -|---------|:----------------------------------------------------------------------------------:| -| v4.0.0 | 4.56 million msgs/sec average, total time elapsed: 876 ms for 4000000 log messages | -| v3.8.0 | 4.39 million msgs/sec average, total time elapsed: 910 ms for 4000000 log messages | - -- Significant boost in hot path latency when logging complex types such as `std::vector`. - The performance remains consistent when logging only primitive types or strings in both versions. Refer - [here](https://github.com/odygrd/quill?tab=readme-ov-file#performance) for updated and detailed benchmarks. - -#### Changes - -- **Improved compile times** - -The library has been restructured to minimize the number of required headers. Refactoring efforts have focused on -decoupling the frontend from the backend, resulting in reduced dependencies. Accessing the frontend logging functions -now does not demand inclusion of any backend logic components. - - "quill/Backend.h" - It can be included once to start the backend logging thread, typically in main.cpp - or in a wrapper library. - - "quill/Frontend.h"` - Used to create or obtain a `Logger*` or a `Sink`. It can be included in limited - files, since an obtained `Logger*` has pointer stability and can be passed around. - - "quill/Logger.h", "quill/LogMacros.h" - These two files are the only ones needed for logging and will have - to be included in every file that requires logging functionality. - -- **Backend formatting for user-defined and standard library types** - -One of the significant changes lies in the support for formatting both user-defined and standard library types. -Previously, the backend thread handled the formatting of these types sent by the frontend. It involved making a copy for -any object passed to the `LOG_` macros as an argument using the copy constructor of a complex type instead of directly -serializing the data to the SPSC queue. While this method facilitated logging copy-constructible user-defined types with -ease, it also posed numerous challenges for asynchronous logging: - -- Error-Prone Asynchronous Logging: Copying and formatting user-defined types on the backend thread in an - asynchronous logging setup could lead to errors. Previous versions attempted to address this issue with type - trait checks, which incurred additional template instantiations and compile times. -- Uncertainty in Type Verification: It is challenging to confidently verify types, as some trivially copiable - types, such as `struct A { int* m; }`, could still lead to issues due to potential modifications by the user - before formatting. -- Hidden Performance Penalties: Logging non-trivially copiable types could introduce hidden cache coherence - performance penalties due to memory allocations and deallocations across threads. For instance, - consider `std::vector` passed as a log argument. The vector is emplaced into the SPSC queue by the frontend, - invoking the copy constructor dynamically allocating memory as the only members copied to SPSC queue - are `size`, `capacity`, and `data*`. The backend thread reads the object, formats it, and then invokes the destructor, - which in turn synchronizes the - freed memory back to the frontend. - -Additionally, after years of professional use and based on experience, it has been observed that user-defined types -are often logged during program initialization, with fewer occurrences on the hot path where mostly built-in types are -logged. In such scenarios, the overhead of string formatting on the frontend during initialization is not an issue. - -In this new version, the use of the copy constructor for emplacing objects in the queue has been abandoned. Only POD -types are copied, ensuring that only raw, tangible data is handled without any underlying pointers pointing to other -memory locations. The only exception to this are the pointers to `Metadata`, `LoggerBase` and `DecodeFunction` -that are passed internally for each log message. Log arguments sent from the frontend must undergo -serialization beforehand. While this approach resolves the above issues, it does introduce more complexity when -dealing with user-defined or standard library types. - -Built-in types and strings are logged by default, with the formatting being offloaded to the backend. Additionally, -there is built-in support for most standard library types, which can also be directly passed to the logger by -including the relevant header from `quill/std`. - -The recommendation for user-defined types is to format them into strings before passing them to the `LOG_` macros using -your preferred method. You can find an example of -this [here](https://github.com/odygrd/quill/blob/master/examples/user_defined_types_logging.cpp). - -It's also possible to extend the library by providing template specializations to serialize the user-defined types -and offload their formatting to the backend. However, this approach should only be pursued if you cannot tolerate the -formatting overhead in that part of your program. For further guidance, refer -to [this example](https://github.com/odygrd/quill/blob/master/examples/advanced/advanced.cpp). - -- **Header-Only library** - -The library is now header-only. This change simplifies exporting the library as a C++ module in the future. See -[here](https://github.com/odygrd/quill/blob/master/examples/recommended_usage/recommended_usage.cpp) on how to build a -wrapper static library which includes the backend and will minimise the compile times. - -- **Preprocessor flags moved to template parameters** - -Most preprocessor flags have been moved to template parameters, with only a few remaining as `CMake` options. This -change simplifies exporting the library as a C++ module in the future. - -- **Renamed Handlers to Sinks** - -To enhance clarity, handlers have been renamed to sinks. - -- **PatternFormatter moved to Logger** - -The `PatternFormatter` has been relocated from `Sink` to `Logger`, enabling a logger object to log in a specific -format. This allows for different formats within the same output file, a feature not previously possible. - -- **Split Configuration** - -The configuration settings have been divided into `FrontendOptions` and `BackendOptions`. - -- **Refactoring of backend classes** - -`MacroMetadata` and many backend classes have undergone refactoring, resulting in reduced memory requirements. - -- **Improved wide strings handling on Windows** - -The library now offers significant performance enhancements for handling wide strings on Windows platforms. -It's important to note that only wide strings containing ASCII characters are supported. Previously, wide strings were -converted to narrow strings at the frontend, impacting the critical path of the application. -With this update, the underlying wide char buffer is copied and the conversion to UTF-8 encoding is deferred to -the backend logging thread. Additionally, this update adds support for logging STL containers consisting of -wide strings - -- **Default logger removal** - -The default logger, along with the configuration inheritance feature during logger creation, has been removed. Now, when -creating a new logger instance, configurations such as the `Sink` and log pattern format must be explicitly specified -each time. This simplifies the codebase. - -- **Global logger removal** - -The static global logger* variable that was initialised during `quill::start()` used to obtain the default logger has -been removed. It is possible to add this on the user side. If you require a global logger you can have a look -at [this example](https://github.com/odygrd/quill/blob/master/examples/recommended_usage/recommended_usage.cpp) - -- **Removal of printf style formatting support** - -The support for `printf` style formatting has been removed due to its limited usage and the increased complexity. Users -requiring this feature should stay on `v3.x.x` versions to maintain compatibility. - -- **Removal of external libfmt usage** - -The option to build the library with external `libfmt` has been removed. It becomes difficult to maintain and backwards -support previous versions of `libfmt`. Instead, `libfmt` is now an internal component of the library, accessible under -the namespace `fmtquill`. You can use the bundled version of `fmtquill` by including the necessary headers from -`quill/bundled/fmt`. Alternatively, you have the freedom to integrate your own version. Since `libfmt` is encapsulated -within a distinct namespace, there are no conflicts even if you link your own `libfmt` alongside the logging library. - -#### Migration Guidance - -- Revise include files to accommodate the removal of `Quill.h` -- Update the code that starts the backend thread and the logger/sink creation. You can refer to any of the - updated examples, such as [this one](https://github.com/odygrd/quill/blob/master/examples/file_logging.cpp) -- When logging statements involving user-defined types, make sure these types are formatted into strings using - your preferred method. Refer to - [this link](https://github.com/odygrd/quill/blob/master/examples/user_defined_types_logging.cpp) for guidance. - Alternatively, if you prefer delaying the conversion to strings until the backend thread and only passing a - binary copy of the user-defined type on the hot path, you can provide the necessary class template - specializations for each user-defined type. See an example - [here](https://github.com/odygrd/quill/blob/master/examples/advanced/user_quill_codec.h) - -## v3.9.0 - -- Fix bug in `ConsoleHandler` when dynamic log level is used ([#421](https://github.com/odygrd/quill/pull/421)) -- Fix bug in `TransitEvent` when dynamic log level is used ([#427](https://github.com/odygrd/quill/pull/427)) -- Fix build error for Intel compiler classic ([#414](https://github.com/odygrd/quill/pull/414)) -- Added `JsonConsoleHandler` ([#413](https://github.com/odygrd/quill/issues/413)) -- Fix fold expression argument evaluation. This bug could occur when logging c style strings - -## v3.8.0 - -- Refactored `MacroMetadata` class to reduce its size. -- Renamed some attributes in the `PatternFormatter` class for clarity. If you are using a custom format pattern, update - the attribute names in your code to match the new names. -- Improved accuracy of log statement timestamps. Previously, the timestamp was taken after checking if the queue had - enough space to push the message, which could make it less accurate. Additionally, in the case of a blocking queue, - the timestamp could be later in time. Now, the timestamp is taken and stored right after the log statement is issued, - before checking for the queue size. -- Reduced template instantiations during logging operations on the hot path. Fold expressions are now used for - encoding/decoding arguments, minimizing template recursion overhead. -- Removed compile-time format checks due to their significant impact on template instantiations, especially considering - that only a few cases are invalid. For instance, while `fmt::format("{}", 1, 2)` is considered valid, - `fmt::format("{} {}", 1)` is deemed invalid. In cases where an invalid format string is detected, the backend worker - thread catches the generated exception and logs an error. -- The throughput of the backend worker thread has been improved by approximately 5%. This enhancement is reflected in - the new throughput value of 4.20 million msgs/sec, compared to the previous throughput of 3.98 million msgs/sec. -- Detect `tmux` as colour terminal. ([#410](https://github.com/odygrd/quill/issues/410)) - -## v3.7.0 - -- Fixed crash triggered by insufficient space in the queue upon invocation - of ``flush()``. ([#398](https://github.com/odygrd/quill/pull/398)) -- Fixed windows clang-cl build error. ([#400](https://github.com/odygrd/quill/pull/400)) -- Fixed compilation errors encountered on FreeBSD and extended ``get_thread_id()`` support to various other BSD - operating systems. ([#401](https://github.com/odygrd/quill/pull/401)) -- Fix open_file in the FileHandler to also create the parent path before opening the - file. ([#395](https://github.com/odygrd/quill/issues/395)) -- Enhance logic for backend thread's flush() invocation; it now triggers only if the handler has previously written - data. ([#395](https://github.com/odygrd/quill/issues/395)) -- Address an uncaught exception in the backend thread that could occur when a user manually removes the log file from - the terminal while the logger is running. ([#395](https://github.com/odygrd/quill/issues/395)) -- Ensure that after a logger is removed, there are no subsequent calls to the Handler's flush() or run_loop(), provided - the Handler is not shared. ([#395](https://github.com/odygrd/quill/issues/395)) -- Ignore the virtual destructor missing warning for the `CustomTags` - class. ([#402](https://github.com/odygrd/quill/pull/402)) -- Update bundled `libfmt` to `v10.2.1` - -## v3.6.0 - -- Fixed `QUILL_LOGGER_CALL_NOFN_LIMIT` macros. ([#381](https://github.com/odygrd/quill/pull/381)) -- Resolved a bug that caused reading destructed arguments when structured logging format was used. -- Modified member access from `private` to `protected` in `ConsoleHandler` for potential inheritance purposes. -- Eliminated redundant whitespaces within `JsonFileHandler`. -- Fixed `JsonFileHandler` to notify the file event notifier before log message writes. -- Implemented a new attribute called `%(structured_keys)` within the `PatternFormatter` to facilitate the inclusion - of keys in messages when using structured log formatting. This addition is useful for instances where logging occurs - in both JSON and regular log formats, enabling the display of keys within the regular log-formatted messages. - See - updated [example_json_structured_log.cpp](https://github.com/odygrd/quill/blob/master/examples/example_json_structured_log.cpp) - -## v3.5.1 - -- Resolved issue with accessing the `name()` method within the `Logger` - class. ([#378](https://github.com/odygrd/quill/pull/378)) -- Fixed a compilation error in `SignalHandler` specific to Windows when `QUILL_DISABLE_NON_PREFIXED_MACROS` is - defined. ([#380](https://github.com/odygrd/quill/pull/380)) - -## v3.5.0 - -- Fixed `LOG_TRACE_CFORMAT` macros. -- Added support for compile-time custom tags in `quill::MacroMetadata` to enhance message filtering and incorporate - static information. New log macros suffixed with `_WITH_TAGS` introduced for this feature. - Additionally, `%(custom_tags)` parameter added - to `PatternFormatter`. ([#349](https://github.com/odygrd/quill/issues/349)) - See [example_custom_tags.cpp](https://github.com/odygrd/quill/blob/master/examples/example_custom_tags.cpp) -- Improvements to reduce compilation time - -## v3.4.1 - -- Reduce backend worker unnecessary allocation. ([#368](https://github.com/odygrd/quill/issues/368)) -- Adjusted handling for empty `std::string_view` instances, addressing an issue where logging empty strings triggered an - unintended `memcpy` with zero size and a nullptr, leading to address sanitizer warnings. -- Fix clang build error when using `-DQUILL_NO_EXCEPTIONS:BOOL=ON`. ([#357](https://github.com/odygrd/quill/issues/357)) - -## v3.4.0 - -- Resolved `bad_variant_access` error occurring when using Quill as a pre-compiled library with a distinct queue - type. ([#276](https://github.com/odygrd/quill/pull/276)) - -- Resolved a bug in `RotatingFileHandler` associated with logfiles located outside the working directory, - specifically when used with open_mode `a`. ([#340](https://github.com/odygrd/quill/pull/340)) - -- Added a `name()` method to the Logger class which provides the logger - name. ([#345](https://github.com/odygrd/quill/pull/345)) - -- Fixed library and include paths in the pkg-config configuration. ([#352](https://github.com/odygrd/quill/pull/352)) - -- Move `get_root_logger()` definition from cpp to the header file ([#348](https://github.com/odygrd/quill/issues/348)) - -- Introduced support for logging character arrays. You can now log character arrays, even when they don't contain a - null-terminating character. - Additionally, character arrays with null characters in the middle are supported, and the logger will - capture the content until the null character is encountered. ([#353](https://github.com/odygrd/quill/pull/353)) - - For example - - ```c++ - union - { - char no_0[2]; - char mid_0[6]{'1', '2', '3', '4', '\0', 6}; - } char_arrays; - - // only output "12" even if there's no '\0' at the end - LOG_INFO(logger, R"(This is a log info example for char array without '\0': {})", char_arrays.no_0); - - // output "1234" until the '\0' - LOG_INFO(logger, R"(This is a log info example for char array with '\0' in middle: {})", - char_arrays.mid_0); - ``` - -- Minor improvements in the bounded queue and throughput. ([#362](https://github.com/odygrd/quill/pull/362)) - - Previous: 2.21 million msgs/sec average, total time elapsed: 1809 ms for 4000000 log messages. - - New: 2.24 million msgs/sec average, total time elapsed: 1787 ms for 4000000 log messages. - -- Disable `fmt::join(data, "")` at compile time. ([#356](https://github.com/odygrd/quill/issues/356)) -- Fix compile error in Apple Clang 12. ([#360](https://github.com/odygrd/quill/issues/360)) -- Add guards for redefined preprocessor variables. -- Fix `uint64_t` to `time_t` implicit conversion error in Clang 18. -- Update bundled `libfmt` to `v10.1.1` - -## v3.3.1 - -- Fixed `RotatingFileHandler` to prevent accidental removal of non-log files when using open mode `w` - and `set_remove_old_files(true)` - -## v3.3.0 - -- Added a `quill::get_handler(handler_name)` function that allows easy lookup of an existing `Handler` by name. This - function proves helpful when you want to retrieve a handler and pass it to a new logger. - -- Fix build failure of Intel Compiler Classic. ([#332](https://github.com/odygrd/quill/pull/332)) - -- Introduced `QUILL_BLOCKING_QUEUE_RETRY_INTERVAL_NS` option for user-configurable retry interval in the blocking queue. - Default value is 800 nanoseconds. ([#330](https://github.com/odygrd/quill/pull/330)) - -- Improved backend thread handling. Now verifies that all producer SPSC queues are empty before entering `sleep`. - -- Fixed a race condition and potential crash in `quill::remove_logger(Logger*)` when called without - prior `quill::flush()`. - -- Added protection to prevent removal of the root logger with `quill::remove_logger(Logger*)`. - -- Improved exception handling on the backend thread when calling `fmt::format()`. - - While compile-time checks ensure that the format string and arguments match, runtime errors can still occur. - Previously, such exceptions would affect and drop subsequent log records. Now, exceptions are caught and logged - in the log file and reported via the backend thread notification handler (default is `cerr`). - - For example, if a dynamic precision is used (`LOG_INFO(logger, "Support for floats {:.{}f}", 1.23456, 3.321312)`), - the log file will show the following error message: - - ``` - LOG_INFO root [format: "Support for floats {:.{}f}", error: "precision is not integer"] - ``` - - Additionally, an error message will be printed to `cerr` - - ``` - Quill ERROR: [format: "Support for floats {:.{}f}", error: "precision is not integer"] - ``` - -- Fixed a bug in timestamp formatting that occasionally displayed an hour component of 0 as - 24. ([#329](https://github.com/odygrd/quill/pull/329)) - -- Added support for specifying a runtime log level, allowing dynamic log level configuration at runtime. - The new runtime log level feature provides flexibility when needed, with a minor overhead cost. - It is recommended to continue using the existing static log level macros for optimal - performance. ([#321](https://github.com/odygrd/quill/pull/321)) - - For example - - ```c++ - std::array const runtime_log_levels = {quill::LogLevel::Debug, - quill::LogLevel::Info, - quill::LogLevel::Warning, - quill::LogLevel::Error}; - - for (auto const& log_level : runtime_log_levels) - { - LOG_DYNAMIC(logger, log_level, "Runtime {} {}", "log", "level"); - } - ``` - -- Added support for printf-style formatting with `_CFORMAT` macros. These macros use the `printf` format string syntax, - simplifying the migration of legacy codebases using `printf` statements. - - For example - - ```c++ - std::array arr = {1, 2, 3, 4}; - LOG_INFO(logger, "This is a log info example using fmt format {}", arr); - - LOG_INFO_CFORMAT(logger, "printf style %s supported %d %f", "also", 5, 2.32); - ``` - -- Added a `metadata()` member function to the `TransitEvent` class. It provides access to the `Metadata` object - associated with the log record, simplifying syntax for retrieving log record metadata in custom Handlers. - - For example - - ```c++ - void CustomHandler::write(fmt_buffer_t const& formatted_log_message, quill::TransitEvent const& log_event) - { - MacroMetadata const macro_metadata = log_event.metadata(); - } - ``` - -- Simplified file handler configuration. Now, instead of passing multiple arguments to the constructor, - you only need to provide a single `FileHandlerConfig` object. This change makes creating file handlers objects - much easier and more flexible. - - For example - - ```c++ - quill::FileHandlerConfig file_handler_cfg; - file_handler_cfg.set_open_mode('w'); - file_handler_cfg.set_append_to_filename(quill::FilenameAppend::StartDateTime); - - std::shared_ptr file_handler = quill::file_handler("application.log", file_handler_cfg); - quill::Logger* logger_foo = quill::create_logger("my_logger", std::move(file_handler)); - - LOG_INFO(my_logger, "Hello from {}", "application"); - ``` - -- Combined the functionalities of `RotatingFileHandler` (rotating based on file size) and `TimeRotatingFileHandler` - (rotating on a time interval) into a single, more versatile `RotatingFileHandler`. Users can now conveniently rotate - logs based on both file size and time intervals simultaneously. The updated `RotatingFileHandler` offers a variety of - customization options for improved flexibility. For more information on available configurations, - refer to the `RotatingFileHandlerConfig` documentation. - - For example - - ```c++ - // Create a rotating file handler which rotates daily at 18:30 or when the file size reaches 2GB - std::shared_ptr file_handler = - quill::rotating_file_handler(filename, - []() - { - quill::RotatingFileHandlerConfig cfg; - cfg.set_rotation_time_daily("18:30"); - cfg.set_rotation_max_file_size(2'000'000'000); - return cfg; - }()); - - // Create a logger using this handler - quill::Logger* logger_bar = quill::create_logger("daily_logger", std::move(file_handler)); - ``` - -- Improved compatibility with older versions of external `libfmt`. Quill now compiles for all versions - of `libfmt >= 8.0.0`. - -## v3.2.0 - -- Addition of std::is_trivially_copyable to default copy loggable - types. ([#318](https://github.com/odygrd/quill/pull/318)) -- By default, the static library now builds with '-fPIC' to generate position-independent code. - To disable this feature, you can use the CMake option 'QUILL_DISABLE_POSITION_INDEPENDENT_CODE'. -- The `LOG__LIMIT` macros now support using `std::chrono` duration types for specifying the log interval. - Instead of providing a raw number, you can use: - - ```c++ - LOG_INFO_LIMIT(std::chrono::milliseconds {100} , quill::get_logger(), "log message"); - ``` - -## v3.1.0 - -- It is now possible to set a minimum logging interval for specific logs. For example: - - ```c++ - for (uint64_t i = 0; i < 10; ++i) - { - LOG_INFO_LIMIT(2000, default_logger, "log in a loop with limit 1 message every 2000 micros for i {}", i); - std::this_thread::sleep_for(std::chrono::microseconds{1000}); - } - ``` - -- `quill::utility::to_string()` now uses `fmt::to_string()` - -- Quill now utilizes a custom namespace (`fmtquill`) for the bundled fmt library. This enables smooth integration with - your own external fmt library, even if it's a different version. - -## v3.0.2 - -- Add missing header on clang when `QUILL_X86ARCH` is defined. - -## v3.0.1 - -- Enhanced the reported message for reallocation of the unbounded queue to include the thread id. - -## v3.0.0 - -- The previous unbounded queue constantly reallocated memory, risking system memory exhaustion, especially when handling - intensive logging from multiple threads. Starting from `v3.0.0`, the default behavior has been improved to limit - the queue capacity to 2 GB. When this limit is reached, the queue blocks the hot thread instead of further - reallocation. - To modify the default behavior, there is no need to recompile the `quill` library. Recompile your application - with one of the following header-only flags. - - ```shell - # Previous behavior in v2.*.*: Reallocates new queues indefinitely when max capacity is reached - -DCMAKE_CXX_FLAGS:STRING="-DQUILL_USE_UNBOUNDED_NO_MAX_LIMIT_QUEUE" - - # Default behavior in v3.*.*: Starts small, reallocates up to 2GB, then hot thread blocks - -DCMAKE_CXX_FLAGS:STRING="-DQUILL_USE_UNBOUNDED_BLOCKING_QUEUE" - - # Starts small, reallocates up to 2GB, then hot thread drops log messages - -DCMAKE_CXX_FLAGS:STRING="-DQUILL_USE_UNBOUNDED_DROPPING_QUEUE" - - # Fixed queue size, no reallocations, hot thread drops log messages - -DCMAKE_CXX_FLAGS:STRING="-DQUILL_USE_BOUNDED_QUEUE" - - # Fixed queue size, no reallocations, hot thread blocks - -DCMAKE_CXX_FLAGS:STRING="-DQUILL_USE_BOUNDED_BLOCKING_QUEUE" - ``` - -- Added support for huge pages on Linux. Enabling this feature allows bounded or unbounded queues to utilize huge pages, - resulting in optimized memory allocation. - - ```c++ - quill::Config cfg; - cfg.enable_huge_pages_hot_path = true; - - quill::configure(cfg); - quill::start(); - ``` - -- Added support for logging `std::optional`, which is also now supported in `libfmt` `v10.0.0`. - - ```c++ - LOG_INFO(default_logger, "some optionals [{}, {}]", std::optional{}, - std::optional{"hello"}); - ``` - -- Introduced a new function `run_loop` in the `Handler` base class, which allows users to override and execute periodic - tasks. This enhancement provides users with the flexibility to perform various actions at regular intervals, - such as batch committing data to a database. -- In scenarios where a hot thread is blocked and unable to push messages to the queue in blocking mode, this situation - will now be reported through the `backend_thread_notifications_handler` to the standard error stream `cerr`. - -## v2.9.2 - -- Fix increased compile times due to `x86intrin` headers. ([#298](https://github.com/odygrd/quill/pull/298)) -- Fix compile error when using `QUILL_X86ARCH` on windows. -- Fix bugs when quill is build as a shared library on windows. ([#302](https://github.com/odygrd/quill/pull/302)) - -## v2.9.1 - -- Removed `CMAKE_INSTALL_RPATH` from cmake. ([#284](https://github.com/odygrd/quill/pull/284)) -- Fix compile warning on Apple M1. ([#291](https://github.com/odygrd/quill/pull/291)) -- Update bundled `libfmt` to `v10.0.0` -- Fix for `CMAKE_MODULE_PATH` ([#295](https://github.com/odygrd/quill/pull/295)) -- Fixed a bug in `TimeRotatingFileHandler` when `quill::FilenameAppend::None` is - used. ([#296](https://github.com/odygrd/quill/pull/296)) -- Fixed `TimeRotatingFileHandler` and `RotatingFileHandler` to work when `/dev/null` is used as a - filename ([#297](https://github.com/odygrd/quill/pull/297)) -- Added `NullHandler` that can be used to discard the logs. For example: - - ```c++ - int main() - { - quill::start(); - - std::shared_ptr file_handler = - quill::null_handler(); - - quill::Logger* logger_bar = quill::create_logger("nullhandler", std::move(file_handler)); - - for (uint32_t i = 0; i < 150; ++i) - { - LOG_INFO(logger_bar, "Hello"); - } - ``` - -## v2.9.0 - -**Fixes** - -- Fixed a bug in TimeRotatingFileHandler. ([#287](https://github.com/odygrd/quill/pull/287)) - -**Improvements** - -- Renamed `backend_thread_error_handler` to `backend_thread_notifications_handler` in `Config.h`. Previously this - handler was used only to report errors from the backend worker thread to the user. This callback will also now report - info messages to the user. -- Report unbounded spsc queue reallocation via - the `backend_thread_notifications_handler`. ([#286](https://github.com/odygrd/quill/pull/286)) -- Report bounded spsc queue dropped messages via the `backend_thread_notifications_handler`. - -## v2.8.0 - -**Breaking Changes** -(see `improvements` section for more details) - -- If you were previously compiling with `-DQUILL_USE_BOUNDED_QUEUE` or `QUILL_X86ARCH` you should now pass the - flag to you target as it is not propagated by CMake anymore. -- There is a change in the API in `Quill.h` instead of `quill::Handler*` you should now use - `std::shared_ptr< quill::Handler >` and also move it to the created logger. - -**Improvements** - -- Add `append_to_filename` parameter when creating `quill::time_rotating_file_handler` - and `quill::rotating_file_handler` -- Fix `Handlers` failing to find the file when the working directory of the application is changed in - runtime. ([#247](https://github.com/odygrd/quill/pull/247)) -- When the given output directory of a log file passed to a `Handler` does not exist, it will now get automatically - created. -- Support Windows 10 LTSB 2016, 1607 and Server 2016. ([#251](https://github.com/odygrd/quill/pull/251)) -- Add back `backend_thread_sleep_duration` in `Config.h` ([#256](https://github.com/odygrd/quill/pull/256)) -- For `quill::rotating_file_handler(...)` and `quill::time_rotating_file_handler(...)` the `backup_count` argument is - now default to `std::numeric_limits::max()` -- When the logging file is deleted from the command line while the logger is still using it, then a new file will be - reopened for writing. -- Added `quill::Clock` which enables taking and converting TSC timestamps to system clock timestamps. - When `TimestampClockType::Tsc` is used as the default clock type in `Config.h` this class - can also be used to generate timestamps that are in sync with the timestamps in the log - file. ([#264](https://github.com/odygrd/quill/pull/264)) -- Both `Unbounded` and `Bounded` queue modes can now be used without having to recompile `quill` library. This is still - not a runtime option, you still need to recompile your target and pass `QUILL_USE_BOUNDED_QUEUE` as a flag. - See [example_bounded_queue_message_dropping.cpp](https://github.com/odygrd/quill/blob/master/examples/example_bounded_queue_message_dropping.cpp) -- Added `QUILL_USE_BOUNDED_BLOCKING_QUEUE` option that makes possible to use a bounded queue which blocks the hot - thread rather than dropping messages ([#270](https://github.com/odygrd/quill/pull/270)) - See [example_bounded_queue_blocking.cpp](https://github.com/odygrd/quill/blob/master/examples/example_bounded_queue_blocking.cpp) -- Renamed `backend_thread_max_transit_events` to `backend_thread_transit_events_soft_limit` in - Config.h ([#270](https://github.com/odygrd/quill/pull/270)) -- Added `backend_thread_transit_events_hard_limit` in Config.h ([#270](https://github.com/odygrd/quill/pull/270)) -- Added `backend_thread_use_transit_buffer` in Config.h ([#270](https://github.com/odygrd/quill/pull/270)) -- CMake: `QUILL_X86ARCH` and `QUILL_USE_BOUNDED_QUEUE` options have been removed. The users can decide on enabling these - options on their side and quill doesn't need to be recompiled as a library. For example : - ```cmake - target_compile_definitions( PUBLIC QUILL_X86ARCH QUILL_USE_BOUNDED_QUEUE) - ``` -- Added `quill::remove_logger(Logger* logger)` in `Quill.h`. This makes it possible to remove a logger in a thread safe - way. When a logger is removed any associated `FileHandlers` with that logger will also be removed and the files will - also be closed as long as they are not being used by another logger. The logger is asynchronously removed by the - logging - thread after all the messages are written. To achieve this the API had to change to return a - `std::shared_ptr< quill::Handler >` instead of `quill::Handler*`. See - [example_file_callbacks.cpp](https://github.com/odygrd/quill/blob/master/examples/example_file_callbacks.cpp) -- Added `quill::wake_up_logging_thread()` in `Quill.h`. This thread safe function can be used to wake up the backend - logging thread on demand. ([#280](https://github.com/odygrd/quill/pull/280)) -- Round up queue capacity to the nearest power of 2. ([#282](https://github.com/odygrd/quill/pull/282)) - -## v2.7.0 - -**Fixes** - -- Remove references to build directory path from the compiled library's - symbols. ([#221](https://github.com/odygrd/quill/pull/221)) -- Fix when compiled as shared library with hidden visibility. ([#222](https://github.com/odygrd/quill/pull/222)) -- Fix equal timestamp log messages appearing out of order. ([#223](https://github.com/odygrd/quill/pull/223)) -- Reduce padding in some structs. -- Fix 'rename_file' throwing an exception while being marked - as `noexcept`. ([#230](https://github.com/odygrd/quill/pull/230)) -- Fix crash with `std::bad_alloc` and compiler warnings in - gcc `7.3.1`. ([#235](https://github.com/odygrd/quill/pull/235)) -- The additional compiler definitions will now be propagated to the parent targets when enabling options in - CMake. ([#235](https://github.com/odygrd/quill/pull/235)) - -**Improvements** - -- Improved performance and throughput of the backend logging thread by approximately ~25% -- Add missing `quill::json_file_handler(...)` that creates a `JsonFileHandler` in `Quill.h`. -- Simplified and refactored the logic in `BoundedQueue`. -- Added the option `do_fsync` which also calls `fsync()` during the handler flush to all file handlers. -- Replace `backend_thread_sleep_duration` with `backend_thread_yield` in `Config.h` -- Remove trailing spaces in log levels strings. ([#237](https://github.com/odygrd/quill/pull/237)) -- The default log pattern has changed - to `"%(ascii_time) [%(thread)] %(fileline:<28) LOG_%(level_name:<9) %(logger_name:<12) %(message)")` -- Added file event notifiers, to get callbacks from quill before/after log file has been opened or - closed. ([#193](https://github.com/odygrd/quill/pull/193)) - This is useful for cleanup procedures or for adding something to the start/end of the log files. - for example - - ```c++ - int main() - { - quill::start(); - - quill::FileEventNotifier fen; - - fen.before_open = [](quill::fs::path const& filename) - { std::cout << "before opening " << filename << std::endl; }; - - fen.after_open = [](quill::fs::path const& filename, FILE* f) - { std::cout << "after opening " << filename << std::endl; }; - - fen.before_close = [](quill::fs::path const& filename, FILE* f) - { std::cout << "before closing " << filename << std::endl; }; - - fen.after_close = [](quill::fs::path const& filename) - { std::cout << "after closing " << filename << std::endl; }; - - quill::Handler* file_handler = - quill::file_handler("myfile.log", "w", quill::FilenameAppend::None, std::move(fen)); - - quill::Logger* mylogger = quill::create_logger("mylogger", file_handler); - - LOG_INFO(mylogger, "Hello world"); - } - ``` - -- Added `QUILL_X86ARCH` in `Tweakme.h`. When enabled it will attempt to minimize the cache pollution on x86 cpus that - support the instructions `_mm_prefetch `, `_mm_clflush` and `_mm_clflushopt`. - - To compile when this flag is enabled you should also pass `-march` to the compiler which is required, - you can set this to your oldest cpu architecture among your systems. - - To enable this option, `DQUILL_X86ARCH` must always be defined in quill library and also in your executable, - for example - - ```shell - cmake -DCMAKE_CXX_FLAGS:STRING="-DQUILL_X86ARCH -march=native" - ``` - -- Added `quill:get_root_logger()` which gives quick access to the root logger object and can be used directly in the hot - path. - This gives applications that only wish to use the root logger the convenience of not having to store and - pass `Logger*` objects anymore. - for example quill existing log macros can be overwritten to not require a `Logger*` anymore - - ```c++ - #define MY_LOG_INFO(fmt, ...) QUILL_LOG_INFO(quill::get_root_logger(), fmt, ##__VA_ARGS__) - `````` - -- Added `QUILL_ROOT_LOGGER_ONLY` in `Tweakme.h`. Define ths if you only plan to use the single `root` logger object, - When this is defined it will replace the LOG_ macros with the equivalent LOG_ macros but without the need of - passing `Logger*` objects anymore. - for example - - ```c++ - #define QUILL_ROOT_LOGGER_ONLY - #include "quill/Quill.h" - - int main() - { - quill::start(); - - // because we defined QUILL_ROOT_LOGGER_ONLY we do not have to pass a logger* anymore, the root logger is always used - LOG_INFO("Hello {}", "world"); - LOG_ERROR("This is a log error example {}", 7); - } - ``` - -## v2.6.0 - -**Fixes** - -- Fix filepath on Windows when MinGW is used. ([#212](https://github.com/odygrd/quill/pull/212)) - -**Improvements** - -- Removed the creation of `static Metadata` objects during initialisation time. -- `#define QUILL_QUEUE_CAPACITY` has been removed. -- Added Config option `default_queue_capacity` that can be used to specify the initial capacity of the queue. -- When Unbounded queue is used the newly allocated queue will now have enough space to fit any - object. ([#215](https://github.com/odygrd/quill/pull/215)) - -## v2.5.1 - -**Improvements** - -- Reduced the allocations performed by the backend worker thread as the same objects are now being reused rather than - destroyed. - -**Summary of changes since v2.3.2** - -In version `2.3.2` when multiple threads performed heavy logging, the backend logging thread incorrectly gave -priority to the logs of the same threads. That made logs from the remaining threads to appear much later or sometimes -never in the log files. - -There was a series of fixes and releases to address this. - -Below is the summary of the changes from `v2.3.2` - -- Previously when multiple threads were logging, the backend logging thread would first try to read the log messages of - the same thread until its queue was completely empty before reading the log messages of the next thread. - When one of the threads was logging a lot, it could result in only displaying the log of that thread, hiding the - logs of the other threads. This has now been fixed and all log messages from all threads are read fairly. - -- Optimise the backend logging thread to read all log messages from each queue. Ensure all queues - from all active threads are fairly read. - -- `fmt::basic_memory_buffer` buffer stack size has been reduced. The backend thread shows better performance with - a reduced stack size. This also reduces the risk of a stack overflow when too many log messages are cached.lllllllllll - -- Reduced the allocations performed by the backend worker thread as the same objects are now being reused rather than - destroyed. - -- Added a config option `backend_thread_strict_log_timestamp_order`. This option enables an extra timestamp - check on the backend logging thread when each message is popped from the queues. It prevents a rare - situation where log messages from different threads could appear in the log file in the wrong order. This flag - is now enabled by default. - -- Added a config option `backend_thread_empty_all_queues_before_exit`. This option makes the backend logging thread - to wait until all the queues are empty before exiting. This ensures no log messages are lost when the application - exists. This flag is now enabled by default. - -## v2.5.0 - -**Improvements** - -- Performance improvements for the backend logging thread - -## v2.4.2 - -**Fixes** - -- Fixes an assertion that was triggered in debug mode due to changes in v2.4.1 - -## v2.4.1 - -**Improvements** - -- Previously the backend worker thread would read all the log messages from the queue but not read the log messages when - the buffer had wrapped around. It will now read all the messages. -- Removed the `min_available_bytes` cache from the SPSC queue as an optimisation. It is not needed anymore as we now - read all messages at once instead of reading message by message. - -## v2.4.0 - -**Improvements** - -- Added a config option `backend_thread_strict_log_timestamp_order`. This option enables an extra timestamp - check on the backend logging thread when each message is popped from the queues. It prevents a rare - situation where log messages from different threads could appear in the log file in the wrong order. This flag - is now enabled by default. - -- Added a config option `backend_thread_empty_all_queues_before_exit`. This option makes the backend logging thread - to wait until all the queues are empty before exiting. This ensures no log messages are lost when the application - exists. This flag is now enabled by default. - -## v2.3.4 - -**Improvements** - -- Optimise the backend logging thread to read multiple log messages from the same queue, but still fairly read each - queue from all active threads. - -## v2.3.3 - -**Fixes** - -- Previously when multiple threads were logging, Quill backend logging thread would first try reading the log messages - of - one thread until the queue was completely empty before reading the log messages of the next thread. - When one of the threads was logging a lot, it could result in only displaying the log of that thread, hiding the - logs of the other threads. This has now been fixed and all log messages from all threads are read fairly. - -## v2.3.2 - -**Fixes** - -- Fix code not compiling with treat warnings as errors set on - Windows. ([#198](https://github.com/odygrd/quill/pull/198)) - -## v2.3.1 - -**Fixes** - -- Optimise logging queue cache alignment of variables. It seems that v2.3.0 made the hot path slower by ~5 ns per - message. This has been fixed in this version and the performance is now the same as in the previous versions. - -## v2.3.0 - -**Improvements** - -- Cache the available bytes for reading in the logging queue. This is meant to offer some minor performance - improvement to the backend logging thread. [#185](https://github.com/odygrd/quill/issues/185) - -- Fixed static code analysis and clang '-Wdocumentation' warnings. - -- The `Handler.h` API has changed in this version to support structured logs. If you have implemented your own custom - `Handler` you will have to change it to follow the new API. - -- This version adds support for writing structured logs. Structured logs provide easier search through events. - Structured logging is automatically enabled when named arguments are provided to the format string. Structured logs - are only supported by the new `quill::JsonFileHandler` handler. The already existing `FileHandler` and - `ConsoleHandler` are compatible with named arguments, but they will ignore them and output the log in its - original format, as defined by the pattern formatter. - Structured logs are not supported for wide characters at the moment. - See [example_json_structured_log.cpp](https://github.com/odygrd/quill/blob/master/examples/example_json_structured_log.cpp) - -For example : - -```c++ - quill::start(); - - quill::Handler* json_handler = - quill::create_handler("json_output.log", "w"); - - // create another logger tha logs e.g. to stdout and to the json file at the same time - quill::Logger* logger = quill::create_logger("dual_logger", {quill::stdout_handler(), json_handler}); - for (int i = 2; i < 4; ++i) - { - LOG_INFO(logger, "{method} to {endpoint} took {elapsed} ms", "POST", "http://", 10 * i); - } -``` - -1) Will write to stdout (stdout_handler) : - -```` -23:37:19.850432433 [11811] example_json_structured_log.cpp:39 LOG_INFO dual_logger - POST to http:// took 20 ms -23:37:19.850440154 [11811] example_json_structured_log.cpp:39 LOG_INFO dual_logger - POST to http:// took 30 ms -```` - -2) Will produce a JSON file (json_handler) : - -``` -{ "timestamp": "23:37:19.850432433", "file": "example_json_structured_log.cpp", "line": "39", "thread_id": "11811", "logger": "dual_logger", "level": "Info", "message": "{method} to {endpoint} took {elapsed} ms", "method": "POST", "endpoint": "http://", "elapsed": "20" } -{ "timestamp": "23:37:19.850440154", "file": "example_json_structured_log.cpp", "line": "39", "thread_id": "11811", "logger": "dual_logger", "level": "Info", "message": "{method} to {endpoint} took {elapsed} ms", "method": "POST", "endpoint": "http://", "elapsed": "30" } -``` - -## v2.2.0 - -**Improvements** - -- Previously storing the default root logger by calling `quill::get_logger()` followed by `quill::configure(cfg)` - would invalidate the pointer to the default root logger returned by the former function. This has now been fixed and - the obtained `Logger*` pointer is still valid. -- Disable `fmt::streamed()`. ([#189](https://github.com/odygrd/quill/issues/189)) -- Update bundled fmt to 9.1.0 -- `logger->should_log(level)` is removed. A compile time check was added to `logger->should_log()` - . ([#187](https://github.com/odygrd/quill/issues/187)) - -## v2.1.0 - -**Improvements** - -This version includes breaking changes to the API. Those changes are related to how quill is configured, -before calling `quill::start()` to start the backend thread. - -Check the updated [examples](https://github.com/odygrd/quill/blob/master/examples). - -[Config.h](https://github.com/odygrd/quill/blob/master/quill/include/quill/Config.h) - contains runtime configuration -options - -[TweakMe.h](https://github.com/odygrd/quill/blob/master/quill/include/quill/TweakMe.h) - contains compile time -configuration - -For example `quill::set_default_logger_handler(...)` has been removed. To set a default filehandler : - -```cpp - // create a handler - quill::Handler* file_handler = quill::file_handler("test.log", "w"); - - file_handler->set_pattern( - "%(ascii_time) [%(thread)] %(fileline:<28) %(level_name) %(logger_name:<12) - %(message)", - "%Y-%m-%d %H:%M:%S.%Qms", quill::Timezone::GmtTime); - - // set the handler as the default handler for any newly created logger in the config - quill::Config cfg; - cfg.default_handlers.emplace_back(file_handler); - - // configure must always be called prior to `start()` - quill::configure(cfg); - quill::start(); -``` - -- Removed some API functions from `Quill.h` that were previously used for configuration. Instead, `quill::Config` object - has to be created. For example `quill::config::set_backend_thread_cpu_affinity(1);` has been removed and instead the - following code is needed : - -```cpp - quill::Config cfg; - cfg.backend_thread_cpu_affinity = 1; - quill::configure(cfg); -``` - -- `QUILL_CHRONO_CLOCK` has been moved from `TweakMe.h` to `Config.h`. It is now possible to switch between `rdtsc` - and `system` - clocks without re-compiling. - See [example_trivial_system_clock.cpp](https://github.com/odygrd/quill/blob/master/examples/example_trivial_system_clock.cpp) -- `QUILL_RDTSC_RESYNC_INTERVAL` has been moved from `TweakMe.h` to `Config.h`. -- It is now possible to log user timestamps rather than the system's. This feature is useful for time simulations. - See [example_custom_clock.cpp](https://github.com/odygrd/quill/blob/master/examples/example_custom_clock.cpp) - and [example_custom_clock_advanced.cpp](https://github.com/odygrd/quill/blob/master/examples/example_custom_clock_advanced.cpp) -- Previously the logger names were limited to a maximum of 22 characters. This limitation has been removed. -- Added support for gcc 7.5.0. ([#178](https://github.com/odygrd/quill/issues/178)) -- Updated bundled fmt to 9.0.0 - -## v2.0.2 - -**Fixes** - -- Fix crash when a `std::string` containing null-terminated characters is passed to the - logger. ([#176](https://github.com/odygrd/quill/issues/176)) - -## v2.0.1 - -**Improvements** - -- Add a flag to RotatingFileHandler to disable removing the old files when `w` mode is used. - -## v2.0.0 - -From version `v2` and onwards only c++17 is supported. - -This version is a major refactor. - -**Fixes** - -- RotatingFileHandler will now correctly rotate the files when append mode is - used ([#123](https://github.com/odygrd/quill/issues/123)) - -**Improvements** - -- Reduced and simplified codebase. -- Improved backend worker thread performance. -- `QUILL_DUAL_QUEUE_MODE` has been removed. A single queue now handles every case. -- `QUILL_STRING` has been removed. That macro is no longer required when passing a format string to the - PatternFormatter. - -**Differences** - -- `v1.7` compiles with c++14, `v2` only compiles for c++17. -- `v1.7` on Windows supports wide character logging, `v2` has limited wide character support such as logging `wchar_t` - , `std::wstring`, `std::wstring_view`. For example, logging `std::vector` is not supported. -- `v1.7` on Windows requires the filepath used for the handlers as a wide strings, `v2` supports only filenames as - narrow strings. - -## v1.7.3 - -**Improvements/Fixes** - -- Fix crash on windows when a long wstring (>500 chars) is logged ([#173](https://github.com/odygrd/quill/issues/173)) -- Fix compiler error when trying to compile with - -DQUILL_DISABLE_NON_PREFIXED_MACROS ([#174](https://github.com/odygrd/quill/issues/174)) -- Fix a compile warning in clang ([#175](https://github.com/odygrd/quill/issues/175)) - -## v1.7.2 - -**Improvements/Fixes** - -- Fix compile error when C++20 is used on windows ([#162](https://github.com/odygrd/quill/issues/162)) - -## v1.7.1 - -**Improvements/Fixes** - -- Fix support for wide characters on Windows ([#168](https://github.com/odygrd/quill/issues/168)) -- Fix compilation error when `Quill::Logger*` is stored as a class member in templated classes -- Add `FilenameAppend::DateTime` as an option when creating a file handler - -## v1.7.0 - -**New Features** - -- Add a new function `quill::get_all_loggers()` that returns all the existing - loggers. ([#114](https://github.com/odygrd/quill/issues/114)) -- Add `%(level_id)` to pattern formatter. ([#136](https://github.com/odygrd/quill/issues/136)) -- Users can now specialise `copy_loggable` to mark user defined types as safe to - copy. ([#132](https://github.com/odygrd/quill/issues/132)) - -**Improvements/Fixes** - -- Fix initializations for C++17. -- Fix compiler warning in `check_format()` function. -- Replace `QUILL_DUAL_QUEUE_MODE` with `QUILL_DISABLE_DUAL_QUEUE_MODE`. -- Update bundled fmt to 8.1.1 -- Minor performance and accuracy improvements to rdtsc clock used by the backend thread. -- Fix compile error when C++20 is used. ([#162](https://github.com/odygrd/quill/issues/162)) -- Fix `get_page_size()` to only call sysconf once. ([#160](https://github.com/odygrd/quill/issues/160)) -- Fix incorrect timestamps in the log file when the system clock is - updated. ([#127](https://github.com/odygrd/quill/issues/127)) -- Previously if `quill:start(true)` was called more than once in the application, the signal handlers would get - initialised again. Now any subsequent calls to `quill:start(true)` will now have no effect - ([#167](https://github.com/odygrd/quill/issues/167)) -- Previously when the max limit of rotated files in `RotatingFileHandler` was reached, quill would stop rotating and - instead keep logging everything into the last log file. Now when the maximum limit of files is reached, - quill will now keep rotating by replacing the oldest logs. ([#157](https://github.com/odygrd/quill/issues/157)) -- Improve the backend logging thread responsiveness when variables are logged in loops without any delay - from multiple threads. ([#116](https://github.com/odygrd/quill/issues/116)) -- Fix some undefined behaviour issues reported via the AddressSantizer on the backend logging - thread. ([#166](https://github.com/odygrd/quill/issues/166)) - -## v1.6.3 - -**Improvements/Fixes** - -- Add support for `%(thread_name)` in PatternFormatter. ([#97](https://github.com/odygrd/quill/issues/97)) -- Add missing header needed for recent versions of fmt. ([#95](https://github.com/odygrd/quill/issues/95)) -- Force flush all active handlers on application exit. -- Update bundled fmt to 8.0.1 - -## v1.6.2 - -**Fixes** - -- Fix WIN32 compilation error when `NOMINMAX` is already defined. -- Fix `string` to `wstring` MinGW conversion. ([#92](https://github.com/odygrd/quill/issues/92)) -- Log enums via the main queue. ([#90](https://github.com/odygrd/quill/issues/90)) -- Fix windows compiler error when `min/max` macros are defined. ([#94](https://github.com/odygrd/quill/issues/94)) - -## v1.6.1 - -**Improvements/Fixes** - -- Fix windows C++20 build. ([#83](https://github.com/odygrd/quill/issues/83)) -- Fix ARM build on windows. -- Fix `example_backtrace` and minor bug when destructing with empty backtrace. - -## v1.6.0 - -**New Features** - -- Dual queue mode offering even lower latencies on hot paths. - See [Dual Queue Mode](https://github.com/odygrd/quill/wiki/9.-Dual-Queue-Mode). -- Added a signal handler for linux and windows. The signal handler flushes the log when the app crashes or - exits. ([#1](https://github.com/odygrd/quill/issues/1)) -- Added support for custom handlers. ([#75](https://github.com/odygrd/quill/issues/75)) -- Quill now compiles and runs on Cygwin. - -**Improvements/Fixes** - -- The queue from the caller to the backend worker thread has been reworked. The new queue generates slightly better - assembly than the previous one. Quill does no longer depend on mapping the same region of physical memory twice. -- Replaced an assertion check that could trigger incorrectly. ([#68](https://github.com/odygrd/quill/issues/68)) -- Fixed build on `ARM_ARCH < 6`. ([#78](https://github.com/odygrd/quill/issues/78)) -- Fixed compile errors when `QUILL_NOEXCEPTIONS`, `CMAKE_CXX_STANDARD 20`, `QUILL_USE_BOUNDED_QUEUE` are set. -- The unit tests have been moved to a separate binary with their own `main()`. This increased build times when building - the tests, but the failures are now easier to debug on different CI platforms and the tests can also run faster in - parallel. -- Fixed minor compiler warnings on windows. -- Upgraded bundled libfmt to `7.1.3` - -**Note** - -- If a custom queue capacity is defined using `#define QUILL_QUEUE_CAPACITY` after `1.6.0` the whole library needs to be - recompiled. - -## v1.5.2 - -- Removed the use of `fmt::format()` in `FileUtilities.cpp` as a workaround to the link errors in fmt v7. Use the header - only version of libfmt when external libfmt is defiend is no longer required. - -## v1.5.1 - -- When QUILL_FMT_EXTERNAL is defined, `quill` will use the header only version of `libfmt`. This is a workaround to the - link errors after libftm v7 - -## v1.5.0 - -- Upgraded bundled libfmt to `7.1.2` -- Added `Filters`. The filter class can be used for filtering log records. Filters can be added to handler instances. - See [example_filters.cpp](https://github.com/odygrd/quill/blob/master/examples/example_filters.cpp) -- It is now possible to set the log level severity on the handler objects. - See [example_filters.cpp](https://github.com/odygrd/quill/blob/master/examples/example_handler_log_levels.cpp) ([#49](https://github.com/odygrd/quill/issues/49)) -- Timestamp formatting optimisation for the backend worker thread. -- Free list allocator optimisation for the backend worker thread. -- Fixed PatternFormatter ignoring a portion of the pattern was ignored, when no format specifiers were - present. ([#56](https://github.com/odygrd/quill/issues/56)) -- When `%(function_name)` is used in PatternFormatter the namespace delimiter is replaced from `::` to `.` (Windows - only). ([#61](https://github.com/odygrd/quill/issues/61)) -- Arguments passed to the logger are no longer being evaluated when the log statement is not - logged. ([#67](https://github.com/odygrd/quill/issues/67)) -- PatternFormatter enhancement. It is now possible to pass [{fmt} string syntax](https://fmt.dev/latest/syntax.html) - to `QUILL_STRING`. The default PatternFormatter string has been changed - to: `"%(ascii_time) [%(thread)] %(fileline:<28) LOG_%(level_name) %(logger_name:<12) - %(message)"`. This results to - the following log being properly aligned despite the different lengths of each filename and logger name. - -``` -22:31:07.995438465 [2666041] file1.h:11 LOG_INFO logger1 - Log from file. -22:31:07.995445699 [2666041] long_file2.h:11 LOG_INFO logger_fl2 - Log from other file. -22:31:07.995457144 [2666041] a_longer_file_3.hpp:11 LOG_INFO logger_fl2_l - Log from other file. -22:31:07.995462471 [2666041] example_trivial.cpp:30 LOG_TRACE_L3 root - This is a log trace l3 example 1 -``` - -## v1.4.1 - -- Do not force `quill` to always build as `static` library in cmake. -- Minor fix when `quill` is compiled with no exceptions. -- Add the option to disable the non prefixed macro definitions if `QUILL_DISABLE_NON_PREFIXED_MACROS` is - defined. ([#40](https://github.com/odygrd/quill/issues/40)) - -## v1.4.0 - -- Added support for printing colour codes in the terminal. - See [ConsoleHandler](https://github.com/odygrd/quill/wiki/2.-Handlers#consolehandler) -- RotatingFileHandler improvements and minor change in API. - See [RotatingFileHandler](https://github.com/odygrd/quill/wiki/2.-Handlers#rotatingfilehandler) -- DailyFileHandler is removed and replaced by TimeRotatingFileHandler. - See [TimeRotatingFileHandler](https://github.com/odygrd/quill/wiki/2.-Handlers#timerotatingfilehandler) -- Added backtrace logging. Log messages can be stored in a buffer and flushed later on demand. - See [Backtrace Logging](https://github.com/odygrd/quill/wiki/6.-Backtrace-Logging) -- Added bundled `doctest` `2.4.0` -- Migrated all tests from `gtest` to `doctest`. -- Upgraded bundled libfmt to `7.0.3` - -## v1.3.3 - -- Upgraded bundled libfmt to `7.0.2` -- Fixed compile error with libfmt versions > `7.0.0` - -## v1.3.2 - -- Add a CMake option `QUILL_USE_BOUNDED_QUEUE` for bounded queue. -- Fixed a clang 10 warning -- Fixed MinGw build - -## v1.3.1 - -- Minor CMake fixes when `QUILL_FMT_EXTERNAL` option is used. - -## v1.3.0 - -**New Features** - -- Added option `QUILL_NO_EXCEPTIONS` to disable exceptions, std::abort() is called instead of an - exception. ([#16](https://github.com/odygrd/quill/issues/16)) -- Exceptions thrown in the backend worker thread, will now call a user provided error handler callback to handle the - error. ([#21](https://github.com/odygrd/quill/issues/21)) -- Compile time checks for unsafe to copy user defined types. Non trivial user defined types must be explicitly tagged as - safe to copy with the use of `QUILL_COPY_LOGGABLE;`. Otherwise they have to be formatted and passed as a string to the - logger by the user. The old unsafe mode is still usable - by `#define QUILL_MODE_UNSAFE` ([#20](https://github.com/odygrd/quill/issues/20)) -- Added `QUILL_USE_BOUNDED_QUEUE`. In this mode no new queues get allocated but instead log messages get lost. Number of - lost messages is reported to stderr. -- Minor hot path optimisation. The pointer to the metadata for each log message is no logger copied to the queue but - passed as a template argument instead. -- Added a latency benchmark, easily extendable for any logger - -**Improvements/Fixes** - -- `QUILL_RDTSC_CLOCK` option is replaced by `QUILL_CHRONO_CLOCK` which is by OFF by default. -- Improve compiler error message when trying to log a non copy constructible user defined type -- Fix buffer reallocation bug on TimestampFormatter. In previous versions any timestamp format set to 'set_pattern' - expanding to a string longer than 32 bytes would cause a crash. ([#24](https://github.com/odygrd/quill/issues/24)) -- The backend logging thread will now copy all messages from the SPSC queue to a local priority queue. This keeps the - SPSC less empty avoiding a potential allocation on the hot path. -- `std::string_view` is now promoted to `std::string` to take a deep copy -- The queue capacity has been moved from `config` to `Tweakme.h`. -- Multiple formats patterns support for `stdout` and `stderr` handlers. - See [example_stdout_multiple_formatters.cpp](https://github.com/odygrd/quill/blob/master/examples/example_custom_formatter.cpp) -- `quill::start()` will now block until the backend worker has started. -- Upgraded bundled libfmt to `6.2.1` - -## v1.2.3 - -- CMake changes to support package installation in conan. - -## v1.2.2 - -- Support for `arm/arm64`. ([#19](https://github.com/odygrd/quill/issues/19)) -- Add a cmake option `QUILL_ENABLE_INSTALL` to enable cpack. - -## v1.2.1 - -- Improved `QUILL_RDTSC_CLOCK` tweak option. It is now possible to switch between using `rdtsc` or `std::chrono` clock - without having to recompile quill as library. - -## v1.2.0 - -- Linking and including an external version of `fmt` is now supported. See `TweakMe.h` -- Fixed compiler warnings when using clang's `-Wdocumentation`. ([#12](https://github.com/odygrd/quill/issues/12)) -- Fixed a bug that wouldn't report a compile-time error for invalid format - strings. ([#13](https://github.com/odygrd/quill/issues/13)) -- Added process ID to Formatter. ([#14](https://github.com/odygrd/quill/issues/14)) -- Enhanced timestamp formatting. The `timestamp_format` string passed - in `handler->set_pattern(format_pattern, timestamp_format, timezone)` now accepts three additional specifiers `%Qms` - , `%Qus`, `%Qus` that can be used to format the fractional seconds. - See [here](https://github.com/odygrd/quill/wiki/3.-Formatters). ([#15](https://github.com/odygrd/quill/issues/15)) - -## v1.1.0 - -- Daily file handler. The file handler rollover every 24 hours -- Rotating file handler. The file handler will rollover based on the size of the file -- MinGW compatibility -- Added a CMake option `QUILL_VERBOSE_MAKEFILE`. Building Quill as a master project now defaults to non verbose makefile - output unless `-DQUILL_VERBOSE_MAKEFILE=ON` is passed to CMake. ([#6](https://github.com/odygrd/quill/issues/6)) -- Flush policy improvement. Previously Quill backend worker thread would never `flush`. This made watching the live log - of the application harder because the user has to wait for the operating system to flush or `quill::flush()` had to be - called on the caller threads. This has now been fixed, when the backend thread worker has no more log messages to - process it will automatically `flush`. ([#8](https://github.com/odygrd/quill/issues/8)) -- The log level names have been changed from `"LOG_INFO"`, `"LOG_DEBUG"`, etc to `"INFO"`, `"DEBUG"`, etc .. The default - formatter string is now using `"LOG_"%(level_name)` instead of `%(level_name)` therefore there is now change in the - behaviour. This change gives a lot of more flexibility to users who prefer to see e.g. `INFO` instead of `LOG_INFO` in - the logs. ([#7](https://github.com/odygrd/quill/issues/7)) -- An option has been added to append the date to the filename when using a - FileHandler `quill::file_handler(filename, mode, FilenameAppend);`. ([#7](https://github.com/odygrd/quill/issues/7)) -- It is now possible to specify the timezone of each handler timestamp. A new parameter is added - to `file_handler->set_pattern(...)`. See `PatternFormatter::Timezone` - . ([#7](https://github.com/odygrd/quill/issues/7)) -- Rename `emit` as it can conflict with Qt macros. ([#4](https://github.com/odygrd/quill/issues/4)) -- Upgraded `libfmt` to `6.2.0`. - -## v1.0.0 - -- Initial release. -- Using `libfmt` to `6.1.2`. diff --git a/subprojects/quill-4.2.0/CMakeLists.txt b/subprojects/quill-4.2.0/CMakeLists.txt deleted file mode 100644 index d8e771e..0000000 --- a/subprojects/quill-4.2.0/CMakeLists.txt +++ /dev/null @@ -1,166 +0,0 @@ -cmake_minimum_required(VERSION 3.8) -project(quill) - -#------------------------------------------------------------------------------------------------------- -# Options -#------------------------------------------------------------------------------------------------------- - -# Builds Quill without exceptions by adding the -fno-exceptions flag to the compiler. -option(QUILL_NO_EXCEPTIONS "Build without exceptions using -fno-exceptions flag" OFF) - -# Disables features that rely on retrieving the thread name, which is not supported in older versions of Windows (e.g., Windows Server 2012/2016). -# Enabling this option ensures compatibility with older Windows versions. -option(QUILL_NO_THREAD_NAME_SUPPORT "Disable features not supported on Windows Server 2012/2016" OFF) - -# Enables the use of _mm_prefetch, _mm_clflush, and _mm_clflushopt instructions to enhance cache coherence performance on x86 architectures. -# When enabled, Quill will utilize these instructions on the frontend's queue operations. -# Ensure to specify the target architecture with -march="..." when compiling to maximize compatibility and performance. -option(QUILL_X86ARCH "Enable optimizations for cache coherence on x86 architectures using specific CPU instructions" OFF) - -# When enabled, removes the non-prefixed `LOG_*` macros, leaving only `QUILL_LOG_*` macros available. -# This is useful in scenarios where the original macro names conflict with those of an existing logging library. -option(QUILL_DISABLE_NON_PREFIXED_MACROS "Disable non-prefixed macros" OFF) - -option(QUILL_DISABLE_POSITION_INDEPENDENT_CODE "Disable position-independent code" OFF) - -option(QUILL_BUILD_EXAMPLES "Build the examples" OFF) - -option(QUILL_BUILD_TESTS "Build the tests (Requires https://github.com/google/googletest to be installed)" OFF) - -option(QUILL_BUILD_BENCHMARKS "Build the benchmarks" OFF) - -option(QUILL_SANITIZE_ADDRESS "Enable address sanitizer in tests" OFF) - -option(QUILL_SANITIZE_THREAD "Enable thread sanitizer in tests (Using this option with any other compiler except clang may result to false positives)" OFF) - -option(QUILL_CODE_COVERAGE "Enable code coverage" OFF) - -option(QUILL_USE_VALGRIND "Use valgrind as the default memcheck tool in CTest (Requires Valgrind)" OFF) - -option(QUILL_ENABLE_INSTALL "Enable CMake Install when Quill is not a master project" OFF) - -option(QUILL_DOCS_GEN "Generate documentation" OFF) - -#------------------------------------------------------------------------------------------------------- -# Use newer policies if possible, up to most recent tested version of CMake. -#------------------------------------------------------------------------------------------------------- -cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) - -#------------------------------------------------------------------------------------------------------- -# Include common compiler options -#------------------------------------------------------------------------------------------------------- -include(${PROJECT_SOURCE_DIR}/cmake/SetCommonCompileOptions.cmake) - -#------------------------------------------------------------------------------------------------------- -# Determine if quill is built as a subproject (using add_subdirectory) or if it is the master project. -#------------------------------------------------------------------------------------------------------- -set(QUILL_MASTER_PROJECT FALSE CACHE BOOL "Master Project" FORCE) -if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) - set(QUILL_MASTER_PROJECT TRUE CACHE BOOL "Master Project" FORCE) -endif () - -#------------------------------------------------------------------------------------------------------- -# Custom cmake functions -#------------------------------------------------------------------------------------------------------- -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/quill/cmake") -include(Utility) - -#------------------------------------------------------------------------------------------------------- -# Resolve version -#------------------------------------------------------------------------------------------------------- -quill_extract_version() - -project(quill VERSION ${QUILL_VERSION} LANGUAGES CXX) - -#------------------------------------------------------------------------------------------------------- -# Set default build to release -#------------------------------------------------------------------------------------------------------- -if (NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build" FORCE) -endif () - -#--------------------------------------------------------------------------------------- -# Compiler config -#--------------------------------------------------------------------------------------- -if (NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) - set(CMAKE_CXX_STANDARD_REQUIRED ON) -endif () - -#------------------------------------------------------------------------------------------------------- -# Required Packages -#------------------------------------------------------------------------------------------------------- -find_package(Threads REQUIRED) - -if (QUILL_BUILD_TESTS) - enable_testing() - - if (QUILL_USE_VALGRIND) - # find valgrind - find_program(MEMORYCHECK_COMMAND NAMES valgrind) - if (NOT MEMORYCHECK_COMMAND) - message(WARNING "Valgrind not found") - endif () - - # set valgrind params - set(MEMORYCHECK_COMMAND_OPTIONS "--tool=memcheck --leak-check=full --leak-resolution=med --show-leak-kinds=all --track-origins=yes --vgdb=no --fair-sched=yes") - - # add memcheck test action to ctest - include(CTest) - endif () -endif () - -#------------------------------------------------------------------------------------------------------- -# Log Info -#------------------------------------------------------------------------------------------------------- -if (QUILL_MASTER_PROJECT) - option(QUILL_VERBOSE_MAKEFILE "Verbose make output" OFF) - - message(STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE}) - message(STATUS "QUILL_VERSION: ${QUILL_VERSION}") -endif () - -message(STATUS "QUILL_NO_EXCEPTIONS: " ${QUILL_NO_EXCEPTIONS}) -message(STATUS "QUILL_NO_THREAD_NAME_SUPPORT: " ${QUILL_NO_THREAD_NAME_SUPPORT}) -message(STATUS "QUILL_X86ARCH: " ${QUILL_X86ARCH}) -message(STATUS "QUILL_DISABLE_NON_PREFIXED_MACROS: " ${QUILL_DISABLE_NON_PREFIXED_MACROS}) - -#--------------------------------------------------------------------------------------- -# Verbose make file option -#--------------------------------------------------------------------------------------- -if (QUILL_VERBOSE_MAKEFILE) - set(CMAKE_VERBOSE_MAKEFILE TRUE CACHE BOOL "Verbose output" FORCE) -endif () - -# address sanitizer flags -if (QUILL_SANITIZE_ADDRESS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer -g") -endif () - -# thread sanitizer flags -if (QUILL_SANITIZE_THREAD) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread") -endif () - -# Append extra options for coverage -if (QUILL_CODE_COVERAGE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fprofile-arcs -ftest-coverage") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") -endif () - -# Build Examples -if (QUILL_BUILD_EXAMPLES) - add_subdirectory(examples) -endif () - -if (QUILL_BUILD_BENCHMARKS) - add_subdirectory(benchmarks) -endif () - -add_subdirectory(quill) - -if (QUILL_DOCS_GEN) - # Add the cmake folder so the FindSphinx module is found - set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) - add_subdirectory(docs) -endif () \ No newline at end of file diff --git a/subprojects/quill-4.2.0/LICENSE b/subprojects/quill-4.2.0/LICENSE deleted file mode 100644 index 7cc1c04..0000000 --- a/subprojects/quill-4.2.0/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 - present, Odysseas Georgoudis - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/subprojects/quill-4.2.0/LICENSE.build b/subprojects/quill-4.2.0/LICENSE.build deleted file mode 100644 index b59833d..0000000 --- a/subprojects/quill-4.2.0/LICENSE.build +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2021 The Meson development team - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/subprojects/quill-4.2.0/README.md b/subprojects/quill-4.2.0/README.md deleted file mode 100644 index 6d09ff9..0000000 --- a/subprojects/quill-4.2.0/README.md +++ /dev/null @@ -1,511 +0,0 @@ -

    - - -
    - -- [Introduction](#introduction) -- [Documentation](#documentation) -- [Features](#features) -- [Caveats](#caveats) -- [Performance](#performance) -- [Quick Start](#quick-start) -- [CMake Integration](#cmake-integration) -- [Design](#design) -- [License](#license) - -| homebrew | vcpkg | conan | -|:--------------------:|:---------------------:|:-----------------:| -| `brew install quill` | `vcpkg install quill` | `quill/[>=1.2.3]` | - -## Introduction - -Quill is a high-performance, cross-platform logging library designed for C++17 and onwards. -Quill is a production-ready logging library that has undergone extensive unit testing. It has been successfully utilized -in production environments, including financial trading applications, providing high-performance and reliable logging -capabilities. - -## Documentation - -For detailed documentation and usage instructions, please visit -the [Quill Documentation on Read the Docs](http://quillcpp.readthedocs.io/). It provides comprehensive information on -how to integrate and utilize Quill in your C++ applications. - -Additionally, you can explore the [examples](http://github.com/odygrd/quill/tree/master/examples) folder in the Quill -repository on GitHub. These examples serve as valuable resources to understand different usage scenarios and demonstrate -the capabilities of the library. - -## Features - -- **Low Latency Logging**: Achieve fast logging performance with low latency. Refer to - the [Benchmarks](http://github.com/odygrd/quill#performance) for more details. -- **Asynchronous logging**: Log arguments and messages are formatted in a backend logging thread, effectively offloading - the formatting overhead from the critical path. -- **Custom Formatters**: Customize log formatting based on user-defined patterns. - Explore [Formatters](http://quillcpp.readthedocs.io/en/latest/tutorial.html#formatters) for further details. -- **Flexible Timestamp Generation**: Choose between rdtsc, chrono, or custom clocks (useful for simulations) for - log message timestamp generation. -- **Log Stack Traces**: Store log messages in a ring buffer and display them later in response to a higher severity log - statement or on demand. Refer - to [Backtrace Logging](http://quillcpp.readthedocs.io/en/latest/tutorial.html#backtrace-logging) for more information. -- **Multiple Logging Sinks**: Utilize various logging targets, including: - - Console logging with color support. - - File logging. - - Rotating log files based on time or size. - - JSON logging. - - Custom sinks. -- **Log Message Filtering**: Apply filters to selectively process log messages. Learn more - about [Filters](http://quillcpp.readthedocs.io/en/latest/tutorial.html#filters). -- **Structured Logging**: Generate JSON structured logs. - See [Structured-Log](http://quillcpp.readthedocs.io/en/latest/tutorial.html#json-log) for details. -- **Blocking or Dropping Message Modes**: Choose between `blocking` or `dropping` message modes in the library. - In `blocking` mode, the hot threads pause and wait when the queue is full until space becomes available, ensuring no - message loss but introducing potential latency. In `dropping` mode, log messages beyond the queue's capacity may be - dropped to prioritize low latency. The library provides reports on dropped messages, queue reallocations, and blocked - hot threads for monitoring purposes. -- **Queue Types**: The library supports different types of queues for transferring logs from the hot path to the backend - thread: bounded queues with a fixed capacity and unbounded queues that start small and can dynamically grow. -- **Wide Character Support**: Wide strings compatible with ASCII encoding are supported, applicable to Windows only. - Additionally, there is support for logging STL containers consisting of wide strings. Note that chaining STL types, - such as `std::vector>` is not supported for wide strings. -- **Ordered Log Statements**: Log statements are ordered by timestamp even when produced by different threads, - facilitating easier debugging of multithreaded applications. -- **Compile-Time Log Level Stripping**: Completely strip out log levels at compile time, reducing `if` branches. -- **Clean and Warning-Free Codebase**: Ensure a clean and warning-free codebase, even with high compiler warning levels. -- **Crash-Safe Behavior**: Benefit from crash-safe behavior with a built-in signal handler. -- **Type-Safe API**: Type safe api using the excellent [{fmt}](http://github.com/fmtlib/fmt) library. -- **Huge Pages**: Benefit from support for huge pages on the hot path. This feature allows for improved performance and - efficiency. - -## Caveats - -Quill may not work well with `fork()` since it spawns a background thread and `fork()` doesn't work well -with multithreading. - -If your application uses `fork()` and you want to log in the child processes as well, you should call -`quill::start()` after the `fork()` call. Additionally, you should ensure that you write to different -files in the parent and child processes to avoid conflicts. - -For example : - -```c++ -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/Logger.h" -#include "quill/sinks/FileSink.h" - -int main() -{ - // DO NOT CALL THIS BEFORE FORK - // quill::Backend::start(); - - if (fork() == 0) - { - quill::Backend::start(); - - // Get or create a handler to the file - Write to a different file - auto file_sink = quill::Frontend::create_or_get_sink( - "child.log"); - - quill::Logger* logger = quill::Frontend::create_or_get_logger("root", std::move(file_sink)); - - QUILL_LOG_INFO(logger, "Hello from Child {}", 123); - } - else - { - quill::Backend::start(); - - // Get or create a handler to the file - Write to a different file - auto file_sink = quill::Frontend::create_or_get_sink( - "parent.log"); - - quill::Logger* logger = quill::Frontend::create_or_get_logger("root", std::move(file_sink)); - - QUILL_LOG_INFO(logger, "Hello from Parent {}", 123); - } -} -``` - -## Performance - -### Latency - -The results presented in the tables below are measured in `nanoseconds (ns)`. - -#### Logging Numbers - -The following message is logged 100'000 times for each thread: - -`LOG_INFO(logger, "Logging int: {}, int: {}, double: {}", i, j, d)`. - -##### 1 Thread Logging - -| Library | 50th | 75th | 90th | 95th | 99th | 99.9th | -|---------------------------------------------------------------------|:----:|:----:|:----:|:----:|:----:|:------:| -| [Quill v4.1 Bounded Dropping Queue](http://github.com/odygrd/quill) | 7 | 7 | 8 | 8 | 9 | 10 | -| [fmtlog](http://github.com/MengRao/fmtlog) | 8 | 8 | 9 | 9 | 10 | 13 | -| [Quill v4.1 Unbounded Queue](http://github.com/odygrd/quill) | 8 | 8 | 9 | 9 | 10 | 13 | -| [Quill v3.8 Unbounded Queue](http://github.com/odygrd/quill) | 8 | 8 | 9 | 9 | 10 | 13 | -| [PlatformLab NanoLog](http://github.com/PlatformLab/NanoLog) | 11 | 12 | 13 | 14 | 15 | 20 | -| [MS BinLog](http://github.com/Morgan-Stanley/binlog) | 21 | 21 | 22 | 24 | 28 | 57 | -| [Reckless](http://github.com/mattiasflodin/reckless) | 41 | 45 | 47 | 48 | 49 | 69 | -| [Iyengar NanoLog](http://github.com/Iyengar111/NanoLog) | 51 | 54 | 63 | 81 | 113 | 160 | -| [spdlog](http://github.com/gabime/spdlog) | 148 | 153 | 159 | 163 | 169 | 176 | -| [g3log](http://github.com/KjellKod/g3log) | 1192 | 1282 | 1363 | 1440 | 1624 | 1802 | - -##### 4 Threads Logging Simultaneously - -| Library | 50th | 75th | 90th | 95th | 99th | 99.9th | -|---------------------------------------------------------------------|:----:|:----:|:----:|:----:|:----:|:------:| -| [Quill v4.1 Bounded Dropping Queue](http://github.com/odygrd/quill) | 7 | 8 | 9 | 9 | 10 | 13 | -| [fmtlog](http://github.com/MengRao/fmtlog) | 8 | 8 | 9 | 9 | 11 | 13 | -| [Quill v3.8 Unbounded Queue](http://github.com/odygrd/quill) | 8 | 9 | 10 | 10 | 11 | 13 | -| [Quill v4.1 Unbounded Queue](http://github.com/odygrd/quill) | 9 | 9 | 10 | 11 | 12 | 15 | -| [PlatformLab NanoLog](http://github.com/PlatformLab/NanoLog) | 12 | 13 | 13 | 14 | 15 | 19 | -| [MS BinLog](http://github.com/Morgan-Stanley/binlog) | 21 | 21 | 22 | 22 | 29 | 62 | -| [Reckless](http://github.com/mattiasflodin/reckless) | 42 | 46 | 47 | 48 | 54 | 78 | -| [Iyengar NanoLog](http://github.com/Iyengar111/NanoLog) | 53 | 62 | 93 | 122 | 150 | 216 | -| [spdlog](http://github.com/gabime/spdlog) | 209 | 236 | 276 | 304 | 409 | 700 | -| [g3log](http://github.com/KjellKod/g3log) | 1344 | 1415 | 1489 | 1557 | 1815 | 5855 | - -#### Logging Large Strings - -The following message is logged 100'000 times for each thread: - -`LOG_INFO(logger, "Logging int: {}, int: {}, string: {}", i, j, large_string)`. - -The large string used in the log message is over 35 characters to prevent the short string optimization -of `std::string`. - -##### 1 Thread Logging - -| Library | 50th | 75th | 90th | 95th | 99th | 99.9th | -|---------------------------------------------------------------------|:----:|:----:|:----:|:----:|:----:|:------:| -| [Quill v3.8 Unbounded Queue](http://github.com/odygrd/quill) | 10 | 12 | 13 | 13 | 14 | 16 | -| [Quill v4.1 Bounded Dropping Queue](http://github.com/odygrd/quill) | 11 | 12 | 13 | 14 | 15 | 17 | -| [fmtlog](http://github.com/MengRao/fmtlog) | 11 | 12 | 13 | 14 | 15 | 17 | -| [PlatformLab NanoLog](http://github.com/PlatformLab/NanoLog) | 13 | 14 | 15 | 15 | 17 | 19 | -| [Quill v4.1 Unbounded Queue](http://github.com/odygrd/quill) | 13 | 14 | 16 | 16 | 17 | 21 | -| [MS BinLog](http://github.com/Morgan-Stanley/binlog) | 22 | 23 | 23 | 25 | 30 | 59 | -| [Iyengar NanoLog](http://github.com/Iyengar111/NanoLog) | 52 | 55 | 64 | 83 | 114 | 160 | -| [Reckless](http://github.com/mattiasflodin/reckless) | 102 | 122 | 134 | 137 | 143 | 153 | -| [spdlog](http://github.com/gabime/spdlog) | 120 | 123 | 127 | 130 | 138 | 145 | -| [g3log](http://github.com/KjellKod/g3log) | 955 | 1049 | 1129 | 1190 | 1351 | 1539 | - -##### 4 Threads Logging Simultaneously - -| Library | 50th | 75th | 90th | 95th | 99th | 99.9th | -|---------------------------------------------------------------------|:----:|:----:|:----:|:----:|:----:|:------:| -| [Quill v4.1 Bounded Dropping Queue](http://github.com/odygrd/quill) | 11 | 12 | 13 | 15 | 16 | 18 | -| [fmtlog](http://github.com/MengRao/fmtlog) | 11 | 12 | 13 | 15 | 16 | 18 | -| [Quill v3.8 Unbounded Queue](http://github.com/odygrd/quill) | 12 | 13 | 14 | 15 | 16 | 19 | -| [PlatformLab NanoLog](http://github.com/PlatformLab/NanoLog) | 13 | 15 | 15 | 16 | 17 | 20 | -| [Quill v4.1 Unbounded Queue](http://github.com/odygrd/quill) | 14 | 16 | 17 | 18 | 19 | 22 | -| [MS BinLog](http://github.com/Morgan-Stanley/binlog) | 23 | 24 | 24 | 25 | 31 | 62 | -| [Iyengar NanoLog](http://github.com/Iyengar111/NanoLog) | 53 | 60 | 92 | 121 | 149 | 212 | -| [Reckless](http://github.com/mattiasflodin/reckless) | 101 | 121 | 133 | 136 | 143 | 160 | -| [spdlog](http://github.com/gabime/spdlog) | 186 | 215 | 266 | 297 | 381 | 641 | -| [g3log](http://github.com/KjellKod/g3log) | 1089 | 1164 | 1252 | 1328 | 1578 | 5563 | - -#### Logging Complex Types - -The following message is logged 100'000 times for each thread: - -`LOG_INFO(logger, "Logging int: {}, int: {}, vector: {}", i, j, v)`. - -Logging `std::vector v` containing 16 large strings, each ranging from 50 to 60 characters. -The strings used in the log message are over 35 characters to prevent the short string optimization of `std::string`. - -##### 1 Thread Logging - -| Library | 50th | 75th | 90th | 95th | 99th | 99.9th | -|---------------------------------------------------------------------|:----:|:----:|:----:|:----:|:----:|:------:| -| [Quill v4.1 Unbounded Queue](http://github.com/odygrd/quill) | 52 | 54 | 56 | 58 | 60 | 63 | -| [Quill v4.1 Bounded Dropping Queue](http://github.com/odygrd/quill) | 53 | 55 | 57 | 59 | 62 | 103 | -| [MS BinLog](http://github.com/Morgan-Stanley/binlog) | 66 | 70 | 79 | 81 | 84 | 91 | -| [Quill v3.8 Unbounded Queue](http://github.com/odygrd/quill) | 632 | 651 | 676 | 698 | 737 | 1049 | -| [fmtlog](http://github.com/MengRao/fmtlog) | 724 | 752 | 776 | 789 | 814 | 857 | -| [spdlog](http://github.com/gabime/spdlog) | 6242 | 6331 | 6438 | 6523 | 6782 | 7341 | - -##### 4 Threads Logging Simultaneously - -| Library | 50th | 75th | 90th | 95th | 99th | 99.9th | -|---------------------------------------------------------------------|:----:|:----:|:----:|:----:|:----:|:------:| -| [Quill v4.1 Bounded Dropping Queue](http://github.com/odygrd/quill) | 55 | 57 | 59 | 61 | 64 | 77 | -| [MS BinLog](http://github.com/Morgan-Stanley/binlog) | 70 | 74 | 83 | 85 | 88 | 102 | -| [Quill v4.1 Unbounded Queue](http://github.com/odygrd/quill) | 92 | 100 | 110 | 118 | 135 | 157 | -| [Quill v3.8 Unbounded Queue](http://github.com/odygrd/quill) | 674 | 694 | 736 | 762 | 805 | 884 | -| [fmtlog](http://github.com/MengRao/fmtlog) | 789 | 813 | 833 | 845 | 872 | 908 | -| [spdlog](http://github.com/gabime/spdlog) | 6500 | 6596 | 6724 | 6848 | 7560 | 9036 | - -The benchmark was conducted on `Linux RHEL 9` with an `Intel Core i5-12600` at 4.8 GHz. -The cpus are isolated on this system and each thread was pinned to a different CPU. `GCC 13.1` was used as the compiler. - -The benchmark methodology involved logging 20 messages in a loop, calculating and storing the average latency for those -20 messages, then waiting around ~2 milliseconds, and repeating this process for a specified number of iterations. - -_In the `Quill Bounded Dropping` benchmarks, the dropping queue size is set to `262,144` bytes, which is double the -default size of `131,072` bytes._ - -You can find the benchmark code on the [logger_benchmarks](http://github.com/odygrd/logger_benchmarks) repository. - -### Throughput - -The maximum throughput is measured by determining the maximum number of log messages the backend logging thread can -write to the log file per second. - -When measured on the same system as the latency benchmarks mentioned above the average throughput of the backend -logging thread is `4.56 million msgs/sec` - -While the primary focus of the library is not on throughput, it does provide efficient handling of log messages across -multiple threads. The backend logging thread, responsible for formatting and ordering log messages from hot threads, -ensures that all queues are emptied on a high priority basis. The backend thread internally buffers the log messages -and then writes them later when the caller thread queues are empty or when a predefined limit, -`backend_thread_transit_events_soft_limit`, is reached. This approach prevents the need for allocating new queues -or dropping messages on the hot path. - -Comparing throughput with other logging libraries in an asynchronous logging scenario has proven challenging. Some -libraries may drop log messages, resulting in smaller log files than expected, while others only offer asynchronous -flush, making it difficult to determine when the logging thread has finished processing all messages. -In contrast, Quill provides a blocking flush log guarantee, ensuring that every log message from the hot threads up to -that point is flushed to the file. - -For benchmarking purposes, you can find the -code [here](https://github.com/odygrd/quill/blob/master/benchmarks/backend_throughput/quill_backend_throughput.cpp). - -### Compilation Time - -Compile times are measured using `clang 15` and for `Release` build. - -Below, you can find the additional headers that the library will include when you need to log, following -the [recommended_usage](https://github.com/odygrd/quill/blob/master/examples/recommended_usage/recommended_usage.cpp) -example - -![quill_v4_1_compiler_profile.speedscope.png](docs%2Fquill_v4_1_compiler_profile.speedscope.png) - -There is also a compile-time benchmark measuring the compilation time of 2000 auto-generated log statements with -various arguments. You can find -it [here](https://github.com/odygrd/quill/blob/master/benchmarks/compile_time/compile_time_bench.cpp). It takes approximately 30 -seconds to compile. - -![quill_v4_compiler_bench.speedscope.png](docs%2Fquill_v4_compiler_bench.speedscope.png) - -## Quick Start - -```c++ -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/Logger.h" -#include "quill/sinks/FileSink.h" - -int main() -{ - // Start the backend thread - quill::Backend::start(); - - // Log to file - auto file_sink = quill::Frontend::create_or_get_sink( - "example_file_logging.log"); - - quill::Logger* logger = - quill::Frontend::create_or_get_logger("root", std::move(file_sink)); - - // set the log level of the logger to trace_l3 (default is info) - logger->set_log_level(quill::LogLevel::TraceL3); - - LOG_INFO(logger, "Welcome to Quill!"); - LOG_ERROR(logger, "An error message. error code {}", 123); - LOG_WARNING(logger, "A warning message."); - LOG_CRITICAL(logger, "A critical error."); - LOG_DEBUG(logger, "Debugging foo {}", 1234); - LOG_TRACE_L1(logger, "{:>30}", "right aligned"); - LOG_TRACE_L2(logger, "Positional arguments are {1} {0} ", "too", "supported"); - LOG_TRACE_L3(logger, "Support for floats {:03.2f}", 1.23456); -} -``` - -```c++ -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/Logger.h" -#include "quill/sinks/ConsoleSink.h" - -int main() -{ - // Start the backend thread - quill::Backend::start(); - - // Frontend - auto console_sink = quill::Frontend::create_or_get_sink("sink_id_1"); - quill::Logger* logger = quill::Frontend::create_or_get_logger("root", std::move(console_sink)); - - // Change the LogLevel to print everything - logger->set_log_level(quill::LogLevel::TraceL3); - - LOG_INFO(logger, "Welcome to Quill!"); - LOG_ERROR(logger, "An error message. error code {}", 123); - LOG_WARNING(logger, "A warning message."); - LOG_CRITICAL(logger, "A critical error."); - LOG_DEBUG(logger, "Debugging foo {}", 1234); - LOG_TRACE_L1(logger, "{:>30}", "right aligned"); - LOG_TRACE_L2(logger, "Positional arguments are {1} {0} ", "too", "supported"); - LOG_TRACE_L3(logger, "Support for floats {:03.2f}", 1.23456); -} -``` - -### Output - -[![Screenshot-2020-08-14-at-01-09-43.png](http://i.postimg.cc/02Vbt8LH/Screenshot-2020-08-14-at-01-09-43.png)](http://postimg.cc/LnZ95M4z) - -## CMake-Integration - -#### External - -##### Building and Installing Quill - -``` -git clone http://github.com/odygrd/quill.git -mkdir cmake_build -cd cmake_build -cmake .. -make install -``` - -Note: To install in custom directory invoke cmake with `-DCMAKE_INSTALL_PREFIX=/quill/install-dir/` - -Then use the library from a CMake project, you can locate it directly with `find_package()` - -##### Directory Structure - -``` -my_project/ -├── CMakeLists.txt -├── main.cpp -``` - -##### CMakeLists.txt - -```cmake -# Set only if needed - quill was installed under a custom non-standard directory -set(CMAKE_PREFIX_PATH /test_quill/usr/local/) - -find_package(quill REQUIRED) - -# Linking your project against quill -add_executable(example main.cpp) -target_link_libraries(example PUBLIC quill::quill) -``` - -#### Embedded - -To embed the library directly, copy the source [folder](http://github.com/odygrd/quill/tree/master/quill/quill) to your -project and call `add_subdirectory()` in your `CMakeLists.txt` file - -##### Directory Structure - -``` -my_project/ -├── quill/ (source folder) -├── CMakeLists.txt -├── main.cpp -``` - -##### CMakeLists.txt - -```cmake -cmake_minimum_required(VERSION 3.1.0) -project(my_project) - -set(CMAKE_CXX_STANDARD 17) - -add_subdirectory(quill) - -add_executable(my_project main.cpp) -target_link_libraries(my_project PUBLIC quill::quill) -``` - -#### Building Quill for Android NDK - -To build Quill for Android NDK add the following `CMake` flags when configuring the build: - - ``` - -DQUILL_NO_THREAD_NAME_SUPPORT:BOOL=ON - ``` - -## Design - -### Frontend (caller-thread) - -When invoking a `LOG_` macro: - -1. Creates a static constexpr metadata object to store `Metadata` such as the format string and source location. - -2. Pushes the data SPSC lock-free queue. For each log message, the following variables are pushed - -| Variable | Description | -|------------|:--------------------------------------------------------------------------------------------------------------:| -| timestamp | Current timestamp | -| Metadata* | Pointer to metadata information | -| Logger* | Pointer to the logger instance | -| DecodeFunc | A pointer to a templated function containing all the log message argument types, used for decoding the message | -| Args... | A serialized binary copy of each log message argument that was passed to the `LOG_` macro | - -### Backend - -Consumes each message from the SPSC queue, retrieves all the necessary information and then formats the message. -Subsequently, forwards the log message to all Sinks associated with the Logger. - -![design.jpg](docs%2Fdesign.jpg) - -## License - -Quill is licensed under the [MIT License](http://opensource.org/licenses/MIT) - -Quill depends on third party libraries with separate copyright notices and license terms. -Your use of the source code for these subcomponents is subject to the terms and conditions of the following licenses. - -- ([MIT License](http://opensource.org/licenses/MIT)) {fmt} (http://github.com/fmtlib/fmt/blob/master/LICENSE.rst) -- ([MIT License](http://opensource.org/licenses/MIT)) doctest (http://github.com/onqtam/doctest/blob/master/LICENSE.txt) diff --git a/subprojects/quill-4.2.0/benchmarks/CMakeLists.txt b/subprojects/quill-4.2.0/benchmarks/CMakeLists.txt deleted file mode 100644 index 81fe064..0000000 --- a/subprojects/quill-4.2.0/benchmarks/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -add_subdirectory(hot_path_latency) -add_subdirectory(backend_throughput) -add_subdirectory(compile_time) \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/backend_throughput/CMakeLists.txt b/subprojects/quill-4.2.0/benchmarks/backend_throughput/CMakeLists.txt deleted file mode 100644 index 33ae268..0000000 --- a/subprojects/quill-4.2.0/benchmarks/backend_throughput/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_executable(BENCHMARK_quill_backend_throughput quill_backend_throughput.cpp) -set_common_compile_options(BENCHMARK_quill_backend_throughput) -target_link_libraries(BENCHMARK_quill_backend_throughput quill) - -add_executable(BENCHMARK_quill_backend_throughput_no_buffering quill_backend_throughput_no_buffering.cpp) -set_common_compile_options(BENCHMARK_quill_backend_throughput_no_buffering) -target_link_libraries(BENCHMARK_quill_backend_throughput_no_buffering quill) \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput.cpp b/subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput.cpp deleted file mode 100644 index 87eac80..0000000 --- a/subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include - -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/sinks/FileSink.h" - -static constexpr size_t total_iterations = 4'000'000; - -/** - * The backend worker just spins, so we just measure the total time elapsed for total_iterations - */ -int main() -{ - // main thread affinity - quill::detail::set_cpu_affinity(0); - - quill::BackendOptions backend_options; - backend_options.backend_cpu_affinity = 5; - - // Start the logging backend thread and give it some tiem to init - quill::Backend::start(backend_options); - - std::this_thread::sleep_for(std::chrono::milliseconds{100}); - - // Create a file sink to write to a file - std::shared_ptr file_sink = quill::Frontend::create_or_get_sink( - "quill_backend_total_time.log", - []() - { - quill::FileSinkConfig cfg; - cfg.set_open_mode('w'); - return cfg; - }(), - quill::FileEventNotifier{}); - - quill::Logger* logger = quill::Frontend::create_or_get_logger( - "bench_logger", std::move(file_sink), - "%(time) [%(thread_id)] %(short_source_location) %(log_level) %(message)"); - - quill::Frontend::preallocate(); - - // start counting the time until backend worker finishes - auto const start_time = std::chrono::steady_clock::now(); - for (size_t iteration = 0; iteration < total_iterations; ++iteration) - { - LOG_INFO(logger, "Iteration: {} int: {} double: {}", iteration, iteration * 2, - static_cast(iteration) / 2); - } - - // block until all messages are flushed - logger->flush_log(); - - auto const end_time = std::chrono::steady_clock::now(); - auto const delta = end_time - start_time; - auto delta_d = std::chrono::duration_cast>(delta).count(); - - std::cout << fmtquill::format( - "Throughput is {:.2f} million msgs/sec average, total time elapsed: {} ms for {} " - "log messages \n", - total_iterations / delta_d / 1e6, - std::chrono::duration_cast(delta).count(), total_iterations) - << std::endl; -} \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput_no_buffering.cpp b/subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput_no_buffering.cpp deleted file mode 100644 index 6bbf1bf..0000000 --- a/subprojects/quill-4.2.0/benchmarks/backend_throughput/quill_backend_throughput_no_buffering.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include - -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/sinks/FileSink.h" - -static constexpr size_t total_iterations = 4'000'000; - -/** - * The backend worker just spins, so we just measure the total time elapsed for total_iterations - */ -int main() -{ - // main thread affinity - quill::detail::set_cpu_affinity(0); - - quill::BackendOptions backend_options; - backend_options.backend_cpu_affinity = 5; - backend_options.transit_events_hard_limit = 1; - - // Start the logging backend thread and give it some tiem to init - quill::Backend::start(backend_options); - - std::this_thread::sleep_for(std::chrono::milliseconds{100}); - - // Create a file sink to write to a file - std::shared_ptr file_sink = quill::Frontend::create_or_get_sink( - "quill_backend_total_time.log", - []() - { - quill::FileSinkConfig cfg; - cfg.set_open_mode('w'); - return cfg; - }(), - quill::FileEventNotifier{}); - - quill::Logger* logger = quill::Frontend::create_or_get_logger( - "bench_logger", std::move(file_sink), - "%(time) [%(thread_id)] %(short_source_location) %(log_level) %(message)"); - - quill::Frontend::preallocate(); - - // start counting the time until backend worker finishes - auto const start_time = std::chrono::steady_clock::now(); - for (size_t iteration = 0; iteration < total_iterations; ++iteration) - { - LOG_INFO(logger, "Iteration: {} int: {} double: {}", iteration, iteration * 2, - static_cast(iteration) / 2); - } - - // block until all messages are flushed - logger->flush_log(); - - auto const end_time = std::chrono::steady_clock::now(); - auto const delta = end_time - start_time; - auto delta_d = std::chrono::duration_cast>(delta).count(); - - std::cout << fmtquill::format( - "Throughput is {:.2f} million msgs/sec average, total time elapsed: {} ms for {} " - "log messages \n", - total_iterations / delta_d / 1e6, - std::chrono::duration_cast(delta).count(), total_iterations) - << std::endl; -} \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/compile_time/CMakeLists.txt b/subprojects/quill-4.2.0/benchmarks/compile_time/CMakeLists.txt deleted file mode 100644 index 34fba58..0000000 --- a/subprojects/quill-4.2.0/benchmarks/compile_time/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -add_subdirectory(qwrapper) - -add_executable(BENCHMARK_quill_compile_time compile_time_bench.cpp) -set_common_compile_options(BENCHMARK_quill_compile_time) -target_link_libraries(BENCHMARK_quill_compile_time qwrapper_compile_time_bench) diff --git a/subprojects/quill-4.2.0/benchmarks/compile_time/compile_time_bench.cpp b/subprojects/quill-4.2.0/benchmarks/compile_time/compile_time_bench.cpp deleted file mode 100644 index 6363df0..0000000 --- a/subprojects/quill-4.2.0/benchmarks/compile_time/compile_time_bench.cpp +++ /dev/null @@ -1,3365 +0,0 @@ -#include "qwrapper/qwrapper.h" - -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/Logger.h" - -int main() -{ - setup_quill("recommended_usage.log"); - auto logger = quill::Frontend::get_logger("root"); - - LOG_INFO(logger, "example lazy brown {} {} {}", "example2", 4.0f, "example3"); - LOG_INFO(logger, "jumps brown example lazy {} {} {} {} {}", std::string("str1"), - static_cast(9), 6LL, "example1", static_cast(10)); - LOG_INFO(logger, "brown test jumps fox {} {} {} {} {} {} {} {} {}", false, std::string("str1"), - 3.0, "example3", 6LL, "example2", static_cast(10), 1, true); - LOG_INFO(logger, "dog test example lazy {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 7UL, - static_cast(9), false, 6LL, 5L, true, "example3", "example2", std::string("str1")); - LOG_INFO(logger, "example fox lazy {} {} {} {} {} {} {} {} {} {}", "example1", 4.0f, 7UL, 5L, - true, 2, 3.0, 6LL, false, "example3"); - LOG_INFO(logger, "quick test over fox {} {} {} {}", true, static_cast(9), "example3", 6LL); - LOG_INFO(logger, "lazy logging test {} {} {} {} {}", 8ULL, 4.0f, std::string_view("view2"), - "example1", "example3"); - LOG_INFO(logger, "lazy over fox {} {}", std::string_view("view1"), 8ULL); - LOG_INFO(logger, "lazy fox brown {} {} {}", 5L, static_cast(9), static_cast(10)); - LOG_INFO(logger, "logging brown over dog {} {} {} {} {} {} {} {}", std::string_view("view1"), - "example2", std::string("str2"), std::string("str1"), 8ULL, std::string_view("view2"), false, 2); - LOG_INFO(logger, "brown fox test example {} {} {} {}", static_cast(10), 6LL, - static_cast(9), 7UL); - LOG_INFO(logger, "fox logging brown {} {} {} {} {} {} {} {}", 2, std::string("str2"), - static_cast(9), "example2", false, 7UL, "example3", 4.0f); - LOG_INFO(logger, "over quick logging lazy {} {} {} {}", std::string("str2"), "example3", 7UL, 5L); - LOG_INFO(logger, "dog over test jumps {} {} {} {} {}", 1, std::string_view("view2"), 8ULL, - "example3", 4.0f); - LOG_INFO(logger, "fox example dog {}", 5L); - LOG_INFO(logger, "example test fox dog {} {} {} {} {} {} {} {}", static_cast(10), 6LL, - 3.0, static_cast(9), 2, false, std::string_view("view2"), std::string_view("view1")); - LOG_INFO(logger, "test lazy jumps fox {} {} {} {} {} {}", 4.0f, std::string_view("view1"), - static_cast(10), std::string("str2"), 3.0, true); - LOG_INFO(logger, "over jumps brown {}", 4.0f); - LOG_INFO(logger, "dog brown over {} {} {} {} {} {} {} {}", "example1", - static_cast(10), false, 1, 6LL, std::string_view("view1"), 2, 8ULL); - LOG_INFO(logger, "over test jumps {} {} {} {} {} {} {} {}", true, std::string("str1"), 6LL, - "example3", 1, 7UL, 2, "example1"); - LOG_INFO(logger, "over dog example fox {} {} {} {} {} {} {} {} {} {}", 8ULL, 2, 5L, std::string("str1"), - std::string_view("view1"), std::string_view("view2"), 1, "example1", 7UL, std::string("str2")); - LOG_INFO(logger, "logging lazy fox {} {} {} {} {} {} {} {} {} {}", 8ULL, std::string("str2"), 7UL, - false, std::string("str1"), "example3", 3.0, std::string_view("view1"), "example1", 6LL); - LOG_INFO(logger, "logging example quick dog {} {} {} {} {} {} {} {} {}", 6LL, 1, 5L, 3.0, - "example3", 4.0f, 8ULL, std::string("str1"), false); - LOG_INFO(logger, "example jumps over {} {} {} {} {} {}", 6LL, static_cast(9), - static_cast(10), "example3", true, 7UL); - LOG_INFO(logger, "dog fox brown quick {} {} {}", 1, 5L, 6LL); - LOG_INFO(logger, "brown example dog {} {} {} {}", std::string("str2"), 6LL, true, std::string_view("view1")); - LOG_INFO(logger, "jumps example fox test {} {}", 6LL, std::string("str1")); - LOG_INFO(logger, "brown over dog fox {} {} {} {} {} {} {}", std::string("str1"), - std::string("str2"), 4.0f, false, 8ULL, "example2", true); - LOG_INFO(logger, "example over fox dog {} {} {} {} {} {} {} {} {} {}", "example1", 1, - static_cast(9), static_cast(10), "example2", std::string("str1"), - false, std::string_view("view1"), 4.0f, 7UL); - LOG_INFO(logger, "brown example test quick {} {} {} {} {} {}", std::string("str2"), 3.0, - static_cast(9), "example2", std::string("str1"), 8ULL); - LOG_INFO(logger, "fox brown jumps {} {} {} {} {} {} {} {} {} {}", "example3", std::string("str2"), - "example2", 7UL, false, 6LL, 5L, 4.0f, 2, std::string("str1")); - LOG_INFO(logger, "brown quick dog over {} {} {} {} {} {} {} {}", 1, 4.0f, std::string_view("view1"), - false, true, "example2", static_cast(10), std::string("str2")); - LOG_INFO(logger, "lazy jumps brown {} {} {}", 8ULL, 5L, "example1"); - LOG_INFO(logger, "example dog over {} {} {} {} {} {}", static_cast(9), "example2", 3.0, - std::string("str1"), 5L, std::string_view("view2")); - LOG_INFO(logger, "fox example dog {} {} {} {} {} {}", true, "example2", 3.0, 5L, 6LL, 1); - LOG_INFO(logger, "example lazy dog {} {} {} {} {} {} {}", 6LL, std::string("str2"), 4.0f, - "example2", std::string("str1"), static_cast(10), 8ULL); - LOG_INFO(logger, "fox logging brown {} {} {} {} {} {}", 2, true, "example1", 6LL, - std::string_view("view1"), 7UL); - LOG_INFO(logger, "example brown over test {} {}", 5L, std::string_view("view1")); - LOG_INFO(logger, "over test dog {} {} {} {} {}", std::string("str1"), std::string_view("view1"), - "example2", "example1", 6LL); - LOG_INFO(logger, "logging test example {} {} {} {} {} {} {} {} {} {}", 6LL, "example3", - static_cast(9), true, 7UL, 5L, std::string_view("view2"), 2, 1, std::string_view("view1")); - LOG_INFO(logger, "example test lazy quick {} {} {} {} {} {} {} {}", std::string("str1"), 6LL, 7UL, - std::string_view("view2"), static_cast(9), 5L, std::string("str2"), "example1"); - LOG_INFO(logger, "over lazy logging {} {} {} {} {}", "example3", std::string_view("view1"), 6LL, - false, "example2"); - LOG_INFO(logger, "lazy example jumps over {} {} {} {} {} {} {} {}", 3.0, "example3", 2, - "example2", 4.0f, 6LL, true, static_cast(10)); - LOG_INFO(logger, "fox brown example {}", 5L); - LOG_INFO(logger, "jumps lazy test over {} {}", false, std::string_view("view2")); - LOG_INFO(logger, "lazy over quick {} {} {} {} {} {} {}", true, 7UL, std::string("str1"), - "example1", 5L, 4.0f, static_cast(9)); - LOG_INFO(logger, "fox brown over jumps {} {} {} {} {} {} {}", 1, 3.0, true, std::string("str2"), - 4.0f, 6LL, "example3"); - LOG_INFO(logger, "example logging test quick {} {} {} {} {} {} {}", 1, "example2", - static_cast(9), 6LL, static_cast(10), 5L, std::string_view("view1")); - LOG_INFO(logger, "brown logging quick test {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - 5L, true, 8ULL, "example1", 2, 3.0, "example3", std::string("str2")); - LOG_INFO(logger, "logging dog over fox {} {} {}", false, std::string_view("view2"), 7UL); - LOG_INFO(logger, "quick fox test {} {} {} {} {} {} {} {}", std::string("str2"), 4.0f, 8ULL, - "example3", 5L, false, 7UL, std::string_view("view1")); - LOG_INFO(logger, "over logging lazy {} {} {} {} {} {} {} {}", 7UL, "example1", 3.0, "example2", - std::string_view("view2"), static_cast(9), std::string_view("view1"), 1); - LOG_INFO(logger, "brown dog example fox {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), 1, 4.0f, 2, "example1", "example2", 7UL, 5L); - LOG_INFO(logger, "jumps brown dog test {} {} {} {} {} {} {} {} {}", "example2", - std::string("str2"), 7UL, 2, static_cast(9), false, 6LL, 5L, 3.0); - LOG_INFO(logger, "quick lazy logging {} {} {}", 4.0f, "example1", static_cast(10)); - LOG_INFO(logger, "jumps test quick fox {} {} {} {} {} {} {} {}", false, 4.0f, 1, - static_cast(9), "example1", 2, 6LL, "example3"); - LOG_INFO(logger, "over example dog {} {} {} {} {}", 6LL, 5L, "example1", 1, 4.0f); - LOG_INFO(logger, "brown fox logging {} {} {} {}", 5L, 3.0, 7UL, static_cast(9)); - LOG_INFO(logger, "over example brown {} {} {} {} {} {} {} {} {}", 2, std::string("str1"), 7UL, - true, false, 1, 5L, std::string("str2"), "example3"); - LOG_INFO(logger, "lazy test over jumps {} {} {} {} {} {} {} {} {} {}", false, "example3", - std::string_view("view2"), static_cast(9), 2, 4.0f, std::string("str2"), - std::string_view("view1"), std::string("str1"), "example2"); - LOG_INFO(logger, "test quick brown {} {}", std::string_view("view2"), std::string("str2")); - LOG_INFO(logger, "dog example over lazy {} {} {}", "example3", static_cast(10), true); - LOG_INFO(logger, "over test brown lazy {} {}", 3.0, 4.0f); - LOG_INFO(logger, "lazy jumps example {} {} {} {} {} {} {}", std::string_view("view1"), false, 6LL, - "example2", true, "example1", static_cast(9)); - LOG_INFO(logger, "fox example jumps over {} {} {} {} {} {} {} {} {}", 4.0f, 7UL, "example2", 8ULL, - std::string("str2"), 6LL, false, "example3", static_cast(9)); - LOG_INFO(logger, "dog example lazy jumps {} {} {} {} {} {} {} {}", 3.0, std::string_view("view2"), - 2, 6LL, std::string_view("view1"), std::string("str1"), 4.0f, std::string("str2")); - LOG_INFO(logger, "quick lazy test dog {} {}", "example1", std::string("str1")); - LOG_INFO(logger, "fox example quick dog {} {} {} {} {} {} {} {}", 2, 6LL, - static_cast(10), 7UL, std::string_view("view1"), 1, "example2", false); - LOG_INFO(logger, "jumps test quick fox {} {} {} {} {} {} {} {} {}", 8ULL, 2, std::string_view("view2"), - false, 6LL, 3.0, static_cast(9), "example1", "example2"); - LOG_INFO(logger, "dog jumps quick lazy {} {} {}", 2, 4.0f, "example2"); - LOG_INFO(logger, "dog over brown logging {} {} {} {}", std::string("str1"), 1, "example2", false); - LOG_INFO(logger, "dog lazy over example {} {} {} {}", 2, std::string("str2"), std::string("str1"), - "example1"); - LOG_INFO(logger, "logging jumps brown fox {} {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view2"), 7UL, std::string("str1"), 3.0, true, false, 6LL, 2, - static_cast(10)); - LOG_INFO(logger, "example over jumps brown {} {} {} {} {}", std::string_view("view2"), - std::string("str2"), 3.0, 2, 4.0f); - LOG_INFO(logger, "example dog jumps lazy {} {} {} {} {} {}", 8ULL, "example3", "example2", 6LL, true, false); - LOG_INFO(logger, "example dog fox {} {} {} {} {} {} {} {} {}", "example2", 1, 3.0, - std::string("str1"), "example1", 8ULL, std::string_view("view2"), false, 2); - LOG_INFO(logger, "example fox over {} {} {} {} {} {} {}", 7UL, 6LL, - static_cast(10), true, 4.0f, "example2", 5L); - LOG_INFO(logger, "lazy example jumps logging {} {} {} {} {} {} {}", false, "example3", 4.0f, - "example1", 8ULL, 3.0, std::string_view("view2")); - LOG_INFO(logger, "test dog lazy {} {} {}", std::string_view("view2"), 3.0, 5L); - LOG_INFO(logger, "jumps example over logging {} {} {}", 7UL, 4.0f, static_cast(9)); - LOG_INFO(logger, "dog example jumps quick {} {} {} {}", 2, 5L, 1, static_cast(9)); - LOG_INFO(logger, "test quick fox over {} {} {} {} {}", "example3", 1, 7UL, "example2", - std::string_view("view1")); - LOG_INFO(logger, "brown jumps over {} {} {} {} {} {} {} {} {}", "example2", false, std::string_view("view1"), - std::string("str2"), true, "example3", 3.0, 5L, static_cast(9)); - LOG_INFO(logger, "dog over fox {} {} {} {}", std::string("str2"), std::string("str1"), 1, - "example2"); - LOG_INFO(logger, "brown lazy dog over {} {} {} {} {}", std::string_view("view2"), 3.0, 4.0f, true, - std::string_view("view1")); - LOG_INFO(logger, "jumps lazy example {} {} {} {} {} {} {} {} {}", static_cast(9), - "example3", std::string_view("view2"), std::string("str1"), true, 7UL, - static_cast(10), 6LL, 5L); - LOG_INFO(logger, "dog quick jumps {} {} {} {} {} {} {} {} {} {}", "example3", 5L, true, - std::string("str1"), 8ULL, "example2", std::string_view("view1"), 1, 7UL, "example1"); - LOG_INFO(logger, "jumps quick example {} {} {} {} {} {} {}", 7UL, 5L, 2, static_cast(9), - std::string_view("view2"), 6LL, std::string("str1")); - LOG_INFO(logger, "quick logging brown {} {} {} {} {} {} {}", 3.0, "example1", - static_cast(10), 6LL, static_cast(9), 2, "example2"); - LOG_INFO(logger, "example test dog quick {}", static_cast(9)); - LOG_INFO(logger, "lazy jumps dog {}", 7UL); - LOG_INFO(logger, "example fox quick {} {} {} {} {} {} {}", std::string_view("view2"), 7UL, 2, - 8ULL, std::string("str1"), 6LL, 4.0f); - LOG_INFO(logger, "brown over dog test {} {}", 7UL, "example3"); - LOG_INFO(logger, "logging dog fox test {} {} {} {} {} {}", 4.0f, static_cast(9), true, - std::string_view("view2"), static_cast(10), std::string("str1")); - LOG_INFO(logger, "quick dog test {} {} {} {} {} {} {}", 6LL, 8ULL, "example2", - std::string("str1"), "example1", true, false); - LOG_INFO(logger, "jumps dog logging over {} {} {} {}", "example1", static_cast(10), 4.0f, false); - LOG_INFO(logger, "lazy dog example {} {} {} {} {} {} {} {} {}", true, 1, 2, 5L, - static_cast(10), "example1", 3.0, 8ULL, "example3"); - LOG_INFO(logger, "fox dog lazy jumps {} {} {}", std::string_view("view1"), 3.0, 8ULL); - LOG_INFO(logger, "lazy logging test quick {} {} {}", 5L, std::string_view("view2"), std::string("str1")); - LOG_INFO(logger, "jumps logging quick {}", false); - LOG_INFO(logger, "quick logging over {} {} {} {} {} {} {} {}", 5L, std::string_view("view1"), 1, - std::string_view("view2"), true, "example3", static_cast(10), false); - LOG_INFO(logger, "fox lazy test {} {} {} {} {} {} {}", std::string("str2"), "example3", 6LL, 1, - true, false, 4.0f); - LOG_INFO(logger, "fox over quick dog {} {} {} {}", "example2", true, - static_cast(10), std::string("str1")); - LOG_INFO(logger, "brown fox dog logging {} {} {} {} {} {} {} {}", 3.0, static_cast(10), - std::string_view("view1"), 7UL, 4.0f, false, 1, "example1"); - LOG_INFO(logger, "fox logging quick lazy {} {} {} {} {} {} {}", 5L, true, "example1", 6LL, - std::string_view("view2"), "example2", static_cast(10)); - LOG_INFO(logger, "quick dog jumps example {} {} {} {}", 6LL, std::string_view("view1"), - static_cast(10), std::string("str1")); - LOG_INFO(logger, "quick brown fox {} {} {} {} {} {} {} {} {} {}", std::string("str1"), 2, - std::string_view("view1"), 4.0f, false, "example1", 5L, static_cast(10), - static_cast(9), std::string("str2")); - LOG_INFO(logger, "dog quick brown {} {} {} {} {} {} {} {}", true, static_cast(9), 8ULL, - std::string("str2"), static_cast(10), 6LL, "example2", 2); - LOG_INFO(logger, "jumps dog logging over {} {} {} {} {} {} {} {}", 8ULL, true, - std::string("str2"), "example2", 4.0f, 5L, 6LL, static_cast(10)); - LOG_INFO(logger, "dog lazy example {}", static_cast(9)); - LOG_INFO(logger, "brown logging lazy {} {} {} {} {} {}", std::string_view("view2"), 5L, 2, - static_cast(10), true, "example1"); - LOG_INFO(logger, "jumps over brown {} {} {} {} {} {}", false, true, static_cast(9), 2, - std::string("str2"), "example3"); - LOG_INFO(logger, "lazy example quick {} {} {} {} {}", true, 3.0, 7UL, 4.0f, std::string_view("view1")); - LOG_INFO(logger, "logging dog over {} {} {} {} {} {}", std::string_view("view1"), 7UL, "example3", - true, static_cast(10), 5L); - LOG_INFO(logger, "jumps quick logging {} {}", 2, 7UL); - LOG_INFO(logger, "test lazy brown jumps {} {} {} {} {} {} {} {}", "example1", std::string("str1"), - 4.0f, 3.0, static_cast(10), std::string_view("view1"), 6LL, 7UL); - LOG_INFO(logger, "jumps example lazy test {} {}", 1, true); - LOG_INFO(logger, "jumps over dog {} {} {} {} {} {} {}", "example3", std::string_view("view1"), - static_cast(9), static_cast(10), std::string_view("view2"), true, 1); - LOG_INFO(logger, "logging dog example {} {} {} {}", false, 5L, std::string("str2"), - static_cast(10)); - LOG_INFO(logger, "logging quick brown {} {} {} {} {} {} {} {} {} {}", 8ULL, "example3", - std::string("str1"), "example1", "example2", 1, 3.0, 4.0f, 7UL, std::string_view("view2")); - LOG_INFO(logger, "logging over test {} {} {} {} {} {} {} {} {}", 2, std::string_view("view2"), - "example1", 6LL, true, 7UL, static_cast(9), static_cast(10), 3.0); - LOG_INFO(logger, "over example fox dog {} {}", std::string_view("view1"), 1); - LOG_INFO(logger, "quick logging lazy dog {} {}", "example2", std::string("str2")); - LOG_INFO(logger, "lazy over quick example {} {} {} {} {} {} {}", std::string("str2"), false, 4.0f, - std::string_view("view2"), 3.0, 6LL, std::string("str1")); - LOG_INFO(logger, "test dog brown {} {} {} {} {} {} {} {} {}", std::string("str1"), "example2", - 4.0f, 3.0, 8ULL, static_cast(10), false, 7UL, 5L); - LOG_INFO(logger, "brown quick logging jumps {} {} {} {} {} {}", static_cast(10), - "example2", true, false, 2, std::string_view("view1")); - LOG_INFO(logger, "quick over example {} {} {} {} {} {} {}", 5L, 1, 4.0f, - std::string_view("view2"), std::string("str2"), "example1", 3.0); - LOG_INFO(logger, "fox quick over test {} {}", std::string_view("view1"), 3.0); - LOG_INFO(logger, "dog lazy fox jumps {} {} {} {} {} {} {} {} {} {}", "example3", 1, 7UL, - static_cast(10), std::string("str2"), "example2", "example1", - static_cast(9), 6LL, 4.0f); - LOG_INFO(logger, "dog fox jumps example {} {} {} {} {} {} {} {}", static_cast(9), - "example3", 5L, 7UL, 2, std::string_view("view2"), false, static_cast(10)); - LOG_INFO(logger, "dog quick example lazy {} {} {} {} {} {} {} {}", 8ULL, 2, "example3", 4.0f, - std::string_view("view2"), static_cast(9), static_cast(10), 6LL); - LOG_INFO(logger, "over example brown {}", 6LL); - LOG_INFO(logger, "logging test jumps quick {} {} {} {} {}", true, std::string("str2"), 2, - std::string_view("view1"), 7UL); - LOG_INFO(logger, "brown fox over {} {} {} {} {} {} {} {} {} {}", static_cast(10), - std::string_view("view2"), false, std::string("str1"), "example1", 7UL, - std::string("str2"), true, 6LL, 1); - LOG_INFO(logger, "logging test dog fox {}", 3.0); - LOG_INFO(logger, "over brown dog {} {} {} {} {} {} {}", "example1", "example2", 6LL, - std::string("str1"), 7UL, std::string_view("view1"), false); - LOG_INFO(logger, "fox over lazy {} {} {} {} {} {} {} {} {} {}", static_cast(9), 8ULL, 5L, 6LL, - std::string_view("view2"), std::string_view("view1"), 1, std::string("str1"), "example2", 3.0); - LOG_INFO(logger, "lazy quick fox {} {} {} {}", std::string("str2"), "example3", 1, std::string_view("view2")); - LOG_INFO(logger, "brown fox logging lazy {} {} {} {} {}", std::string_view("view2"), - std::string("str1"), 5L, std::string_view("view1"), "example3"); - LOG_INFO(logger, "brown over fox {} {} {}", 2, 6LL, 4.0f); - LOG_INFO(logger, "logging fox jumps over {} {} {} {} {} {} {} {}", 7UL, 4.0f, "example1", 8ULL, - "example2", 5L, false, std::string("str2")); - LOG_INFO(logger, "over test logging jumps {} {} {} {} {} {}", true, 4.0f, "example1", 7UL, - std::string_view("view1"), "example3"); - LOG_INFO(logger, "example quick test {} {} {} {} {} {} {} {}", std::string("str1"), 7UL, 6LL, 3.0, - 2, 8ULL, 1, static_cast(10)); - LOG_INFO(logger, "example brown quick test {} {} {} {} {} {} {} {}", 2, false, 6LL, 4.0f, - std::string_view("view1"), 8ULL, "example3", "example2"); - LOG_INFO(logger, "brown example quick test {} {}", std::string("str1"), 8ULL); - LOG_INFO(logger, "logging example brown {} {} {} {} {}", std::string("str1"), 5L, 4.0f, - static_cast(9), "example1"); - LOG_INFO(logger, "quick logging lazy {} {}", static_cast(9), "example3"); - LOG_INFO(logger, "dog jumps over fox {} {} {} {} {} {} {}", 3.0, static_cast(9), 6LL, - false, 7UL, std::string_view("view1"), true); - LOG_INFO(logger, "brown dog example {} {} {} {} {} {} {} {} {}", "example1", std::string("str2"), true, - static_cast(10), 7UL, 8ULL, 1, std::string("str1"), std::string_view("view1")); - LOG_INFO(logger, "example test quick logging {} {} {} {} {} {} {} {} {}", 6LL, "example1", - "example3", 1, false, static_cast(10), 2, std::string("str2"), std::string("str1")); - LOG_INFO(logger, "quick lazy jumps example {} {} {} {} {} {} {} {}", "example2", 6LL, 4.0f, 7UL, - 2, 5L, std::string_view("view2"), static_cast(9)); - LOG_INFO(logger, "dog test logging quick {} {}", false, "example2"); - LOG_INFO(logger, "example dog over lazy {} {} {} {} {} {} {} {} {} {}", 6LL, 2, 3.0, - std::string_view("view2"), "example3", 4.0f, 8ULL, true, std::string("str2"), std::string("str1")); - LOG_INFO(logger, "test example logging {} {} {} {}", 1, std::string("str1"), 6LL, false); - LOG_INFO(logger, "logging over jumps lazy {} {} {} {} {} {} {} {} {}", true, 7UL, "example2", - static_cast(9), "example3", std::string_view("view2"), 5L, - std::string_view("view1"), std::string("str2")); - LOG_INFO(logger, "fox logging brown {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 2, - false, static_cast(9), 3.0, "example2", std::string_view("view2"), - static_cast(10), true, "example1"); - LOG_INFO(logger, "over jumps logging {} {} {}", 5L, std::string("str2"), true); - LOG_INFO(logger, "lazy fox example brown {}", std::string_view("view1")); - LOG_INFO(logger, "test over quick {} {}", 8ULL, 5L); - LOG_INFO(logger, "example jumps quick fox {}", 6LL); - LOG_INFO(logger, "fox dog example quick {} {} {} {} {} {} {} {} {} {}", 5L, 7UL, "example2", 8ULL, - 3.0, static_cast(9), 6LL, true, static_cast(10), "example1"); - LOG_INFO(logger, "over test example dog {} {} {} {} {} {} {} {}", 2, 8ULL, 4.0f, "example1", - static_cast(9), std::string("str2"), 5L, std::string_view("view1")); - LOG_INFO(logger, "over dog test {} {}", 7UL, 2); - LOG_INFO(logger, "brown fox logging {}", 7UL); - LOG_INFO(logger, "fox jumps logging dog {} {} {} {} {} {} {} {}", 3.0, "example1", "example3", - std::string_view("view2"), false, 4.0f, 5L, true); - LOG_INFO(logger, "brown example logging {}", static_cast(10)); - LOG_INFO(logger, "brown jumps logging over {} {} {} {} {} {}", 6LL, 1, 8ULL, "example2", - std::string_view("view2"), "example3"); - LOG_INFO(logger, "logging fox brown {} {} {} {} {}", 2, 8ULL, static_cast(9), 6LL, 3.0); - LOG_INFO(logger, "lazy dog jumps fox {} {} {} {} {} {} {}", std::string_view("view2"), - std::string("str2"), std::string_view("view1"), "example1", 1, false, 4.0f); - LOG_INFO(logger, "brown quick dog {}", static_cast(10)); - LOG_INFO(logger, "brown dog lazy {} {} {} {} {}", static_cast(10), 3.0, - std::string_view("view2"), static_cast(9), 2); - LOG_INFO(logger, "lazy fox quick {} {} {}", 5L, "example1", static_cast(10)); - LOG_INFO(logger, "fox over quick {} {} {} {} {} {}", 4.0f, 6LL, std::string_view("view1"), - "example2", 1, std::string_view("view2")); - LOG_INFO(logger, "fox brown dog {} {} {} {} {} {} {}", false, 3.0, 4.0f, - std::string_view("view2"), 1, 6LL, 5L); - LOG_INFO(logger, "test brown jumps {} {} {} {} {}", true, 4.0f, static_cast(10), - "example1", std::string("str1")); - LOG_INFO(logger, "example fox test dog {} {}", std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "brown example quick {} {} {} {} {} {} {} {} {} {}", 2, 6LL, "example3", - static_cast(9), std::string_view("view1"), false, 4.0f, std::string("str1"), 7UL, 1); - LOG_INFO(logger, "example lazy over {} {} {} {} {} {}", static_cast(9), 5L, "example3", - std::string("str1"), 7UL, std::string("str2")); - LOG_INFO(logger, "quick logging fox {} {} {} {} {} {}", 5L, true, false, 2, std::string_view("view1"), 4.0f); - LOG_INFO(logger, "logging lazy dog {} {} {} {} {} {}", std::string_view("view1"), 4.0f, - "example1", "example3", false, std::string("str2")); - LOG_INFO(logger, "fox dog over test {} {} {} {} {} {} {} {} {}", std::string("str2"), 5L, 3.0, - "example3", static_cast(9), true, 6LL, 8ULL, 1); - LOG_INFO(logger, "dog lazy jumps {}", static_cast(9)); - LOG_INFO(logger, "test example dog {} {} {} {} {} {} {} {} {} {}", - static_cast(10), std::string("str2"), 7UL, std::string("str1"), true, - static_cast(9), std::string_view("view2"), false, 1, 8ULL); - LOG_INFO(logger, "fox jumps dog test {} {} {} {} {}", 1, 8ULL, std::string("str1"), "example2", - std::string_view("view2")); - LOG_INFO(logger, "example brown fox quick {} {}", static_cast(9), false); - LOG_INFO(logger, "over quick dog {} {} {} {} {}", 5L, 1, 8ULL, 7UL, 3.0); - LOG_INFO(logger, "brown test over quick {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), - 3.0, 4.0f, 2, false, "example3", 7UL, static_cast(9), true, 5L); - LOG_INFO(logger, "brown lazy over {} {} {} {} {} {}", std::string("str2"), 7UL, - static_cast(9), true, 8ULL, 2); - LOG_INFO(logger, "brown lazy fox {} {} {} {} {} {} {} {}", 7UL, 4.0f, static_cast(9), 1, - 6LL, false, "example2", std::string_view("view1")); - LOG_INFO(logger, "fox logging jumps quick {} {}", 6LL, 5L); - LOG_INFO(logger, "quick fox brown {} {} {} {} {}", std::string_view("view1"), - std::string_view("view2"), "example1", 2, "example2"); - LOG_INFO(logger, "example quick over brown {} {} {}", 8ULL, static_cast(10), - std::string_view("view1")); - LOG_INFO(logger, "quick over lazy {} {} {} {} {} {}", 7UL, 2, static_cast(10), 1, 3.0, 8ULL); - LOG_INFO(logger, "logging fox test brown {} {} {} {} {}", false, 8ULL, 1, 5L, std::string_view("view2")); - LOG_INFO(logger, "fox over dog test {}", std::string_view("view2")); - LOG_INFO(logger, "brown jumps logging {} {} {} {} {}", 4.0f, 8ULL, true, - std::string_view("view1"), static_cast(9)); - LOG_INFO(logger, "quick over brown jumps {} {} {} {} {} {}", "example2", "example3", 7UL, false, 8ULL, 5L); - LOG_INFO(logger, "test dog example over {} {} {} {} {} {}", 2, 1, static_cast(9), - "example3", std::string_view("view2"), std::string_view("view1")); - LOG_INFO(logger, "fox logging lazy over {} {} {} {}", "example2", std::string("str1"), 5L, 3.0); - LOG_INFO(logger, "logging fox test {} {} {} {}", false, static_cast(9), - static_cast(10), "example3"); - LOG_INFO(logger, "brown logging dog example {} {} {} {} {} {} {} {} {}", "example2", - std::string_view("view1"), std::string("str1"), "example3", std::string_view("view2"), - "example1", false, static_cast(10), 5L); - LOG_INFO(logger, "dog test example over {}", "example1"); - LOG_INFO(logger, "over jumps logging test {} {} {} {}", true, 4.0f, std::string("str2"), false); - LOG_INFO(logger, "brown example test logging {} {} {} {} {} {}", 3.0, 6LL, std::string("str2"), - static_cast(10), "example2", std::string_view("view1")); - LOG_INFO(logger, "example over dog quick {} {} {} {} {}", 1, 2, false, "example1", "example3"); - LOG_INFO(logger, "test dog example {} {} {} {} {} {} {} {} {} {}", true, "example2", "example3", - std::string("str2"), 1, static_cast(10), std::string_view("view1"), - "example1", 7UL, false); - LOG_INFO(logger, "dog example lazy test {} {} {} {}", "example2", std::string_view("view2"), 5L, 7UL); - LOG_INFO(logger, "logging over dog {}", std::string("str1")); - LOG_INFO(logger, "logging jumps test example {} {} {} {} {} {} {}", "example2", 8ULL, - std::string_view("view1"), "example1", static_cast(10), 5L, "example3"); - LOG_INFO(logger, "quick dog example {} {} {} {} {} {} {} {} {} {}", std::string("str1"), - std::string_view("view2"), true, 8ULL, std::string_view("view1"), 7UL, - static_cast(9), 3.0, static_cast(10), std::string("str2")); - LOG_INFO(logger, "brown quick over {} {}", 7UL, 2); - LOG_INFO(logger, "over lazy fox test {} {}", 8ULL, std::string("str2")); - LOG_INFO(logger, "example test brown jumps {} {}", std::string("str2"), 4.0f); - LOG_INFO(logger, "quick example lazy {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), false, - 2, static_cast(9), 3.0, "example3", std::string_view("view1"), "example1", true, 1); - LOG_INFO(logger, "dog fox test {} {} {} {} {} {} {}", 3.0, false, static_cast(9), - static_cast(10), 6LL, 1, "example3"); - LOG_INFO(logger, "test quick fox logging {} {} {} {}", true, 1, 7UL, 2); - LOG_INFO(logger, "brown example dog {} {} {} {} {}", std::string("str1"), 5L, "example1", - std::string("str2"), "example2"); - LOG_INFO(logger, "logging test dog {} {} {} {} {} {} {}", 5L, static_cast(9), 8ULL, false, - 4.0f, 6LL, std::string("str2")); - LOG_INFO(logger, "jumps brown quick {} {} {} {} {}", "example3", "example2", std::string("str2"), 4.0f, 5L); - LOG_INFO(logger, "test over dog {} {} {} {} {} {} {} {} {} {}", 6LL, 2, "example3", - std::string_view("view1"), static_cast(9), 1, 5L, "example1", 4.0f, "example2"); - LOG_INFO(logger, "jumps test quick {} {} {} {} {} {} {}", false, "example2", 8ULL, std::string_view("view1"), - static_cast(10), static_cast(9), std::string("str1")); - LOG_INFO(logger, "test logging fox {} {} {} {} {} {} {} {} {}", static_cast(9), "example3", - std::string_view("view1"), true, std::string("str2"), 7UL, - static_cast(10), std::string("str1"), 8ULL); - LOG_INFO(logger, "lazy dog over {} {} {} {} {} {} {} {} {}", 4.0f, 1, "example3", - std::string("str2"), true, 3.0, 5L, "example2", std::string_view("view2")); - LOG_INFO(logger, "test lazy dog {} {} {} {}", true, std::string_view("view2"), 6LL, "example1"); - LOG_INFO(logger, "jumps over logging example {} {} {} {} {}", std::string_view("view1"), - "example2", static_cast(10), std::string("str2"), 3.0); - LOG_INFO(logger, "example over jumps {} {}", std::string("str1"), "example3"); - LOG_INFO(logger, "quick brown test {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), - std::string("str1"), 6LL, 8ULL, "example1", std::string_view("view2"), "example3", 2, 7UL, 5L); - LOG_INFO(logger, "dog lazy quick over {} {} {} {} {} {} {} {}", 5L, 8ULL, true, false, - std::string("str1"), std::string_view("view2"), "example1", static_cast(10)); - LOG_INFO(logger, "jumps test dog {} {} {}", "example1", 4.0f, static_cast(10)); - LOG_INFO(logger, "example test lazy {} {} {} {} {} {} {} {} {}", "example1", true, std::string_view("view2"), - std::string("str1"), 7UL, 6LL, 8ULL, static_cast(10), "example2"); - LOG_INFO(logger, "fox brown quick over {} {} {} {}", 6LL, std::string_view("view1"), "example3", 4.0f); - LOG_INFO(logger, "dog jumps test brown {}", true); - LOG_INFO(logger, "quick dog test {} {} {} {}", static_cast(9), 3.0, 2, - static_cast(10)); - LOG_INFO(logger, "lazy over brown {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 8ULL, 6LL, - 7UL, 4.0f, false, 5L, 3.0, std::string_view("view2"), "example1"); - LOG_INFO(logger, "quick jumps fox {} {} {} {}", static_cast(9), 2, 8ULL, std::string_view("view1")); - LOG_INFO(logger, "quick lazy test brown {} {} {} {} {}", 6LL, false, "example2", 2, 1); - LOG_INFO(logger, "test lazy logging dog {} {} {} {}", 2, static_cast(9), - std::string_view("view2"), false); - LOG_INFO(logger, "quick lazy logging {} {} {} {} {} {} {} {} {}", std::string_view("view1"), - static_cast(9), 2, std::string("str2"), 7UL, 3.0, std::string_view("view2"), 4.0f, 6LL); - LOG_INFO(logger, "over lazy fox test {} {} {} {} {} {} {} {}", "example2", static_cast(10), - std::string("str1"), "example3", 1, 2, true, std::string_view("view2")); - LOG_INFO(logger, "brown logging over {} {} {} {}", 1, false, 8ULL, true); - LOG_INFO(logger, "dog brown jumps quick {} {} {} {} {}", std::string_view("view1"), true, 7UL, - std::string_view("view2"), 5L); - LOG_INFO(logger, "jumps dog fox logging {} {} {} {} {} {} {} {}", "example1", 6LL, 1, - static_cast(9), 3.0, 2, std::string("str2"), 7UL); - LOG_INFO(logger, "logging lazy dog test {} {} {} {}", 5L, "example3", std::string_view("view1"), - static_cast(10)); - LOG_INFO(logger, "over fox test {} {} {} {}", 4.0f, false, "example1", true); - LOG_INFO(logger, "quick logging jumps over {} {} {} {} {} {} {} {}", false, true, - std::string_view("view1"), 2, "example3", 3.0, "example2", std::string("str1")); - LOG_INFO(logger, "test brown fox {} {}", std::string_view("view2"), 7UL); - LOG_INFO(logger, "example lazy dog {} {} {} {} {} {} {} {}", "example2", 4.0f, - std::string("str2"), std::string("str1"), 8ULL, 7UL, std::string_view("view2"), 2); - LOG_INFO(logger, "example logging fox test {} {} {} {} {} {} {} {}", true, static_cast(9), - 2, 7UL, 3.0, "example2", std::string("str2"), std::string("str1")); - LOG_INFO(logger, "brown jumps logging test {} {} {}", 6LL, true, std::string_view("view1")); - LOG_INFO(logger, "fox lazy jumps {} {} {} {}", "example3", std::string("str1"), true, 3.0); - LOG_INFO(logger, "fox test over quick {} {} {} {} {} {} {} {}", 8ULL, 4.0f, std::string("str1"), - 3.0, 7UL, std::string_view("view2"), "example2", static_cast(10)); - LOG_INFO(logger, "brown dog over logging {} {} {} {} {} {} {}", 4.0f, 7UL, "example3", - std::string("str2"), 3.0, 8ULL, "example2"); - LOG_INFO(logger, "lazy dog brown logging {} {}", 4.0f, 8ULL); - LOG_INFO(logger, "quick over jumps lazy {} {} {} {} {} {} {} {} {} {}", std::string("str2"), - "example2", 7UL, std::string("str1"), std::string_view("view2"), "example3", - static_cast(9), 2, "example1", true); - LOG_INFO(logger, "jumps logging lazy over {} {} {} {} {}", true, std::string_view("view2"), 3.0, - "example3", static_cast(10)); - LOG_INFO(logger, "brown quick example {} {} {} {}", true, "example1", std::string("str1"), 2); - LOG_INFO(logger, "over fox quick lazy {} {} {}", 5L, 3.0, std::string_view("view1")); - LOG_INFO(logger, "fox logging example {}", "example2"); - LOG_INFO(logger, "over dog test {} {} {} {} {} {} {}", 4.0f, static_cast(10), 1, - 7UL, true, false, 6LL); - LOG_INFO(logger, "quick logging lazy dog {} {} {} {} {} {} {} {} {} {}", static_cast(10), - true, "example3", 5L, 8ULL, 1, static_cast(9), std::string("str1"), "example2", 6LL); - LOG_INFO(logger, "brown jumps lazy test {} {} {} {} {} {} {}", 8ULL, "example3", 6LL, - std::string_view("view2"), std::string("str2"), "example2", false); - LOG_INFO(logger, "quick example test lazy {} {} {} {} {}", true, false, "example2", 6LL, - "example3"); - LOG_INFO(logger, "brown jumps logging {} {} {} {} {} {}", static_cast(10), 3.0, - 8ULL, "example3", true, 4.0f); - LOG_INFO(logger, "fox jumps logging {}", "example3"); - LOG_INFO(logger, "jumps test example {} {}", std::string("str2"), 1); - LOG_INFO(logger, "quick example jumps lazy {} {} {} {} {} {} {} {} {} {}", 5L, 6LL, static_cast(9), - 4.0f, "example3", "example2", 1, std::string("str2"), std::string_view("view2"), false); - LOG_INFO(logger, "fox quick over logging {} {} {} {} {} {} {} {} {}", 1, std::string_view("view2"), - 8ULL, false, 3.0, std::string_view("view1"), "example1", true, 7UL); - LOG_INFO(logger, "brown logging test fox {} {} {} {} {} {} {} {}", std::string("str1"), 5L, - static_cast(9), 7UL, 6LL, std::string_view("view2"), "example2", 8ULL); - LOG_INFO(logger, "brown example quick test {} {} {}", std::string_view("view2"), "example2", - std::string_view("view1")); - LOG_INFO(logger, "logging example test brown {} {} {} {} {} {}", std::string_view("view2"), - "example3", std::string("str2"), 8ULL, 3.0, std::string_view("view1")); - LOG_INFO(logger, "over quick fox dog {} {} {} {} {} {}", std::string("str2"), 5L, 6LL, "example3", - 8ULL, std::string_view("view2")); - LOG_INFO(logger, "test example brown {} {} {} {} {} {} {} {} {} {}", "example1", 7UL, 6LL, - "example2", 2, std::string("str1"), 1, false, 4.0f, 5L); - LOG_INFO(logger, "over test logging {} {} {} {} {} {} {} {} {} {}", static_cast(10), 5L, - "example3", static_cast(9), 6LL, std::string_view("view1"), 2, "example1", 3.0, 7UL); - LOG_INFO(logger, "logging over dog {} {}", std::string_view("view1"), 6LL); - LOG_INFO(logger, "jumps test example over {} {} {}", 5L, 7UL, "example1"); - LOG_INFO(logger, "fox test over {}", 5L); - LOG_INFO(logger, "quick jumps over brown {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view2"), 1, static_cast(9), std::string_view("view1"), true, - false, 8ULL, static_cast(10)); - LOG_INFO(logger, "over test jumps example {} {} {} {} {} {}", std::string("str2"), 1, - std::string_view("view1"), "example2", std::string_view("view2"), 6LL); - LOG_INFO(logger, "fox brown test lazy {} {} {} {}", static_cast(10), 2, - std::string("str1"), "example3"); - LOG_INFO(logger, "brown test jumps lazy {} {} {}", 7UL, std::string("str2"), 1); - LOG_INFO(logger, "over jumps brown dog {} {} {}", 7UL, std::string("str2"), static_cast(9)); - LOG_INFO(logger, "brown test example {} {} {} {} {} {} {}", 5L, static_cast(10), - "example3", 7UL, "example2", std::string_view("view1"), 6LL); - LOG_INFO(logger, "test brown dog {} {} {} {} {} {} {}", 1, 2, 6LL, 8ULL, true, "example1", 5L); - LOG_INFO(logger, "lazy fox over {} {} {} {} {} {} {} {} {}", std::string_view("view1"), true, - std::string("str2"), 4.0f, 3.0, "example2", 1, std::string_view("view2"), - static_cast(10)); - LOG_INFO(logger, "dog over jumps {} {}", "example2", 3.0); - LOG_INFO(logger, "test quick jumps dog {} {} {} {} {} {}", std::string("str1"), - std::string("str2"), 5L, std::string_view("view2"), 3.0, 4.0f); - LOG_INFO(logger, "logging over example {} {} {} {} {}", static_cast(10), 4.0f, 5L, - 2, "example2"); - LOG_INFO(logger, "dog example jumps {} {} {}", "example1", static_cast(10), 8ULL); - LOG_INFO(logger, "example dog fox logging {} {} {} {}", 5L, std::string("str2"), "example3", - "example2"); - LOG_INFO(logger, "fox dog test lazy {} {} {} {} {} {} {}", "example3", std::string("str1"), - "example2", 1, "example1", std::string_view("view2"), false); - LOG_INFO(logger, "fox logging lazy quick {}", 2); - LOG_INFO(logger, "test quick over {}", std::string_view("view2")); - LOG_INFO(logger, "example logging jumps dog {} {}", std::string("str1"), std::string_view("view2")); - LOG_INFO(logger, "over lazy logging {} {} {} {} {} {}", 7UL, 6LL, static_cast(9), - "example1", std::string_view("view1"), "example3"); - LOG_INFO(logger, "logging example dog {} {} {} {} {} {} {} {} {} {}", 3.0, static_cast(10), - 5L, "example3", 2, static_cast(9), false, std::string("str1"), 6LL, 4.0f); - LOG_INFO(logger, "example quick lazy {} {}", static_cast(10), false); - LOG_INFO(logger, "example fox over logging {} {} {}", "example2", static_cast(9), - "example1"); - LOG_INFO(logger, "logging jumps brown {} {} {} {} {} {} {} {} {} {}", 5L, 2, 6LL, 4.0f, - "example2", std::string_view("view2"), 3.0, static_cast(10), "example3", - std::string_view("view1")); - LOG_INFO(logger, "quick logging example fox {}", 2); - LOG_INFO(logger, "example over quick {} {} {} {} {} {} {}", 6LL, 1, 5L, 2, 4.0f, 8ULL, "example3"); - LOG_INFO(logger, "quick lazy test example {} {} {} {} {} {} {}", 4.0f, std::string("str2"), 2, - 7UL, false, "example2", 1); - LOG_INFO(logger, "dog jumps fox lazy {} {} {} {} {} {}", true, 3.0, std::string("str2"), false, - std::string("str1"), 5L); - LOG_INFO(logger, "brown quick dog jumps {} {} {}", 6LL, 4.0f, false); - LOG_INFO(logger, "test lazy over brown {} {} {}", std::string("str2"), static_cast(9), - "example2"); - LOG_INFO(logger, "fox example quick jumps {} {} {} {}", 6LL, std::string("str2"), 2, 8ULL); - LOG_INFO(logger, "logging brown dog over {} {} {} {}", 4.0f, 2, std::string_view("view2"), 6LL); - LOG_INFO(logger, "over fox brown lazy {} {} {} {} {} {} {} {}", static_cast(10), - 4.0f, true, 7UL, 5L, "example2", std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "fox quick lazy {} {} {} {} {} {} {} {} {}", "example1", - std::string_view("view2"), true, 7UL, 2, std::string_view("view1"), - static_cast(9), std::string("str1"), std::string("str2")); - LOG_INFO(logger, "test brown example fox {} {} {} {} {} {} {} {} {} {}", 1, static_cast(9), - false, true, 5L, std::string("str2"), "example3", 8ULL, 6LL, 7UL); - LOG_INFO(logger, "dog lazy logging example {} {} {} {} {} {}", 5L, - static_cast(10), 3.0, 1, true, 8ULL); - LOG_INFO(logger, "logging quick fox test {} {} {} {} {} {} {} {} {}", true, false, std::string("str1"), 7UL, - static_cast(9), static_cast(10), 5L, "example3", std::string("str2")); - LOG_INFO(logger, "test quick over brown {} {}", false, "example3"); - LOG_INFO(logger, "lazy quick over test {} {} {} {} {} {} {}", std::string("str1"), - static_cast(9), std::string("str2"), std::string_view("view1"), 8ULL, 7UL, 6LL); - LOG_INFO(logger, "fox brown example {} {} {} {} {} {} {}", 7UL, static_cast(10), - 6LL, true, false, "example2", std::string("str2")); - LOG_INFO(logger, "brown logging quick {} {} {} {} {} {} {} {} {} {}", "example3", 4.0f, 5L, true, - "example1", "example2", static_cast(9), 2, 6LL, 1); - LOG_INFO(logger, "test dog jumps {} {}", "example2", 4.0f); - LOG_INFO(logger, "brown test dog {} {}", 5L, 3.0); - LOG_INFO(logger, "dog jumps test {} {} {} {} {}", 8ULL, std::string("str1"), 6LL, 1, false); - LOG_INFO(logger, "example over jumps {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), - 3.0, 2, "example1", 5L, 6LL, std::string_view("view2"), 4.0f, static_cast(9), 8ULL); - LOG_INFO(logger, "quick logging brown jumps {} {} {} {} {}", 7UL, 1, - static_cast(10), true, "example3"); - LOG_INFO(logger, "test dog fox brown {} {} {} {} {} {} {} {}", std::string_view("view2"), 6LL, - 7UL, std::string("str1"), static_cast(9), true, std::string_view("view1"), false); - LOG_INFO(logger, "over lazy brown {} {} {} {} {} {} {}", "example3", 8ULL, std::string_view("view1"), - false, std::string("str1"), std::string_view("view2"), "example2"); - LOG_INFO(logger, "dog over logging lazy {} {} {} {} {} {} {} {}", "example1", 4.0f, "example3", - true, 8ULL, std::string("str2"), std::string_view("view1"), 3.0); - LOG_INFO(logger, "logging over dog quick {} {} {} {} {} {}", 5L, std::string("str2"), 7UL, - "example3", std::string("str1"), 4.0f); - LOG_INFO(logger, "dog example test {} {} {} {}", static_cast(10), - std::string("str1"), "example2", std::string_view("view2")); - LOG_INFO(logger, "quick example jumps {} {} {} {} {}", 1, 7UL, 3.0, "example3", 6LL); - LOG_INFO(logger, "quick brown dog {} {} {} {} {} {} {} {} {}", std::string_view("view2"), false, - 6LL, static_cast(10), 5L, "example2", 8ULL, 7UL, true); - LOG_INFO(logger, "example brown test quick {} {} {}", 3.0, 2, static_cast(10)); - LOG_INFO(logger, "test over fox {} {} {} {}", "example3", "example1", true, static_cast(9)); - LOG_INFO(logger, "logging quick example {} {} {} {} {}", static_cast(9), 5L, - std::string_view("view1"), "example1", 2); - LOG_INFO(logger, "example brown over {} {} {} {} {} {}", std::string_view("view2"), - std::string("str2"), 2, 7UL, std::string_view("view1"), static_cast(10)); - LOG_INFO(logger, "dog test lazy fox {} {} {} {} {} {} {}", std::string("str2"), 8ULL, 6LL, 2, - 4.0f, "example3", false); - LOG_INFO(logger, "test brown dog {}", false); - LOG_INFO(logger, "jumps example lazy {}", 4.0f); - LOG_INFO(logger, "over lazy jumps logging {} {} {} {} {} {} {} {} {} {}", 8ULL, - static_cast(10), 3.0, std::string_view("view2"), false, true, 5L, 4.0f, - static_cast(9), "example1"); - LOG_INFO(logger, "fox lazy brown jumps {} {} {} {} {} {} {}", std::string("str2"), - static_cast(10), 5L, 1, "example2", 4.0f, false); - LOG_INFO(logger, "example brown logging jumps {} {} {} {} {} {} {} {}", 6LL, std::string_view("view1"), - 2, false, static_cast(9), static_cast(10), "example1", 4.0f); - LOG_INFO(logger, "fox test brown {} {} {} {} {}", static_cast(9), 3.0, 8ULL, 5L, 4.0f); - LOG_INFO(logger, "over logging dog test {} {} {}", std::string_view("view1"), 8ULL, - static_cast(10)); - LOG_INFO(logger, "brown dog jumps test {} {} {}", 3.0, "example2", 5L); - LOG_INFO(logger, "jumps example lazy {} {}", "example1", false); - LOG_INFO(logger, "lazy dog test {} {} {} {}", std::string("str2"), - static_cast(10), false, static_cast(9)); - LOG_INFO(logger, "test fox lazy logging {} {}", static_cast(10), 8ULL); - LOG_INFO(logger, "logging jumps fox {} {} {}", true, 3.0, 5L); - LOG_INFO(logger, "quick example lazy brown {} {} {} {} {} {} {} {} {} {}", "example1", true, 3.0, 7UL, - 8ULL, std::string("str2"), std::string("str1"), 4.0f, "example2", std::string_view("view2")); - LOG_INFO(logger, "brown example over lazy {} {} {} {} {} {} {}", std::string_view("view1"), 3.0, - 4.0f, "example3", std::string("str2"), 8ULL, 6LL); - LOG_INFO(logger, "example test brown quick {} {} {} {} {} {}", "example2", 7UL, 4.0f, - static_cast(9), "example1", 2); - LOG_INFO(logger, "over logging example jumps {} {} {} {} {} {}", static_cast(10), - 6LL, 4.0f, 7UL, 3.0, true); - LOG_INFO(logger, "example fox lazy test {} {} {} {} {} {}", static_cast(9), 6LL, 7UL, 1, 4.0f, 8ULL); - LOG_INFO(logger, "brown lazy quick {} {} {} {} {} {} {}", static_cast(9), 6LL, true, - static_cast(10), "example2", false, 5L); - LOG_INFO(logger, "quick example lazy {}", std::string_view("view2")); - LOG_INFO(logger, "fox example over {} {} {}", static_cast(10), std::string_view("view2"), 5L); - LOG_INFO(logger, "dog over fox {} {} {} {}", 1, std::string_view("view2"), 2, std::string("str2")); - LOG_INFO(logger, "test jumps quick dog {} {} {} {} {} {} {}", std::string("str1"), 1, "example3", - 4.0f, static_cast(10), 8ULL, "example2"); - LOG_INFO(logger, "example jumps lazy {} {} {} {} {}", std::string("str2"), "example2", - static_cast(9), 6LL, 8ULL); - LOG_INFO(logger, "quick jumps lazy example {} {} {} {} {} {} {}", 4.0f, 7UL, false, - static_cast(10), "example2", static_cast(9), 1); - LOG_INFO(logger, "dog quick brown {} {} {} {} {}", false, 4.0f, "example3", 7UL, true); - LOG_INFO(logger, "quick brown jumps {} {} {} {} {} {} {}", 2, 3.0, "example3", 1, 8ULL, - static_cast(10), std::string("str1")); - LOG_INFO(logger, "test lazy dog quick {} {} {} {} {}", std::string("str2"), static_cast(9), - 8ULL, false, static_cast(10)); - LOG_INFO(logger, "over quick lazy fox {} {}", "example1", std::string_view("view1")); - LOG_INFO(logger, "quick over lazy {} {} {} {} {} {}", false, static_cast(9), 2, 1, 3.0, - std::string("str1")); - LOG_INFO(logger, "fox lazy logging {} {} {} {} {} {} {}", 4.0f, "example3", true, false, - std::string_view("view2"), static_cast(9), std::string("str1")); - LOG_INFO(logger, "example jumps dog fox {} {} {} {}", std::string_view("view1"), - static_cast(10), std::string("str1"), 8ULL); - LOG_INFO(logger, "dog lazy test logging {} {} {} {} {} {} {} {}", std::string_view("view2"), 8ULL, - 2, std::string("str1"), static_cast(9), "example3", std::string("str2"), true); - LOG_INFO(logger, "logging dog jumps {} {} {} {} {} {} {} {} {} {}", "example2", 1, false, 6LL, - 3.0, static_cast(10), std::string_view("view2"), 4.0f, true, "example3"); - LOG_INFO(logger, "example dog logging quick {} {} {} {} {} {}", false, "example3", 4.0f, - std::string("str1"), 7UL, 5L); - LOG_INFO(logger, "test fox quick brown {}", std::string_view("view2")); - LOG_INFO(logger, "example quick logging {} {} {} {} {} {} {}", static_cast(10), - std::string("str1"), 2, "example2", std::string("str2"), std::string_view("view2"), - "example1"); - LOG_INFO(logger, "jumps fox quick test {} {} {} {} {} {} {} {}", 4.0f, 5L, "example2", 3.0, - static_cast(9), 1, 8ULL, std::string_view("view1")); - LOG_INFO(logger, "logging lazy jumps quick {} {} {} {} {}", 7UL, "example2", - std::string_view("view2"), 4.0f, 3.0); - LOG_INFO(logger, "test logging lazy over {} {} {} {} {} {} {} {}", "example1", - std::string_view("view2"), 6LL, 5L, std::string("str1"), 8ULL, 3.0, static_cast(9)); - LOG_INFO(logger, "logging test fox {}", 8ULL); - LOG_INFO(logger, "dog lazy jumps {} {} {} {} {} {} {}", 3.0, 7UL, "example2", 1, - std::string_view("view2"), 6LL, std::string_view("view1")); - LOG_INFO(logger, "dog over fox jumps {} {} {} {} {} {} {} {}", static_cast(9), - std::string_view("view2"), 2, "example2", 6LL, 8ULL, std::string("str2"), - std::string_view("view1")); - LOG_INFO(logger, "logging quick lazy {} {} {} {} {}", 8ULL, std::string("str1"), 4.0f, - std::string("str2"), "example2"); - LOG_INFO(logger, "dog test fox {} {} {} {} {} {} {} {} {}", "example1", std::string("str2"), 1, - 3.0, std::string_view("view2"), 7UL, false, 8ULL, 2); - LOG_INFO(logger, "over dog quick jumps {} {} {} {} {} {} {} {} {}", std::string("str2"), 8ULL, - "example3", 3.0, false, true, 2, std::string_view("view2"), static_cast(9)); - LOG_INFO(logger, "quick logging brown {} {} {} {} {}", "example3", - static_cast(10), 8ULL, "example1", false); - LOG_INFO(logger, "lazy example logging fox {} {} {} {} {} {} {}", 7UL, 6LL, 3.0, false, 5L, - std::string("str2"), true); - LOG_INFO(logger, "fox over brown lazy {} {} {} {} {}", 3.0, 6LL, true, std::string_view("view2"), - "example3"); - LOG_INFO(logger, "test fox quick {} {} {} {} {} {} {} {} {}", "example2", 4.0f, std::string("str2"), - static_cast(10), 6LL, 5L, static_cast(9), false, true); - LOG_INFO(logger, "brown quick lazy dog {} {} {} {} {} {}", static_cast(9), "example1", 2, - 4.0f, 8ULL, 7UL); - LOG_INFO(logger, "example dog logging {} {}", true, "example1"); - LOG_INFO(logger, "logging example jumps over {} {} {} {}", 4.0f, static_cast(10), - "example2", static_cast(9)); - LOG_INFO(logger, "lazy brown example test {} {} {} {} {} {}", true, 1, static_cast(9), - 8ULL, 3.0, std::string("str1")); - LOG_INFO(logger, "test example jumps {} {} {} {} {}", "example3", 4.0f, true, std::string_view("view1"), 6LL); - LOG_INFO(logger, "fox quick over {} {} {} {} {} {} {}", 3.0, std::string_view("view1"), 2, 8ULL, - 7UL, true, "example3"); - LOG_INFO(logger, "test logging jumps brown {}", 1); - LOG_INFO(logger, "jumps lazy logging quick {}", "example2"); - LOG_INFO(logger, "lazy quick dog logging {} {} {} {} {} {}", "example3", 5L, "example1", 3.0, - std::string("str2"), std::string("str1")); - LOG_INFO(logger, "example test logging {} {}", std::string_view("view2"), "example1"); - LOG_INFO(logger, "brown logging dog fox {} {} {} {} {} {} {} {} {} {}", 1, static_cast(9), - "example2", 7UL, 8ULL, std::string("str2"), "example3", 5L, 2, 6LL); - LOG_INFO(logger, "logging lazy dog {} {} {}", std::string("str1"), "example2", "example1"); - LOG_INFO(logger, "test lazy fox brown {} {} {}", static_cast(9), std::string_view("view1"), - static_cast(10)); - LOG_INFO(logger, "over test example fox {}", std::string_view("view2")); - LOG_INFO(logger, "fox test lazy {}", std::string("str2")); - LOG_INFO(logger, "over test dog {} {} {} {}", std::string("str2"), 7UL, std::string("str1"), 8ULL); - LOG_INFO(logger, "fox example brown {} {} {} {} {} {} {} {} {}", true, std::string("str1"), 1, - std::string_view("view1"), "example2", "example1", std::string_view("view2"), 6LL, 7UL); - LOG_INFO(logger, "test jumps fox example {} {} {} {} {} {} {} {}", static_cast(10), - "example3", static_cast(9), 5L, std::string("str2"), 8ULL, true, 7UL); - LOG_INFO(logger, "fox jumps over {} {} {} {} {} {} {} {}", 5L, std::string_view("view1"), 4.0f, - 8ULL, "example2", std::string("str1"), "example3", static_cast(9)); - LOG_INFO(logger, "jumps fox logging lazy {} {} {} {} {} {} {} {}", "example2", 3.0, 5L, - std::string("str2"), 2, 6LL, 8ULL, 1); - LOG_INFO(logger, "quick lazy dog example {}", static_cast(9)); - LOG_INFO(logger, "jumps example lazy {} {} {} {} {} {} {} {} {}", 1, 3.0, 4.0f, true, 5L, 8ULL, - "example3", std::string_view("view1"), 7UL); - LOG_INFO(logger, "over test quick {} {} {}", static_cast(9), 2, 5L); - LOG_INFO(logger, "jumps fox lazy {} {} {} {} {}", "example2", 3.0, "example3", - std::string_view("view1"), std::string_view("view2")); - LOG_INFO(logger, "jumps dog test {} {} {} {} {} {} {}", false, 7UL, std::string("str2"), 8ULL, - std::string_view("view2"), 6LL, std::string("str1")); - LOG_INFO(logger, "fox quick brown {} {} {} {}", 7UL, "example2", std::string_view("view1"), 5L); - LOG_INFO(logger, "over quick jumps {} {} {} {} {} {} {} {} {}", 4.0f, 6LL, static_cast(9), - 3.0, "example2", std::string("str1"), "example3", "example1", std::string_view("view1")); - LOG_INFO(logger, "lazy jumps over fox {} {} {} {} {} {} {} {} {}", std::string_view("view2"), 1, - 3.0, static_cast(10), std::string("str2"), "example2", - static_cast(9), true, 6LL); - LOG_INFO(logger, "jumps dog brown example {} {} {} {} {} {}", 8ULL, 6LL, std::string("str2"), - "example2", false, 4.0f); - LOG_INFO(logger, "test fox jumps logging {} {} {} {} {} {} {} {} {} {}", false, "example2", 4.0f, - std::string("str1"), "example3", true, std::string_view("view2"), 1, std::string("str2"), - static_cast(10)); - LOG_INFO(logger, "logging test example over {}", false); - LOG_INFO(logger, "jumps brown dog {}", 5L); - LOG_INFO(logger, "dog lazy brown quick {} {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string("str1"), "example3", 8ULL, std::string_view("view1"), "example1", "example2", - false, 6LL, static_cast(9)); - LOG_INFO(logger, "lazy fox brown {} {} {}", std::string_view("view2"), static_cast(10), 5L); - LOG_INFO(logger, "jumps brown lazy {} {} {} {} {} {} {}", std::string_view("view1"), - static_cast(9), 1, 2, std::string("str1"), 4.0f, static_cast(10)); - LOG_INFO(logger, "jumps lazy fox {} {} {} {} {} {} {} {} {} {}", static_cast(10), - 3.0, 2, std::string("str2"), 6LL, "example2", "example3", true, 4.0f, std::string("str1")); - LOG_INFO(logger, "test logging dog {} {} {} {} {} {}", false, std::string_view("view2"), 3.0, 6LL, - "example1", 2); - LOG_INFO(logger, "dog logging example fox {} {} {} {} {} {} {} {} {}", false, static_cast(9), - std::string("str1"), static_cast(10), 6LL, true, 1, 3.0, std::string("str2")); - LOG_INFO(logger, "fox test lazy {} {} {} {} {} {} {}", static_cast(10), - std::string("str2"), 2, true, 3.0, static_cast(9), std::string_view("view2")); - LOG_INFO(logger, "dog test over {} {} {}", std::string_view("view1"), 2, static_cast(9)); - LOG_INFO(logger, "fox example test {} {} {} {} {} {} {}", 5L, std::string_view("view1"), - "example3", 8ULL, std::string("str1"), true, 7UL); - LOG_INFO(logger, "dog over quick {} {} {} {}", "example3", 2, std::string_view("view1"), - static_cast(10)); - LOG_INFO(logger, "lazy example over {} {}", 4.0f, true); - LOG_INFO(logger, "over brown jumps fox {} {} {} {} {} {} {} {}", "example1", std::string_view("view2"), - 2, static_cast(9), std::string("str2"), 5L, std::string("str1"), 1); - LOG_INFO(logger, "over dog fox quick {} {} {} {} {} {}", static_cast(9), false, - std::string("str2"), 8ULL, "example2", "example3"); - LOG_INFO(logger, "fox quick jumps example {} {} {} {} {}", 2, "example3", static_cast(9), - std::string_view("view2"), std::string("str1")); - LOG_INFO(logger, "test fox logging {} {} {} {} {} {}", "example2", 4.0f, - static_cast(10), 6LL, "example3", std::string("str1")); - LOG_INFO(logger, "quick logging lazy {} {} {} {} {} {} {} {} {}", 1, 8ULL, 4.0f, 6LL, - std::string("str2"), std::string_view("view1"), 2, true, false); - LOG_INFO(logger, "example lazy quick fox {} {} {} {} {} {} {} {} {} {}", false, 7UL, 3.0, true, - 6LL, 5L, 8ULL, 1, "example1", std::string_view("view1")); - LOG_INFO(logger, "jumps example over {} {} {} {} {}", true, 2, std::string("str1"), - std::string_view("view2"), 3.0); - LOG_INFO(logger, "test dog jumps fox {} {} {} {} {}", "example2", "example1", 4.0f, 5L, 3.0); - LOG_INFO(logger, "brown over jumps {}", 8ULL); - LOG_INFO(logger, "test jumps quick {} {} {}", 1, 5L, "example1"); - LOG_INFO(logger, "example test jumps brown {} {} {}", static_cast(10), 5L, - "example2"); - LOG_INFO(logger, "dog brown test lazy {} {} {} {} {} {} {}", std::string("str2"), 7UL, "example2", - 5L, 2, false, "example3"); - LOG_INFO(logger, "example fox dog over {} {} {} {} {} {} {} {}", true, 3.0, 8ULL, "example3", 1, - std::string("str2"), static_cast(9), 7UL); - LOG_INFO(logger, "over dog jumps {} {}", std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "lazy quick jumps {} {} {} {} {} {} {}", static_cast(9), 1, 2, false, - 4.0f, std::string_view("view1"), 3.0); - LOG_INFO(logger, "over quick test logging {} {} {} {} {} {} {} {} {}", 2, std::string("str1"), - 7UL, 5L, "example2", true, "example1", std::string("str2"), 4.0f); - LOG_INFO(logger, "over test logging {} {} {} {} {} {} {} {} {}", 5L, 4.0f, std::string_view("view1"), - std::string_view("view2"), 3.0, std::string("str1"), "example3", 8ULL, 1); - LOG_INFO(logger, "test lazy logging dog {} {}", 7UL, "example3"); - LOG_INFO(logger, "example fox lazy logging {} {} {} {} {} {} {} {} {}", 1, 8ULL, 3.0, - std::string_view("view2"), "example3", std::string_view("view1"), true, - static_cast(10), "example2"); - LOG_INFO(logger, "dog over test {} {} {}", 1, 8ULL, std::string_view("view1")); - LOG_INFO(logger, "dog logging test brown {} {} {}", std::string_view("view1"), 5L, - static_cast(10)); - LOG_INFO(logger, "fox quick over example {} {} {}", static_cast(10), "example3", true); - LOG_INFO(logger, "lazy jumps example {} {} {}", 8ULL, 3.0, true); - LOG_INFO(logger, "quick logging test {} {} {} {} {} {} {} {}", 3.0, std::string_view("view1"), 1, - true, std::string_view("view2"), static_cast(9), std::string("str2"), 4.0f); - LOG_INFO(logger, "quick dog fox example {}", 5L); - LOG_INFO(logger, "lazy fox brown {} {} {} {} {} {}", true, "example1", 3.0, "example3", 7UL, - std::string("str1")); - LOG_INFO(logger, "fox jumps quick test {} {} {} {} {}", std::string("str2"), - std::string_view("view2"), static_cast(9), "example2", 6LL); - LOG_INFO(logger, "brown logging fox {} {} {} {} {} {} {} {} {} {}", 2, std::string_view("view2"), - "example2", std::string("str1"), "example1", 7UL, 6LL, false, 3.0, "example3"); - LOG_INFO(logger, "dog lazy over logging {} {} {} {}", std::string("str2"), 1, - std::string_view("view1"), std::string_view("view2")); - LOG_INFO(logger, "dog test over {} {} {} {}", std::string_view("view2"), 5L, "example1", - static_cast(10)); - LOG_INFO(logger, "dog example quick logging {} {} {}", 3.0, std::string_view("view1"), 8ULL); - LOG_INFO(logger, "dog lazy test {} {} {} {} {} {} {}", true, static_cast(9), - std::string_view("view1"), 2, false, std::string("str2"), 5L); - LOG_INFO(logger, "test jumps quick {} {} {}", std::string("str1"), 1, std::string_view("view1")); - LOG_INFO(logger, "example lazy brown {} {} {} {} {} {} {}", std::string("str2"), std::string_view("view1"), - 2, static_cast(10), 1, std::string_view("view2"), 8ULL); - LOG_INFO(logger, "test example fox {} {} {} {} {} {} {}", "example1", "example3", true, 8ULL, - static_cast(10), 6LL, false); - LOG_INFO(logger, "test brown over fox {} {} {} {} {} {}", "example1", std::string_view("view1"), - 8ULL, static_cast(9), 6LL, false); - LOG_INFO(logger, "jumps dog test logging {} {}", "example1", 4.0f); - LOG_INFO(logger, "fox quick lazy jumps {} {} {}", false, 6LL, 1); - LOG_INFO(logger, "fox brown test lazy {} {} {} {} {} {} {}", static_cast(9), - std::string_view("view2"), "example3", std::string("str2"), std::string_view("view1"), false, true); - LOG_INFO(logger, "jumps fox brown lazy {} {} {} {} {} {} {} {}", static_cast(10), - 2, "example1", true, static_cast(9), std::string_view("view2"), "example3", 6LL); - LOG_INFO(logger, "logging lazy jumps test {} {} {} {} {}", 7UL, std::string_view("view2"), 8ULL, - "example1", static_cast(9)); - LOG_INFO(logger, "jumps logging test {} {} {} {} {} {} {} {}", 2, false, 5L, 6LL, 7UL, 8ULL, 4.0f, - std::string("str2")); - LOG_INFO(logger, "fox quick brown test {} {} {} {} {} {}", "example2", 7UL, - static_cast(10), false, "example3", std::string_view("view2")); - LOG_INFO(logger, "brown logging lazy {} {} {} {} {} {}", false, std::string_view("view1"), - std::string("str1"), std::string_view("view2"), 3.0, "example1"); - LOG_INFO(logger, "test fox dog {} {} {}", std::string_view("view2"), 6LL, static_cast(10)); - LOG_INFO(logger, "dog over jumps {} {} {} {} {} {}", true, 3.0, "example1", "example3", 1, 2); - LOG_INFO(logger, "fox example over {} {} {}", "example3", 8ULL, 6LL); - LOG_INFO(logger, "logging test example {} {} {} {}", std::string_view("view1"), 7UL, 3.0, 2); - LOG_INFO(logger, "jumps test dog {} {} {}", 1, 3.0, 2); - LOG_INFO(logger, "brown test logging fox {} {} {} {} {} {} {} {}", 8ULL, 4.0f, 7UL, - std::string("str2"), std::string_view("view1"), "example3", false, 6LL); - LOG_INFO(logger, "quick dog over {} {} {} {} {} {} {} {}", true, 5L, 4.0f, "example1", false, - "example2", static_cast(10), 3.0); - LOG_INFO(logger, "over quick logging {} {} {}", 6LL, static_cast(10), 3.0); - LOG_INFO(logger, "brown over lazy logging {} {} {} {} {} {}", "example2", "example1", 7UL, 4.0f, - std::string_view("view2"), "example3"); - LOG_INFO(logger, "lazy quick jumps {} {} {} {} {} {} {}", 3.0, 5L, false, 6LL, - std::string_view("view2"), "example1", static_cast(10)); - LOG_INFO(logger, "over brown dog logging {} {}", "example3", "example1"); - LOG_INFO(logger, "lazy example jumps {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - "example1", 6LL, "example3", false, static_cast(9), "example2", std::string("str2"), 8ULL); - LOG_INFO(logger, "brown logging dog fox {} {} {}", std::string_view("view2"), 3.0, 2); - LOG_INFO(logger, "over test brown {} {} {} {} {} {} {} {}", std::string("str2"), 7UL, false, true, - 1, 5L, std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "fox brown logging {} {} {} {} {} {} {} {}", 2, false, 6LL, 1, 4.0f, - std::string_view("view1"), "example1", static_cast(9)); - LOG_INFO(logger, "jumps dog quick {} {} {} {} {} {} {}", std::string("str1"), 7UL, true, 4.0f, 5L, 2, 3.0); - LOG_INFO(logger, "example over lazy quick {} {} {} {} {} {} {}", 6LL, 8ULL, true, - static_cast(10), 4.0f, 2, std::string("str2")); - LOG_INFO(logger, "brown test quick {} {} {} {} {}", 3.0, "example1", 7UL, static_cast(9), 5L); - LOG_INFO(logger, "test lazy jumps {} {} {} {} {} {} {} {} {} {}", 7UL, 1, std::string("str2"), - std::string_view("view1"), "example3", "example2", static_cast(10), 6LL, - 4.0f, std::string("str1")); - LOG_INFO(logger, "logging over quick test {} {} {} {} {} {} {} {} {} {}", true, std::string("str1"), - 5L, 6LL, 3.0, std::string_view("view2"), 8ULL, static_cast(10), false, 2); - LOG_INFO(logger, "jumps brown logging {} {} {} {}", "example1", std::string("str1"), - std::string_view("view1"), 7UL); - LOG_INFO(logger, "test fox dog quick {} {} {} {} {} {} {} {} {}", static_cast(10), - 6LL, std::string("str1"), 2, true, "example1", std::string_view("view2"), false, 3.0); - LOG_INFO(logger, "fox dog logging {} {} {}", false, std::string("str1"), static_cast(10)); - LOG_INFO(logger, "lazy brown logging over {} {}", 7UL, std::string("str1")); - LOG_INFO(logger, "quick brown lazy over {}", "example3"); - LOG_INFO(logger, "over logging test {} {} {} {} {} {}", std::string_view("view2"), - static_cast(9), 2, std::string("str1"), 7UL, true); - LOG_INFO(logger, "over quick dog jumps {} {} {}", static_cast(9), "example2", - std::string_view("view1")); - LOG_INFO(logger, "example test fox lazy {} {} {} {} {} {} {} {} {} {}", 6LL, 1, true, - std::string_view("view1"), static_cast(9), std::string_view("view2"), - std::string("str1"), 8ULL, "example3", false); - LOG_INFO(logger, "example fox quick over {} {} {} {} {} {} {} {} {}", 7UL, static_cast(9), - static_cast(10), "example2", true, 5L, 4.0f, 2, 8ULL); - LOG_INFO(logger, "quick lazy test brown {} {} {} {} {} {} {} {} {}", 8ULL, 6LL, 3.0, - std::string("str1"), 2, 5L, "example3", false, 1); - LOG_INFO(logger, "example dog jumps lazy {}", std::string_view("view2")); - LOG_INFO(logger, "fox over quick {} {} {} {} {} {} {} {} {}", 7UL, static_cast(9), - std::string_view("view1"), std::string("str2"), static_cast(10), - "example1", 1, 8ULL, true); - LOG_INFO(logger, "over jumps brown example {} {} {} {} {} {}", std::string_view("view1"), 2, - "example1", 6LL, static_cast(10), 5L); - LOG_INFO(logger, "fox test over jumps {} {} {} {} {} {} {} {} {} {}", "example2", "example1", 7UL, - "example3", 8ULL, std::string_view("view1"), 2, std::string("str2"), std::string("str1"), false); - LOG_INFO(logger, "logging jumps lazy {} {} {} {} {}", std::string("str2"), "example3", 6LL, - "example2", std::string("str1")); - LOG_INFO(logger, "example jumps logging {}", 8ULL); - LOG_INFO(logger, "logging test over {}", "example1"); - LOG_INFO(logger, "logging lazy test {} {} {} {} {} {} {} {} {}", "example2", 1, - static_cast(10), std::string_view("view2"), 3.0, static_cast(9), - 7UL, 5L, 8ULL); - LOG_INFO(logger, "logging dog test {} {} {}", std::string_view("view2"), 2, false); - LOG_INFO(logger, "jumps example test {} {} {} {} {}", 1, true, 2, std::string("str2"), "example3"); - LOG_INFO(logger, "jumps example brown {}", "example2"); - LOG_INFO(logger, "logging fox quick lazy {}", static_cast(9)); - LOG_INFO(logger, "logging over test jumps {} {} {} {}", std::string_view("view1"), 8ULL, - std::string_view("view2"), std::string("str2")); - LOG_INFO(logger, "quick test jumps {} {} {} {} {}", std::string("str2"), "example1", "example2", 8ULL, 1); - LOG_INFO(logger, "test lazy dog brown {} {} {}", 2, static_cast(9), 8ULL); - LOG_INFO(logger, "test quick over {} {}", std::string("str2"), "example1"); - LOG_INFO(logger, "quick dog fox {} {} {}", 5L, 8ULL, "example3"); - LOG_INFO(logger, "test lazy fox {} {}", std::string("str1"), std::string("str2")); - LOG_INFO(logger, "example brown dog {} {} {} {} {} {} {} {} {} {}", 4.0f, std::string("str2"), - "example1", 1, 5L, "example2", std::string_view("view2"), static_cast(9), - std::string("str1"), 7UL); - LOG_INFO(logger, "brown test example dog {} {} {} {} {}", "example3", false, - std::string_view("view2"), std::string_view("view1"), 3.0); - LOG_INFO(logger, "dog over lazy quick {} {} {} {} {} {} {} {} {} {}", 2, 6LL, - static_cast(9), std::string_view("view2"), std::string_view("view1"), - std::string("str1"), true, "example2", false, static_cast(10)); - LOG_INFO(logger, "brown lazy example {} {} {}", static_cast(9), true, 7UL); - LOG_INFO(logger, "jumps quick dog {} {}", std::string("str1"), 3.0); - LOG_INFO(logger, "brown test over quick {} {} {} {} {} {} {}", 3.0, true, std::string("str2"), - std::string_view("view2"), 7UL, static_cast(9), "example1"); - LOG_INFO(logger, "brown over example logging {} {} {} {} {}", 7UL, true, "example1", - std::string_view("view2"), 8ULL); - LOG_INFO(logger, "quick example test brown {} {} {} {} {} {} {} {} {} {}", std::string("str1"), - std::string_view("view2"), 2, 5L, "example1", 1, 6LL, 8ULL, "example3", 7UL); - LOG_INFO(logger, "lazy over logging {} {} {} {} {} {} {} {} {}", static_cast(10), 1, - 7UL, std::string_view("view1"), "example3", 8ULL, static_cast(9), "example2", 3.0); - LOG_INFO(logger, "test quick lazy {} {} {} {} {} {}", false, "example3", 6LL, 5L, "example1", - std::string_view("view2")); - LOG_INFO(logger, "dog logging fox {} {} {}", 4.0f, std::string("str1"), 2); - LOG_INFO(logger, "lazy logging example jumps {} {} {}", static_cast(10), - std::string("str1"), 3.0); - LOG_INFO(logger, "dog jumps test {} {} {} {} {} {}", "example2", std::string("str1"), 4.0f, - static_cast(9), "example1", std::string_view("view1")); - LOG_INFO(logger, "example jumps logging over {} {} {} {}", 7UL, "example1", std::string("str2"), - "example2"); - LOG_INFO(logger, "quick fox lazy {} {} {} {} {} {} {}", 1, 6LL, 3.0, 5L, - static_cast(10), 2, std::string("str2")); - LOG_INFO(logger, "quick jumps test {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 3.0, - 6LL, "example2", 7UL, true, std::string_view("view2"), static_cast(9), false); - LOG_INFO(logger, "jumps example quick lazy {} {}", false, std::string("str2")); - LOG_INFO(logger, "test brown quick {} {} {}", std::string("str2"), std::string("str1"), 4.0f); - LOG_INFO(logger, "lazy brown dog {} {} {} {} {} {}", std::string("str1"), 8ULL, "example2", 2, 7UL, false); - LOG_INFO(logger, "fox over dog lazy {} {} {}", 5L, 3.0, std::string("str1")); - LOG_INFO(logger, "over test quick jumps {} {} {} {} {} {}", std::string_view("view1"), "example3", - std::string("str2"), 8ULL, std::string("str1"), std::string_view("view2")); - LOG_INFO(logger, "quick test dog {} {} {} {} {} {} {} {} {} {}", 1, - static_cast(10), "example3", false, true, static_cast(9), 6LL, - std::string_view("view1"), "example1", 2); - LOG_INFO(logger, "over brown test jumps {} {} {} {} {} {} {} {}", std::string_view("view2"), 7UL, - std::string("str1"), static_cast(10), 4.0f, std::string_view("view1"), false, true); - LOG_INFO(logger, "test lazy jumps over {} {}", 1, static_cast(10)); - LOG_INFO(logger, "brown dog lazy {} {} {} {}", std::string_view("view1"), - static_cast(10), 7UL, true); - LOG_INFO(logger, "logging example dog over {}", std::string("str1")); - LOG_INFO(logger, "fox brown lazy logging {} {} {} {} {} {} {} {} {} {}", 2, 6LL, 4.0f, "example3", - std::string_view("view1"), "example2", true, 1, false, static_cast(10)); - LOG_INFO(logger, "over brown dog lazy {} {} {} {}", 6LL, 8ULL, std::string_view("view1"), 2); - LOG_INFO(logger, "lazy logging test {} {}", 2, "example1"); - LOG_INFO(logger, "quick fox jumps test {} {} {} {} {} {} {}", static_cast(10), - true, std::string_view("view1"), false, "example1", std::string_view("view2"), 1); - LOG_INFO(logger, "jumps test dog brown {} {} {} {} {} {} {}", 1, std::string("str2"), "example3", - std::string_view("view1"), static_cast(10), std::string("str1"), false); - LOG_INFO(logger, "example quick logging {} {} {} {} {}", 5L, static_cast(9), false, 2, - "example1"); - LOG_INFO(logger, "dog example fox test {} {} {} {} {} {} {}", 3.0, "example3", - std::string_view("view2"), false, 5L, 4.0f, "example2"); - LOG_INFO(logger, "dog lazy jumps {} {} {} {} {} {} {} {} {} {}", static_cast(10), - 3.0, "example2", "example1", 1, 6LL, 5L, 8ULL, 2, std::string_view("view2")); - LOG_INFO(logger, "fox over jumps quick {} {} {} {} {}", true, 3.0, static_cast(9), - std::string_view("view2"), 8ULL); - LOG_INFO(logger, "lazy jumps logging {} {}", std::string_view("view2"), 1); - LOG_INFO(logger, "quick logging over {} {} {} {} {} {}", 5L, std::string_view("view1"), 1, - std::string_view("view2"), false, 2); - LOG_INFO(logger, "logging over jumps example {}", std::string("str1")); - LOG_INFO(logger, "jumps example fox {} {}", 3.0, "example1"); - LOG_INFO(logger, "brown dog lazy {} {} {} {} {} {} {}", 5L, false, 7UL, "example2", - std::string_view("view1"), static_cast(9), "example3"); - LOG_INFO(logger, "lazy example over test {} {} {} {} {} {} {} {}", std::string("str1"), - std::string_view("view2"), "example1", std::string_view("view1"), "example3", 6LL, - "example2", 2); - LOG_INFO(logger, "quick logging fox brown {} {} {} {} {} {} {} {} {}", 3.0, 4.0f, - static_cast(9), 5L, false, 6LL, std::string("str1"), 1, std::string_view("view1")); - LOG_INFO(logger, "over example quick fox {} {} {} {} {}", false, 7UL, - static_cast(10), "example1", static_cast(9)); - LOG_INFO(logger, "jumps dog lazy {} {} {} {}", std::string("str1"), "example3", 1, std::string_view("view1")); - LOG_INFO(logger, "brown dog quick {} {} {} {} {} {} {} {}", std::string("str2"), 1, static_cast(9), - "example3", static_cast(10), 3.0, std::string_view("view2"), 4.0f); - LOG_INFO(logger, "jumps lazy quick {} {}", false, 1); - LOG_INFO(logger, "quick logging lazy {} {} {} {} {} {} {} {} {} {}", std::string("str1"), 8ULL, - 4.0f, 6LL, false, 1, static_cast(9), true, std::string_view("view2"), "example1"); - LOG_INFO(logger, "brown example fox {} {} {} {}", "example2", 8ULL, 3.0, 6LL); - LOG_INFO(logger, "dog over test {} {} {} {} {} {} {} {} {}", 5L, false, "example1", 1, 7UL, - static_cast(10), 8ULL, static_cast(9), 4.0f); - LOG_INFO(logger, "test fox logging quick {}", "example2"); - LOG_INFO(logger, "lazy brown example quick {} {} {} {} {}", std::string_view("view1"), true, 5L, - std::string("str1"), static_cast(10)); - LOG_INFO(logger, "example dog jumps logging {} {} {} {} {} {} {} {}", 5L, 8ULL, 4.0f, - static_cast(10), std::string("str2"), static_cast(9), 6LL, false); - LOG_INFO(logger, "over test brown {} {} {}", 2, 4.0f, 3.0); - LOG_INFO(logger, "over example brown quick {}", 5L); - LOG_INFO(logger, "over example jumps lazy {} {}", std::string_view("view1"), - static_cast(10)); - LOG_INFO(logger, "fox lazy over logging {} {} {} {} {} {}", 3.0, std::string_view("view1"), true, - 5L, 1, std::string("str1")); - LOG_INFO(logger, "test jumps example logging {} {} {} {} {} {} {} {}", "example2", 5L, 7UL, 6LL, - std::string_view("view1"), "example3", "example1", std::string("str2")); - LOG_INFO(logger, "brown dog fox {} {} {}", true, std::string("str1"), 5L); - LOG_INFO(logger, "example brown over {} {} {} {} {}", std::string_view("view1"), "example2", 2, - std::string_view("view2"), 6LL); - LOG_INFO(logger, "fox dog test {} {} {} {}", static_cast(10), std::string("str1"), 8ULL, true); - LOG_INFO(logger, "example quick lazy {} {}", 2, 1); - LOG_INFO(logger, "jumps fox over {} {}", static_cast(9), true); - LOG_INFO(logger, "dog logging over lazy {} {} {}", "example1", std::string("str1"), 4.0f); - LOG_INFO(logger, "quick dog lazy example {} {} {}", 3.0, 5L, 7UL); - LOG_INFO(logger, "over fox quick {} {} {} {} {} {} {} {} {}", 4.0f, static_cast(10), - std::string_view("view1"), "example1", false, std::string("str1"), 6LL, 3.0, 1); - LOG_INFO(logger, "lazy example logging quick {} {}", std::string("str2"), 1); - LOG_INFO(logger, "jumps fox dog test {} {} {} {}", 3.0, "example2", 8ULL, 5L); - LOG_INFO(logger, "quick example logging {} {} {} {} {}", std::string_view("view2"), 3.0, 8ULL, - std::string("str2"), 5L); - LOG_INFO(logger, "lazy example test over {} {} {} {} {} {}", 8ULL, 3.0, 1, - std::string_view("view2"), std::string("str2"), "example1"); - LOG_INFO(logger, "dog example jumps {} {} {} {} {} {} {} {}", static_cast(9), 7UL, 8ULL, - "example1", 5L, "example3", 6LL, std::string("str1")); - LOG_INFO(logger, "test jumps logging quick {} {} {}", std::string_view("view1"), 5L, false); - LOG_INFO(logger, "fox jumps over {} {} {} {} {} {} {} {} {} {}", std::string("str2"), - static_cast(9), std::string_view("view2"), 1, "example1", "example3", - static_cast(10), 3.0, 5L, "example2"); - LOG_INFO(logger, "dog logging jumps test {} {} {} {} {} {} {} {} {}", "example3", 8ULL, - "example1", 6LL, std::string("str2"), static_cast(10), 2, 1, false); - LOG_INFO(logger, "quick fox jumps {} {} {} {} {} {} {} {}", true, 6LL, std::string_view("view1"), - 8ULL, static_cast(10), "example2", 1, 2); - LOG_INFO(logger, "jumps over test logging {} {} {} {} {} {}", std::string("str2"), static_cast(9), - std::string_view("view1"), "example3", "example2", std::string_view("view2")); - LOG_INFO(logger, "example brown fox dog {} {} {} {} {}", 2, true, 1, 6LL, std::string("str2")); - LOG_INFO(logger, "jumps dog example {} {} {} {} {} {} {} {} {}", 8ULL, 2, std::string_view("view2"), - 1, std::string("str1"), "example3", "example2", static_cast(10), true); - LOG_INFO(logger, "example over brown {} {} {} {} {} {} {} {} {} {}", "example3", - std::string_view("view1"), 5L, 4.0f, std::string("str1"), 6LL, true, "example2", 2, 8ULL); - LOG_INFO(logger, "dog brown quick example {} {} {} {} {} {} {} {} {} {}", 7UL, "example3", true, - 8ULL, 1, 4.0f, false, 3.0, std::string("str1"), "example1"); - LOG_INFO(logger, "jumps lazy logging {} {} {} {} {}", 6LL, 8ULL, 7UL, std::string("str1"), - std::string("str2")); - LOG_INFO(logger, "example quick jumps {} {} {} {} {} {} {} {}", 1, 6LL, std::string_view("view2"), - "example1", std::string("str2"), std::string("str1"), 5L, false); - LOG_INFO(logger, "test dog jumps over {} {} {} {} {} {} {} {} {}", "example1", - std::string_view("view2"), 6LL, 8ULL, true, "example3", 2, 1, std::string("str1")); - LOG_INFO(logger, "brown dog fox {} {} {} {} {} {} {} {}", 2, 5L, static_cast(9), - "example1", 3.0, "example3", false, std::string("str1")); - LOG_INFO(logger, "over jumps lazy {} {} {} {} {} {} {} {}", static_cast(9), 2, 1, true, - 3.0, 8ULL, 4.0f, std::string_view("view1")); - LOG_INFO(logger, "example brown test {} {} {} {} {} {}", 7UL, 6LL, std::string("str1"), - "example2", std::string_view("view1"), static_cast(10)); - LOG_INFO(logger, "jumps brown over fox {} {}", 7UL, 1); - LOG_INFO(logger, "lazy example over {} {} {} {} {} {} {} {}", true, false, 6LL, - std::string_view("view1"), std::string("str2"), std::string_view("view2"), "example2", 3.0); - LOG_INFO(logger, "logging example dog fox {} {} {} {}", 1, std::string_view("view1"), - std::string("str2"), 4.0f); - LOG_INFO(logger, "fox lazy brown quick {} {} {} {} {}", 3.0, false, std::string_view("view1"), - "example2", true); - LOG_INFO(logger, "test fox dog quick {} {} {} {}", "example2", "example3", 3.0, static_cast(9)); - LOG_INFO(logger, "jumps dog test {} {} {} {} {}", 5L, 7UL, true, 1, std::string("str1")); - LOG_INFO(logger, "quick jumps fox lazy {} {} {} {}", false, true, std::string("str1"), "example2"); - LOG_INFO(logger, "jumps lazy over fox {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - "example1", 1, 3.0, std::string("str1"), true, "example2", "example3", static_cast(9)); - LOG_INFO(logger, "brown fox lazy {} {} {} {} {} {}", true, static_cast(10), 6LL, - "example3", static_cast(9), std::string_view("view1")); - LOG_INFO(logger, "brown fox over {} {} {} {} {} {} {} {}", static_cast(9), std::string("str1"), - std::string("str2"), 5L, 1, 6LL, std::string_view("view1"), "example1"); - LOG_INFO(logger, "logging dog over brown {} {} {} {} {} {} {}", "example1", 2, "example2", - std::string("str2"), 3.0, 4.0f, 8ULL); - LOG_INFO(logger, "lazy fox logging {}", 7UL); - LOG_INFO(logger, "quick example logging {} {} {}", false, std::string("str1"), std::string_view("view1")); - LOG_INFO(logger, "quick dog test {} {} {} {}", "example3", 1, 3.0, 7UL); - LOG_INFO(logger, "example lazy logging {} {} {} {} {} {} {} {}", 1, static_cast(9), - "example2", static_cast(10), 3.0, 2, "example3", 8ULL); - LOG_INFO(logger, "dog fox example {} {}", static_cast(10), "example1"); - LOG_INFO(logger, "lazy example jumps brown {} {} {} {}", 5L, "example2", 6LL, 3.0); - LOG_INFO(logger, "jumps lazy quick {} {} {} {} {} {} {} {} {}", 5L, 6LL, 8ULL, - std::string("str1"), static_cast(10), std::string_view("view2"), - std::string("str2"), "example3", 4.0f); - LOG_INFO(logger, "over test quick {} {} {}", std::string("str1"), std::string_view("view2"), - "example3"); - LOG_INFO(logger, "example test brown over {} {} {} {} {} {} {} {}", static_cast(10), - 8ULL, std::string_view("view1"), 6LL, static_cast(9), "example1", 5L, true); - LOG_INFO(logger, "dog logging example {}", 4.0f); - LOG_INFO(logger, "example jumps dog over {} {} {} {} {} {} {} {}", "example1", "example2", true, - 6LL, std::string_view("view2"), 2, false, std::string("str1")); - LOG_INFO(logger, "test example dog jumps {} {} {} {} {} {} {}", 1, std::string_view("view1"), 2, - "example1", static_cast(9), 3.0, 6LL); - LOG_INFO(logger, "jumps fox dog {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - std::string_view("view1"), "example3", 6LL, 5L, 2, true, 4.0f, 1, "example2"); - LOG_INFO(logger, "fox quick over jumps {} {} {} {} {} {} {} {}", 7UL, 2, "example3", "example1", - true, std::string_view("view1"), 5L, 1); - LOG_INFO(logger, "test quick logging brown {} {}", true, "example2"); - LOG_INFO(logger, "quick jumps logging {} {} {} {} {}", 1, 7UL, 6LL, 3.0, static_cast(10)); - LOG_INFO(logger, "test logging fox quick {} {} {} {} {} {} {}", 3.0, std::string_view("view2"), - std::string("str1"), 4.0f, 8ULL, false, 2); - LOG_INFO(logger, "example quick logging brown {} {} {} {} {} {} {} {} {} {}", 3.0, 8ULL, std::string("str2"), - 4.0f, false, true, 6LL, static_cast(10), "example1", std::string("str1")); - LOG_INFO(logger, "jumps logging quick {} {}", std::string("str1"), 8ULL); - LOG_INFO(logger, "fox example lazy {} {} {} {} {} {}", std::string_view("view2"), 8ULL, 6LL, 4.0f, - true, "example2"); - LOG_INFO(logger, "over example logging {} {} {}", std::string("str1"), "example1", "example3"); - LOG_INFO(logger, "fox brown lazy over {} {} {} {} {} {} {}", 1, static_cast(9), 4.0f, - std::string("str2"), 6LL, 5L, "example1"); - LOG_INFO(logger, "jumps logging quick {} {} {} {} {} {} {} {} {} {}", - static_cast(10), std::string_view("view1"), std::string_view("view2"), - 5L, true, std::string("str2"), 4.0f, 8ULL, 3.0, "example2"); - LOG_INFO(logger, "over logging example {} {} {} {} {} {} {} {} {} {}", std::string("str1"), 3.0, - 2, false, 8ULL, 4.0f, 1, 6LL, std::string_view("view2"), std::string("str2")); - LOG_INFO(logger, "logging brown test fox {} {} {} {}", std::string("str2"), 3.0, std::string("str1"), 1); - LOG_INFO(logger, "example dog brown jumps {} {} {} {}", 1, "example2", 5L, false); - LOG_INFO(logger, "logging jumps example fox {} {} {} {} {} {} {}", 3.0, std::string_view("view2"), - true, static_cast(10), 5L, std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "fox brown lazy test {} {}", 2, 8ULL); - LOG_INFO(logger, "dog brown lazy fox {} {} {} {} {} {} {} {}", std::string_view("view2"), 1, 4.0f, - true, 7UL, "example3", 6LL, 5L); - LOG_INFO(logger, "lazy test dog {}", 3.0); - LOG_INFO(logger, "brown example jumps {}", 4.0f); - LOG_INFO(logger, "quick logging fox jumps {} {} {} {} {} {} {} {} {} {}", 1, - static_cast(9), std::string_view("view1"), std::string_view("view2"), true, 6LL, - false, std::string("str1"), 2, 7UL); - LOG_INFO(logger, "brown jumps test {}", 3.0); - LOG_INFO(logger, "jumps lazy quick {} {} {} {} {} {} {}", 8ULL, true, std::string_view("view1"), - false, std::string("str1"), "example1", std::string("str2")); - LOG_INFO(logger, "example logging quick over {} {} {} {}", std::string("str1"), 1, "example1", true); - LOG_INFO(logger, "example logging lazy over {} {} {} {} {} {} {} {} {}", "example2", 3.0, - std::string_view("view2"), static_cast(9), "example3", 2, std::string("str1"), - false, std::string_view("view1")); - LOG_INFO(logger, "dog fox example quick {} {} {}", std::string("str2"), true, static_cast(9)); - LOG_INFO(logger, "test quick example fox {} {} {} {} {}", true, 2, 5L, "example3", 1); - LOG_INFO(logger, "quick over jumps fox {} {} {} {} {}", 6LL, 8ULL, 4.0f, true, 5L); - LOG_INFO(logger, "example fox logging jumps {} {}", 6LL, 3.0); - LOG_INFO(logger, "quick jumps dog {} {} {}", 6LL, std::string_view("view2"), false); - LOG_INFO(logger, "lazy example quick {} {} {} {} {} {}", std::string("str2"), - static_cast(9), std::string("str1"), 6LL, true, 8ULL); - LOG_INFO(logger, "example logging over {} {} {} {} {}", std::string("str1"), 2, - static_cast(9), std::string_view("view2"), false); - LOG_INFO(logger, "test quick example {} {} {} {} {} {} {}", static_cast(10), 6LL, - static_cast(9), false, std::string_view("view2"), 8ULL, "example1"); - LOG_INFO(logger, "quick brown logging dog {} {} {} {} {} {} {}", 4.0f, 1, 2, - std::string_view("view2"), 8ULL, static_cast(9), 7UL); - LOG_INFO(logger, "logging lazy jumps {} {} {} {} {} {} {} {}", "example1", 5L, - static_cast(10), std::string("str2"), true, std::string_view("view2"), 4.0f, false); - LOG_INFO(logger, "over quick fox dog {} {} {} {} {} {} {} {} {}", 3.0, 1, false, 5L, 4.0f, 6LL, - static_cast(9), std::string_view("view2"), std::string_view("view1")); - LOG_INFO(logger, "brown fox test example {} {} {} {} {} {} {} {} {} {}", std::string("str2"), - true, static_cast(10), std::string_view("view1"), 5L, "example2", false, - 3.0, 1, std::string_view("view2")); - LOG_INFO(logger, "example lazy jumps fox {} {} {} {} {} {}", 7UL, false, - std::string_view("view1"), 6LL, "example2", 5L); - LOG_INFO(logger, "fox jumps over test {} {}", "example2", "example1"); - LOG_INFO(logger, "jumps dog logging {}", static_cast(10)); - LOG_INFO(logger, "fox test jumps {} {} {} {} {} {} {} {}", true, std::string_view("view2"), - std::string("str1"), 4.0f, 2, 6LL, std::string_view("view1"), std::string("str2")); - LOG_INFO(logger, "over quick brown {} {} {} {} {} {} {} {} {} {}", false, 8ULL, "example2", - "example3", "example1", std::string("str2"), static_cast(10), 4.0f, 5L, - std::string("str1")); - LOG_INFO(logger, "quick brown fox example {} {} {} {} {} {}", "example1", false, - static_cast(9), std::string("str1"), "example2", 4.0f); - LOG_INFO(logger, "test logging jumps quick {} {} {} {} {} {}", 4.0f, true, - std::string_view("view1"), "example1", 5L, 7UL); - LOG_INFO(logger, "test lazy example {} {}", 2, std::string("str2")); - LOG_INFO(logger, "quick over dog logging {} {} {} {} {} {} {} {} {} {}", 8ULL, std::string_view("view1"), - true, 6LL, "example2", 4.0f, "example1", static_cast(10), "example3", 7UL); - LOG_INFO(logger, "lazy jumps quick dog {} {} {}", std::string("str1"), "example2", false); - LOG_INFO(logger, "test brown logging example {} {}", std::string_view("view2"), 6LL); - LOG_INFO(logger, "over lazy dog jumps {} {} {} {} {} {}", std::string("str1"), 1, 4.0f, 6LL, 2, - "example3"); - LOG_INFO(logger, "lazy over fox {} {}", std::string_view("view2"), std::string_view("view1")); - LOG_INFO(logger, "brown dog lazy over {} {} {} {} {} {} {} {} {} {}", "example1", "example2", 7UL, - static_cast(10), 4.0f, false, 1, "example3", 2, std::string_view("view1")); - LOG_INFO(logger, "jumps example over {} {} {} {}", 8ULL, static_cast(10), - "example1", std::string_view("view1")); - LOG_INFO(logger, "test jumps over lazy {} {} {} {}", std::string("str2"), 2, 8ULL, std::string("str1")); - LOG_INFO(logger, "logging example over {} {}", std::string("str2"), static_cast(10)); - LOG_INFO(logger, "jumps lazy fox {} {} {} {} {} {}", 3.0, false, 5L, static_cast(9), - "example1", std::string("str2")); - LOG_INFO(logger, "dog example quick brown {} {} {} {} {} {} {} {}", 5L, static_cast(9), - "example3", true, false, std::string_view("view2"), 7UL, 8ULL); - LOG_INFO(logger, "dog over quick {} {} {} {} {} {}", static_cast(9), - static_cast(10), "example2", 5L, "example3", 2); - LOG_INFO(logger, "example test jumps {} {} {} {} {} {} {} {} {}", 8ULL, false, - std::string_view("view2"), true, "example3", "example1", static_cast(10), - std::string_view("view1"), "example2"); - LOG_INFO(logger, "example brown jumps quick {} {} {} {}", "example1", std::string("str1"), - static_cast(9), 8ULL); - LOG_INFO(logger, "jumps lazy dog {} {} {} {}", std::string_view("view2"), "example3", - std::string("str2"), 3.0); - LOG_INFO(logger, "dog lazy brown {} {}", 6LL, std::string("str1")); - LOG_INFO(logger, "test quick dog {} {} {} {} {} {} {}", "example2", std::string_view("view2"), - 6LL, static_cast(9), 1, std::string("str2"), 3.0); - LOG_INFO(logger, "quick fox lazy over {} {} {} {} {} {} {} {}", 4.0f, false, - std::string_view("view1"), 3.0, 8ULL, "example3", 6LL, "example2"); - LOG_INFO(logger, "brown fox jumps {}", "example3"); - LOG_INFO(logger, "logging quick fox {} {} {} {} {} {}", 1, std::string_view("view1"), - std::string("str2"), 5L, false, 6LL); - LOG_INFO(logger, "test dog over {}", 7UL); - LOG_INFO(logger, "fox test lazy {} {} {} {} {} {} {} {} {}", 3.0, true, 6LL, std::string_view("view2"), - "example2", static_cast(9), std::string_view("view1"), "example1", 4.0f); - LOG_INFO(logger, "example fox quick {} {} {} {} {} {} {}", 5L, 7UL, std::string_view("view1"), - "example3", "example2", "example1", static_cast(10)); - LOG_INFO(logger, "dog lazy jumps {} {} {} {} {} {} {} {} {}", true, std::string_view("view1"), - 7UL, 8ULL, static_cast(10), 1, 4.0f, 6LL, std::string("str2")); - LOG_INFO(logger, "logging example lazy test {}", true); - LOG_INFO(logger, "over quick test jumps {} {} {} {}", std::string("str2"), true, std::string("str1"), 3.0); - LOG_INFO(logger, "quick example over brown {} {} {} {} {} {} {} {}", "example3", false, - std::string_view("view2"), static_cast(10), 2, static_cast(9), 5L, 7UL); - LOG_INFO(logger, "example test dog {} {}", 3.0, "example2"); - LOG_INFO(logger, "jumps dog brown logging {} {} {} {}", std::string("str2"), std::string("str1"), - "example3", "example1"); - LOG_INFO(logger, "over logging lazy test {} {} {} {} {} {} {}", 6LL, true, std::string("str1"), - "example2", std::string_view("view2"), 4.0f, "example1"); - LOG_INFO(logger, "dog quick lazy test {} {} {} {} {} {} {} {} {}", 2, "example2", "example3", - std::string("str1"), static_cast(9), 4.0f, "example1", 6LL, 5L); - LOG_INFO(logger, "example test brown {} {} {}", 4.0f, "example1", 8ULL); - LOG_INFO(logger, "lazy over brown jumps {} {} {} {} {} {} {}", std::string("str1"), 8ULL, 5L, 3.0, - "example3", "example2", "example1"); - LOG_INFO(logger, "fox quick jumps dog {} {} {} {} {} {}", 4.0f, "example1", true, - std::string("str1"), std::string_view("view1"), 3.0); - LOG_INFO(logger, "dog test jumps over {} {} {} {} {} {} {}", std::string_view("view1"), 4.0f, - static_cast(9), 1, std::string_view("view2"), static_cast(10), false); - LOG_INFO(logger, "lazy quick test {} {} {} {}", 1, static_cast(9), 3.0, std::string("str2")); - LOG_INFO(logger, "jumps brown fox {} {} {} {} {} {}", std::string("str1"), - static_cast(10), 8ULL, "example1", std::string("str2"), 1); - LOG_INFO(logger, "test jumps quick {} {} {} {} {} {}", "example2", 1, 2, std::string_view("view2"), 8ULL, true); - LOG_INFO(logger, "fox over example quick {}", std::string("str2")); - LOG_INFO(logger, "over dog test {} {} {} {} {} {} {} {} {} {}", false, 3.0, "example1", - std::string("str1"), std::string("str2"), 2, "example2", "example3", static_cast(9), 1); - LOG_INFO(logger, "example logging dog {}", "example1"); - LOG_INFO(logger, "test logging jumps {} {} {} {} {} {} {} {}", 1, "example3", std::string("str1"), - 6LL, 3.0, "example1", 7UL, 5L); - LOG_INFO(logger, "fox example jumps quick {} {} {} {} {} {} {} {} {} {}", 5L, std::string("str1"), - false, 3.0, 2, 6LL, 7UL, true, "example3", std::string_view("view2")); - LOG_INFO(logger, "fox lazy example test {} {}", true, 5L); - LOG_INFO(logger, "example brown dog jumps {}", 4.0f); - LOG_INFO(logger, "dog jumps fox {} {} {} {} {} {}", 8ULL, "example2", std::string_view("view2"), - "example3", std::string("str2"), 3.0); - LOG_INFO(logger, "quick lazy example logging {}", std::string_view("view2")); - LOG_INFO(logger, "dog brown over {} {}", std::string_view("view2"), "example3"); - LOG_INFO(logger, "jumps brown over {} {}", "example2", "example3"); - LOG_INFO(logger, "test over quick {} {} {} {}", 4.0f, std::string("str2"), 8ULL, 5L); - LOG_INFO(logger, "quick jumps brown example {} {} {} {} {} {} {}", static_cast(10), - std::string("str1"), 1, 8ULL, "example2", 4.0f, static_cast(9)); - LOG_INFO(logger, "over jumps dog {} {} {} {} {} {} {} {} {} {}", "example2", - static_cast(10), "example1", 4.0f, std::string_view("view1"), 3.0, - std::string("str2"), 5L, false, "example3"); - LOG_INFO(logger, "fox jumps quick {} {} {} {} {} {} {} {}", true, 1, std::string_view("view2"), - std::string_view("view1"), std::string("str1"), 5L, static_cast(10), - "example1"); - LOG_INFO(logger, "fox logging lazy {} {} {} {} {}", 2, 4.0f, std::string("str2"), - std::string_view("view2"), 3.0); - LOG_INFO(logger, "logging fox jumps {} {} {} {}", std::string_view("view2"), 4.0f, - std::string_view("view1"), static_cast(10)); - LOG_INFO(logger, "fox brown dog test {} {}", 2, 7UL); - LOG_INFO(logger, "lazy dog jumps brown {} {} {}", std::string_view("view2"), 3.0, "example1"); - LOG_INFO(logger, "fox dog test jumps {} {} {} {}", 6LL, static_cast(9), - static_cast(10), 8ULL); - LOG_INFO(logger, "quick brown logging over {}", static_cast(10)); - LOG_INFO(logger, "logging dog jumps {}", "example2"); - LOG_INFO(logger, "quick jumps example {} {} {} {} {} {} {} {} {} {}", 8ULL, 2, static_cast(9), - "example2", 6LL, std::string_view("view1"), "example3", true, 5L, 4.0f); - LOG_INFO(logger, "brown over quick logging {} {} {} {} {}", false, 7UL, "example3", true, - std::string_view("view1")); - LOG_INFO(logger, "jumps example fox {}", 1); - LOG_INFO(logger, "over example jumps quick {} {} {}", 1, 2, std::string("str1")); - LOG_INFO(logger, "test over dog quick {}", "example3"); - LOG_INFO(logger, "over quick logging {} {} {}", false, 4.0f, 3.0); - LOG_INFO(logger, "fox test example jumps {} {} {} {} {} {} {}", static_cast(10), - 8ULL, 2, "example2", std::string_view("view1"), std::string("str1"), static_cast(9)); - LOG_INFO(logger, "brown jumps example logging {} {} {} {}", static_cast(9), - static_cast(10), 3.0, "example3"); - LOG_INFO(logger, "over fox lazy {}", 6LL); - LOG_INFO(logger, "test fox example {} {} {} {} {} {} {} {}", 2, true, std::string_view("view2"), - static_cast(9), std::string("str1"), 4.0f, "example1", std::string_view("view1")); - LOG_INFO(logger, "dog over test {} {} {} {} {}", 5L, false, 3.0, 7UL, 8ULL); - LOG_INFO(logger, "over jumps logging example {} {} {} {} {} {} {} {} {} {}", - static_cast(10), "example3", std::string("str2"), true, - std::string("str1"), "example1", false, 6LL, 1, "example2"); - LOG_INFO(logger, "logging test fox over {} {} {} {} {} {} {} {} {}", false, true, - static_cast(9), 3.0, 4.0f, 5L, 8ULL, 6LL, 1); - LOG_INFO(logger, "logging lazy example {} {} {} {} {} {} {} {} {} {}", 8ULL, "example2", - std::string_view("view1"), 7UL, 6LL, static_cast(10), "example3", false, - 3.0, "example1"); - LOG_INFO(logger, "dog brown example {}", "example1"); - LOG_INFO(logger, "logging dog example fox {} {} {} {} {} {} {} {} {}", "example2", 4.0f, - "example1", true, 5L, static_cast(9), 7UL, "example3", std::string_view("view1")); - LOG_INFO(logger, "fox dog test {} {} {} {} {} {}", false, static_cast(10), - std::string_view("view1"), static_cast(9), 7UL, "example1"); - LOG_INFO(logger, "fox brown example {} {} {} {} {}", static_cast(9), "example3", 6LL, - std::string("str1"), "example1"); - LOG_INFO(logger, "fox dog example {}", static_cast(10)); - LOG_INFO(logger, "fox quick lazy {} {} {} {} {} {} {}", std::string_view("view2"), 1, - std::string("str2"), "example2", 3.0, static_cast(9), 6LL); - LOG_INFO(logger, "dog test example logging {} {}", std::string_view("view1"), 8ULL); - LOG_INFO(logger, "lazy quick over {}", true); - LOG_INFO(logger, "over fox test {} {} {}", std::string_view("view2"), false, 1); - LOG_INFO(logger, "lazy jumps over dog {}", 2); - LOG_INFO(logger, "example fox brown over {} {} {} {} {}", "example1", 8ULL, "example2", 5L, 3.0); - LOG_INFO(logger, "dog brown over fox {} {} {} {}", static_cast(10), "example2", - 6LL, "example3"); - LOG_INFO(logger, "quick lazy over {} {} {} {} {} {}", 6LL, "example3", - static_cast(10), 5L, std::string_view("view1"), 7UL); - LOG_INFO(logger, "over example fox quick {} {}", true, 4.0f); - LOG_INFO(logger, "logging over jumps brown {} {} {} {} {} {} {} {} {} {}", "example3", 5L, - std::string_view("view1"), 8ULL, static_cast(10), 7UL, - std::string("str1"), 1, static_cast(9), true); - LOG_INFO(logger, "lazy quick dog {} {} {} {} {} {} {}", 4.0f, "example2", "example1", 2, - std::string("str1"), true, 3.0); - LOG_INFO(logger, "dog example brown {} {} {} {} {} {} {}", 2, 7UL, - static_cast(10), 4.0f, std::string_view("view2"), "example3", "example1"); - LOG_INFO(logger, "jumps dog fox test {}", std::string_view("view2")); - LOG_INFO(logger, "jumps dog quick fox {} {} {} {} {} {}", false, std::string_view("view1"), - static_cast(9), 8ULL, 4.0f, 5L); - LOG_INFO(logger, "fox lazy test jumps {} {} {} {} {} {} {} {} {}", 7UL, std::string("str2"), - std::string_view("view1"), std::string("str1"), 4.0f, static_cast(9), "example2", 3.0, 2); - LOG_INFO(logger, "test logging over fox {} {} {}", "example2", false, 8ULL); - LOG_INFO(logger, "example quick brown lazy {} {} {} {} {} {} {} {}", 7UL, std::string("str2"), 5L, - true, std::string_view("view1"), "example2", 2, 6LL); - LOG_INFO(logger, "dog quick jumps {} {} {} {}", 5L, "example3", 1, std::string("str2")); - LOG_INFO(logger, "dog fox lazy {}", false); - LOG_INFO(logger, "logging fox quick {} {} {} {} {} {} {} {} {} {}", 1, std::string("str2"), 4.0f, - 7UL, static_cast(10), std::string_view("view1"), static_cast(9), - std::string("str1"), "example2", 5L); - LOG_INFO(logger, "lazy quick example test {} {} {} {} {} {} {} {}", 5L, "example3", false, - std::string_view("view2"), static_cast(10), 4.0f, "example1", 2); - LOG_INFO(logger, "jumps quick dog {} {} {} {} {}", 5L, "example3", std::string("str1"), true, 7UL); - LOG_INFO(logger, "example jumps logging {} {} {} {} {} {} {} {} {}", static_cast(10), - 3.0, false, 2, std::string_view("view1"), "example1", std::string_view("view2"), 8ULL, 6LL); - LOG_INFO(logger, "brown example test {} {} {} {} {} {}", 6LL, static_cast(10), - 3.0, "example1", 4.0f, 7UL); - LOG_INFO(logger, "brown jumps dog lazy {}", 2); - LOG_INFO(logger, "test quick logging brown {} {} {} {} {}", 5L, "example3", 8ULL, true, 4.0f); - LOG_INFO(logger, "fox logging brown {} {} {} {} {} {}", std::string_view("view1"), "example2", - true, std::string("str2"), 2, 5L); - LOG_INFO(logger, "test lazy quick over {} {} {} {}", 7UL, 5L, static_cast(10), - std::string_view("view1")); - LOG_INFO(logger, "test over brown {} {} {} {} {} {} {} {}", std::string("str2"), false, 8ULL, 2, - true, "example3", 1, std::string_view("view1")); - LOG_INFO(logger, "jumps brown fox logging {} {} {} {} {} {} {} {} {}", false, true, 6LL, - static_cast(9), 2, 4.0f, std::string("str1"), 7UL, "example2"); - LOG_INFO(logger, "logging test over {} {} {} {}", std::string("str2"), "example1", 5L, 3.0); - LOG_INFO(logger, "lazy test jumps {} {} {}", 2, "example1", std::string("str2")); - LOG_INFO(logger, "quick jumps fox test {} {}", 1, std::string("str2")); - LOG_INFO(logger, "example logging over jumps {} {}", 7UL, 6LL); - LOG_INFO(logger, "over fox test {} {} {} {} {} {} {} {} {}", 8ULL, static_cast(9), 1, - std::string_view("view1"), "example1", 7UL, "example3", 3.0, 6LL); - LOG_INFO(logger, "test lazy dog {} {} {}", 2, 3.0, std::string_view("view2")); - LOG_INFO(logger, "quick test logging lazy {} {}", std::string_view("view2"), "example3"); - LOG_INFO(logger, "quick fox test brown {} {} {} {} {} {} {} {} {}", 7UL, 1, - static_cast(10), 8ULL, false, std::string_view("view2"), 3.0, "example2", - std::string_view("view1")); - LOG_INFO(logger, "lazy over jumps {}", std::string("str2")); - LOG_INFO(logger, "test dog lazy {} {}", std::string_view("view1"), false); - LOG_INFO(logger, "jumps over quick {} {} {} {} {} {} {} {}", 7UL, 1, std::string_view("view2"), - "example2", 4.0f, true, static_cast(9), "example3"); - LOG_INFO(logger, "logging brown jumps {} {} {} {} {} {} {} {}", std::string("str2"), false, - std::string("str1"), "example3", 4.0f, 6LL, 8ULL, 5L); - LOG_INFO(logger, "brown jumps quick over {} {} {} {} {}", 8ULL, 5L, "example2", - static_cast(10), std::string_view("view1")); - LOG_INFO(logger, "brown fox example logging {} {} {} {} {} {}", 3.0, std::string_view("view1"), - 6LL, "example2", 8ULL, 7UL); - LOG_INFO(logger, "dog test fox {} {} {} {} {} {}", 1, static_cast(10), - static_cast(9), 2, 5L, true); - LOG_INFO(logger, "dog logging quick {} {}", std::string("str2"), 7UL); - LOG_INFO(logger, "jumps brown quick logging {} {} {} {} {} {}", std::string("str2"), 7UL, - static_cast(10), 4.0f, 5L, false); - LOG_INFO(logger, "dog logging jumps {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 2, - "example1", "example3", std::string("str1"), false, static_cast(9), - std::string_view("view2"), std::string_view("view1"), 5L); - LOG_INFO(logger, "fox over lazy {} {} {} {} {} {}", 1, std::string_view("view2"), 3.0, "example1", - std::string_view("view1"), "example3"); - LOG_INFO(logger, "dog lazy quick fox {} {} {} {}", std::string_view("view2"), 4.0f, "example3", 2); - LOG_INFO(logger, "fox lazy dog {} {} {} {} {} {} {} {} {} {}", "example1", 6LL, 3.0, false, - "example2", std::string("str2"), std::string_view("view1"), true, 8ULL, - static_cast(10)); - LOG_INFO(logger, "fox over jumps {} {}", 6LL, std::string("str2")); - LOG_INFO(logger, "test logging jumps {} {} {} {} {} {} {} {}", "example1", static_cast(9), 7UL, - std::string("str2"), std::string_view("view2"), false, static_cast(10), 3.0); - LOG_INFO(logger, "test logging lazy example {} {} {} {}", 7UL, 5L, 2, false); - LOG_INFO(logger, "logging dog lazy {} {} {} {} {} {} {} {} {} {}", "example2", 2, true, - "example1", static_cast(9), 4.0f, 5L, 1, "example3", 6LL); - LOG_INFO(logger, "brown over fox {} {} {} {}", std::string_view("view1"), - std::string_view("view2"), 8ULL, std::string("str2")); - LOG_INFO(logger, "jumps logging lazy {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), 7UL, 1, 8ULL, 3.0, std::string("str1")); - LOG_INFO(logger, "fox brown dog logging {}", false); - LOG_INFO(logger, "brown over fox {} {} {} {} {} {} {} {} {}", 8ULL, static_cast(9), 2, 6LL, - std::string_view("view1"), false, 7UL, 3.0, 1); - LOG_INFO(logger, "test over dog {} {} {} {}", 5L, std::string_view("view1"), 7UL, std::string_view("view2")); - LOG_INFO(logger, "dog brown jumps {} {} {}", static_cast(9), static_cast(10), 8ULL); - LOG_INFO(logger, "logging brown fox over {} {} {}", false, 8ULL, std::string_view("view1")); - LOG_INFO(logger, "logging over brown example {} {} {} {} {} {} {} {}", 2, 1, std::string_view("view1"), - 3.0, std::string_view("view2"), static_cast(9), std::string("str1"), 5L); - LOG_INFO(logger, "lazy jumps logging test {} {} {} {} {}", "example2", false, std::string("str1"), - "example3", 2); - LOG_INFO(logger, "brown example lazy {} {}", std::string_view("view1"), static_cast(9)); - LOG_INFO(logger, "example brown quick logging {} {} {} {} {} {}", 4.0f, "example2", 3.0, 1, false, - std::string("str1")); - LOG_INFO(logger, "over dog test {} {} {} {} {} {} {}", 4.0f, "example1", 7UL, 5L, - std::string("str2"), std::string_view("view1"), false); - LOG_INFO(logger, "quick lazy jumps {} {} {} {} {} {} {} {}", 6LL, 5L, "example1", 2, "example2", - 7UL, std::string_view("view1"), static_cast(9)); - LOG_INFO(logger, "brown logging quick {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), std::string_view("view2"), "example3", false, 6LL, 4.0f, true, 5L); - LOG_INFO(logger, "quick logging jumps {} {} {} {} {} {} {} {} {} {}", "example2", std::string_view("view2"), - true, 6LL, 8ULL, static_cast(9), 4.0f, 3.0, std::string("str1"), "example1"); - LOG_INFO(logger, "lazy jumps quick fox {} {}", 8ULL, std::string_view("view2")); - LOG_INFO(logger, "over fox jumps {} {} {} {} {}", std::string_view("view1"), - static_cast(10), static_cast(9), "example1", true); - LOG_INFO(logger, "dog over lazy {} {} {} {} {}", 1, static_cast(9), std::string("str1"), true, 3.0); - LOG_INFO(logger, "jumps quick fox example {} {} {} {} {} {}", std::string("str1"), 8ULL, true, - false, "example3", static_cast(9)); - LOG_INFO(logger, "quick lazy test brown {} {} {} {}", "example2", true, 1, "example1"); - LOG_INFO(logger, "dog logging jumps {} {} {} {} {} {} {} {} {}", std::string("str1"), - static_cast(9), std::string("str2"), std::string_view("view2"), 4.0f, false, - "example2", static_cast(10), 1); - LOG_INFO(logger, "lazy dog fox example {} {} {} {} {} {} {} {} {}", 2, "example1", - static_cast(9), true, "example2", false, std::string_view("view1"), 8ULL, 4.0f); - LOG_INFO(logger, "quick test lazy {} {} {} {} {} {} {} {} {}", false, std::string("str2"), 1, 2, - std::string_view("view1"), 8ULL, "example2", "example3", 5L); - LOG_INFO(logger, "brown lazy test over {} {} {} {} {} {} {} {} {}", static_cast(10), - 5L, static_cast(9), 8ULL, 7UL, 1, 6LL, "example3", 2); - LOG_INFO(logger, "dog jumps fox {} {} {} {} {} {} {} {}", 7UL, 8ULL, false, std::string("str2"), - std::string_view("view2"), true, "example2", std::string("str1")); - LOG_INFO(logger, "lazy jumps over {} {} {} {} {} {} {}", "example1", std::string_view("view1"), - 5L, static_cast(10), 2, std::string("str1"), true); - LOG_INFO(logger, "dog brown test {} {} {} {} {} {} {} {} {}", 2, std::string("str2"), - std::string_view("view2"), 6LL, static_cast(9), std::string("str1"), "example3", 5L, true); - LOG_INFO(logger, "test jumps logging brown {} {} {} {} {} {} {} {}", "example2", 3.0, 6LL, true, - 5L, 2, 4.0f, static_cast(10)); - LOG_INFO(logger, "brown lazy logging {} {} {} {} {} {}", "example3", 2, false, true, 4.0f, - "example2"); - LOG_INFO(logger, "logging example lazy brown {} {}", 5L, std::string("str1")); - LOG_INFO(logger, "jumps example lazy logging {}", 8ULL); - LOG_INFO(logger, "logging test brown {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 6LL, - "example1", 8ULL, 1, 3.0, std::string_view("view1"), std::string_view("view2"), - "example3", static_cast(10)); - LOG_INFO(logger, "example lazy jumps {} {} {}", "example1", static_cast(10), - static_cast(9)); - LOG_INFO(logger, "dog test fox logging {} {} {} {} {} {}", 6LL, std::string_view("view1"), true, - 5L, 8ULL, 7UL); - LOG_INFO(logger, "brown over fox dog {} {} {} {} {} {} {}", 6LL, "example3", 4.0f, "example1", 3.0, true, 1); - LOG_INFO(logger, "dog logging brown {} {} {} {} {} {} {} {} {}", 3.0, true, std::string("str1"), - static_cast(9), 1, 2, 6LL, 5L, "example2"); - LOG_INFO(logger, "logging fox dog lazy {} {} {} {} {} {}", 3.0, static_cast(9), - std::string_view("view1"), "example1", 5L, 1); - LOG_INFO(logger, "fox lazy dog brown {} {} {} {} {} {} {} {}", false, 1, 8ULL, 3.0, - static_cast(10), true, "example2", 4.0f); - LOG_INFO(logger, "quick test dog brown {} {} {}", true, std::string("str2"), - static_cast(10)); - LOG_INFO(logger, "jumps logging brown {} {} {} {} {} {}", false, 4.0f, std::string_view("view1"), - std::string("str1"), 5L, "example1"); - LOG_INFO(logger, "dog fox brown jumps {} {} {} {} {} {} {} {}", std::string_view("view2"), 5L, - static_cast(9), std::string("str1"), 8ULL, 4.0f, std::string_view("view1"), - std::string("str2")); - LOG_INFO(logger, "lazy over fox logging {} {} {} {} {} {}", std::string_view("view2"), 5L, 1, 4.0f, 8ULL, true); - LOG_INFO(logger, "over quick example {} {} {} {} {} {} {}", static_cast(10), 1, - "example1", 7UL, "example2", true, 5L); - LOG_INFO(logger, "dog example over {} {} {} {}", 5L, 3.0, 7UL, 1); - LOG_INFO(logger, "dog example fox {} {} {} {}", "example1", 3.0, static_cast(10), 1); - LOG_INFO(logger, "quick fox dog {}", 2); - LOG_INFO(logger, "fox logging example {} {} {} {}", std::string("str1"), "example1", true, false); - LOG_INFO(logger, "brown fox example {} {} {} {} {} {} {}", static_cast(9), 7UL, "example3", - 8ULL, 6LL, false, std::string_view("view1")); - LOG_INFO(logger, "jumps logging dog {} {} {}", std::string("str2"), std::string_view("view1"), - std::string("str1")); - LOG_INFO(logger, "logging lazy dog {} {} {} {} {}", 6LL, 5L, static_cast(10), - std::string("str1"), "example2"); - LOG_INFO(logger, "test fox logging {}", 7UL); - LOG_INFO(logger, "logging lazy quick {} {}", 2, static_cast(9)); - LOG_INFO(logger, "brown over example test {} {} {} {} {} {} {} {} {}", std::string("str2"), 6LL, - "example1", 4.0f, std::string("str1"), false, 1, 3.0, 2); - LOG_INFO(logger, "brown over example {} {} {} {} {} {} {} {} {} {}", 1, 5L, - std::string_view("view1"), std::string("str1"), static_cast(9), 3.0, "example2", - static_cast(10), "example1", 4.0f); - LOG_INFO(logger, "test quick fox lazy {} {} {} {} {} {} {}", false, - static_cast(10), std::string("str2"), 3.0, 2, true, 1); - LOG_INFO(logger, "brown logging dog example {} {} {} {} {} {}", 8ULL, 5L, - std::string_view("view1"), 4.0f, static_cast(9), std::string("str2")); - LOG_INFO(logger, "logging brown dog {} {} {} {} {} {}", std::string("str1"), - std::string_view("view1"), std::string_view("view2"), "example3", true, 2); - LOG_INFO(logger, "quick fox lazy {}", 8ULL); - LOG_INFO(logger, "test logging example brown {} {} {} {} {}", "example2", false, - static_cast(10), 2, true); - LOG_INFO(logger, "brown jumps fox {} {} {} {} {} {} {} {} {} {}", 4.0f, 8ULL, 2, std::string_view("view2"), - std::string("str2"), 1, "example2", "example3", std::string("str1"), 3.0); - LOG_INFO(logger, "over dog quick {} {} {} {} {} {} {} {}", std::string("str1"), 5L, true, - static_cast(10), 7UL, std::string("str2"), std::string_view("view1"), 4.0f); - LOG_INFO(logger, "test dog brown lazy {} {} {} {} {} {} {} {}", true, std::string_view("view2"), - 6LL, std::string_view("view1"), false, 8ULL, "example3", 3.0); - LOG_INFO(logger, "example fox lazy {} {}", 5L, static_cast(10)); - LOG_INFO(logger, "example logging over {} {} {} {} {} {} {} {}", 8ULL, 2, 6LL, "example2", - "example1", std::string("str2"), 5L, 7UL); - LOG_INFO(logger, "jumps test example {} {}", 1, 7UL); - LOG_INFO(logger, "over dog test example {} {} {} {} {} {} {} {} {}", static_cast(10), - 2, "example3", std::string_view("view2"), 8ULL, 5L, 3.0, static_cast(9), 6LL); - LOG_INFO(logger, "quick dog brown {} {} {} {} {} {} {} {} {}", static_cast(9), 4.0f, - std::string("str1"), true, 6LL, 7UL, 8ULL, "example1", std::string("str2")); - LOG_INFO(logger, "logging dog fox brown {} {} {} {}", std::string("str1"), 3.0, "example3", 6LL); - LOG_INFO(logger, "quick test over {} {} {} {} {} {} {}", 6LL, 8ULL, std::string_view("view1"), 1, - std::string_view("view2"), 7UL, true); - LOG_INFO(logger, "test over fox {} {} {} {}", 5L, static_cast(9), 8ULL, 7UL); - LOG_INFO(logger, "fox logging test {} {} {}", 1, 7UL, std::string_view("view1")); - LOG_INFO(logger, "fox over quick {} {} {} {} {} {} {} {}", "example2", std::string_view("view2"), - static_cast(9), false, 7UL, "example3", "example1", 4.0f); - LOG_INFO(logger, "fox quick test example {}", std::string("str2")); - LOG_INFO(logger, "quick over dog {}", "example2"); - LOG_INFO(logger, "example quick fox {} {} {} {}", 7UL, std::string("str1"), "example3", 4.0f); - LOG_INFO(logger, "example fox brown dog {} {} {} {} {} {} {} {} {}", 5L, static_cast(9), - 3.0, "example1", 1, true, 7UL, false, std::string("str2")); - LOG_INFO(logger, "lazy dog jumps quick {} {} {} {} {}", std::string_view("view1"), 1, - static_cast(9), false, 6LL); - LOG_INFO(logger, "logging dog test {}", 6LL); - LOG_INFO(logger, "fox jumps quick logging {} {} {} {} {} {} {} {} {} {}", true, 8ULL, 1, 5L, - "example1", std::string("str1"), 6LL, static_cast(10), 2, "example3"); - LOG_INFO(logger, "jumps over example {} {} {} {} {} {} {} {} {} {}", - static_cast(10), std::string_view("view1"), std::string_view("view2"), - 8ULL, 4.0f, 3.0, std::string("str1"), true, 1, "example1"); - LOG_INFO(logger, "over jumps logging {} {} {} {} {} {} {} {} {} {}", 4.0f, 5L, false, - std::string_view("view1"), static_cast(9), 2, 7UL, 6LL, "example2", - std::string_view("view2")); - LOG_INFO(logger, "quick example jumps {}", 5L); - LOG_INFO(logger, "logging brown lazy {} {} {} {} {} {} {}", std::string_view("view1"), false, - static_cast(10), true, "example3", std::string("str2"), 3.0); - LOG_INFO(logger, "lazy dog quick brown {} {} {} {} {} {} {} {} {} {}", 2, "example3", 7UL, 3.0, - std::string("str1"), std::string_view("view2"), true, 6LL, std::string_view("view1"), false); - LOG_INFO(logger, "fox logging example test {}", 1); - LOG_INFO(logger, "test quick brown fox {} {} {} {} {} {}", "example1", static_cast(9), - 4.0f, 1, 5L, std::string_view("view1")); - LOG_INFO(logger, "dog logging test {} {} {} {}", std::string("str1"), "example1", true, - std::string_view("view1")); - LOG_INFO(logger, "test lazy quick example {} {} {} {} {}", 8ULL, std::string("str1"), 4.0f, 2, - std::string_view("view1")); - LOG_INFO(logger, "brown logging jumps dog {} {}", false, 8ULL); - LOG_INFO(logger, "test lazy logging example {} {} {} {} {} {} {} {}", std::string("str2"), false, - "example2", 7UL, "example3", 4.0f, std::string_view("view1"), static_cast(9)); - LOG_INFO(logger, "lazy example jumps brown {} {} {}", 6LL, std::string_view("view2"), std::string("str1")); - LOG_INFO(logger, "brown fox test over {} {} {} {} {} {} {} {} {} {}", - static_cast(10), 1, false, 6LL, static_cast(9), 7UL, - std::string_view("view2"), "example2", std::string("str2"), true); - LOG_INFO(logger, "over example test {} {} {} {} {} {}", static_cast(9), 1, - std::string_view("view2"), 8ULL, static_cast(10), 5L); - LOG_INFO(logger, "dog fox test example {} {} {}", "example3", std::string_view("view1"), std::string("str2")); - LOG_INFO(logger, "jumps test over logging {} {} {} {} {} {} {}", 4.0f, 6LL, 5L, 2, "example1", 1, - std::string_view("view2")); - LOG_INFO(logger, "brown test lazy {} {} {} {} {} {} {}", false, std::string("str1"), 4.0f, - "example3", std::string("str2"), 8ULL, true); - LOG_INFO(logger, "example jumps brown {} {} {} {} {} {} {} {} {} {}", 2, "example3", 4.0f, 7UL, - 8ULL, 3.0, static_cast(10), 1, "example1", std::string("str2")); - LOG_INFO(logger, "dog fox jumps {} {}", std::string("str1"), "example2"); - LOG_INFO(logger, "dog brown example {} {} {} {} {} {}", 1, std::string("str1"), 7UL, 6LL, - std::string("str2"), 4.0f); - LOG_INFO(logger, "jumps brown quick {} {}", static_cast(9), true); - LOG_INFO(logger, "brown example jumps {} {} {}", false, 5L, std::string_view("view1")); - LOG_INFO(logger, "logging quick test {} {}", std::string_view("view2"), "example3"); - LOG_INFO(logger, "test over quick fox {} {} {} {} {}", 2, 5L, 3.0, true, "example2"); - LOG_INFO(logger, "over lazy dog brown {} {} {} {} {}", "example2", 3.0, 2, static_cast(9), false); - LOG_INFO(logger, "fox dog logging {} {} {} {} {} {}", static_cast(10), - std::string_view("view2"), static_cast(9), 6LL, 5L, 1); - LOG_INFO(logger, "over logging brown quick {} {} {} {} {} {} {} {} {} {}", static_cast(9), - "example2", std::string_view("view1"), 8ULL, 2, std::string("str1"), - static_cast(10), 7UL, 6LL, "example3"); - LOG_INFO(logger, "brown logging lazy quick {} {} {} {} {} {}", 5L, - static_cast(10), static_cast(9), std::string("str2"), 8ULL, true); - LOG_INFO(logger, "example test quick {} {}", std::string("str1"), static_cast(10)); - LOG_INFO(logger, "brown over jumps {} {} {}", true, 1, std::string_view("view1")); - LOG_INFO(logger, "dog over lazy example {} {} {} {}", "example1", "example3", 2, 7UL); - LOG_INFO(logger, "fox test quick {} {} {} {} {} {} {} {} {} {}", 1, "example2", 7UL, - static_cast(10), 3.0, 2, 5L, std::string_view("view1"), 4.0f, 6LL); - LOG_INFO(logger, "lazy test brown {} {} {}", 2, false, 5L); - LOG_INFO(logger, "lazy example fox quick {} {} {} {} {} {} {}", false, 4.0f, 5L, - std::string("str1"), "example3", 7UL, std::string_view("view1")); - LOG_INFO(logger, "quick brown test dog {} {} {} {} {} {} {} {} {} {}", 7UL, "example2", false, - 8ULL, std::string("str2"), 6LL, 2, std::string("str1"), "example1", true); - LOG_INFO(logger, "quick logging test over {} {} {} {}", std::string_view("view1"), "example1", - static_cast(9), 2); - LOG_INFO(logger, "jumps logging dog {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - std::string("str2"), 6LL, 3.0, 2, static_cast(10), false, 8ULL, true, 4.0f); - LOG_INFO(logger, "quick logging over dog {} {} {} {} {} {} {} {}", 5L, true, 3.0, "example2", 2, - 7UL, "example1", std::string_view("view1")); - LOG_INFO(logger, "example over lazy fox {} {} {} {}", std::string_view("view1"), 6LL, "example1", - std::string_view("view2")); - LOG_INFO(logger, "jumps brown quick {} {} {} {}", "example1", 3.0, 5L, std::string("str1")); - LOG_INFO(logger, "lazy quick over jumps {} {} {}", 2, true, static_cast(9)); - LOG_INFO(logger, "brown example dog {}", 5L); - LOG_INFO(logger, "over brown logging dog {} {}", static_cast(10), 6LL); - LOG_INFO(logger, "test lazy over dog {} {} {} {} {}", 6LL, static_cast(9), 3.0, false, 1); - LOG_INFO(logger, "over lazy jumps brown {} {} {} {}", static_cast(9), std::string("str2"), 8ULL, 5L); - LOG_INFO(logger, "lazy fox example {} {} {}", 8ULL, std::string_view("view1"), static_cast(9)); - LOG_INFO(logger, "logging jumps dog test {} {} {}", static_cast(9), true, 7UL); - LOG_INFO(logger, "test example over lazy {} {} {} {} {} {} {} {}", static_cast(10), - 6LL, 7UL, static_cast(9), "example1", true, std::string("str1"), false); - LOG_INFO(logger, "lazy over test {} {} {} {} {} {} {} {} {}", std::string("str1"), 7UL, - "example2", true, std::string_view("view1"), 6LL, "example1", 4.0f, std::string("str2")); - LOG_INFO(logger, "jumps example lazy {} {}", "example3", std::string_view("view2")); - LOG_INFO(logger, "fox logging lazy test {} {} {} {} {} {} {} {}", static_cast(10), - 5L, "example2", 4.0f, 3.0, std::string_view("view2"), 2, "example1"); - LOG_INFO(logger, "fox over quick test {} {} {} {} {} {} {} {} {}", "example1", - static_cast(10), static_cast(9), "example2", false, - std::string_view("view2"), 6LL, "example3", 5L); - LOG_INFO(logger, "test quick over logging {} {}", std::string_view("view2"), 6LL); - LOG_INFO(logger, "logging test quick over {} {}", true, 6LL); - LOG_INFO(logger, "lazy quick fox {} {} {} {} {} {} {} {}", 4.0f, false, 8ULL, std::string_view("view1"), - 6LL, 3.0, std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "dog lazy test jumps {} {} {} {} {} {} {}", 2, 8ULL, 1, - static_cast(10), "example1", true, static_cast(9)); - LOG_INFO(logger, "lazy dog test fox {}", std::string("str1")); - LOG_INFO(logger, "test jumps example brown {} {} {} {} {} {} {}", false, 4.0f, 2, - std::string_view("view1"), "example1", 6LL, std::string("str2")); - LOG_INFO(logger, "fox dog lazy logging {} {} {} {} {} {} {} {} {}", "example3", - std::string("str2"), 8ULL, "example1", false, "example2", 4.0f, 3.0, std::string("str1")); - LOG_INFO(logger, "fox test example brown {} {}", std::string("str1"), "example2"); - LOG_INFO(logger, "test quick logging {}", std::string("str1")); - LOG_INFO(logger, "brown fox example jumps {} {} {} {} {} {} {} {}", std::string_view("view1"), - 7UL, false, 6LL, std::string("str1"), 8ULL, std::string_view("view2"), "example3"); - LOG_INFO(logger, "lazy logging fox jumps {} {} {} {} {}", std::string_view("view1"), "example2", - "example3", false, static_cast(9)); - LOG_INFO(logger, "dog jumps example over {}", true); - LOG_INFO(logger, "brown lazy quick {} {} {} {} {} {} {} {}", static_cast(10), - std::string("str1"), true, std::string("str2"), std::string_view("view2"), 4.0f, - "example3", false); - LOG_INFO(logger, "dog fox jumps logging {} {} {}", 6LL, 5L, 1); - LOG_INFO(logger, "jumps brown example quick {} {} {} {} {} {}", std::string_view("view1"), 7UL, - "example3", 8ULL, 6LL, 3.0); - LOG_INFO(logger, "quick example jumps lazy {} {} {} {} {}", static_cast(10), - false, std::string_view("view1"), 1, 7UL); - LOG_INFO(logger, "dog lazy quick over {}", "example3"); - LOG_INFO(logger, "over dog brown {} {} {} {} {} {}", 8ULL, 7UL, std::string("str2"), "example3", - 1, std::string_view("view1")); - LOG_INFO(logger, "test quick dog lazy {} {} {}", "example3", "example1", "example2"); - LOG_INFO(logger, "dog fox jumps over {} {}", static_cast(10), "example3"); - LOG_INFO(logger, "jumps fox lazy dog {} {} {} {} {} {} {} {} {}", 5L, 2, "example3", "example2", - static_cast(10), 3.0, std::string("str2"), 6LL, 8ULL); - LOG_INFO(logger, "over quick fox {} {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), 4.0f, 8ULL, 2, 1, std::string("str2")); - LOG_INFO(logger, "dog test lazy {} {} {} {}", 8ULL, std::string_view("view1"), "example3", 3.0); - LOG_INFO(logger, "fox jumps example dog {} {}", "example2", static_cast(10)); - LOG_INFO(logger, "logging lazy jumps example {} {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), std::string_view("view1"), 7UL, true, 5L, 4.0f); - LOG_INFO(logger, "dog example fox {} {}", 6LL, std::string("str2")); - LOG_INFO(logger, "logging dog quick {} {} {} {} {}", static_cast(9), true, false, - std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "jumps example over {} {} {} {} {} {} {}", 3.0, false, std::string_view("view1"), - 4.0f, std::string("str2"), 5L, std::string_view("view2")); - LOG_INFO(logger, "example jumps test brown {} {} {} {} {} {}", std::string("str2"), 6LL, 7UL, - static_cast(9), "example2", 8ULL); - LOG_INFO(logger, "dog logging quick {} {} {} {} {} {} {}", "example1", std::string("str2"), 8ULL, - "example2", "example3", static_cast(10), 3.0); - LOG_INFO(logger, "quick logging brown {} {} {} {} {}", true, 3.0, static_cast(10), - 5L, std::string("str1")); - LOG_INFO(logger, "quick lazy dog brown {} {} {} {} {} {} {} {} {}", 7UL, static_cast(10), - 3.0, 1, "example2", "example1", 6LL, false, static_cast(9)); - LOG_INFO(logger, "jumps quick over {} {} {} {} {} {}", std::string("str2"), 4.0f, "example3", 1, - true, "example2"); - LOG_INFO(logger, "quick dog example jumps {} {} {} {} {} {} {} {}", "example1", 2, 6LL, false, - static_cast(10), 5L, 1, std::string_view("view1")); - LOG_INFO(logger, "jumps dog quick test {}", 2); - LOG_INFO(logger, "logging fox example {} {} {} {} {} {} {} {} {}", true, 2, - static_cast(10), std::string("str1"), std::string("str2"), - std::string_view("view1"), "example1", 1, static_cast(9)); - LOG_INFO(logger, "brown test dog {} {} {} {} {}", "example3", std::string_view("view1"), false, - 6LL, std::string("str1")); - LOG_INFO(logger, "over example logging brown {} {} {} {}", "example1", 1, 6LL, 7UL); - LOG_INFO(logger, "logging jumps test example {} {} {}", 1, 8ULL, 6LL); - LOG_INFO(logger, "logging brown lazy example {} {}", 6LL, static_cast(9)); - LOG_INFO(logger, "quick jumps lazy example {} {}", 7UL, 2); - LOG_INFO(logger, "brown over logging lazy {} {}", std::string("str2"), 7UL); - LOG_INFO(logger, "logging brown fox {}", std::string_view("view2")); - LOG_INFO(logger, "quick fox test {} {} {}", "example2", 5L, static_cast(10)); - LOG_INFO(logger, "quick test over brown {} {} {}", std::string_view("view1"), true, 2); - LOG_INFO(logger, "brown lazy jumps {} {} {} {} {} {} {}", 5L, "example2", 3.0, true, 4.0f, - std::string("str1"), static_cast(9)); - LOG_INFO(logger, "test jumps lazy logging {} {} {}", std::string_view("view2"), static_cast(9), 7UL); - LOG_INFO(logger, "brown quick dog jumps {}", false); - LOG_INFO(logger, "fox example test brown {} {} {} {} {} {}", 1, std::string_view("view2"), 3.0, - false, 8ULL, "example1"); - LOG_INFO(logger, "dog quick brown test {} {} {} {}", std::string_view("view2"), "example1", - std::string_view("view1"), 5L); - LOG_INFO(logger, "quick lazy example fox {} {} {} {} {} {} {} {} {} {}", 1, 2, 8ULL, false, 6LL, - true, "example2", "example1", 4.0f, static_cast(9)); - LOG_INFO(logger, "lazy dog brown fox {} {} {} {}", 6LL, true, std::string("str2"), 3.0); - LOG_INFO(logger, "quick test brown fox {} {} {} {} {}", std::string("str2"), - std::string_view("view2"), false, "example3", 5L); - LOG_INFO(logger, "dog jumps brown {}", static_cast(10)); - LOG_INFO(logger, "dog test example jumps {} {} {} {} {} {}", static_cast(10), - true, 8ULL, std::string("str1"), std::string_view("view1"), 2); - LOG_INFO(logger, "brown logging fox {} {} {} {} {} {} {} {}", "example1", static_cast(9), - "example3", "example2", true, static_cast(10), std::string("str2"), 5L); - LOG_INFO(logger, "lazy dog jumps {} {} {} {} {} {} {} {} {} {}", 7UL, 5L, std::string_view("view2"), - std::string("str1"), true, 3.0, std::string("str2"), "example1", 8ULL, static_cast(9)); - LOG_INFO(logger, "dog lazy quick {} {} {} {} {} {} {}", 8ULL, 6LL, true, 2, 1, 4.0f, "example2"); - LOG_INFO(logger, "logging over brown example {} {} {} {} {} {} {} {} {}", true, 3.0, 8ULL, - "example1", std::string_view("view2"), 5L, "example2", 6LL, std::string_view("view1")); - LOG_INFO(logger, "logging example test {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - 5L, "example3", 8ULL, 2, "example2", 7UL, std::string_view("view1"), - static_cast(9), std::string("str2")); - LOG_INFO(logger, "jumps over example test {} {} {} {} {} {} {} {} {}", 7UL, std::string("str2"), true, - 1, "example2", "example1", static_cast(10), std::string_view("view1"), 6LL); - LOG_INFO(logger, "brown lazy over {} {} {} {} {} {}", static_cast(9), "example1", - "example2", 8ULL, 3.0, std::string("str1")); - LOG_INFO(logger, "logging jumps test {} {}", 1, "example1"); - LOG_INFO(logger, "quick brown logging {} {} {} {} {} {} {}", 1, 4.0f, 7UL, "example3", - std::string_view("view2"), static_cast(9), 3.0); - LOG_INFO(logger, "jumps dog over test {} {} {} {} {} {} {} {} {}", std::string_view("view2"), false, - std::string_view("view1"), 7UL, "example1", "example2", static_cast(9), 4.0f, 6LL); - LOG_INFO(logger, "over dog quick fox {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), "example3", std::string("str1"), "example2", 5L); - LOG_INFO(logger, "quick test fox brown {} {}", 8ULL, static_cast(10)); - LOG_INFO(logger, "example brown jumps quick {} {} {} {} {} {}", std::string_view("view2"), false, - 1, 6LL, 8ULL, 3.0); - LOG_INFO(logger, "brown example test quick {} {}", static_cast(9), 4.0f); - LOG_INFO(logger, "example dog lazy {} {} {} {} {} {} {} {} {} {}", 5L, 2, std::string("str2"), - static_cast(10), 1, std::string_view("view2"), false, 4.0f, 6LL, - std::string_view("view1")); - LOG_INFO(logger, "over logging dog {} {} {} {} {} {} {} {} {} {}", 7UL, 5L, 8ULL, 3.0, - static_cast(10), "example1", std::string_view("view1"), - std::string_view("view2"), true, std::string("str1")); - LOG_INFO(logger, "quick test example {} {} {} {} {} {} {} {}", 8ULL, 7UL, false, "example1", - "example3", std::string("str2"), 2, 6LL); - LOG_INFO(logger, "brown test lazy fox {} {} {} {} {} {} {} {} {} {}", "example3", 6LL, "example2", - std::string_view("view1"), 8ULL, static_cast(9), 4.0f, 3.0, 5L, false); - LOG_INFO(logger, "over test fox quick {} {} {} {} {} {} {}", 3.0, 2, std::string("str2"), - static_cast(9), 1, std::string_view("view1"), 8ULL); - LOG_INFO(logger, "test brown jumps {} {} {} {} {} {} {} {}", 7UL, "example2", std::string("str1"), - true, 6LL, false, 8ULL, "example3"); - LOG_INFO(logger, "over brown quick {} {} {} {} {} {} {} {}", 2, 7UL, "example1", - static_cast(10), std::string_view("view2"), std::string("str1"), 1, 3.0); - LOG_INFO(logger, "quick jumps over logging {} {} {} {} {} {} {} {} {}", 5L, false, 3.0, - std::string("str1"), "example1", 7UL, static_cast(10), - std::string("str2"), static_cast(9)); - LOG_INFO(logger, "dog over jumps {} {} {} {} {} {} {} {}", "example2", "example3", 6LL, false, - std::string_view("view1"), 2, 3.0, "example1"); - LOG_INFO(logger, "lazy quick test logging {} {} {}", false, std::string_view("view1"), 8ULL); - LOG_INFO(logger, "fox quick over {} {} {} {} {} {} {} {} {} {}", "example1", 6LL, 4.0f, - std::string_view("view1"), false, 1, 3.0, 7UL, std::string_view("view2"), 5L); - LOG_INFO(logger, "jumps lazy over logging {} {} {} {} {} {} {} {} {}", std::string("str1"), - "example1", 3.0, "example2", "example3", true, 4.0f, std::string_view("view1"), 6LL); - LOG_INFO(logger, "fox example quick {} {} {} {} {} {} {} {} {} {}", static_cast(9), - "example3", false, 5L, 7UL, 3.0, 8ULL, std::string_view("view1"), - static_cast(10), 4.0f); - LOG_INFO(logger, "jumps over dog brown {} {} {}", 3.0, 8ULL, "example1"); - LOG_INFO(logger, "jumps quick test {} {} {} {} {} {} {} {}", 7UL, 4.0f, "example2", - std::string("str2"), 3.0, false, 8ULL, 5L); - LOG_INFO(logger, "brown logging over fox {} {}", 5L, 6LL); - LOG_INFO(logger, "jumps dog over quick {} {} {} {} {} {} {}", static_cast(10), - std::string("str1"), "example2", "example1", std::string_view("view2"), "example3", 1); - LOG_INFO(logger, "over quick brown {} {} {} {} {} {} {} {}", 8ULL, 6LL, std::string("str2"), true, - "example2", 1, std::string_view("view2"), std::string_view("view1")); - LOG_INFO(logger, "logging quick brown fox {} {} {} {} {} {} {}", std::string_view("view1"), 1, - false, std::string("str1"), 6LL, "example2", std::string_view("view2")); - LOG_INFO(logger, "jumps fox logging {} {}", static_cast(10), static_cast(9)); - LOG_INFO(logger, "fox example dog {} {} {} {}", static_cast(10), - std::string("str2"), true, "example3"); - LOG_INFO(logger, "brown quick logging fox {} {} {} {} {} {} {} {} {}", 8ULL, 5L, static_cast(9), - "example1", 6LL, std::string("str1"), std::string_view("view2"), "example2", true); - LOG_INFO(logger, "lazy dog test {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), std::string_view("view1"), false, 8ULL, "example3", 3.0, - 2, std::string("str1")); - LOG_INFO(logger, "lazy test example over {}", "example1"); - LOG_INFO(logger, "test brown fox example {} {} {} {} {} {} {} {} {} {}", 3.0, true, std::string("str2"), - 8ULL, 1, "example1", false, static_cast(9), "example3", "example2"); - LOG_INFO(logger, "example lazy jumps {} {} {} {} {} {} {} {} {} {}", 2, 5L, "example2", 4.0f, - static_cast(9), 6LL, static_cast(10), true, 1, 7UL); - LOG_INFO(logger, "fox test jumps {} {} {} {} {} {} {} {} {}", std::string("str1"), "example2", 4.0f, - std::string_view("view1"), 6LL, 1, static_cast(9), 5L, std::string_view("view2")); - LOG_INFO(logger, "brown lazy example {} {} {} {} {} {} {} {} {}", "example2", - std::string_view("view1"), "example1", true, static_cast(9), 5L, 2, 1, 8ULL); - LOG_INFO(logger, "fox brown dog test {} {} {}", std::string_view("view2"), false, 4.0f); - LOG_INFO(logger, "example test brown {} {} {} {}", 6LL, 8ULL, true, 1); - LOG_INFO(logger, "over example logging brown {} {}", 5L, std::string("str1")); - LOG_INFO(logger, "example dog test {} {} {} {} {} {}", false, "example2", 4.0f, - std::string("str1"), "example3", 2); - LOG_INFO(logger, "over quick logging {} {} {}", 1, std::string_view("view2"), 8ULL); - LOG_INFO(logger, "logging jumps example {} {} {} {} {} {} {} {}", 7UL, std::string("str2"), 6LL, - "example2", 5L, 8ULL, false, std::string("str1")); - LOG_INFO(logger, "jumps dog quick {} {}", 8ULL, 5L); - LOG_INFO(logger, "logging fox test {} {} {} {}", 7UL, false, 2, std::string_view("view2")); - LOG_INFO(logger, "fox over dog quick {} {} {} {} {} {} {} {}", 7UL, "example1", - std::string_view("view1"), true, 2, 4.0f, 6LL, false); - LOG_INFO(logger, "test jumps quick {} {} {} {} {} {} {}", 2, false, "example1", 8ULL, 6LL, - static_cast(10), 4.0f); - LOG_INFO(logger, "jumps logging dog fox {}", std::string_view("view1")); - LOG_INFO(logger, "fox lazy test {} {} {} {} {} {} {} {}", std::string_view("view1"), 3.0, - "example1", true, std::string("str2"), 5L, 4.0f, static_cast(10)); - LOG_INFO(logger, "fox brown jumps {} {} {} {} {} {} {}", std::string("str1"), 7UL, - static_cast(9), std::string_view("view1"), false, 1, "example3"); - LOG_INFO(logger, "over example fox {} {} {} {}", std::string_view("view1"), "example1", 8ULL, - std::string_view("view2")); - LOG_INFO(logger, "example lazy quick {} {} {} {} {} {} {}", 8ULL, 2, - static_cast(10), 3.0, std::string("str2"), 4.0f, 7UL); - LOG_INFO(logger, "logging fox brown jumps {} {} {} {} {} {} {} {} {}", std::string_view("view1"), - 8ULL, std::string("str2"), true, std::string_view("view2"), 7UL, 3.0, false, "example2"); - LOG_INFO(logger, "over brown quick {} {}", true, 1); - LOG_INFO(logger, "brown dog jumps {} {} {}", false, 8ULL, 2); - LOG_INFO(logger, "dog brown quick lazy {} {} {} {} {}", "example3", "example1", 8ULL, 3.0, - "example2"); - LOG_INFO(logger, "fox quick brown over {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - "example2", 2, 8ULL, "example1", std::string("str1"), 4.0f, false, 3.0); - LOG_INFO(logger, "over fox lazy {} {} {} {} {} {}", 5L, 4.0f, std::string("str1"), 8ULL, - std::string_view("view2"), 3.0); - LOG_INFO(logger, "lazy dog test {} {} {} {} {} {} {} {}", 2, "example2", false, 6LL, - std::string("str1"), 8ULL, static_cast(9), 1); - LOG_INFO(logger, "lazy quick brown logging {} {}", 1, 4.0f); - LOG_INFO(logger, "over quick fox {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), 2, std::string("str2"), std::string("str1"), 3.0); - LOG_INFO(logger, "test dog jumps lazy {} {} {}", 6LL, "example2", 7UL); - LOG_INFO(logger, "lazy dog jumps over {}", 7UL); - LOG_INFO(logger, "logging jumps fox lazy {} {} {}", false, 6LL, 4.0f); - LOG_INFO(logger, "jumps fox example {} {}", "example2", std::string_view("view2")); - LOG_INFO(logger, "quick jumps test dog {} {} {} {} {} {}", 7UL, 8ULL, 1, 6LL, 4.0f, std::string_view("view1")); - LOG_INFO(logger, "brown example dog {} {} {} {} {} {}", 4.0f, false, std::string("str1"), - static_cast(9), 6LL, true); - LOG_INFO(logger, "brown logging example {} {} {} {}", static_cast(10), 7UL, false, 3.0); - LOG_INFO(logger, "quick fox test {} {} {} {} {} {}", 3.0, std::string_view("view2"), true, false, - std::string("str1"), std::string("str2")); - LOG_INFO(logger, "lazy quick over {} {} {} {} {} {} {}", 6LL, false, static_cast(9), true, - 7UL, 5L, std::string_view("view2")); - LOG_INFO(logger, "jumps lazy over {} {}", "example3", 2); - LOG_INFO(logger, "test dog jumps logging {} {} {} {} {} {} {} {} {} {}", false, 8ULL, - static_cast(9), 7UL, std::string_view("view2"), "example1", 1, 5L, "example3", 2); - LOG_INFO(logger, "brown logging quick example {} {} {} {} {} {} {} {}", 2, "example3", - static_cast(10), std::string_view("view1"), true, std::string("str2"), false, 5L); - LOG_INFO(logger, "over dog jumps quick {} {} {}", 3.0, 4.0f, 8ULL); - LOG_INFO(logger, "fox lazy test quick {} {} {} {} {} {} {} {}", 5L, 4.0f, "example2", - std::string("str2"), 6LL, static_cast(10), 7UL, std::string_view("view1")); - LOG_INFO(logger, "jumps over logging lazy {} {} {} {} {} {} {} {} {} {}", static_cast(10), - 6LL, 7UL, 1, 5L, 4.0f, std::string_view("view2"), false, "example1", 3.0); - LOG_INFO(logger, "lazy over test {} {}", std::string("str1"), 3.0); - LOG_INFO(logger, "fox brown over {} {} {} {} {} {} {} {}", 6LL, std::string("str1"), - static_cast(9), 2, "example1", 5L, false, std::string_view("view2")); - LOG_INFO(logger, "brown lazy fox {}", static_cast(9)); - LOG_INFO(logger, "fox dog brown {} {} {} {} {}", true, 8ULL, std::string_view("view2"), - std::string("str1"), 6LL); - LOG_INFO(logger, "dog example over {} {} {} {}", static_cast(10), 6LL, 1, 3.0); - LOG_INFO(logger, "jumps dog brown {} {} {} {} {} {} {} {}", std::string_view("view1"), - static_cast(9), true, std::string("str2"), 8ULL, 2, 4.0f, "example3"); - LOG_INFO(logger, "jumps test logging {} {}", "example3", std::string_view("view1")); - LOG_INFO(logger, "example dog logging over {} {} {} {} {} {} {} {} {} {}", 2, - static_cast(9), 5L, "example1", 6LL, true, std::string("str2"), 4.0f, 8ULL, 1); - LOG_INFO(logger, "dog logging lazy example {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 1, - 5L, 3.0, std::string("str1"), static_cast(10), std::string_view("view1"), - 6LL, 7UL, static_cast(9)); - LOG_INFO(logger, "jumps logging fox brown {} {} {} {} {} {}", false, 4.0f, std::string("str1"), - std::string_view("view1"), "example2", 3.0); - LOG_INFO(logger, "fox brown example {} {} {} {} {}", 1, 5L, "example2", - static_cast(10), std::string("str1")); - LOG_INFO(logger, "test fox example brown {} {} {} {} {} {} {} {} {} {}", std::string("str1"), - "example2", 7UL, 2, 8ULL, std::string_view("view1"), static_cast(10), - true, false, 4.0f); - LOG_INFO(logger, "lazy brown jumps {} {} {} {} {} {} {} {} {} {}", 2, std::string("str1"), - std::string("str2"), 4.0f, 1, "example3", static_cast(10), true, false, - "example1"); - LOG_INFO(logger, "quick jumps test lazy {} {} {} {} {}", 1, static_cast(9), 7UL, - std::string("str1"), 4.0f); - LOG_INFO(logger, "example jumps over lazy {} {} {} {} {} {} {}", 8ULL, true, - std::string_view("view2"), 4.0f, static_cast(9), std::string_view("view1"), 6LL); - LOG_INFO(logger, "brown fox dog logging {} {} {} {} {} {} {} {} {} {}", 2, std::string("str2"), - "example1", 4.0f, 5L, false, 7UL, 1, 6LL, 8ULL); - LOG_INFO(logger, "lazy quick fox over {} {}", std::string_view("view2"), 4.0f); - LOG_INFO(logger, "jumps over example dog {} {}", std::string_view("view2"), static_cast(9)); - LOG_INFO(logger, "brown example over {} {}", std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "test example fox logging {} {} {} {}", 4.0f, std::string("str1"), "example1", - "example3"); - LOG_INFO(logger, "fox over lazy test {} {} {}", "example1", 3.0, static_cast(9)); - LOG_INFO(logger, "example dog lazy {} {} {} {} {}", "example1", 6LL, 7UL, 4.0f, 5L); - LOG_INFO(logger, "lazy logging over {} {} {} {} {} {} {} {} {}", false, static_cast(9), - static_cast(10), 8ULL, std::string("str2"), 2, 5L, "example1", std::string("str1")); - LOG_INFO(logger, "test quick jumps {} {} {} {} {}", true, "example2", std::string_view("view1"), - std::string("str1"), "example3"); - LOG_INFO(logger, "test brown dog {} {} {} {} {}", 8ULL, 2, 6LL, static_cast(10), - "example1"); - LOG_INFO(logger, "logging test brown {} {} {} {} {} {} {} {}", 1, "example2", - static_cast(10), std::string("str2"), 3.0, 6LL, static_cast(9), - std::string("str1")); - LOG_INFO(logger, "test jumps lazy {} {} {} {} {} {} {}", 4.0f, "example1", 6LL, "example2", 2, 3.0, 8ULL); - LOG_INFO(logger, "brown over dog {} {} {} {} {} {} {} {} {}", 1, 6LL, 3.0, std::string("str1"), - std::string_view("view2"), 5L, static_cast(10), false, static_cast(9)); - LOG_INFO(logger, "logging brown over example {} {} {} {} {} {} {} {} {}", "example3", 3.0, true, - false, std::string_view("view1"), 7UL, 6LL, std::string("str2"), "example2"); - LOG_INFO(logger, "jumps test quick {} {} {} {} {} {} {}", false, 4.0f, static_cast(9), - std::string_view("view2"), "example3", 3.0, std::string("str2")); - LOG_INFO(logger, "dog jumps test example {} {} {} {} {} {}", 5L, static_cast(10), - 4.0f, 8ULL, std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "brown over lazy example {} {} {} {} {} {} {} {}", std::string("str1"), - "example3", std::string_view("view1"), 5L, std::string_view("view2"), "example2", 2, true); - LOG_INFO(logger, "lazy dog test {} {} {}", true, 1, 2); - LOG_INFO(logger, "fox brown example {} {} {}", std::string("str1"), static_cast(10), 2); - LOG_INFO(logger, "example dog quick brown {} {} {} {} {} {} {} {}", 8ULL, 4.0f, 7UL, true, - std::string("str2"), std::string("str1"), std::string_view("view2"), 2); - LOG_INFO(logger, "example dog quick {}", true); - LOG_INFO(logger, "test dog quick {} {} {} {} {}", std::string_view("view2"), 5L, 8ULL, 7UL, 6LL); - LOG_INFO(logger, "brown lazy jumps {} {} {} {} {} {} {}", 1, 2, 3.0, std::string("str1"), - "example1", std::string_view("view1"), true); - LOG_INFO(logger, "fox over dog {} {} {} {} {} {} {} {}", "example3", std::string_view("view2"), 1, - true, "example1", std::string("str2"), "example2", static_cast(10)); - LOG_INFO(logger, "over brown quick {} {} {}", false, 8ULL, 4.0f); - LOG_INFO(logger, "quick example jumps fox {}", 6LL); - LOG_INFO(logger, "logging jumps quick {} {}", std::string("str2"), "example1"); - LOG_INFO(logger, "dog logging lazy {} {} {} {}", std::string_view("view2"), true, std::string("str1"), 8ULL); - LOG_INFO(logger, "example fox jumps dog {} {} {} {} {} {}", true, 3.0, 1, 7UL, "example3", false); - LOG_INFO(logger, "test example lazy {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 3.0, - 1, 4.0f, 2, static_cast(10), std::string("str1"), true, "example1"); - LOG_INFO(logger, "logging dog test example {} {} {} {} {}", "example2", 4.0f, 8ULL, true, - std::string_view("view1")); - LOG_INFO(logger, "lazy example quick {} {} {} {} {} {} {} {} {} {}", false, 8ULL, 3.0, 6LL, - "example1", true, std::string_view("view1"), static_cast(10), "example3", - std::string("str1")); - LOG_INFO(logger, "fox quick lazy {} {} {}", 7UL, 3.0, 1); - LOG_INFO(logger, "brown quick fox test {} {} {} {} {} {} {}", std::string_view("view2"), 1, 6LL, - 5L, std::string("str2"), static_cast(10), true); - LOG_INFO(logger, "fox test logging {} {} {} {} {} {} {} {} {} {}", 5L, 1, 8ULL, std::string("str1"), - "example3", std::string_view("view1"), 4.0f, std::string("str2"), "example2", false); - LOG_INFO(logger, "brown fox jumps over {} {} {} {} {} {} {}", std::string("str1"), 5L, 3.0, - std::string_view("view2"), static_cast(10), false, std::string_view("view1")); - LOG_INFO(logger, "test lazy example {} {} {} {}", 6LL, 1, 5L, "example1"); - LOG_INFO(logger, "over dog brown {} {} {}", std::string("str2"), 4.0f, static_cast(9)); - LOG_INFO(logger, "example brown test {} {} {}", 4.0f, true, 3.0); - LOG_INFO(logger, "lazy test logging fox {} {}", 5L, 3.0); - LOG_INFO(logger, "example fox lazy quick {} {} {} {} {} {} {} {}", 6LL, 7UL, true, - static_cast(10), 3.0, std::string("str2"), "example1", std::string_view("view2")); - LOG_INFO(logger, "brown over test fox {} {} {} {} {} {} {} {} {}", 6LL, "example2", 3.0, 4.0f, 1, - std::string_view("view1"), std::string("str2"), false, true); - LOG_INFO(logger, "lazy over example {}", 4.0f); - LOG_INFO(logger, "lazy example fox {} {} {} {} {} {} {} {} {}", "example2", "example3", 3.0, 8ULL, - 1, std::string("str1"), 7UL, std::string_view("view2"), std::string("str2")); - LOG_INFO(logger, "brown test lazy quick {} {} {} {} {} {} {} {}", std::string("str2"), - static_cast(9), "example3", "example1", 8ULL, 4.0f, static_cast(10), 7UL); - LOG_INFO(logger, "fox example logging {} {} {} {} {} {} {}", 3.0, 5L, 8ULL, - std::string_view("view2"), 2, std::string("str2"), 4.0f); - LOG_INFO(logger, "brown fox over lazy {} {} {} {} {} {}", false, static_cast(9), - std::string_view("view1"), "example2", true, 6LL); - LOG_INFO(logger, "quick logging over {} {} {} {} {} {} {}", 5L, 4.0f, std::string("str2"), - "example1", 2, std::string_view("view1"), 7UL); - LOG_INFO(logger, "example lazy brown dog {} {} {} {} {} {} {} {} {}", "example1", false, 3.0, - 4.0f, "example3", std::string("str1"), "example2", 7UL, true); - LOG_INFO(logger, "over dog test lazy {} {}", static_cast(10), 6LL); - LOG_INFO(logger, "quick over dog example {} {} {} {}", 3.0, false, "example3", 7UL); - LOG_INFO(logger, "example test quick {} {} {} {} {} {} {} {} {} {}", true, - std::string_view("view1"), 4.0f, std::string("str2"), 2, static_cast(10), - 3.0, 7UL, 1, std::string_view("view2")); - LOG_INFO(logger, "over dog quick {} {} {} {} {} {} {} {} {} {}", 4.0f, std::string("str1"), 7UL, - 2, 6LL, static_cast(10), 8ULL, std::string_view("view1"), true, 3.0); - LOG_INFO(logger, "lazy test fox {} {}", 5L, 1); - LOG_INFO(logger, "test over dog {} {} {} {} {} {}", std::string("str2"), "example2", 7UL, - std::string_view("view2"), 8ULL, false); - LOG_INFO(logger, "brown fox test jumps {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), 4.0f, 2, std::string("str1"), 1); - LOG_INFO(logger, "over fox lazy {} {} {} {} {} {} {} {} {}", false, 2, static_cast(9), - 4.0f, std::string("str2"), "example3", 1, std::string("str1"), std::string_view("view1")); - LOG_INFO(logger, "fox example quick logging {} {}", "example2", 6LL); - LOG_INFO(logger, "jumps dog fox {} {}", 6LL, 4.0f); - LOG_INFO(logger, "dog brown test logging {} {} {} {}", std::string("str2"), - std::string_view("view2"), 1, std::string_view("view1")); - LOG_INFO(logger, "over brown dog test {} {} {} {} {} {} {}", 3.0, std::string("str1"), "example1", - "example2", 6LL, 7UL, static_cast(9)); - LOG_INFO(logger, "jumps example lazy brown {} {} {} {}", "example3", 4.0f, - std::string_view("view1"), "example1"); - LOG_INFO(logger, "over example dog {} {} {} {}", true, 1, false, std::string_view("view1")); - LOG_INFO(logger, "test over logging {} {} {} {} {} {} {} {} {}", 5L, std::string_view("view2"), - 6LL, std::string_view("view1"), 1, true, "example1", std::string("str2"), "example2"); - LOG_INFO(logger, "lazy example jumps quick {} {} {} {} {} {} {} {}", std::string_view("view2"), - std::string_view("view1"), static_cast(10), std::string("str2"), - "example1", static_cast(9), 7UL, 6LL); - LOG_INFO(logger, "jumps quick over brown {} {} {} {} {}", static_cast(9), true, 2, - std::string_view("view2"), "example3"); - LOG_INFO(logger, "lazy dog logging {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), 5L, std::string_view("view1"), "example2", 8ULL, 6LL, - static_cast(9), 3.0); - LOG_INFO(logger, "quick jumps brown {} {} {} {} {} {} {} {} {} {}", 1, true, - std::string_view("view1"), 3.0, "example2", 4.0f, std::string("str2"), "example1", - std::string_view("view2"), std::string("str1")); - LOG_INFO(logger, "over brown logging dog {} {} {} {} {}", std::string("str1"), 3.0, 8ULL, - static_cast(9), false); - LOG_INFO(logger, "jumps brown over {}", "example1"); - LOG_INFO(logger, "lazy test quick {} {} {} {} {}", 2, false, true, static_cast(10), 1); - LOG_INFO(logger, "dog fox lazy brown {} {} {}", 6LL, std::string("str1"), "example3"); - LOG_INFO(logger, "test jumps logging {} {} {} {} {} {} {} {}", 3.0, static_cast(9), 7UL, - std::string("str2"), 1, "example1", 8ULL, true); - LOG_INFO(logger, "quick lazy jumps fox {} {} {} {}", "example2", std::string_view("view2"), - "example1", 4.0f); - LOG_INFO(logger, "logging jumps brown {} {}", "example1", 5L); - LOG_INFO(logger, "brown example over {} {} {} {} {} {} {}", std::string("str1"), - std::string("str2"), 8ULL, 3.0, static_cast(9), true, std::string_view("view1")); - LOG_INFO(logger, "over jumps brown {} {} {} {} {} {}", std::string_view("view1"), 4.0f, 2, - std::string("str2"), 3.0, 6LL); - LOG_INFO(logger, "quick jumps logging test {} {} {} {}", false, std::string("str1"), - std::string_view("view1"), 8ULL); - LOG_INFO(logger, "jumps fox lazy dog {} {} {} {} {} {} {} {} {}", true, static_cast(10), - std::string_view("view1"), "example1", 7UL, static_cast(9), "example2", 8ULL, 1); - LOG_INFO(logger, "logging over test dog {}", std::string("str1")); - LOG_INFO(logger, "quick logging test lazy {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 8ULL, 1, 3.0, - std::string_view("view2"), 6LL, true, 7UL, static_cast(10), "example1"); - LOG_INFO(logger, "lazy over example brown {} {}", 2, 8ULL); - LOG_INFO(logger, "dog logging quick test {} {} {} {} {}", true, false, 2, 6LL, "example1"); - LOG_INFO(logger, "example test jumps {} {} {} {} {} {} {} {} {}", false, "example1", - std::string_view("view2"), 6LL, std::string("str1"), 3.0, 7UL, 4.0f, "example3"); - LOG_INFO(logger, "dog logging jumps {} {} {} {} {} {}", 3.0, 2, "example2", true, false, - static_cast(9)); - LOG_INFO(logger, "example test fox {}", 4.0f); - LOG_INFO(logger, "brown logging example {} {} {} {}", std::string("str1"), 1, "example3", 3.0); - LOG_INFO(logger, "dog jumps fox quick {} {} {} {} {} {} {} {} {} {}", static_cast(9), - "example1", "example2", static_cast(10), 2, true, 8ULL, - std::string_view("view1"), 1, 7UL); - LOG_INFO(logger, "over dog fox lazy {} {} {} {} {} {} {} {} {} {}", 8ULL, 6LL, - std::string_view("view2"), 3.0, std::string("str2"), 2, static_cast(9), - "example3", static_cast(10), "example1"); - LOG_INFO(logger, "brown test logging {} {} {} {} {} {} {} {} {}", 3.0, std::string("str2"), 2, - std::string_view("view1"), "example1", 6LL, true, std::string_view("view2"), false); - LOG_INFO(logger, "lazy fox brown {} {} {}", static_cast(9), std::string_view("view2"), - "example1"); - LOG_INFO(logger, "jumps lazy fox quick {} {} {} {} {} {} {} {}", false, 4.0f, 2, "example3", - std::string("str1"), true, "example1", 3.0); - LOG_INFO(logger, "lazy logging over {} {} {} {} {} {}", "example2", "example1", - std::string("str1"), false, 2, std::string_view("view2")); - LOG_INFO(logger, "test dog jumps example {} {} {}", static_cast(9), - static_cast(10), 8ULL); - LOG_INFO(logger, "example dog over quick {} {} {} {} {} {} {} {} {} {}", true, 1, - std::string("str1"), std::string_view("view1"), "example1", 3.0, false, 2, "example3", - static_cast(10)); - LOG_INFO(logger, "brown test example over {} {} {} {} {} {}", 8ULL, 3.0, std::string("str1"), - "example2", 5L, true); - LOG_INFO(logger, "brown example jumps {} {} {} {} {} {} {}", 7UL, false, 6LL, 3.0, "example1", - static_cast(9), 8ULL); - LOG_INFO(logger, "dog fox jumps {} {} {} {} {} {} {} {}", 6LL, 5L, 8ULL, 1, true, 2, - std::string("str2"), std::string_view("view1")); - LOG_INFO(logger, "brown quick test {} {}", static_cast(10), 6LL); - LOG_INFO(logger, "logging brown fox {} {} {} {}", true, 5L, 7UL, 3.0); - LOG_INFO(logger, "test jumps lazy brown {}", "example2"); - LOG_INFO(logger, "logging test lazy {}", true); - LOG_INFO(logger, "lazy fox dog example {} {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), std::string("str1"), 5L, 7UL, static_cast(9), - "example1", 3.0, "example2", 6LL); - LOG_INFO(logger, "lazy test example logging {} {} {} {} {} {} {} {} {} {}", 6LL, "example3", - false, 8ULL, std::string("str1"), "example1", 3.0, true, 4.0f, 7UL); - LOG_INFO(logger, "dog logging over quick {} {}", 4.0f, false); - LOG_INFO(logger, "logging brown fox {}", "example3"); - LOG_INFO(logger, "dog logging brown {} {} {} {} {} {} {} {}", "example3", - std::string_view("view1"), static_cast(10), "example2", - std::string_view("view2"), 2, 8ULL, "example1"); - LOG_INFO(logger, "brown over dog {} {} {} {} {} {} {} {} {} {}", "example1", 6LL, 4.0f, true, - std::string_view("view1"), 1, 3.0, static_cast(9), "example3", 5L); - LOG_INFO(logger, "logging example test quick {} {} {} {} {} {} {} {} {}", std::string("str1"), - std::string_view("view2"), "example3", "example2", 8ULL, static_cast(9), 1, - static_cast(10), false); - LOG_INFO(logger, "fox over lazy jumps {} {} {} {} {} {} {} {} {}", 1, false, - std::string_view("view1"), 6LL, 4.0f, 5L, 3.0, static_cast(9), 7UL); - LOG_INFO(logger, "lazy test example over {} {} {} {} {} {} {} {} {}", static_cast(9), - "example3", "example1", "example2", 8ULL, std::string("str1"), false, 6LL, 3.0); - LOG_INFO(logger, "over logging fox brown {} {} {} {} {} {} {} {} {}", "example3", 3.0, 4.0f, - std::string_view("view1"), 7UL, true, 6LL, std::string("str2"), 2); - LOG_INFO(logger, "jumps lazy brown logging {} {} {}", "example3", std::string_view("view1"), 6LL); - LOG_INFO(logger, "brown jumps lazy {}", static_cast(10)); - LOG_INFO(logger, "test quick brown {} {} {}", "example1", false, std::string_view("view1")); - LOG_INFO(logger, "fox brown over {} {} {} {} {} {} {} {} {}", 2, "example3", 3.0, 4.0f, - std::string_view("view2"), "example2", 1, std::string("str1"), 7UL); - LOG_INFO(logger, "fox logging jumps example {} {} {} {} {}", "example1", 4.0f, - static_cast(10), "example2", true); - LOG_INFO(logger, "quick over jumps fox {} {} {} {} {} {} {} {}", 8ULL, 1, 4.0f, std::string_view("view2"), - 2, static_cast(10), std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "logging dog brown {} {}", 5L, std::string_view("view1")); - LOG_INFO(logger, "fox example brown dog {} {} {}", 2, "example1", 4.0f); - LOG_INFO(logger, "brown logging dog fox {} {} {} {} {} {} {} {} {} {}", false, 5L, 8ULL, - std::string("str1"), 2, "example2", 3.0, static_cast(10), 1, "example3"); - LOG_INFO(logger, "over jumps fox {} {} {} {} {} {} {}", static_cast(10), - std::string_view("view2"), static_cast(9), 2, 4.0f, std::string_view("view1"), - "example3"); - LOG_INFO(logger, "example fox logging {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 4.0f, - std::string("str1"), 5L, static_cast(9), 8ULL, 7UL, - static_cast(10), 3.0, 6LL); - LOG_INFO(logger, "fox jumps dog {} {}", 4.0f, true); - LOG_INFO(logger, "quick over example {} {} {} {} {} {}", 7UL, std::string("str2"), 5L, "example1", false, 1); - LOG_INFO(logger, "brown lazy over logging {} {} {} {} {} {} {} {}", std::string("str2"), 1, 8ULL, - static_cast(10), 5L, 4.0f, true, 3.0); - LOG_INFO(logger, "over jumps example {} {} {} {} {} {} {}", 5L, "example3", 4.0f, 7UL, "example2", - static_cast(10), true); - LOG_INFO(logger, "jumps brown example {} {} {} {} {} {} {}", 2, 8ULL, 1, std::string("str1"), - std::string_view("view1"), false, static_cast(10)); - LOG_INFO(logger, "jumps quick brown lazy {} {}", false, 8ULL); - LOG_INFO(logger, "example quick lazy {} {} {} {} {} {} {} {} {} {}", 3.0, 2, - static_cast(10), 7UL, 6LL, std::string("str1"), 1, std::string("str2"), - "example3", std::string_view("view1")); - LOG_INFO(logger, "lazy logging quick {} {} {} {} {} {} {} {}", 4.0f, true, 1, 5L, 3.0, 2, - std::string_view("view1"), static_cast(10)); - LOG_INFO(logger, "lazy brown dog fox {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - false, static_cast(9), "example1", 4.0f, 7UL, static_cast(10), - 3.0, "example3"); - LOG_INFO(logger, "quick logging brown over {} {} {} {} {} {}", std::string_view("view2"), - "example2", 6LL, static_cast(9), static_cast(10), 4.0f); - LOG_INFO(logger, "logging fox example {} {} {} {} {} {} {}", 5L, std::string_view("view2"), 6LL, - "example3", 7UL, std::string("str1"), 2); - LOG_INFO(logger, "jumps lazy quick dog {} {} {} {}", 7UL, 5L, 6LL, std::string("str1")); - LOG_INFO(logger, "jumps over lazy {} {} {} {} {} {}", "example2", static_cast(9), 8ULL, 5L, - 1, "example3"); - LOG_INFO(logger, "dog jumps fox {} {} {} {} {}", 3.0, std::string_view("view2"), 8ULL, - static_cast(9), 2); - LOG_INFO(logger, "quick example fox {} {} {} {} {}", 8ULL, true, 7UL, static_cast(9), - "example2"); - LOG_INFO(logger, "test quick fox logging {} {} {} {} {} {}", "example1", false, - std::string("str2"), static_cast(9), 3.0, "example2"); - LOG_INFO(logger, "jumps logging example quick {} {} {}", 4.0f, std::string("str1"), 8ULL); - LOG_INFO(logger, "dog brown logging {} {}", false, "example2"); - LOG_INFO(logger, "dog fox brown quick {} {} {} {} {}", "example3", 1, std::string_view("view1"), - static_cast(9), 8ULL); - LOG_INFO(logger, "quick jumps test dog {} {}", 7UL, 8ULL); - LOG_INFO(logger, "fox example quick {} {} {} {} {} {} {} {} {} {}", 2, 4.0f, 1, 6LL, std::string("str1"), - "example2", std::string_view("view1"), 7UL, false, static_cast(10)); - LOG_INFO(logger, "test quick logging {} {} {} {} {} {} {}", std::string("str2"), false, 2, 7UL, - 8ULL, 4.0f, static_cast(9)); - LOG_INFO(logger, "over test brown {} {} {} {} {} {} {} {} {} {}", 8ULL, 6LL, false, true, - "example1", "example2", 7UL, std::string("str1"), 5L, std::string_view("view1")); - LOG_INFO(logger, "test example over lazy {}", 8ULL); - LOG_INFO(logger, "quick dog over {}", 4.0f); - LOG_INFO(logger, "example quick jumps {} {} {}", 8ULL, std::string("str2"), 4.0f); - LOG_INFO(logger, "fox brown lazy {} {} {} {} {}", 3.0, false, static_cast(10), - "example1", 1); - LOG_INFO(logger, "quick lazy jumps brown {} {} {} {} {} {} {}", static_cast(10), - 7UL, true, std::string("str1"), 1, "example1", std::string_view("view1")); - LOG_INFO(logger, "over jumps logging quick {} {} {} {} {}", "example3", std::string("str2"), true, 5L, 2); - LOG_INFO(logger, "quick fox logging {} {} {} {}", 6LL, 2, 7UL, 1); - LOG_INFO(logger, "dog fox quick jumps {} {}", 6LL, static_cast(9)); - LOG_INFO(logger, "dog over jumps fox {} {}", true, 5L); - LOG_INFO(logger, "logging example dog jumps {} {} {} {}", 4.0f, "example2", static_cast(9), - std::string_view("view1")); - LOG_INFO(logger, "logging fox test {} {} {} {} {} {} {} {} {} {}", "example1", 7UL, "example2", 2, - 1, 3.0, std::string("str2"), 5L, 4.0f, "example3"); - LOG_INFO(logger, "logging fox quick brown {} {} {}", "example1", 3.0, 6LL); - LOG_INFO(logger, "quick lazy brown test {} {} {} {}", "example1", std::string_view("view1"), - std::string("str1"), std::string_view("view2")); - LOG_INFO(logger, "over fox dog {} {} {} {} {} {} {} {}", "example1", static_cast(10), - true, 5L, std::string_view("view2"), 3.0, std::string("str1"), 2); - LOG_INFO(logger, "jumps logging over {} {} {} {} {} {} {} {} {} {}", 8ULL, std::string("str2"), 7UL, - "example3", 4.0f, static_cast(10), std::string_view("view1"), 2, 3.0, 6LL); - LOG_INFO(logger, "jumps fox over {} {} {} {}", std::string_view("view2"), 5L, 7UL, std::string_view("view1")); - LOG_INFO(logger, "example brown over jumps {}", 7UL); - LOG_INFO(logger, "fox example jumps test {}", true); - LOG_INFO(logger, "fox test over {} {} {}", std::string_view("view1"), "example3", std::string("str1")); - LOG_INFO(logger, "logging dog brown over {} {} {} {} {}", 6LL, std::string_view("view2"), - std::string("str2"), 5L, "example1"); - LOG_INFO(logger, "fox example dog {} {} {} {} {} {}", 2, 1, static_cast(10), 4.0f, - std::string("str2"), std::string_view("view2")); - LOG_INFO(logger, "fox dog jumps {} {} {} {} {} {} {} {} {}", "example2", std::string("str1"), - std::string_view("view2"), std::string_view("view1"), 8ULL, 4.0f, 2, "example3", - static_cast(10)); - LOG_INFO(logger, "fox logging dog {} {} {} {} {} {} {} {}", "example1", 1, std::string("str1"), - static_cast(10), "example2", false, 6LL, "example3"); - LOG_INFO(logger, "quick test jumps {} {} {} {}", std::string("str2"), 6LL, - static_cast(10), false); - LOG_INFO(logger, "over fox quick dog {} {} {} {} {} {}", std::string("str1"), true, - std::string("str2"), 4.0f, 7UL, 2); - LOG_INFO(logger, "fox dog test {} {} {} {} {}", "example1", std::string("str1"), 6LL, - static_cast(10), false); - LOG_INFO(logger, "brown jumps example over {} {} {} {} {} {} {} {} {}", std::string("str2"), - static_cast(9), 5L, "example2", std::string("str1"), "example3", - std::string_view("view2"), 4.0f, 3.0); - LOG_INFO(logger, "quick logging dog {} {} {} {} {} {} {} {} {} {}", std::string("str2"), false, - 8ULL, std::string("str1"), 3.0, 5L, 4.0f, 6LL, 7UL, "example2"); - LOG_INFO(logger, "fox dog quick {} {} {} {} {}", 3.0, true, 4.0f, 2, "example1"); - LOG_INFO(logger, "quick brown over logging {}", 2); - LOG_INFO(logger, "dog logging example {} {} {}", "example3", 1, "example1"); - LOG_INFO(logger, "logging over jumps {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - 4.0f, static_cast(10), std::string_view("view1"), "example3", "example1", - std::string("str2"), "example2", 3.0, 6LL); - LOG_INFO(logger, "jumps quick over {} {} {} {} {} {} {}", "example1", false, true, "example3", 5L, - std::string("str2"), static_cast(10)); - LOG_INFO(logger, "logging lazy brown fox {}", 6LL); - LOG_INFO(logger, "over quick brown dog {} {} {} {}", "example3", std::string("str2"), 1, 4.0f); - LOG_INFO(logger, "brown logging fox jumps {} {} {}", true, 5L, 2); - LOG_INFO(logger, "example test fox {} {}", true, 1); - LOG_INFO(logger, "quick test fox logging {} {} {} {} {} {}", static_cast(10), - 8ULL, 4.0f, std::string("str1"), 7UL, false); - LOG_INFO(logger, "dog logging fox test {} {} {} {} {} {} {}", false, "example3", - static_cast(10), 5L, 2, 6LL, std::string("str1")); - LOG_INFO(logger, "dog example jumps {} {}", std::string("str1"), 7UL); - LOG_INFO(logger, "dog over jumps test {} {} {} {} {} {} {}", std::string("str2"), false, 4.0f, - std::string_view("view1"), static_cast(10), true, 7UL); - LOG_INFO(logger, "lazy fox brown dog {} {}", std::string_view("view2"), 5L); - LOG_INFO(logger, "over quick test example {} {} {} {} {} {} {}", 7UL, 5L, 8ULL, 1, - static_cast(9), std::string_view("view2"), std::string("str2")); - LOG_INFO(logger, "brown over fox example {} {} {} {} {} {} {} {}", static_cast(10), 5L, - std::string_view("view1"), std::string("str2"), static_cast(9), 8ULL, "example3", 3.0); - LOG_INFO(logger, "logging jumps brown {} {} {} {}", 7UL, 3.0, true, "example1"); - LOG_INFO(logger, "brown quick logging example {} {} {} {} {}", "example2", - static_cast(10), 5L, static_cast(9), 6LL); - LOG_INFO(logger, "jumps logging fox over {} {} {} {} {} {} {} {}", 3.0, 2, "example2", "example1", - 4.0f, std::string("str1"), std::string_view("view2"), true); - LOG_INFO(logger, "over logging lazy dog {}", 6LL); - LOG_INFO(logger, "dog lazy over {}", std::string("str1")); - LOG_INFO(logger, "jumps over logging dog {} {} {} {} {} {} {} {}", 4.0f, "example1", 8ULL, false, - 2, 5L, static_cast(9), std::string_view("view1")); - LOG_INFO(logger, "brown quick jumps {} {} {} {} {} {} {} {}", std::string_view("view2"), true, - "example1", 8ULL, static_cast(10), std::string("str2"), "example2", - std::string_view("view1")); - LOG_INFO(logger, "logging dog lazy {} {} {}", "example3", std::string_view("view1"), std::string("str1")); - LOG_INFO(logger, "test logging fox {} {}", 7UL, 8ULL); - LOG_INFO(logger, "fox brown lazy {} {} {} {} {} {} {} {}", static_cast(10), - static_cast(9), 1, 8ULL, false, "example2", std::string("str1"), 7UL); - LOG_INFO(logger, "example fox dog {} {}", "example3", std::string_view("view2")); - LOG_INFO(logger, "logging dog jumps {} {} {} {} {} {} {} {} {}", "example3", - std::string_view("view2"), static_cast(10), static_cast(9), 7UL, - 1, "example2", std::string("str1"), true); - LOG_INFO(logger, "example fox brown {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), 4.0f, 5L, 6LL, "example2", true, 2, "example1", - std::string("str2")); - LOG_INFO(logger, "fox over example {} {} {} {} {} {} {} {}", static_cast(10), 2, - 3.0, std::string("str1"), std::string("str2"), true, 1, "example3"); - LOG_INFO(logger, "example jumps brown fox {} {}", false, std::string_view("view2")); - LOG_INFO(logger, "brown jumps dog logging {} {} {} {} {} {} {} {}", 7UL, "example2", 6LL, - std::string_view("view1"), 1, static_cast(9), std::string("str2"), 5L); - LOG_INFO(logger, "example test quick logging {} {} {} {} {} {} {}", std::string_view("view1"), - true, std::string("str2"), 7UL, std::string_view("view2"), "example3", 3.0); - LOG_INFO(logger, "over lazy example jumps {} {} {} {} {} {} {}", std::string_view("view2"), - "example2", std::string_view("view1"), 8ULL, 6LL, false, 3.0); - LOG_INFO(logger, "jumps dog quick logging {} {}", "example2", std::string_view("view2")); - LOG_INFO(logger, "lazy example fox test {} {}", std::string("str2"), "example1"); - LOG_INFO(logger, "example quick jumps {}", "example2"); - LOG_INFO(logger, "quick fox example {} {} {} {} {} {} {}", "example2", std::string("str2"), 1, - 8ULL, true, "example1", 3.0); - LOG_INFO(logger, "lazy jumps dog {} {} {} {} {} {} {} {}", std::string_view("view1"), - static_cast(10), std::string_view("view2"), 7UL, std::string("str2"), - false, 1, 6LL); - LOG_INFO(logger, "fox lazy over {} {} {}", static_cast(9), 4.0f, "example1"); - LOG_INFO(logger, "brown quick jumps test {} {} {} {} {} {} {} {}", 5L, 4.0f, - std::string_view("view2"), "example2", "example1", true, false, 2); - LOG_INFO(logger, "brown fox quick {} {} {}", "example3", static_cast(9), std::string("str2")); - LOG_INFO(logger, "lazy dog quick {} {} {} {} {} {}", 8ULL, "example1", 7UL, "example3", 3.0, 4.0f); - LOG_INFO(logger, "over dog test {} {} {} {} {}", static_cast(9), std::string("str2"), - std::string_view("view1"), std::string("str1"), true); - LOG_INFO(logger, "quick brown logging {} {} {} {} {} {} {} {} {} {}", 1, 2, "example2", - std::string("str2"), 5L, false, static_cast(10), std::string("str1"), - std::string_view("view2"), "example1"); - LOG_INFO(logger, "dog over test {}", std::string("str2")); - LOG_INFO(logger, "example logging fox test {} {} {}", true, 2, std::string_view("view1")); - LOG_INFO(logger, "logging fox quick {} {} {} {} {}", "example3", 6LL, true, 4.0f, 7UL); - LOG_INFO(logger, "logging brown test jumps {} {} {} {} {}", 2, 3.0, "example2", 5L, static_cast(9)); - LOG_INFO(logger, "dog example logging lazy {} {} {}", "example2", "example1", 2); - LOG_INFO(logger, "logging fox lazy jumps {} {} {} {} {} {} {}", static_cast(10), - false, "example2", 8ULL, "example1", "example3", 6LL); - LOG_INFO(logger, "test logging quick over {}", "example1"); - LOG_INFO(logger, "test quick example {} {}", "example1", 1); - LOG_INFO(logger, "dog lazy test brown {} {} {} {} {} {} {} {} {} {}", 5L, 2, true, std::string("str1"), - "example2", std::string_view("view2"), 1, static_cast(10), 3.0, 6LL); - LOG_INFO(logger, "over brown jumps fox {} {} {} {} {} {} {} {} {} {}", - static_cast(10), 2, "example1", 6LL, "example3", 7UL, - std::string_view("view2"), 3.0, "example2", std::string_view("view1")); - LOG_INFO(logger, "dog quick test brown {} {} {} {}", std::string("str1"), "example2", - std::string("str2"), 8ULL); - LOG_INFO(logger, "logging fox brown {} {} {} {} {} {}", std::string("str1"), 6LL, 1, "example1", 4.0f, true); - LOG_INFO(logger, "jumps over test quick {} {} {} {} {} {} {}", std::string("str2"), 6LL, true, - "example2", 7UL, 5L, 3.0); - LOG_INFO(logger, "example logging over {} {} {} {} {}", std::string("str1"), 5L, "example2", false, 7UL); - LOG_INFO(logger, "example quick fox dog {} {} {} {} {} {}", std::string_view("view2"), - static_cast(9), std::string("str1"), std::string("str2"), false, 1); - LOG_INFO(logger, "example dog lazy {} {} {}", 2, 6LL, 8ULL); - LOG_INFO(logger, "dog lazy example {} {} {} {} {} {}", 5L, "example2", "example3", 7UL, - std::string("str1"), 1); - LOG_INFO(logger, "brown lazy logging quick {}", static_cast(9)); - LOG_INFO(logger, "jumps test dog fox {} {} {} {} {} {} {} {}", 7UL, "example1", 5L, 6LL, 8ULL, - false, true, 4.0f); - LOG_INFO(logger, "dog quick logging test {} {} {} {} {}", 3.0, 2, true, 5L, std::string_view("view1")); - LOG_INFO(logger, "dog over lazy {} {} {} {} {} {} {}", 5L, "example3", std::string("str1"), - "example2", 6LL, 8ULL, std::string("str2")); - LOG_INFO(logger, "example quick jumps {} {} {} {}", "example2", static_cast(10), false, 7UL); - LOG_INFO(logger, "quick fox brown {}", true); - LOG_INFO(logger, "jumps over lazy dog {} {} {} {} {} {} {}", 7UL, 6LL, 8ULL, false, 5L, 3.0, 2); - LOG_INFO(logger, "brown quick logging {} {} {}", 1, static_cast(10), std::string("str1")); - LOG_INFO(logger, "jumps lazy example {} {} {} {} {}", 1, static_cast(10), 6LL, 5L, - "example1"); - LOG_INFO(logger, "example jumps quick {} {} {} {} {} {}", std::string_view("view1"), - std::string_view("view2"), 7UL, 3.0, 6LL, "example1"); - LOG_INFO(logger, "over jumps logging {} {} {} {} {} {} {} {} {} {}", 2, "example1", 4.0f, 6LL, - 7UL, 3.0, std::string_view("view2"), 1, static_cast(9), 8ULL); - LOG_INFO(logger, "lazy jumps dog {} {} {} {}", static_cast(9), 5L, 2, 4.0f); - LOG_INFO(logger, "fox dog jumps example {} {} {} {} {} {} {} {} {}", 5L, "example1", 4.0f, 2, - 8ULL, static_cast(9), "example2", 6LL, 7UL); - LOG_INFO(logger, "logging fox lazy jumps {} {} {} {} {} {} {} {} {}", 2, std::string("str1"), - std::string_view("view2"), std::string_view("view1"), 4.0f, false, "example2", 5L, - static_cast(10)); - LOG_INFO(logger, "test quick brown example {} {} {} {} {} {} {}", 3.0, false, std::string("str1"), - true, 7UL, "example1", 2); - LOG_INFO(logger, "dog fox jumps {} {} {} {} {} {} {} {} {}", 4.0f, 1, 2, "example1", - static_cast(9), "example3", 5L, 3.0, std::string("str2")); - LOG_INFO(logger, "dog fox brown {} {} {} {}", 2, 1, std::string_view("view1"), std::string("str2")); - LOG_INFO(logger, "lazy test brown example {} {} {} {} {} {}", "example1", true, "example2", - std::string("str2"), static_cast(9), 3.0); - LOG_INFO(logger, "logging brown quick example {} {}", 5L, std::string("str1")); - LOG_INFO(logger, "example fox lazy dog {} {} {} {} {} {} {}", true, 1, - static_cast(10), false, 5L, "example2", 6LL); - LOG_INFO(logger, "logging dog brown quick {} {} {} {} {}", static_cast(9), 1, - std::string("str1"), 7UL, 4.0f); - LOG_INFO(logger, "logging lazy quick {}", false); - LOG_INFO(logger, "over lazy jumps {} {} {} {}", "example3", "example2", "example1", 2); - LOG_INFO(logger, "lazy dog fox {} {} {} {} {}", "example1", true, 3.0, std::string("str1"), - static_cast(10)); - LOG_INFO(logger, "over logging example dog {} {} {} {} {} {}", true, - static_cast(10), 1, "example1", std::string_view("view2"), "example3"); - LOG_INFO(logger, "brown lazy example {} {} {} {} {} {} {}", 1, 6LL, 7UL, "example2", "example1", - std::string_view("view2"), false); - LOG_INFO(logger, "example over test {} {} {} {}", true, std::string_view("view1"), - static_cast(9), static_cast(10)); - LOG_INFO(logger, "test dog fox {} {} {} {} {} {} {} {}", "example3", std::string("str2"), - "example2", 3.0, 7UL, true, std::string_view("view1"), 6LL); - LOG_INFO(logger, "dog test fox {}", std::string_view("view1")); - LOG_INFO(logger, "jumps over lazy {} {} {} {} {}", std::string_view("view2"), false, "example3", 3.0, 4.0f); - LOG_INFO(logger, "example test over logging {} {} {} {} {} {} {} {} {}", 3.0, std::string("str2"), - std::string("str1"), 4.0f, 8ULL, 1, std::string_view("view1"), - static_cast(10), 7UL); - LOG_INFO(logger, "quick dog logging {} {} {} {} {} {} {} {}", static_cast(9), 8ULL, true, - 2, std::string("str1"), "example1", 1, 3.0); - LOG_INFO(logger, "quick logging jumps {} {}", "example3", "example1"); - LOG_INFO(logger, "example brown quick {}", "example1"); - LOG_INFO(logger, "jumps fox logging test {} {}", static_cast(9), 4.0f); - LOG_INFO(logger, "jumps fox lazy over {} {} {} {}", "example3", std::string("str2"), "example2", 5L); - LOG_INFO(logger, "example test logging {}", 7UL); - LOG_INFO(logger, "quick example dog {} {} {} {} {} {} {}", 4.0f, 6LL, 8ULL, - static_cast(10), true, "example3", 2); - LOG_INFO(logger, "lazy test fox {} {}", static_cast(9), "example1"); - LOG_INFO(logger, "logging lazy dog jumps {}", false); - LOG_INFO(logger, "brown jumps lazy fox {} {} {} {} {} {} {}", 8ULL, "example3", "example1", - std::string_view("view2"), 3.0, std::string("str1"), 2); - LOG_INFO(logger, "lazy quick dog {} {} {} {} {}", 8ULL, std::string_view("view2"), 7UL, false, - std::string_view("view1")); - LOG_INFO(logger, "fox logging brown jumps {} {}", 8ULL, std::string("str1")); - LOG_INFO(logger, "lazy quick brown example {} {} {} {}", 4.0f, "example3", true, false); - LOG_INFO(logger, "dog example brown fox {} {} {} {} {} {} {} {} {}", false, 1, "example2", 4.0f, - 8ULL, true, "example3", 2, std::string_view("view2")); - LOG_INFO(logger, "test quick over example {} {} {} {} {} {} {} {} {} {}", 2, - std::string_view("view2"), 3.0, 4.0f, false, "example2", 6LL, "example3", 5L, 7UL); - LOG_INFO(logger, "over dog fox {} {}", "example3", 8ULL); - LOG_INFO(logger, "fox over jumps {} {}", 3.0, 2); - LOG_INFO(logger, "jumps quick lazy over {} {}", static_cast(9), 1); - LOG_INFO(logger, "logging fox jumps {} {} {} {} {} {}", static_cast(10), - std::string_view("view1"), "example2", 2, 4.0f, 6LL); - LOG_INFO(logger, "lazy jumps example test {} {} {}", static_cast(10), 3.0, true); - LOG_INFO(logger, "lazy quick dog over {} {} {} {} {} {} {} {}", "example2", - static_cast(10), std::string("str2"), false, true, - std::string_view("view1"), 8ULL, "example3"); - LOG_INFO(logger, "logging test fox {} {} {} {}", static_cast(10), - std::string_view("view2"), false, "example2"); - LOG_INFO(logger, "example quick over {} {} {} {} {} {} {} {}", "example3", std::string_view("view1"), - 4.0f, std::string("str1"), true, static_cast(9), "example2", 1); - LOG_INFO(logger, "fox jumps quick lazy {} {}", 6LL, 1); - LOG_INFO(logger, "fox jumps logging brown {} {} {} {} {} {} {} {} {} {}", static_cast(9), 1, - std::string("str1"), "example2", 5L, "example3", std::string_view("view2"), 8ULL, 4.0f, 2); - LOG_INFO(logger, "test over fox lazy {} {} {}", false, std::string("str2"), "example3"); - LOG_INFO(logger, "jumps brown fox dog {} {} {} {}", true, 8ULL, std::string("str2"), "example3"); - LOG_INFO(logger, "quick fox lazy dog {} {} {} {} {} {} {}", 7UL, "example1", 3.0, 4.0f, - static_cast(9), static_cast(10), 5L); - LOG_INFO(logger, "lazy example logging {} {} {} {} {} {} {} {} {} {}", true, 1, 7UL, 8ULL, - std::string("str2"), std::string_view("view1"), 2, false, 6LL, "example3"); - LOG_INFO(logger, "dog brown logging {} {} {}", static_cast(10), 8ULL, 7UL); - LOG_INFO(logger, "test example lazy logging {} {} {} {} {} {} {} {}", 8ULL, 3.0, 5L, 4.0f, - std::string_view("view1"), std::string("str2"), static_cast(10), - "example1"); - LOG_INFO(logger, "dog logging over {} {} {} {} {} {}", 2, std::string("str2"), - static_cast(9), 8ULL, "example3", static_cast(10)); - LOG_INFO(logger, "test fox over {} {} {} {} {} {}", true, static_cast(9), 5L, 1, - std::string_view("view2"), "example2"); - LOG_INFO(logger, "lazy fox logging {} {} {}", 3.0, std::string_view("view1"), std::string_view("view2")); - LOG_INFO(logger, "logging over example test {} {} {} {} {} {} {}", std::string_view("view1"), - std::string("str2"), 2, "example3", 4.0f, 5L, "example1"); - LOG_INFO(logger, "fox example lazy over {} {} {} {} {} {} {} {}", "example1", false, true, 2, 5L, - static_cast(10), "example2", 7UL); - LOG_INFO(logger, "example fox lazy test {} {} {} {} {} {} {}", std::string_view("view2"), - std::string("str2"), static_cast(9), std::string_view("view1"), 7UL, "example2", 6LL); - LOG_INFO(logger, "quick test jumps example {} {} {} {}", "example3", 6LL, std::string_view("view1"), 3.0); - LOG_INFO(logger, "jumps over brown example {} {}", 4.0f, 8ULL); - LOG_INFO(logger, "jumps quick dog {} {} {} {} {} {}", 3.0, 8ULL, 7UL, 5L, "example1", std::string("str1")); - LOG_INFO(logger, "quick dog brown lazy {} {} {} {}", 2, true, 8ULL, static_cast(9)); - LOG_INFO(logger, "quick fox jumps {} {} {} {} {} {} {} {} {}", 8ULL, 7UL, static_cast(9), - 2, 4.0f, 1, std::string_view("view2"), std::string_view("view1"), std::string("str2")); - LOG_INFO(logger, "lazy example test logging {} {} {} {} {} {} {} {} {} {}", 5L, 2, 3.0, std::string("str1"), - "example2", std::string_view("view2"), 1, std::string("str2"), true, "example1"); - LOG_INFO(logger, "fox lazy jumps {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - "example1", std::string_view("view1"), 2, 6LL, 4.0f, "example2", - static_cast(10), 1, true); - LOG_INFO(logger, "dog test quick jumps {} {} {}", static_cast(10), 1, 6LL); - LOG_INFO(logger, "logging brown dog quick {} {} {} {}", true, 6LL, 4.0f, static_cast(9)); - LOG_INFO(logger, "lazy over dog logging {} {} {} {} {} {} {}", "example2", "example3", 4.0f, 5L, - true, static_cast(10), std::string("str1")); - LOG_INFO(logger, "lazy quick logging {} {} {} {}", 3.0, std::string("str1"), 2, std::string("str2")); - LOG_INFO(logger, "dog jumps logging lazy {} {}", 6LL, 4.0f); - LOG_INFO(logger, "logging fox dog quick {} {} {} {} {} {} {} {}", std::string_view("view1"), - "example2", true, "example1", 1, std::string_view("view2"), 7UL, 2); - LOG_INFO(logger, "brown logging over {} {} {} {} {} {} {}", std::string("str1"), 5L, - std::string("str2"), static_cast(10), "example3", 8ULL, "example1"); - LOG_INFO(logger, "test fox dog {} {} {}", std::string("str2"), static_cast(10), 2); - LOG_INFO(logger, "jumps fox brown {} {} {} {} {} {} {} {} {} {}", "example3", - static_cast(9), 5L, 8ULL, 3.0, std::string_view("view2"), 2, "example1", 4.0f, 1); - LOG_INFO(logger, "jumps lazy test dog {} {} {} {} {} {} {}", 3.0, true, 7UL, 4.0f, 6LL, - std::string("str1"), 2); - LOG_INFO(logger, "logging quick brown lazy {} {} {} {} {}", false, std::string_view("view2"), - std::string_view("view1"), 1, "example1"); - LOG_INFO(logger, "over brown fox logging {} {} {} {} {} {}", 5L, static_cast(9), - std::string("str2"), "example3", std::string("str1"), 8ULL); - LOG_INFO(logger, "quick brown logging {} {} {} {} {} {} {} {} {} {}", std::string("str1"), - "example3", "example1", 5L, static_cast(9), 1, "example2", 7UL, 2, 8ULL); - LOG_INFO(logger, "quick brown logging {} {} {} {} {} {} {} {} {} {}", - static_cast(10), static_cast(9), std::string_view("view2"), 6LL, - "example1", 7UL, 4.0f, false, std::string("str2"), 8ULL); - LOG_INFO(logger, "fox dog lazy test {} {} {}", std::string("str2"), static_cast(9), 5L); - LOG_INFO(logger, "quick example over {} {} {} {} {} {} {} {} {} {}", 6LL, - std::string_view("view2"), static_cast(10), true, 2, - static_cast(9), "example1", std::string("str1"), std::string("str2"), "example2"); - LOG_INFO(logger, "over example fox {} {} {}", std::string("str2"), "example3", std::string_view("view1")); - LOG_INFO(logger, "brown logging test {} {} {} {} {}", std::string("str1"), - std::string_view("view1"), std::string("str2"), false, 1); - LOG_INFO(logger, "logging quick test dog {} {} {} {} {}", 8ULL, std::string_view("view2"), - std::string_view("view1"), "example1", true); - LOG_INFO(logger, "dog example brown lazy {} {} {} {} {} {} {}", "example3", - std::string_view("view1"), static_cast(10), 2, 5L, "example2", true); - LOG_INFO(logger, "jumps brown fox {} {} {} {} {} {} {} {} {}", "example1", 4.0f, std::string("str1"), 8ULL, - std::string_view("view1"), static_cast(9), "example3", true, std::string_view("view2")); - LOG_INFO(logger, "logging over lazy {} {} {} {}", 2, false, 1, std::string_view("view2")); - LOG_INFO(logger, "example quick brown fox {} {} {} {} {}", 6LL, false, 3.0, 2, static_cast(9)); - LOG_INFO(logger, "test fox over logging {} {} {} {} {} {} {} {} {}", 2, 4.0f, 8ULL, 7UL, - "example1", std::string_view("view2"), false, "example2", 5L); - LOG_INFO(logger, "test lazy fox {} {} {} {} {} {}", 7UL, static_cast(9), 4.0f, - std::string_view("view1"), "example2", "example3"); - LOG_INFO(logger, "brown logging lazy {} {} {} {} {} {} {}", 4.0f, 7UL, std::string_view("view2"), - 8ULL, static_cast(10), "example2", "example1"); - LOG_INFO(logger, "test lazy over {} {} {} {} {} {} {} {} {} {}", 7UL, std::string_view("view2"), - 2, true, "example1", 4.0f, false, std::string("str1"), "example2", "example3"); - LOG_INFO(logger, "logging over test {} {} {} {}", 5L, "example1", static_cast(10), 7UL); - LOG_INFO(logger, "over dog lazy quick {} {}", 8ULL, 6LL); - LOG_INFO(logger, "brown example quick {}", "example1"); - LOG_INFO(logger, "test logging example fox {} {} {} {} {} {} {} {} {}", static_cast(9), - "example1", "example2", 4.0f, 3.0, std::string_view("view2"), 7UL, 5L, 8ULL); - LOG_INFO(logger, "quick example fox {}", true); - LOG_INFO(logger, "test dog fox {}", std::string_view("view1")); - LOG_INFO(logger, "quick lazy over test {} {} {} {} {} {} {} {}", 8ULL, 2, std::string("str1"), - "example2", "example1", 3.0, std::string_view("view1"), std::string_view("view2")); - LOG_INFO(logger, "fox dog jumps {} {} {} {} {} {} {} {} {} {}", std::string("str1"), 7UL, - "example1", 8ULL, 1, "example2", static_cast(9), std::string_view("view1"), 2, false); - LOG_INFO(logger, "example logging quick dog {} {} {} {} {} {}", static_cast(9), "example2", - std::string("str2"), 5L, 8ULL, std::string_view("view2")); - LOG_INFO(logger, "logging dog quick fox {} {} {} {} {} {} {} {} {}", std::string("str1"), 4.0f, - std::string("str2"), static_cast(9), 3.0, static_cast(10), - std::string_view("view2"), "example1", 5L); - LOG_INFO(logger, "over dog jumps {} {} {} {}", std::string_view("view2"), static_cast(9), - 4.0f, static_cast(10)); - LOG_INFO(logger, "logging example fox jumps {} {} {} {} {} {} {}", true, false, - static_cast(9), 5L, 7UL, 6LL, std::string_view("view2")); - LOG_INFO(logger, "over quick brown {} {} {} {} {} {} {} {}", 1, 2, false, true, 4.0f, - std::string_view("view2"), static_cast(10), std::string("str2")); - LOG_INFO(logger, "brown lazy logging {} {} {} {} {} {}", "example3", 3.0, - static_cast(10), 8ULL, 6LL, std::string("str1")); - LOG_INFO(logger, "example over dog {} {} {} {} {} {} {} {} {}", "example2", 2, 7UL, true, 8ULL, - "example3", 4.0f, 1, false); - LOG_INFO(logger, "example over fox {}", "example1"); - LOG_INFO(logger, "over example brown {}", "example1"); - LOG_INFO(logger, "over jumps fox lazy {} {} {} {} {} {} {} {} {} {}", 2, 4.0f, 8ULL, - std::string_view("view1"), static_cast(9), true, std::string("str1"), "example2", - std::string_view("view2"), 6LL); - LOG_INFO(logger, "brown logging example {} {}", "example3", std::string_view("view2")); - LOG_INFO(logger, "brown over fox {} {} {} {} {} {} {} {}", 1, "example1", std::string("str2"), - true, std::string_view("view1"), std::string_view("view2"), 3.0, static_cast(9)); - LOG_INFO(logger, "dog over quick {} {} {} {} {}", std::string("str2"), 8ULL, 4.0f, 5L, - static_cast(9)); - LOG_INFO(logger, "brown dog quick lazy {} {} {} {} {}", "example3", 3.0, 7UL, "example1", std::string("str1")); - LOG_INFO(logger, "dog lazy logging quick {} {} {} {} {}", std::string_view("view1"), 6LL, 2, - "example1", "example2"); - LOG_INFO(logger, "over quick test {} {} {} {}", std::string("str1"), 3.0, 6LL, std::string_view("view1")); - LOG_INFO(logger, "fox brown quick lazy {} {} {} {}", 3.0, "example3", 5L, std::string("str2")); - LOG_INFO(logger, "example over lazy {} {} {}", 7UL, 5L, 6LL); - LOG_INFO(logger, "quick example dog {} {} {} {}", "example1", std::string("str2"), - std::string_view("view2"), 5L); - LOG_INFO(logger, "example brown over logging {} {} {} {} {} {} {} {} {}", std::string("str2"), - 6LL, "example3", "example2", 4.0f, false, static_cast(10), 1, 2); - LOG_INFO(logger, "test brown quick {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 7UL, - std::string_view("view1"), true, "example1", 6LL, static_cast(9), 1, - std::string("str1"), 5L); - LOG_INFO(logger, "brown dog jumps {} {} {} {} {} {} {} {} {} {}", 7UL, static_cast(10), - false, true, 8ULL, 1, 4.0f, std::string("str1"), "example3", std::string_view("view2")); - LOG_INFO(logger, "example lazy over test {} {} {} {} {}", 1, 3.0, 2, static_cast(10), 7UL); - LOG_INFO(logger, "lazy quick fox example {} {} {} {} {} {}", "example3", "example2", 2, - std::string("str1"), static_cast(10), 4.0f); - LOG_INFO(logger, "quick fox dog lazy {} {} {} {} {} {} {} {} {} {}", 5L, std::string_view("view2"), - 4.0f, 3.0, 2, std::string("str2"), "example1", 7UL, "example2", 6LL); - LOG_INFO(logger, "quick jumps over {} {} {} {} {} {} {}", 3.0, true, 2, "example2", - std::string("str2"), std::string_view("view2"), 7UL); - LOG_INFO(logger, "over jumps fox {} {} {} {} {}", "example3", std::string("str1"), - static_cast(9), std::string_view("view2"), 2); - LOG_INFO(logger, "quick brown example {} {} {} {} {} {} {}", "example1", - std::string_view("view2"), true, "example2", false, 3.0, static_cast(10)); - LOG_INFO(logger, "test dog lazy {} {} {} {} {} {} {}", 5L, std::string("str1"), 8ULL, 2, - "example2", true, false); - LOG_INFO(logger, "brown lazy example {} {} {}", "example3", "example1", std::string_view("view2")); - LOG_INFO(logger, "test logging brown {} {} {} {} {} {} {} {}", 5L, 8ULL, false, "example1", - "example3", 1, static_cast(9), std::string_view("view1")); - LOG_INFO(logger, "fox lazy over {} {} {} {} {} {} {}", 3.0, 5L, std::string_view("view2"), 2, - static_cast(10), static_cast(9), 7UL); - LOG_INFO(logger, "logging jumps over {} {} {} {}", "example2", 4.0f, 5L, std::string_view("view2")); - LOG_INFO(logger, "jumps lazy quick brown {} {} {} {} {} {} {} {} {}", "example2", 4.0f, "example3", - static_cast(9), 2, 7UL, 5L, std::string("str1"), std::string_view("view1")); - LOG_INFO(logger, "jumps example lazy dog {} {} {} {} {}", static_cast(9), - std::string("str2"), 3.0, static_cast(10), false); - LOG_INFO(logger, "lazy over example {} {} {} {} {}", 2, "example1", - static_cast(10), std::string("str2"), "example2"); - LOG_INFO(logger, "quick logging brown fox {} {}", std::string("str1"), 7UL); - LOG_INFO(logger, "over test brown quick {}", true); - LOG_INFO(logger, "lazy over dog brown {} {} {} {} {}", 2, 1, "example2", true, "example1"); - LOG_INFO(logger, "dog test fox {} {} {} {} {} {} {} {} {} {}", static_cast(10), - false, std::string_view("view2"), std::string_view("view1"), 2, "example1", - static_cast(9), "example3", "example2", std::string("str2")); - LOG_INFO(logger, "over dog quick {} {} {} {} {} {}", "example2", 5L, static_cast(9), 1, true, 3.0); - LOG_INFO(logger, "logging jumps example fox {} {} {} {} {} {}", std::string("str2"), 2, false, - "example3", "example1", static_cast(9)); - LOG_INFO(logger, "jumps dog example {}", std::string("str1")); - LOG_INFO(logger, "over logging fox {} {} {} {} {} {} {} {}", "example3", std::string_view("view2"), - 4.0f, false, 1, std::string("str2"), 5L, std::string_view("view1")); - LOG_INFO(logger, "over brown fox lazy {} {} {} {} {}", true, 8ULL, "example2", - std::string_view("view2"), static_cast(9)); - LOG_INFO(logger, "fox lazy over {} {} {} {} {} {} {} {} {} {}", "example3", std::string("str1"), false, - "example1", 1, "example2", 5L, std::string_view("view1"), static_cast(10), 6LL); - LOG_INFO(logger, "example dog brown {} {} {} {} {} {} {} {}", true, "example1", std::string_view("view1"), - std::string_view("view2"), "example2", 5L, static_cast(10), false); - LOG_INFO(logger, "jumps dog test over {} {} {} {} {}", std::string("str2"), "example2", 2, 3.0, - std::string_view("view1")); - LOG_INFO(logger, "test over brown dog {} {} {} {} {} {}", std::string("str1"), 5L, false, - static_cast(9), std::string("str2"), std::string_view("view2")); - LOG_INFO(logger, "jumps example dog logging {} {}", "example3", true); - LOG_INFO(logger, "dog quick jumps {} {} {} {}", 3.0, static_cast(9), false, 4.0f); - LOG_INFO(logger, "dog over example logging {} {}", 4.0f, std::string("str1")); - LOG_INFO(logger, "brown fox logging {} {} {} {} {} {} {}", false, 5L, 7UL, std::string_view("view1"), - static_cast(9), static_cast(10), "example3"); - LOG_INFO(logger, "brown fox quick dog {} {} {} {} {} {} {}", 4.0f, true, "example2", - std::string_view("view1"), 3.0, 7UL, 6LL); - LOG_INFO(logger, "lazy dog quick test {} {} {} {} {}", static_cast(9), std::string("str1"), - "example1", 2, std::string_view("view2")); - LOG_INFO(logger, "logging example dog {} {} {} {} {} {}", 7UL, static_cast(9), false, 1, 2, - "example2"); - LOG_INFO(logger, "jumps dog example test {} {} {} {} {} {}", 6LL, 4.0f, 7UL, "example1", false, - std::string("str1")); - LOG_INFO(logger, "jumps brown example over {} {} {}", 5L, 8ULL, static_cast(10)); - LOG_INFO(logger, "logging fox dog {} {} {} {} {} {}", true, 6LL, 3.0, 1, false, 8ULL); - LOG_INFO(logger, "example logging brown {} {}", static_cast(10), 5L); - LOG_INFO(logger, "jumps example test quick {} {} {} {} {}", 5L, std::string("str1"), - static_cast(10), 1, true); - LOG_INFO(logger, "fox jumps example test {}", "example3"); - LOG_INFO(logger, "over test quick dog {} {} {} {}", static_cast(10), 6LL, 8ULL, - "example2"); - LOG_INFO(logger, "quick example jumps dog {} {} {} {} {} {} {}", false, 7UL, 5L, - static_cast(9), "example3", std::string("str1"), true); - LOG_INFO(logger, "test logging jumps lazy {} {} {} {} {} {}", std::string_view("view1"), 7UL, 1, - 2, "example1", false); - LOG_INFO(logger, "example logging dog over {} {} {} {} {} {} {} {}", 1, 5L, "example2", - static_cast(10), 3.0, std::string_view("view1"), false, 4.0f); - LOG_INFO(logger, "test over lazy dog {} {} {} {} {} {} {} {} {}", std::string("str2"), "example1", - true, 1, "example3", 5L, static_cast(10), std::string_view("view2"), 4.0f); - LOG_INFO(logger, "quick lazy example brown {} {} {} {}", "example1", std::string("str2"), - "example3", static_cast(10)); - LOG_INFO(logger, "lazy example over {}", std::string("str2")); - LOG_INFO(logger, "jumps over dog {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 1, - "example3", 7UL, std::string("str2"), static_cast(9), "example2", - std::string("str1"), 3.0, true); - LOG_INFO(logger, "fox jumps brown {} {} {}", std::string_view("view1"), std::string("str1"), 5L); - LOG_INFO(logger, "dog quick jumps logging {} {} {} {} {} {} {} {} {} {}", 6LL, - std::string_view("view1"), true, 8ULL, false, std::string("str1"), 3.0, - std::string("str2"), "example2", std::string_view("view2")); - LOG_INFO(logger, "example fox lazy logging {} {} {} {} {} {}", "example1", true, - std::string("str2"), 6LL, std::string_view("view2"), 4.0f); - LOG_INFO(logger, "over fox jumps brown {} {} {} {} {} {}", static_cast(9), true, false, 5L, - std::string_view("view2"), 6LL); - LOG_INFO(logger, "dog logging over lazy {} {}", "example3", 5L); - LOG_INFO(logger, "example test lazy brown {} {} {} {} {} {} {} {} {}", 8ULL, std::string_view("view2"), - "example1", "example3", static_cast(9), 3.0, std::string("str1"), 5L, 7UL); - LOG_INFO(logger, "logging quick over dog {} {} {} {} {} {} {} {} {}", std::string_view("view2"), 7UL, - "example1", false, static_cast(9), true, "example2", 5L, std::string_view("view1")); - LOG_INFO(logger, "test logging lazy fox {} {} {} {} {} {} {} {}", 6LL, 7UL, 2, "example2", - std::string("str2"), "example1", 5L, "example3"); - LOG_INFO(logger, "quick brown lazy {} {} {} {}", static_cast(9), - static_cast(10), 8ULL, 7UL); - LOG_INFO(logger, "quick logging lazy dog {} {} {}", static_cast(9), "example1", - static_cast(10)); - LOG_INFO(logger, "brown lazy logging {}", std::string("str1")); - LOG_INFO(logger, "fox example lazy test {} {} {} {} {} {} {}", 8ULL, true, "example3", - static_cast(10), false, static_cast(9), 3.0); - LOG_INFO(logger, "over fox lazy {} {} {} {} {} {} {} {}", std::string("str2"), - std::string("str1"), 5L, "example3", "example2", std::string_view("view2"), - static_cast(10), std::string_view("view1")); - LOG_INFO(logger, "lazy example dog {} {} {} {} {}", 2, 1, 8ULL, 7UL, 4.0f); - LOG_INFO(logger, "over test quick {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 6LL, 1, - std::string("str1"), 4.0f, "example2", static_cast(10), 2, "example1", 3.0); - LOG_INFO(logger, "brown test logging jumps {} {} {} {}", 2, 3.0, false, 5L); - LOG_INFO(logger, "over lazy dog logging {} {} {} {} {} {} {} {} {}", 2, 8ULL, 4.0f, 7UL, - std::string_view("view2"), static_cast(9), 3.0, "example2", std::string_view("view1")); - LOG_INFO(logger, "dog test jumps {} {}", 6LL, static_cast(9)); - LOG_INFO(logger, "test fox example {} {} {} {}", true, 1, 6LL, std::string("str1")); - LOG_INFO(logger, "jumps logging quick example {} {} {} {} {} {}", std::string_view("view2"), 2, - 8ULL, std::string("str2"), std::string("str1"), static_cast(9)); - LOG_INFO(logger, "over logging dog {} {} {} {} {} {} {}", true, "example3", - static_cast(10), 3.0, "example2", std::string("str1"), 8ULL); - LOG_INFO(logger, "fox brown logging {} {} {} {} {} {} {} {}", "example2", 2, 6LL, "example3", - std::string_view("view1"), std::string_view("view2"), false, 7UL); - LOG_INFO(logger, "fox test over quick {} {}", std::string("str1"), 5L); - LOG_INFO(logger, "quick over brown {} {} {} {} {} {} {}", 8ULL, std::string("str2"), false, 2, - 4.0f, std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "over fox lazy logging {} {} {} {} {} {} {}", 1, 5L, std::string_view("view1"), - 6LL, 4.0f, "example3", "example2"); - LOG_INFO(logger, "quick over example {} {} {} {} {} {} {} {}", std::string_view("view2"), - "example1", false, true, std::string_view("view1"), 2, 6LL, 4.0f); - LOG_INFO(logger, "fox dog brown lazy {} {} {} {}", "example2", true, std::string("str2"), 3.0); - LOG_INFO(logger, "jumps dog test quick {} {}", 8ULL, std::string_view("view2")); - LOG_INFO(logger, "lazy quick fox jumps {} {} {} {} {} {} {}", std::string_view("view2"), - static_cast(10), 3.0, static_cast(9), 8ULL, 7UL, "example2"); - LOG_INFO(logger, "quick example dog {} {} {} {} {} {} {} {} {}", std::string("str2"), false, 2, - 6LL, std::string_view("view2"), std::string_view("view1"), 5L, 7UL, std::string("str1")); - LOG_INFO(logger, "over example lazy {} {} {} {} {} {} {}", 2, 8ULL, 5L, std::string_view("view2"), - "example2", false, std::string("str2")); - LOG_INFO(logger, "over jumps lazy test {} {} {} {}", true, std::string("str1"), - static_cast(10), std::string("str2")); - LOG_INFO(logger, "lazy dog quick {}", std::string_view("view1")); - LOG_INFO(logger, "quick brown over {} {} {} {}", 4.0f, 1, std::string_view("view1"), "example2"); - LOG_INFO(logger, "example quick jumps {} {} {} {}", 7UL, 4.0f, "example3", static_cast(9)); - LOG_INFO(logger, "jumps dog over {} {} {} {} {} {} {} {} {}", 2, 8ULL, 5L, 4.0f, - std::string_view("view2"), true, 7UL, 3.0, false); - LOG_INFO(logger, "fox lazy example dog {}", std::string("str2")); - LOG_INFO(logger, "logging over jumps {} {} {} {} {}", static_cast(10), "example3", - std::string_view("view2"), 7UL, true); - LOG_INFO(logger, "brown test jumps lazy {} {} {} {} {}", 6LL, 7UL, 2, std::string_view("view1"), 4.0f); - LOG_INFO(logger, "over fox lazy dog {} {} {} {}", "example3", 1, 3.0, static_cast(9)); - LOG_INFO(logger, "jumps dog lazy logging {} {} {} {} {} {} {} {} {}", std::string("str1"), false, - "example3", 5L, std::string_view("view2"), std::string_view("view1"), 2, - static_cast(9), true); - LOG_INFO(logger, "fox over lazy {} {} {} {} {} {} {} {}", 2, 4.0f, std::string("str2"), - "example3", 3.0, 1, 8ULL, "example2"); - LOG_INFO(logger, "logging lazy jumps {} {} {} {} {}", static_cast(9), 4.0f, 5L, 6LL, - std::string_view("view2")); - LOG_INFO(logger, "lazy logging fox {} {} {} {} {} {} {} {}", 4.0f, 6LL, static_cast(9), 2, - std::string("str1"), "example1", std::string_view("view1"), 1); - LOG_INFO(logger, "over brown quick lazy {} {} {} {} {} {} {} {}", 5L, 8ULL, true, 7UL, "example1", - std::string("str1"), static_cast(10), 1); - LOG_INFO(logger, "logging brown quick {} {} {} {} {} {} {} {}", 8ULL, false, "example2", true, - "example1", std::string_view("view1"), std::string_view("view2"), 7UL); - LOG_INFO(logger, "example logging brown {} {} {} {} {}", 7UL, false, - static_cast(10), true, 5L); - LOG_INFO(logger, "lazy test jumps logging {} {} {} {} {} {}", static_cast(9), true, - std::string("str1"), std::string_view("view2"), std::string_view("view1"), "example1"); - LOG_INFO(logger, "test logging dog over {} {} {} {}", false, static_cast(9), 3.0, true); - LOG_INFO(logger, "jumps over quick {} {} {} {} {}", 6LL, 3.0, std::string_view("view1"), - std::string_view("view2"), 7UL); - LOG_INFO(logger, "logging test quick {} {} {} {} {} {} {} {} {} {}", static_cast(10), 6LL, - std::string("str1"), static_cast(9), "example2", true, 5L, std::string("str2"), 3.0, 2); - LOG_INFO(logger, "jumps lazy test over {} {} {} {}", false, 6LL, 8ULL, std::string("str2")); - LOG_INFO(logger, "brown example fox {} {}", std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "jumps brown example quick {} {} {} {}", 7UL, 2, 1, std::string_view("view2")); - LOG_INFO(logger, "over example lazy {}", "example3"); - LOG_INFO(logger, "test jumps lazy over {} {} {} {} {} {} {}", 5L, "example3", - std::string_view("view1"), false, 2, std::string("str1"), 6LL); - LOG_INFO(logger, "logging over test brown {} {} {} {} {} {} {} {} {} {}", 8ULL, 1, - std::string("str2"), true, std::string("str1"), "example3", static_cast(9), - std::string_view("view1"), std::string_view("view2"), "example1"); - LOG_INFO(logger, "brown over test quick {} {} {} {} {} {} {} {} {} {}", 2, 7UL, - std::string_view("view1"), 1, true, false, 6LL, 5L, "example1", 8ULL); - LOG_INFO(logger, "lazy over jumps example {} {} {} {} {} {} {}", std::string_view("view2"), 3.0, - "example3", "example2", "example1", 6LL, 2); - LOG_INFO(logger, "test brown dog {} {} {} {} {} {} {} {} {} {}", static_cast(9), 2, - std::string_view("view1"), std::string("str1"), 7UL, std::string_view("view2"), - static_cast(10), "example1", "example2", 6LL); - LOG_INFO(logger, "dog fox logging quick {} {}", 5L, static_cast(9)); - LOG_INFO(logger, "jumps test quick {} {} {} {} {} {} {}", 8ULL, true, 2, - std::string_view("view2"), "example1", 1, 6LL); - LOG_INFO(logger, "lazy example quick logging {} {} {} {} {} {} {} {}", 1, std::string_view("view2"), - "example3", std::string("str1"), static_cast(9), static_cast(10), 7UL, 4.0f); - LOG_INFO(logger, "logging quick dog {} {} {}", "example2", std::string("str2"), 7UL); - LOG_INFO(logger, "jumps over quick {} {} {} {} {} {} {}", 4.0f, std::string("str2"), 6LL, false, - "example1", 5L, 8ULL); - LOG_INFO(logger, "quick test brown {} {} {} {} {} {} {}", 7UL, false, 1, 4.0f, "example3", 5L, 8ULL); - LOG_INFO(logger, "over fox example {}", std::string("str2")); - LOG_INFO(logger, "fox logging lazy {} {}", 5L, "example2"); - LOG_INFO(logger, "lazy brown quick over {} {} {} {} {} {} {} {} {} {}", static_cast(9), - std::string("str1"), 4.0f, true, 7UL, 2, "example2", 5L, false, 1); - LOG_INFO(logger, "quick dog over fox {} {} {}", false, "example2", std::string_view("view1")); - LOG_INFO(logger, "over dog quick {} {} {} {}", std::string_view("view2"), - static_cast(10), 6LL, std::string("str1")); - LOG_INFO(logger, "dog over quick fox {} {}", "example2", "example1"); - LOG_INFO(logger, "lazy fox quick {} {} {} {} {} {}", true, 2, std::string("str1"), - std::string("str2"), static_cast(10), "example1"); - LOG_INFO(logger, "lazy dog fox {}", "example3"); - LOG_INFO(logger, "over example jumps dog {} {} {} {} {} {} {} {}", 4.0f, std::string("str2"), - static_cast(10), 2, "example1", std::string_view("view2"), - std::string("str1"), static_cast(9)); - LOG_INFO(logger, "example quick test logging {} {} {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), false, 1, 7UL, 2, 8ULL, "example1", "example2"); - LOG_INFO(logger, "brown test lazy {} {} {} {}", static_cast(9), 6LL, 2, 4.0f); - LOG_INFO(logger, "dog example logging {} {} {} {} {} {} {} {} {}", "example3", - std::string_view("view1"), 3.0, std::string_view("view2"), - static_cast(10), true, 4.0f, 6LL, static_cast(9)); - LOG_INFO(logger, "over jumps test quick {} {} {} {} {} {}", std::string_view("view2"), 7UL, 8ULL, - std::string("str2"), 5L, "example1"); - LOG_INFO(logger, "example brown fox {} {} {} {} {} {}", "example3", 4.0f, 7UL, 5L, 1, 2); - LOG_INFO(logger, "dog test quick {}", std::string_view("view2")); - LOG_INFO(logger, "example lazy quick {} {}", 3.0, static_cast(9)); - LOG_INFO(logger, "dog test fox {} {} {} {} {} {} {} {} {} {}", false, true, 2, std::string("str1"), 6LL, - "example2", std::string_view("view1"), std::string_view("view2"), std::string("str2"), 3.0); - LOG_INFO(logger, "brown quick example {} {}", std::string("str2"), 6LL); - LOG_INFO(logger, "dog brown quick {} {} {} {} {} {} {} {}", 1, 4.0f, 5L, true, 6LL, - std::string("str1"), "example3", false); - LOG_INFO(logger, "fox dog jumps quick {}", 8ULL); - LOG_INFO(logger, "lazy jumps test {} {} {} {} {} {}", 1, "example1", static_cast(9), 3.0, false, 8ULL); - LOG_INFO(logger, "fox logging example {} {} {} {} {} {} {} {} {}", "example2", 5L, 4.0f, 1, - std::string_view("view1"), "example3", static_cast(9), true, 6LL); - LOG_INFO(logger, "quick lazy brown {}", static_cast(9)); - LOG_INFO(logger, "test logging lazy {} {} {} {}", static_cast(10), - std::string_view("view2"), 4.0f, std::string_view("view1")); - LOG_INFO(logger, "jumps dog over {} {}", false, 8ULL); - LOG_INFO(logger, "quick test lazy {}", true); - LOG_INFO(logger, "dog example logging lazy {} {} {}", 8ULL, std::string("str2"), "example2"); - LOG_INFO(logger, "fox jumps dog over {} {} {} {} {} {}", 4.0f, "example3", 1, 8ULL, 2, true); - LOG_INFO(logger, "lazy fox over quick {} {} {} {} {} {} {} {}", std::string_view("view2"), 2, 5L, - static_cast(9), 3.0, 6LL, "example3", 4.0f); - LOG_INFO(logger, "logging jumps fox lazy {} {} {} {} {}", std::string_view("view2"), false, - static_cast(9), true, 8ULL); - LOG_INFO(logger, "lazy fox quick {} {} {}", "example2", std::string_view("view1"), true); - LOG_INFO(logger, "jumps dog lazy {} {} {}", static_cast(9), std::string("str2"), - static_cast(10)); - LOG_INFO(logger, "jumps quick logging test {} {} {} {} {} {} {}", static_cast(10), - "example1", false, 4.0f, 8ULL, std::string_view("view1"), static_cast(9)); - LOG_INFO(logger, "fox test jumps example {}", "example2"); - LOG_INFO(logger, "example fox lazy quick {} {} {} {} {} {}", 8ULL, "example2", "example1", true, - std::string_view("view2"), 6LL); - LOG_INFO(logger, "test example over quick {} {} {} {}", 5L, "example2", false, 4.0f); - LOG_INFO(logger, "over dog example {} {} {}", 6LL, std::string_view("view2"), std::string("str1")); - LOG_INFO(logger, "jumps test fox logging {} {} {} {} {} {} {}", static_cast(10), - 6LL, 7UL, std::string_view("view2"), static_cast(9), "example1", true); - LOG_INFO(logger, "dog fox over {} {} {} {} {} {} {}", true, 7UL, static_cast(10), - std::string("str1"), 3.0, std::string_view("view1"), 6LL); - LOG_INFO(logger, "over fox dog {} {} {} {} {} {} {} {} {} {}", 4.0f, "example3", true, - static_cast(9), 5L, "example1", std::string("str2"), 3.0, "example2", - static_cast(10)); - LOG_INFO(logger, "dog example brown jumps {} {} {} {} {} {}", static_cast(9), 7UL, true, - 3.0, std::string("str1"), 1); - LOG_INFO(logger, "lazy quick logging over {} {} {} {} {} {}", std::string_view("view1"), - std::string_view("view2"), "example3", std::string("str2"), 5L, static_cast(9)); - LOG_INFO(logger, "jumps test quick lazy {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - std::string_view("view1"), 3.0, 2, 4.0f, static_cast(9), false, 5L, - static_cast(10), "example1"); - LOG_INFO(logger, "brown lazy fox jumps {} {} {} {} {} {} {} {} {}", 8ULL, std::string("str1"), - "example1", true, std::string_view("view1"), false, 2, 7UL, 4.0f); - LOG_INFO(logger, "example lazy logging fox {} {} {} {}", "example1", 3.0, "example2", 5L); - LOG_INFO(logger, "fox lazy test brown {}", true); - LOG_INFO(logger, "dog brown jumps {} {} {} {} {} {} {}", false, "example3", 2, 8ULL, "example1", 3.0, true); - LOG_INFO(logger, "quick test logging dog {} {} {}", 3.0, false, "example1"); - LOG_INFO(logger, "test quick jumps {} {} {} {} {} {} {}", "example3", std::string("str2"), 8ULL, - std::string("str1"), std::string_view("view2"), true, static_cast(9)); - LOG_INFO(logger, "fox brown jumps {} {}", false, 3.0); - LOG_INFO(logger, "brown quick dog over {} {} {} {} {} {} {} {} {} {}", 2, - static_cast(10), 1, "example1", std::string("str2"), true, - std::string_view("view2"), 6LL, 8ULL, std::string_view("view1")); - LOG_INFO(logger, "logging quick example {} {} {} {}", 5L, "example3", 4.0f, 1); - LOG_INFO(logger, "dog brown quick {}", 8ULL); - LOG_INFO(logger, "lazy brown test {} {} {} {} {} {} {} {}", std::string("str1"), "example1", true, - 6LL, 5L, 1, "example3", 8ULL); - LOG_INFO(logger, "test example logging {} {}", 1, true); - LOG_INFO(logger, "test jumps quick fox {} {} {} {} {} {} {} {} {}", "example1", 5L, 4.0f, false, - 8ULL, 7UL, static_cast(10), 6LL, "example3"); - LOG_INFO(logger, "lazy dog logging {} {} {}", "example3", std::string("str2"), 1); - LOG_INFO(logger, "over example dog quick {}", "example3"); - LOG_INFO(logger, "test quick lazy logging {} {} {} {} {} {} {}", std::string_view("view1"), 5L, - "example3", 7UL, 3.0, true, 8ULL); - LOG_INFO(logger, "test dog lazy {} {} {} {}", static_cast(10), 2, - std::string_view("view2"), static_cast(9)); - LOG_INFO(logger, "dog example jumps brown {} {} {}", "example3", 7UL, static_cast(10)); - LOG_INFO(logger, "brown fox over dog {} {} {} {}", static_cast(10), "example2", 2, - std::string_view("view1")); - LOG_INFO(logger, "test example quick logging {} {} {} {} {} {} {} {} {} {}", "example3", - "example1", 8ULL, std::string_view("view2"), false, true, 6LL, std::string("str2"), 5L, 7UL); - LOG_INFO(logger, "over example dog fox {} {} {} {} {} {} {} {} {} {}", 3.0, "example3", true, - 4.0f, false, 8ULL, std::string("str2"), static_cast(9), 6LL, 1); - LOG_INFO(logger, "example logging over dog {} {} {} {} {} {} {}", 6LL, std::string_view("view2"), - std::string("str1"), "example3", 1, std::string_view("view1"), 5L); - LOG_INFO(logger, "brown jumps logging quick {} {} {}", 2, 1, static_cast(9)); - LOG_INFO(logger, "dog test jumps {} {} {}", 6LL, 1, 3.0); - LOG_INFO(logger, "brown test dog quick {} {} {} {} {} {}", "example3", 1, static_cast(9), - std::string_view("view1"), 8ULL, std::string_view("view2")); - LOG_INFO(logger, "quick jumps example dog {} {} {} {} {}", 2, std::string_view("view1"), 3.0, - static_cast(10), 5L); - LOG_INFO(logger, "logging brown quick {} {} {}", 5L, 1, 4.0f); - LOG_INFO(logger, "logging jumps test brown {} {}", "example3", 6LL); - LOG_INFO(logger, "brown over example {}", 6LL); - LOG_INFO(logger, "fox dog example logging {} {} {} {} {} {} {} {}", false, static_cast(9), - "example3", "example2", std::string("str2"), 8ULL, "example1", true); - LOG_INFO(logger, "logging test over brown {}", 4.0f); - LOG_INFO(logger, "over brown dog {} {} {} {} {} {} {} {} {} {}", 7UL, 4.0f, 2, - std::string_view("view1"), 3.0, 5L, 6LL, 8ULL, "example3", 1); - LOG_INFO(logger, "quick dog test {} {} {} {} {} {} {} {}", std::string_view("view1"), 6LL, 4.0f, - "example2", "example1", 1, 7UL, 3.0); - LOG_INFO(logger, "quick fox example test {} {} {} {} {} {}", "example3", - static_cast(10), 2, 4.0f, 8ULL, std::string_view("view2")); - LOG_INFO(logger, "jumps dog logging fox {} {} {} {} {}", std::string("str2"), - static_cast(10), "example3", 6LL, std::string("str1")); - LOG_INFO(logger, "lazy brown logging quick {} {} {} {} {}", static_cast(9), 8ULL, true, - static_cast(10), 1); - LOG_INFO(logger, "dog example jumps over {} {} {} {}", 2, 5L, 7UL, "example2"); - LOG_INFO(logger, "example logging fox {} {} {} {} {} {} {} {} {}", 8ULL, true, static_cast(9), - std::string("str1"), 4.0f, false, static_cast(10), 7UL, "example1"); - LOG_INFO(logger, "lazy over quick {} {} {} {} {} {} {}", false, "example2", 3.0, - std::string_view("view1"), std::string("str1"), 5L, 4.0f); - LOG_INFO(logger, "fox brown jumps {} {} {} {}", std::string("str1"), 4.0f, 5L, std::string("str2")); - LOG_INFO(logger, "logging test lazy {} {} {} {} {} {} {} {} {}", 8ULL, std::string("str1"), - std::string("str2"), std::string_view("view2"), 2, 5L, 1, 7UL, 4.0f); - LOG_INFO(logger, "brown example test {} {} {} {} {} {}", 4.0f, std::string_view("view2"), 2, - std::string("str2"), static_cast(10), static_cast(9)); - LOG_INFO(logger, "logging over test dog {} {}", "example2", static_cast(10)); - LOG_INFO(logger, "brown example over {} {} {} {} {}", static_cast(9), - std::string_view("view1"), false, true, 8ULL); - LOG_INFO(logger, "logging brown quick {} {} {} {} {}", "example2", 7UL, 8ULL, 6LL, 3.0); - LOG_INFO(logger, "example jumps dog {} {} {} {} {}", std::string_view("view2"), 7UL, 6LL, true, 5L); - LOG_INFO(logger, "test lazy example {} {} {} {} {} {} {}", std::string_view("view1"), 5L, true, - std::string("str2"), 7UL, static_cast(10), static_cast(9)); - LOG_INFO(logger, "over dog jumps {} {}", static_cast(9), 8ULL); - LOG_INFO(logger, "over test jumps {} {} {} {} {} {}", 5L, 1, std::string("str1"), "example3", - std::string("str2"), 4.0f); - LOG_INFO(logger, "brown dog logging {} {} {} {} {} {}", 3.0, 8ULL, "example2", 5L, - std::string_view("view2"), "example1"); - LOG_INFO(logger, "jumps dog example {} {} {} {} {}", "example2", 2, std::string("str2"), - "example3", 5L); - LOG_INFO(logger, "jumps dog logging fox {} {} {} {}", std::string("str1"), 3.0, false, std::string("str2")); - LOG_INFO(logger, "fox dog quick jumps {} {} {} {} {} {} {} {} {} {}", 2, "example1", 4.0f, 3.0, - 5L, "example3", true, "example2", 6LL, 7UL); - LOG_INFO(logger, "dog example test quick {} {} {} {} {} {} {} {} {} {}", std::string("str1"), - "example1", 5L, 4.0f, 8ULL, true, 7UL, std::string_view("view2"), std::string("str2"), - static_cast(10)); - LOG_INFO(logger, "quick jumps dog {} {} {} {} {} {} {} {} {}", "example3", "example2", - static_cast(10), 4.0f, true, std::string_view("view1"), 1, 2, 6LL); - LOG_INFO(logger, "example jumps over logging {} {} {} {} {} {} {}", 1, false, - static_cast(9), std::string_view("view2"), "example2", 7UL, std::string("str2")); - LOG_INFO(logger, "lazy over fox dog {} {} {} {} {} {} {} {}", 8ULL, 1, std::string("str1"), 2, - 4.0f, 3.0, static_cast(10), "example1"); - LOG_INFO(logger, "brown over quick example {} {} {} {} {} {} {} {}", false, 3.0, 4.0f, "example3", - std::string_view("view2"), 7UL, std::string("str2"), true); - LOG_INFO(logger, "fox logging test over {} {} {} {} {} {} {} {}", 7UL, 8ULL, - static_cast(10), 5L, "example1", 2, true, std::string_view("view2")); - LOG_INFO(logger, "brown example logging {} {} {} {} {} {}", true, std::string("str2"), 3.0, - "example1", std::string_view("view2"), 6LL); - LOG_INFO(logger, "brown lazy quick {} {} {} {} {} {} {} {} {}", true, 4.0f, std::string_view("view1"), - static_cast(10), 3.0, 8ULL, std::string("str2"), 6LL, std::string_view("view2")); - LOG_INFO(logger, "brown over example {} {} {} {} {} {} {}", std::string_view("view2"), "example3", - static_cast(10), 5L, std::string("str2"), static_cast(9), 1); - LOG_INFO(logger, "jumps dog logging test {} {} {} {} {}", 3.0, std::string("str1"), "example1", - "example3", static_cast(9)); - LOG_INFO(logger, "jumps fox test quick {}", "example3"); - LOG_INFO(logger, "quick dog logging lazy {} {} {} {} {}", 8ULL, "example2", static_cast(9), 4.0f, 5L); - LOG_INFO(logger, "test example over {} {} {} {} {}", 7UL, std::string("str1"), 1, 8ULL, - std::string_view("view2")); - LOG_INFO(logger, "quick lazy brown {} {}", 8ULL, 6LL); - LOG_INFO(logger, "test brown fox {}", 1); - LOG_INFO(logger, "over example lazy {} {} {} {} {} {}", 2, 6LL, 1, 4.0f, std::string("str1"), - std::string_view("view1")); - LOG_INFO(logger, "fox test jumps {} {} {} {} {} {} {}", "example3", true, "example1", - std::string_view("view2"), 7UL, 5L, std::string("str1")); - LOG_INFO(logger, "logging lazy example {} {}", std::string_view("view2"), std::string_view("view1")); - LOG_INFO(logger, "logging fox dog {} {} {}", std::string("str2"), true, std::string_view("view2")); - LOG_INFO(logger, "jumps over brown {} {} {}", 4.0f, "example1", std::string_view("view1")); - LOG_INFO(logger, "over lazy dog brown {} {} {} {} {} {} {} {} {}", false, std::string_view("view2"), - std::string_view("view1"), 1, std::string("str1"), "example3", 3.0, "example1", 4.0f); - LOG_INFO(logger, "dog test brown lazy {} {} {} {} {} {} {}", std::string("str2"), true, - "example1", 2, std::string_view("view2"), "example3", 7UL); - LOG_INFO(logger, "example lazy quick dog {} {}", 4.0f, static_cast(10)); - LOG_INFO(logger, "test brown lazy dog {}", 5L); - LOG_INFO(logger, "quick fox logging {} {} {} {} {} {}", std::string_view("view2"), "example1", - std::string_view("view1"), 8ULL, "example3", static_cast(10)); - LOG_INFO(logger, "over dog quick fox {} {} {} {} {} {} {} {} {} {}", false, 3.0, std::string_view("view1"), - "example1", 1, static_cast(10), 2, static_cast(9), 6LL, 4.0f); - LOG_INFO(logger, "jumps example brown {} {} {} {} {}", true, 1, std::string("str2"), - static_cast(9), 6LL); - LOG_INFO(logger, "over test logging quick {} {} {} {} {} {} {} {}", 4.0f, "example2", - std::string_view("view1"), 8ULL, 3.0, 5L, "example1", 2); - LOG_INFO(logger, "lazy dog test jumps {} {} {} {} {} {} {} {} {} {}", static_cast(10), - 6LL, 4.0f, 7UL, false, std::string_view("view2"), 3.0, "example2", 1, true); - LOG_INFO(logger, "example dog fox brown {} {} {} {} {}", std::string("str1"), false, 3.0, 8ULL, true); - LOG_INFO(logger, "jumps over logging test {} {}", 1, std::string("str1")); - LOG_INFO(logger, "dog test brown {}", 4.0f); - LOG_INFO(logger, "over dog test example {} {} {} {}", std::string("str1"), 8ULL, 5L, 2); - LOG_INFO(logger, "quick test lazy logging {} {} {} {} {} {} {} {} {} {}", "example1", "example2", - 2, std::string_view("view1"), std::string("str2"), false, 1, static_cast(9), - std::string_view("view2"), std::string("str1")); - LOG_INFO(logger, "example test fox over {} {} {} {} {} {} {}", 3.0, 6LL, std::string("str2"), - static_cast(9), std::string("str1"), 4.0f, 1); - LOG_INFO(logger, "test jumps logging {} {} {} {} {} {}", 3.0, 5L, std::string("str1"), - std::string("str2"), static_cast(9), 1); - LOG_INFO(logger, "dog example fox logging {} {} {} {} {} {} {}", std::string("str2"), 3.0, 7UL, - 5L, std::string_view("view2"), 8ULL, 1); - LOG_INFO(logger, "over fox lazy {} {} {} {} {} {}", 1, 6LL, 2, std::string("str1"), "example1", false); - LOG_INFO(logger, "logging test lazy dog {} {} {} {} {} {} {} {} {} {}", - static_cast(10), 8ULL, false, std::string("str1"), - std::string_view("view2"), "example1", std::string_view("view1"), 2, 1, 5L); - LOG_INFO(logger, "quick dog jumps {} {} {}", static_cast(9), std::string("str2"), 8ULL); - LOG_INFO(logger, "fox test dog over {} {} {} {} {} {} {}", 4.0f, true, false, 3.0, 7UL, 8ULL, - "example3"); - LOG_INFO(logger, "jumps over logging quick {}", static_cast(10)); - LOG_INFO(logger, "jumps logging fox example {} {} {} {} {} {} {} {} {} {}", "example3", - "example1", static_cast(10), std::string("str2"), 8ULL, - static_cast(9), 4.0f, std::string("str1"), std::string_view("view2"), 7UL); - LOG_INFO(logger, "fox over quick test {}", false); - LOG_INFO(logger, "brown dog quick test {} {} {} {} {} {} {}", std::string("str2"), - std::string("str1"), static_cast(9), true, false, "example1", 3.0); - LOG_INFO(logger, "over example brown {} {} {} {} {} {} {} {}", 7UL, 8ULL, "example3", - static_cast(9), "example1", std::string("str1"), std::string_view("view1"), true); - LOG_INFO(logger, "jumps test example {}", 8ULL); - LOG_INFO(logger, "over test example brown {} {} {} {} {} {} {} {} {}", true, 4.0f, - std::string_view("view1"), "example3", std::string("str2"), 3.0, static_cast(9), - 1, static_cast(10)); - LOG_INFO(logger, "logging jumps test example {} {} {} {} {}", 7UL, "example2", 1, 2, 5L); - LOG_INFO(logger, "lazy jumps brown {} {}", "example2", std::string_view("view2")); - LOG_INFO(logger, "brown over quick {} {} {} {} {} {} {}", std::string_view("view1"), 5L, - static_cast(10), std::string_view("view2"), "example1", 4.0f, 2); - LOG_INFO(logger, "test example fox over {} {} {} {} {}", 4.0f, false, "example2", true, 8ULL); - LOG_INFO(logger, "quick fox lazy over {} {} {} {} {} {}", std::string("str1"), static_cast(9), - 5L, static_cast(10), std::string_view("view2"), 8ULL); - LOG_INFO(logger, "test logging lazy {} {} {}", "example1", 7UL, 1); - LOG_INFO(logger, "fox dog example {} {} {} {} {} {}", "example3", std::string_view("view2"), 8ULL, - false, std::string("str2"), "example2"); - LOG_INFO(logger, "over fox dog example {} {} {} {} {} {}", std::string_view("view1"), "example3", - "example2", 2, "example1", 6LL); - LOG_INFO(logger, "dog brown example quick {} {} {} {} {} {} {} {} {} {}", 3.0, "example3", 2, 8ULL, - 4.0f, std::string_view("view1"), 5L, 7UL, static_cast(10), "example2"); - LOG_INFO(logger, "test fox dog jumps {} {} {} {} {}", "example1", static_cast(10), - "example3", 7UL, 1); - LOG_INFO(logger, "fox dog over {} {} {} {} {}", std::string("str1"), - static_cast(10), 4.0f, 2, static_cast(9)); - LOG_INFO(logger, "logging brown fox {}", 3.0); - LOG_INFO(logger, "example fox over brown {} {} {}", 3.0, "example3", 1); - LOG_INFO(logger, "quick dog lazy jumps {} {} {} {} {} {} {} {} {} {}", 8ULL, "example2", - "example3", 1, 5L, false, 3.0, std::string_view("view2"), "example1", true); - LOG_INFO(logger, "jumps dog test {} {} {} {} {} {} {} {} {} {}", 5L, 2, "example1", 1, 7UL, false, - "example2", static_cast(10), true, std::string("str1")); - LOG_INFO(logger, "quick logging lazy example {} {}", false, "example3"); - LOG_INFO(logger, "example logging test {} {} {} {} {} {} {} {} {} {}", 6LL, 1, - std::string("str1"), "example2", 3.0, 8ULL, "example1", 5L, 2, "example3"); - LOG_INFO(logger, "example jumps dog quick {} {} {} {} {} {} {}", 7UL, static_cast(10), - 6LL, "example1", std::string_view("view2"), std::string("str1"), std::string("str2")); - LOG_INFO(logger, "quick logging jumps example {} {}", "example3", static_cast(10)); - LOG_INFO(logger, "dog example lazy test {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), 6LL, static_cast(9), static_cast(10)); - LOG_INFO(logger, "lazy logging jumps dog {} {} {} {} {} {} {} {} {}", 1, "example2", - std::string_view("view2"), true, static_cast(9), 5L, std::string("str1"), - "example3", static_cast(10)); - LOG_INFO(logger, "logging jumps dog lazy {} {} {} {} {} {} {} {} {}", false, std::string("str1"), - std::string_view("view2"), "example2", 2, static_cast(9), - std::string_view("view1"), 6LL, 7UL); - LOG_INFO(logger, "test lazy example {} {} {} {} {}", static_cast(9), true, std::string("str1"), 1, 2); - LOG_INFO(logger, "quick lazy test {} {}", std::string("str2"), 8ULL); - LOG_INFO(logger, "logging quick example dog {} {} {} {} {}", 1, 3.0, static_cast(9), 6LL, - std::string("str2")); - LOG_INFO(logger, "logging quick test {} {} {} {} {} {} {}", 8ULL, 7UL, - static_cast(10), 1, "example3", 4.0f, "example1"); - LOG_INFO(logger, "quick logging over jumps {} {}", 3.0, 1); - LOG_INFO(logger, "over example brown jumps {}", 8ULL); - LOG_INFO(logger, "dog jumps brown logging {} {} {} {} {} {} {} {}", "example2", std::string_view("view2"), - std::string_view("view1"), 8ULL, static_cast(10), 5L, std::string("str2"), 7UL); - LOG_INFO(logger, "test example brown jumps {} {} {}", 6LL, 5L, 8ULL); - LOG_INFO(logger, "jumps example quick over {} {} {} {} {} {} {} {} {} {}", 5L, "example1", false, - 3.0, "example3", std::string("str2"), 2, std::string("str1"), true, 4.0f); - LOG_INFO(logger, "dog brown jumps lazy {} {} {} {} {} {} {} {} {} {}", 1, 3.0, - static_cast(10), "example1", std::string("str2"), - std::string_view("view1"), std::string_view("view2"), 4.0f, "example2", false); - LOG_INFO(logger, "fox dog over {} {} {} {} {} {} {} {} {} {}", 5L, 6LL, true, "example3", - static_cast(10), "example2", std::string("str1"), false, std::string("str2"), 8ULL); - LOG_INFO(logger, "lazy jumps test dog {} {} {} {} {} {} {} {} {} {}", 5L, 8ULL, false, 7UL, 2, - static_cast(9), "example2", static_cast(10), "example3", 6LL); - LOG_INFO(logger, "over lazy example {} {} {}", std::string("str2"), "example2", std::string("str1")); - LOG_INFO(logger, "fox dog example logging {} {} {} {} {}", std::string_view("view1"), "example1", - 3.0, 7UL, 2); - LOG_INFO(logger, "example logging lazy {} {} {} {} {} {}", 4.0f, true, "example3", - std::string_view("view1"), std::string("str2"), std::string("str1")); - LOG_INFO(logger, "lazy fox quick over {} {} {} {} {}", 1, 7UL, 4.0f, 3.0, 2); - LOG_INFO(logger, "logging quick brown fox {} {} {} {} {} {} {} {} {} {}", false, - std::string_view("view2"), std::string("str1"), std::string_view("view1"), 3.0, - "example2", 4.0f, 7UL, static_cast(9), std::string("str2")); - LOG_INFO(logger, "quick example fox {} {} {} {} {} {} {} {}", 5L, 8ULL, - static_cast(10), false, std::string("str2"), "example2", 7UL, 6LL); - LOG_INFO(logger, "logging fox example {} {} {} {} {} {} {} {}", 2, 8ULL, 4.0f, true, - static_cast(10), 5L, 1, 6LL); - LOG_INFO(logger, "over example fox test {} {} {} {} {} {}", 6LL, 7UL, std::string_view("view2"), 2, 3.0, true); - LOG_INFO(logger, "lazy test brown {} {} {}", 8ULL, "example1", false); - LOG_INFO(logger, "dog over jumps {} {} {}", std::string_view("view1"), 3.0, 6LL); - LOG_INFO(logger, "over dog fox {} {} {} {} {}", std::string_view("view2"), "example2", false, - static_cast(10), std::string("str1")); - LOG_INFO(logger, "over dog jumps {} {} {} {} {} {} {} {}", 7UL, 2, true, std::string("str1"), - static_cast(10), "example2", 3.0, 6LL); - LOG_INFO(logger, "brown quick over {} {} {} {} {} {}", std::string_view("view1"), - static_cast(10), 5L, 6LL, "example1", std::string_view("view2")); - LOG_INFO(logger, "logging jumps example brown {} {}", static_cast(10), false); - LOG_INFO(logger, "fox quick test brown {} {} {} {} {} {} {} {}", 7UL, static_cast(9), - "example1", false, 6LL, std::string_view("view1"), std::string("str2"), - static_cast(10)); - LOG_INFO(logger, "jumps test brown lazy {} {} {} {} {}", 1, 2, std::string("str1"), - static_cast(9), "example1"); - LOG_INFO(logger, "logging test lazy {} {} {} {} {} {} {}", false, static_cast(9), 3.0, - std::string("str1"), true, 6LL, static_cast(10)); - LOG_INFO(logger, "dog logging fox lazy {} {} {} {} {} {}", 4.0f, 6LL, 1, 2, std::string("str1"), - std::string_view("view2")); - LOG_INFO(logger, "lazy dog logging test {} {} {} {} {}", "example1", 8ULL, - std::string_view("view1"), 7UL, std::string_view("view2")); - LOG_INFO(logger, "quick jumps dog over {} {} {} {} {} {}", 7UL, "example1", 2, false, true, 1); - LOG_INFO(logger, "logging jumps lazy {} {} {} {} {} {} {} {}", std::string_view("view2"), 1, 2, - std::string_view("view1"), "example3", "example2", 3.0, true); - LOG_INFO(logger, "jumps example over {} {} {} {} {} {} {} {} {} {}", 1, std::string_view("view2"), - std::string_view("view1"), 3.0, 8ULL, static_cast(10), "example1", false, - std::string("str1"), 6LL); - LOG_INFO(logger, "test quick example brown {}", "example3"); - LOG_INFO(logger, "jumps over example lazy {} {} {} {} {}", static_cast(9), 5L, "example1", - "example3", std::string("str2")); - LOG_INFO(logger, "dog fox over {} {} {}", "example3", 3.0, "example1"); - LOG_INFO(logger, "over logging jumps {} {} {} {} {} {} {} {} {}", std::string_view("view2"), 8ULL, - "example3", true, "example2", 3.0, std::string_view("view1"), std::string("str1"), false); - LOG_INFO(logger, "dog lazy brown {} {} {} {} {} {} {}", "example1", std::string_view("view1"), - static_cast(10), std::string("str1"), false, 3.0, true); - LOG_INFO(logger, "logging quick fox {} {} {} {} {} {}", 7UL, 3.0, static_cast(10), - 4.0f, "example1", std::string_view("view1")); - LOG_INFO(logger, "lazy quick example jumps {} {} {} {} {} {}", static_cast(9), false, - "example2", 7UL, 1, "example1"); - LOG_INFO(logger, "quick brown example {} {}", 4.0f, 7UL); - LOG_INFO(logger, "over brown logging {} {} {} {} {}", std::string_view("view2"), - std::string_view("view1"), 7UL, 2, static_cast(10)); - LOG_INFO(logger, "brown over jumps logging {} {} {} {} {} {} {} {} {} {}", true, std::string("str1"), 1, - static_cast(9), false, 4.0f, static_cast(10), 2, 6LL, "example1"); - LOG_INFO(logger, "jumps fox lazy test {} {} {} {} {} {} {} {} {} {}", 2, true, "example2", false, - std::string("str1"), 5L, 4.0f, std::string_view("view2"), static_cast(9), 7UL); - LOG_INFO(logger, "example fox test {} {} {} {} {} {}", false, 8ULL, std::string("str2"), true, - 7UL, std::string_view("view1")); - LOG_INFO(logger, "logging fox over {} {} {} {} {} {} {}", static_cast(10), 8ULL, - std::string_view("view2"), 6LL, std::string("str1"), 4.0f, 3.0); - LOG_INFO(logger, "test dog lazy {} {} {} {} {} {}", std::string_view("view1"), - static_cast(9), std::string_view("view2"), 5L, false, 2); - LOG_INFO(logger, "brown over quick {} {} {}", 8ULL, 7UL, false); - LOG_INFO(logger, "lazy quick dog {} {} {} {} {}", "example1", "example2", "example3", - std::string_view("view1"), 8ULL); - LOG_INFO(logger, "over dog example {} {} {} {} {} {} {}", "example2", 6LL, false, "example1", 2, - static_cast(10), 7UL); - LOG_INFO(logger, "brown test jumps {} {} {}", 4.0f, true, 6LL); - LOG_INFO(logger, "jumps over logging quick {} {} {} {} {} {} {}", 6LL, 7UL, - static_cast(10), 3.0, 5L, 8ULL, 4.0f); - LOG_INFO(logger, "lazy quick fox test {} {} {} {} {} {}", static_cast(10), 4.0f, - std::string_view("view1"), 1, 2, true); - LOG_INFO(logger, "test example dog {} {}", "example2", 1); - LOG_INFO(logger, "fox over brown quick {} {} {} {} {} {} {} {} {} {}", 2, "example3", 8ULL, - "example2", std::string("str1"), static_cast(10), std::string("str2"), - static_cast(9), std::string_view("view2"), 4.0f); - LOG_INFO(logger, "test dog quick fox {} {} {} {} {} {} {} {} {}", 5L, "example2", true, - "example1", "example3", false, 4.0f, 3.0, std::string_view("view2")); - LOG_INFO(logger, "example fox dog over {} {} {} {} {} {} {}", true, static_cast(9), - std::string_view("view1"), 1, 5L, 4.0f, std::string("str2")); - LOG_INFO(logger, "lazy brown fox over {}", std::string("str1")); - LOG_INFO(logger, "test over dog logging {} {} {} {} {} {}", false, 8ULL, - static_cast(10), 2, 4.0f, "example1"); - LOG_INFO(logger, "brown fox over {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 8ULL, - 6LL, false, "example3", 5L, std::string("str1"), "example2", "example1", 3.0); - LOG_INFO(logger, "over test example {} {} {}", false, 8ULL, 3.0); - LOG_INFO(logger, "example fox dog brown {} {} {} {} {} {} {}", std::string("str2"), "example1", - 4.0f, 1, static_cast(10), 3.0, 6LL); - LOG_INFO(logger, "brown fox lazy example {} {}", 4.0f, 2); - LOG_INFO(logger, "over logging example {} {} {} {} {} {} {} {}", 2, std::string("str1"), - "example1", 6LL, 3.0, std::string("str2"), "example2", true); - LOG_INFO(logger, "dog logging test lazy {} {} {} {} {} {} {} {} {} {}", 1, std::string("str2"), - "example1", "example3", std::string_view("view2"), std::string_view("view1"), - static_cast(9), 4.0f, 7UL, 3.0); - LOG_INFO(logger, "jumps over test {} {} {} {} {} {} {} {} {}", 3.0, 4.0f, - static_cast(10), std::string("str1"), std::string("str2"), 5L, 7UL, true, false); - LOG_INFO(logger, "over example quick brown {} {}", 6LL, true); - LOG_INFO(logger, "logging over brown quick {} {} {}", "example2", static_cast(9), 7UL); - LOG_INFO(logger, "logging brown test fox {} {} {} {} {} {} {} {} {}", true, 7UL, - std::string("str1"), std::string_view("view2"), static_cast(10), 4.0f, - std::string_view("view1"), "example3", false); - LOG_INFO(logger, "example dog over {} {} {} {} {} {} {}", 2, 6LL, false, 7UL, - static_cast(10), 1, std::string_view("view1")); - LOG_INFO(logger, "over quick lazy test {} {} {} {} {} {} {} {} {}", std::string_view("view2"), 1, - 5L, "example3", std::string("str1"), static_cast(10), - static_cast(9), 4.0f, 6LL); - LOG_INFO(logger, "jumps over example {}", static_cast(10)); - LOG_INFO(logger, "logging quick lazy {} {}", 4.0f, 8ULL); - LOG_INFO(logger, "over test logging dog {}", 7UL); - LOG_INFO(logger, "test jumps brown quick {} {} {} {} {}", std::string("str1"), - static_cast(9), 3.0, std::string("str2"), std::string_view("view2")); - LOG_INFO(logger, "test logging over {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), - "example1", "example2", 2, false, "example3", 8ULL, 1, true, 7UL); - LOG_INFO(logger, "lazy dog logging {} {} {} {} {} {} {} {} {} {}", std::string("str2"), 2, - "example2", 4.0f, "example1", static_cast(10), std::string("str1"), 7UL, - static_cast(9), std::string_view("view2")); - LOG_INFO(logger, "jumps example quick {} {} {} {} {} {} {}", 8ULL, std::string("str1"), - static_cast(10), false, static_cast(9), "example1", 4.0f); - LOG_INFO(logger, "logging fox dog {} {} {} {} {} {} {} {} {}", 4.0f, "example1", 1, 7UL, true, - std::string_view("view1"), false, static_cast(10), std::string_view("view2")); - LOG_INFO(logger, "logging example dog test {} {} {} {} {}", false, static_cast(9), 7UL, - static_cast(10), 8ULL); - LOG_INFO(logger, "jumps brown test example {} {} {}", false, std::string_view("view2"), std::string("str2")); - LOG_INFO(logger, "quick test lazy dog {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), 6LL, 3.0, - std::string("str2"), static_cast(10), 4.0f, 5L, true, false, "example3"); - LOG_INFO(logger, "quick brown fox {} {} {} {} {} {} {} {} {}", 8ULL, "example1", false, - "example2", 3.0, 4.0f, 6LL, true, 5L); - LOG_INFO(logger, "test brown over {}", std::string_view("view1")); - LOG_INFO(logger, "logging brown quick over {}", static_cast(10)); - LOG_INFO(logger, "jumps lazy over {}", std::string_view("view2")); - LOG_INFO(logger, "brown dog jumps over {} {} {}", std::string_view("view1"), 8ULL, "example3"); - LOG_INFO(logger, "quick test dog fox {} {} {} {} {} {} {} {} {}", true, false, static_cast(9), - std::string("str1"), "example1", 8ULL, std::string_view("view1"), 4.0f, std::string_view("view2")); - LOG_INFO(logger, "test logging brown dog {} {} {} {} {} {} {} {} {} {}", 7UL, 6LL, 2, - static_cast(10), 4.0f, std::string_view("view2"), 1, false, - static_cast(9), "example2"); - LOG_INFO(logger, "lazy fox brown quick {}", "example2"); - LOG_INFO(logger, "dog fox example quick {} {} {} {} {}", static_cast(9), false, true, 3.0, - std::string_view("view1")); - LOG_INFO(logger, "over jumps example quick {} {} {} {} {} {} {} {} {} {}", static_cast(10), - false, "example3", 1, 7UL, 2, true, 4.0f, "example1", static_cast(9)); - LOG_INFO(logger, "fox dog brown {}", 8ULL); - LOG_INFO(logger, "example fox dog {} {} {} {} {} {}", false, std::string_view("view2"), - static_cast(9), std::string("str1"), "example3", "example2"); - LOG_INFO(logger, "lazy test jumps {} {}", "example2", 6LL); - LOG_INFO(logger, "logging example fox {} {} {} {} {} {} {} {}", static_cast(9), 3.0, - "example3", 1, std::string_view("view1"), std::string("str1"), - static_cast(10), "example2"); - LOG_INFO(logger, "lazy over fox example {} {} {} {} {} {} {} {} {} {}", static_cast(9), 7UL, false, - 3.0, 4.0f, std::string_view("view1"), "example2", std::string_view("view2"), "example1", 8ULL); - LOG_INFO(logger, "quick lazy logging {} {} {} {} {} {} {}", false, std::string_view("view1"), - "example1", true, "example3", std::string_view("view2"), static_cast(9)); - LOG_INFO(logger, "dog lazy jumps {} {} {} {}", 3.0, std::string("str2"), 1, 6LL); - LOG_INFO(logger, "dog example brown test {} {} {} {} {} {}", 6LL, 2, 8ULL, - static_cast(10), "example2", 1); - LOG_INFO(logger, "lazy jumps dog {} {} {} {} {} {} {} {} {} {}", 3.0, static_cast(9), 6LL, - std::string_view("view2"), true, 5L, std::string("str2"), "example2", "example3", - std::string_view("view1")); - LOG_INFO(logger, "fox dog logging quick {} {}", "example1", "example2"); - LOG_INFO(logger, "dog jumps example over {} {} {} {} {} {} {}", "example1", 2, 5L, 8ULL, - std::string("str2"), 6LL, "example3"); - LOG_INFO(logger, "dog lazy quick {} {} {} {} {} {} {} {} {}", 8ULL, std::string("str1"), - "example3", 3.0, std::string_view("view1"), true, static_cast(9), 1, - static_cast(10)); - LOG_INFO(logger, "jumps brown lazy {} {} {} {} {} {} {}", std::string("str2"), 2, - static_cast(10), true, "example3", std::string_view("view2"), 6LL); - LOG_INFO(logger, "brown dog example {} {} {}", std::string("str2"), static_cast(10), true); - LOG_INFO(logger, "fox brown lazy {} {} {} {} {} {}", 6LL, "example1", std::string("str1"), true, - std::string("str2"), "example3"); - LOG_INFO(logger, "quick over jumps logging {} {}", 4.0f, std::string("str1")); - LOG_INFO(logger, "dog fox brown quick {} {} {} {} {} {} {} {} {}", "example2", std::string("str2"), 7UL, - static_cast(10), 6LL, 8ULL, std::string_view("view2"), "example1", 4.0f); - LOG_INFO(logger, "quick example dog {} {} {} {} {} {}", false, "example1", true, 5L, 3.0, - static_cast(10)); - LOG_INFO(logger, "test brown lazy dog {} {}", std::string("str2"), 2); - LOG_INFO(logger, "dog logging example {} {} {} {} {} {} {} {} {}", 7UL, std::string("str1"), 8ULL, - 6LL, 2, false, "example3", std::string_view("view1"), std::string("str2")); - LOG_INFO(logger, "dog test quick {} {} {} {} {}", std::string_view("view2"), 2, - static_cast(10), "example3", 8ULL); - LOG_INFO(logger, "lazy example dog {}", static_cast(9)); - LOG_INFO(logger, "example dog logging {} {} {} {} {} {} {} {}", 5L, 8ULL, 2, false, "example2", - true, static_cast(9), 4.0f); - LOG_INFO(logger, "test logging example brown {} {} {} {} {} {} {} {} {}", "example3", 4.0f, 5L, - static_cast(9), 2, std::string_view("view1"), std::string_view("view2"), true, 6LL); - LOG_INFO(logger, "over example brown {} {} {} {} {}", 1, "example2", std::string_view("view2"), - std::string_view("view1"), "example3"); - LOG_INFO(logger, "over example lazy quick {}", 8ULL); - LOG_INFO(logger, "logging dog fox {} {} {} {} {} {} {} {}", static_cast(10), - std::string_view("view2"), 8ULL, 1, "example3", static_cast(9), std::string("str2"), true); - LOG_INFO(logger, "quick dog example {} {} {} {} {} {} {} {}", 1, 3.0, std::string("str2"), - static_cast(9), std::string_view("view1"), static_cast(10), - "example3", 4.0f); - LOG_INFO(logger, "dog quick logging jumps {} {} {} {} {}", 2, std::string("str1"), "example2", 1, true); - LOG_INFO(logger, "dog fox logging test {} {} {} {} {} {} {} {} {} {}", 1, static_cast(9), - std::string_view("view2"), "example1", 3.0, 5L, true, 2, std::string_view("view1"), 8ULL); - LOG_INFO(logger, "dog jumps fox quick {} {}", true, 2); - LOG_INFO(logger, "jumps over dog quick {} {} {} {} {} {} {} {} {} {}", "example2", 6LL, 8ULL, 1, - 4.0f, 7UL, 2, std::string_view("view1"), false, 5L); - LOG_INFO(logger, "logging example quick lazy {} {} {} {} {} {} {} {} {} {}", "example3", 2, false, - std::string("str1"), 1, "example2", std::string_view("view2"), 6LL, true, 7UL); - LOG_INFO(logger, "fox quick jumps logging {} {} {} {} {} {} {} {} {} {}", - static_cast(10), 1, std::string_view("view1"), static_cast(9), - false, true, std::string("str2"), 3.0, 5L, std::string("str1")); - LOG_INFO(logger, "fox dog brown {} {}", std::string("str1"), static_cast(10)); - LOG_INFO(logger, "fox jumps lazy {} {} {} {}", std::string_view("view1"), "example3", false, - std::string("str2")); - LOG_INFO(logger, "brown lazy example fox {} {}", "example2", 1); - LOG_INFO(logger, "quick lazy example jumps {} {}", true, std::string_view("view1")); - LOG_INFO(logger, "test quick fox {} {} {} {}", 6LL, std::string("str1"), 8ULL, std::string("str2")); - LOG_INFO(logger, "dog logging test lazy {}", std::string("str1")); - LOG_INFO(logger, "lazy over dog example {} {} {} {} {} {} {}", 7UL, 8ULL, std::string_view("view1"), - "example2", std::string("str2"), static_cast(10), 5L); - LOG_INFO(logger, "example logging brown jumps {} {} {} {} {} {} {} {}", 5L, 6LL, - std::string_view("view2"), std::string_view("view1"), 2, true, 7UL, std::string("str1")); - LOG_INFO(logger, "fox brown lazy over {} {} {} {} {} {} {} {} {} {}", 2, "example1", 6LL, 4.0f, 5L, - true, std::string_view("view2"), std::string_view("view1"), "example3", std::string("str2")); - LOG_INFO(logger, "logging dog brown lazy {} {} {} {} {} {} {} {} {} {}", 4.0f, "example3", - "example2", std::string_view("view2"), 5L, false, std::string("str2"), - std::string_view("view1"), 7UL, std::string("str1")); - LOG_INFO(logger, "test fox quick brown {} {} {} {} {} {} {} {} {}", false, static_cast(10), - std::string("str1"), true, "example2", 2, 7UL, std::string_view("view1"), 4.0f); - LOG_INFO(logger, "over brown jumps {} {} {} {} {} {} {} {} {}", 6LL, static_cast(9), false, - "example3", 5L, 8ULL, 1, std::string("str1"), static_cast(10)); - LOG_INFO(logger, "example brown dog lazy {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), - false, static_cast(9), true, 1, 6LL, 8ULL, 7UL, 3.0, "example2"); - LOG_INFO(logger, "lazy dog over {} {} {} {} {} {}", std::string("str2"), "example3", - std::string_view("view1"), "example2", static_cast(9), static_cast(10)); - LOG_INFO(logger, "fox example quick lazy {} {} {} {}", 8ULL, 2, static_cast(9), true); - LOG_INFO(logger, "test over fox {} {} {} {} {} {} {}", false, "example2", "example1", 2, 1, - "example3", 5L); - LOG_INFO(logger, "test lazy example {} {} {} {} {} {} {}", 8ULL, std::string("str1"), - std::string_view("view2"), "example2", std::string("str2"), static_cast(9), 4.0f); - LOG_INFO(logger, "jumps example over dog {} {} {} {} {} {} {} {} {} {}", std::string_view("view1"), 3.0, - std::string("str2"), "example2", true, static_cast(9), 4.0f, 5L, "example3", false); - LOG_INFO(logger, "logging example test {} {} {} {}", static_cast(10), "example1", - static_cast(9), "example2"); - LOG_INFO(logger, "quick fox test brown {} {} {}", 6LL, true, 7UL); - LOG_INFO(logger, "over logging test lazy {} {} {} {}", 1, 8ULL, static_cast(9), "example1"); - LOG_INFO(logger, "example lazy quick {} {} {} {} {} {} {} {}", "example2", "example1", 7UL, 1, - std::string("str2"), std::string("str1"), 6LL, 4.0f); - LOG_INFO(logger, "lazy brown dog {}", static_cast(9)); - LOG_INFO(logger, "test quick jumps example {}", 6LL); - LOG_INFO(logger, "dog quick lazy {} {} {} {} {} {} {}", static_cast(10), - std::string("str1"), 5L, 8ULL, "example3", 3.0, "example2"); - LOG_INFO(logger, "brown logging lazy quick {} {} {} {} {} {}", 2, 7UL, "example2", true, - "example3", static_cast(9)); - LOG_INFO(logger, "test brown fox dog {} {} {} {} {}", std::string("str1"), "example3", false, - std::string_view("view1"), 6LL); - LOG_INFO(logger, "logging test over dog {}", std::string_view("view1")); - LOG_INFO(logger, "test dog brown {} {} {} {}", 3.0, 1, 6LL, std::string_view("view1")); - LOG_INFO(logger, "example test quick {}", std::string_view("view2")); - LOG_INFO(logger, "dog over fox {} {} {} {} {}", 6LL, static_cast(9), 4.0f, 2, true); - LOG_INFO(logger, "logging test fox {} {} {}", 1, 3.0, 7UL); - LOG_INFO(logger, "over lazy dog jumps {} {} {} {} {}", std::string("str1"), false, - std::string_view("view2"), 6LL, static_cast(10)); - LOG_INFO(logger, "test quick over example {} {} {} {} {} {} {} {}", std::string_view("view1"), - 3.0, 6LL, 5L, static_cast(9), 2, 7UL, false); - LOG_INFO(logger, "example test lazy logging {}", 3.0); - LOG_INFO(logger, "jumps lazy quick over {} {} {} {} {} {} {}", std::string_view("view2"), false, - std::string("str1"), true, 6LL, 1, 2); - LOG_INFO(logger, "fox jumps quick {} {} {} {} {}", true, static_cast(10), - "example3", 1, "example2"); - LOG_INFO(logger, "jumps dog lazy {} {} {} {} {} {} {} {}", false, std::string_view("view2"), 4.0f, - "example2", static_cast(9), std::string("str2"), 3.0, std::string_view("view1")); - LOG_INFO(logger, "fox lazy logging jumps {}", 1); - LOG_INFO(logger, "brown fox example {} {}", "example3", static_cast(9)); - LOG_INFO(logger, "fox lazy jumps logging {} {} {} {} {} {}", std::string_view("view2"), 4.0f, 2, 6LL, 5L, 3.0); - LOG_INFO(logger, "fox lazy logging jumps {} {} {} {} {} {} {}", std::string("str2"), - std::string_view("view1"), 6LL, 1, std::string_view("view2"), 5L, static_cast(9)); - LOG_INFO(logger, "quick dog jumps {} {}", std::string("str1"), 6LL); - LOG_INFO(logger, "dog quick jumps example {} {} {} {} {} {} {} {}", 1, 3.0, false, 6LL, - static_cast(9), "example2", 4.0f, static_cast(10)); - LOG_INFO(logger, "quick example logging brown {} {} {} {} {} {} {}", 5L, "example3", 4.0f, 7UL, - static_cast(10), "example2", false); - LOG_INFO(logger, "lazy jumps test {} {} {} {} {} {} {} {}", 2, true, 4.0f, 8ULL, - std::string_view("view1"), 6LL, "example2", std::string_view("view2")); - LOG_INFO(logger, "lazy jumps dog {} {} {} {} {} {} {}", std::string_view("view1"), "example3", - "example2", static_cast(9), "example1", 6LL, std::string_view("view2")); - LOG_INFO(logger, "jumps quick test {} {} {} {} {} {} {} {}", 2, 8ULL, std::string("str1"), false, - 1, std::string_view("view1"), static_cast(9), std::string("str2")); - LOG_INFO(logger, "example jumps lazy {} {} {} {} {}", 7UL, "example2", 3.0, std::string("str2"), true); - LOG_INFO(logger, "jumps quick over example {} {} {}", 6LL, 7UL, std::string("str2")); - LOG_INFO(logger, "lazy dog jumps test {} {}", 7UL, true); - LOG_INFO(logger, "lazy jumps example {} {} {} {} {} {} {} {} {}", false, 7UL, true, 5L, - "example3", std::string("str2"), "example2", 1, static_cast(9)); - LOG_INFO(logger, "dog logging fox lazy {} {} {} {} {}", 8ULL, static_cast(10), - std::string("str1"), 7UL, 6LL); - LOG_INFO(logger, "logging over fox lazy {} {} {} {} {} {} {} {}", 2, std::string_view("view2"), - true, 6LL, std::string("str2"), 8ULL, std::string("str1"), 1); - LOG_INFO(logger, "lazy fox brown {} {}", "example1", "example3"); - LOG_INFO(logger, "fox quick test over {} {} {}", "example3", 1, std::string("str2")); - LOG_INFO(logger, "lazy over brown {} {} {} {} {} {} {} {}", true, std::string_view("view1"), 7UL, - 5L, std::string("str1"), std::string("str2"), 4.0f, static_cast(9)); - LOG_INFO(logger, "test jumps brown dog {} {} {} {} {} {} {} {} {} {}", 8ULL, "example1", - "example3", 1, static_cast(9), std::string_view("view2"), 4.0f, - std::string_view("view1"), 3.0, 7UL); - LOG_INFO(logger, "fox example jumps {}", static_cast(10)); - LOG_INFO(logger, "dog lazy quick {} {} {} {} {} {}", false, static_cast(9), - std::string_view("view1"), 1, "example3", std::string("str1")); - LOG_INFO(logger, "jumps fox over logging {} {}", 1, "example1"); - LOG_INFO(logger, "lazy example test {} {} {}", 4.0f, 7UL, 8ULL); - LOG_INFO(logger, "fox brown example {} {} {} {} {}", std::string_view("view1"), - std::string("str1"), std::string("str2"), std::string_view("view2"), 4.0f); - LOG_INFO(logger, "logging lazy jumps {} {} {} {} {} {} {}", 4.0f, 5L, static_cast(9), 6LL, - false, std::string_view("view2"), static_cast(10)); - LOG_INFO(logger, "fox over logging {} {} {} {} {} {} {} {} {} {}", std::string_view("view2"), 5L, - 8ULL, "example3", 6LL, false, 2, "example1", 7UL, static_cast(9)); - LOG_INFO(logger, "over example logging dog {} {} {} {} {} {}", 4.0f, 8ULL, "example2", true, - static_cast(10), static_cast(9)); - LOG_INFO(logger, "example lazy dog {} {} {} {} {}", 8ULL, std::string_view("view2"), - std::string("str2"), std::string("str1"), 1); - LOG_INFO(logger, "fox example quick dog {} {} {} {} {} {} {} {} {}", "example2", false, 5L, 7UL, - std::string("str2"), static_cast(9), true, "example1", "example3"); - LOG_INFO(logger, "logging quick over {} {} {} {} {} {} {} {} {} {}", 2, 4.0f, "example3", std::string("str2"), - std::string("str1"), 7UL, static_cast(10), "example2", 8ULL, 3.0); - LOG_INFO(logger, "fox over jumps brown {} {} {} {} {} {} {} {}", std::string_view("view2"), - std::string("str2"), "example2", 3.0, 5L, false, "example3", 6LL); - LOG_INFO(logger, "test logging quick dog {} {} {} {} {} {} {} {} {}", 6LL, 3.0, "example2", true, - false, static_cast(10), std::string("str2"), std::string("str1"), 8ULL); - LOG_INFO(logger, "test logging quick lazy {} {}", std::string_view("view2"), 4.0f); - LOG_INFO(logger, "logging brown example {} {} {}", 4.0f, "example1", std::string("str2")); - LOG_INFO(logger, "jumps test over {} {}", std::string("str1"), std::string("str2")); - LOG_INFO(logger, "fox jumps quick {} {} {} {} {} {}", 6LL, std::string("str2"), false, 7UL, - std::string_view("view2"), 4.0f); - LOG_INFO(logger, "quick over jumps logging {}", false); - LOG_INFO(logger, "test dog logging {} {} {} {} {}", std::string("str2"), 5L, "example2", - static_cast(10), 1); - LOG_INFO(logger, "example dog jumps lazy {} {} {} {} {}", "example2", 2, 7UL, false, static_cast(9)); - LOG_INFO(logger, "example test logging {} {} {} {} {} {} {} {} {} {}", 6LL, 1, 3.0, - static_cast(10), std::string("str1"), "example2", 5L, "example3", 4.0f, - static_cast(9)); - LOG_INFO(logger, "lazy brown over logging {}", 7UL); - LOG_INFO(logger, "over lazy quick fox {} {} {} {} {}", 8ULL, 1, 7UL, 5L, "example3"); - LOG_INFO(logger, "over example fox {} {} {}", true, 2, static_cast(9)); - LOG_INFO(logger, "fox over brown jumps {} {} {}", std::string_view("view2"), 5L, 4.0f); - LOG_INFO(logger, "brown jumps quick {}", "example1"); - LOG_INFO(logger, "test jumps lazy {} {} {} {} {}", 6LL, 8ULL, 4.0f, "example1", 2); - LOG_INFO(logger, "dog fox lazy {} {}", 3.0, false); - LOG_INFO(logger, "jumps test quick brown {} {} {} {} {} {} {} {}", "example3", 7UL, 2, - std::string_view("view1"), false, true, "example1", "example2"); - LOG_INFO(logger, "dog over quick {} {} {} {} {} {} {} {} {} {}", 2, 5L, "example2", 7UL, - "example3", std::string_view("view1"), std::string_view("view2"), std::string("str1"), - false, "example1"); - LOG_INFO(logger, "quick dog over brown {} {} {} {} {}", 6LL, 4.0f, "example1", 3.0, 1); - LOG_INFO(logger, "logging over fox {} {}", 2, "example3"); - LOG_INFO(logger, "quick logging example {} {} {} {}", 7UL, 4.0f, 1, 8ULL); - LOG_INFO(logger, "quick fox brown {} {} {} {} {}", 5L, 3.0, 2, false, "example3"); - LOG_INFO(logger, "quick lazy logging test {} {} {}", static_cast(10), 7UL, 2); - LOG_INFO(logger, "example lazy logging {} {} {} {} {}", static_cast(10), 1, 8ULL, - 7UL, static_cast(9)); - LOG_INFO(logger, "lazy quick logging brown {} {} {} {} {} {} {} {}", static_cast(9), 3.0, - 7UL, true, 5L, std::string_view("view2"), std::string("str1"), "example2"); - LOG_INFO(logger, "over fox test {} {} {}", false, std::string_view("view2"), 8ULL); - LOG_INFO(logger, "test dog example jumps {} {} {} {}", "example2", 2, true, 8ULL); - LOG_INFO(logger, "quick lazy dog test {} {} {} {} {} {} {} {} {} {}", 6LL, - std::string_view("view2"), false, "example2", std::string_view("view1"), - static_cast(9), "example3", static_cast(10), 1, std::string("str2")); - LOG_INFO(logger, "over example quick {} {} {} {} {} {} {} {} {} {}", static_cast(10), - "example3", "example2", 2, 4.0f, std::string_view("view2"), "example1", false, 8ULL, true); - LOG_INFO(logger, "lazy test fox dog {} {} {} {} {} {}", std::string_view("view1"), 5L, 2, 4.0f, - static_cast(9), 1); - LOG_INFO(logger, "jumps lazy test brown {}", true); - LOG_INFO(logger, "brown fox over {} {} {} {} {} {} {} {}", 4.0f, 8ULL, 3.0, 5L, 2, 6LL, - std::string_view("view1"), 1); - LOG_INFO(logger, "logging over quick test {} {} {} {} {} {} {}", 4.0f, static_cast(9), 1, - 6LL, "example2", 5L, std::string_view("view1")); - LOG_INFO(logger, "logging test dog {} {} {} {} {} {} {}", static_cast(10), - "example3", 2, false, 3.0, 6LL, 4.0f); - LOG_INFO(logger, "example brown dog test {} {} {} {} {}", 6LL, 8ULL, true, 3.0, std::string_view("view1")); - LOG_INFO(logger, "logging test jumps quick {} {} {} {}", "example3", 3.0, std::string("str1"), 7UL); - LOG_INFO(logger, "dog lazy quick {} {} {}", 2, true, static_cast(9)); - LOG_INFO(logger, "quick over example fox {} {} {} {} {} {} {}", 8ULL, static_cast(9), 6LL, - 3.0, 7UL, "example1", 1); - LOG_INFO(logger, "jumps example fox {} {} {} {} {} {}", std::string_view("view2"), true, 8ULL, - static_cast(10), "example2", false); - LOG_INFO(logger, "jumps logging brown {} {} {} {}", true, std::string_view("view2"), 7UL, std::string("str1")); - LOG_INFO(logger, "test fox jumps {} {} {}", 2, "example3", static_cast(9)); - LOG_INFO(logger, "jumps lazy quick {}", "example2"); - LOG_INFO(logger, "logging brown over {} {} {} {} {}", "example1", 5L, 3.0, 7UL, 4.0f); - LOG_INFO(logger, "dog lazy quick test {} {} {} {}", "example3", std::string_view("view1"), 6LL, - std::string_view("view2")); - LOG_INFO(logger, "jumps lazy dog {} {} {}", static_cast(9), std::string_view("view2"), - "example2"); - LOG_INFO(logger, "over fox brown lazy {} {} {} {} {} {} {}", 7UL, 2, "example1", "example3", 5L, - std::string("str2"), 6LL); - LOG_INFO(logger, "logging over test {} {} {} {} {} {}", std::string_view("view2"), 1, false, 2, true, 8ULL); - LOG_INFO(logger, "jumps dog over test {} {} {} {} {} {} {} {} {} {}", 1, "example3", false, 2, - 8ULL, 3.0, 7UL, 5L, static_cast(10), std::string_view("view2")); - LOG_INFO(logger, "brown test lazy {} {} {} {} {} {} {} {} {}", std::string("str2"), 4.0f, 5L, 2, - "example3", static_cast(10), 8ULL, static_cast(9), - std::string_view("view1")); - LOG_INFO(logger, "over dog brown {} {}", "example2", 5L); - LOG_INFO(logger, "fox lazy over logging {} {} {} {} {} {} {} {} {} {}", std::string("str1"), - "example2", 2, 1, std::string_view("view1"), 5L, 3.0, true, 8ULL, 7UL); - LOG_INFO(logger, "fox example over logging {} {} {} {} {}", 2, std::string_view("view1"), - static_cast(9), 5L, std::string("str2")); - LOG_INFO(logger, "lazy dog over fox {} {} {} {} {} {} {}", std::string("str1"), 3.0, false, 7UL, - 1, std::string("str2"), 2); - LOG_INFO(logger, "brown fox quick lazy {} {}", 8ULL, std::string_view("view1")); - LOG_INFO(logger, "example logging brown lazy {} {} {} {} {} {} {} {} {}", 8ULL, 6LL, 2, true, - std::string("str2"), static_cast(9), 7UL, "example2", "example3"); - LOG_INFO(logger, "quick over logging brown {} {} {} {}", true, static_cast(10), 1, 4.0f); - LOG_INFO(logger, "brown over fox {} {}", std::string("str2"), 8ULL); - LOG_INFO(logger, "over jumps quick {} {}", false, static_cast(9)); - LOG_INFO(logger, "quick test example {} {} {} {} {} {} {} {} {} {}", static_cast(9), - std::string("str2"), 3.0, 2, 1, std::string_view("view1"), "example2", false, 8ULL, 5L); - LOG_INFO(logger, "brown lazy dog test {} {}", static_cast(10), 3.0); - LOG_INFO(logger, "jumps fox dog {}", std::string_view("view1")); - LOG_INFO(logger, "dog fox brown {} {} {} {} {} {} {}", 1, 4.0f, 5L, 8ULL, 3.0, "example1", - "example3"); - LOG_INFO(logger, "test lazy over {} {} {} {} {} {} {} {}", false, true, std::string_view("view2"), - 3.0, "example3", 7UL, 1, "example1"); - LOG_INFO(logger, "fox dog brown logging {} {} {} {} {}", false, true, 7UL, "example3", std::string("str2")); - LOG_INFO(logger, "over dog lazy example {} {}", false, "example3"); - LOG_INFO(logger, "lazy jumps dog {} {} {} {}", 4.0f, std::string("str1"), "example2", false); - LOG_INFO(logger, "lazy test fox {} {} {} {} {} {} {}", 7UL, true, std::string_view("view2"), 2, - 3.0, std::string_view("view1"), 4.0f); - LOG_INFO(logger, "example jumps test {} {} {} {} {} {} {} {} {} {}", static_cast(9), - static_cast(10), 4.0f, std::string("str2"), true, "example3", - std::string_view("view2"), false, 6LL, 3.0); - LOG_INFO(logger, "logging brown fox {} {}", std::string_view("view2"), 8ULL); - LOG_INFO(logger, "lazy test dog jumps {} {} {}", 2, 8ULL, 4.0f); - LOG_INFO(logger, "fox dog jumps {} {} {} {} {} {} {} {} {} {}", 8ULL, std::string("str2"), false, - static_cast(9), std::string_view("view2"), static_cast(10), - std::string_view("view1"), "example1", 3.0, 7UL); - - return 0; -} \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/compile_time/gen_log_messages.py b/subprojects/quill-4.2.0/benchmarks/compile_time/gen_log_messages.py deleted file mode 100644 index d7f4a02..0000000 --- a/subprojects/quill-4.2.0/benchmarks/compile_time/gen_log_messages.py +++ /dev/null @@ -1,57 +0,0 @@ -import random - - -def generate_log_statements(num_statements): - argument_types = [ - '1', '2', '3.0', '4.0f', '5L', '6LL', '7UL', '8ULL', 'true', 'false', - '"example1"', '"example2"', '"example3"', 'std::string("str1")', - 'std::string("str2")', 'std::string_view("view1")', 'std::string_view("view2")', - 'static_cast(9)', 'static_cast(10)' - ] - random_words = ["quick", "brown", "fox", "jumps", "over", "lazy", "dog", "logging", "test", "example"] - - statements = [] - for i in range(num_statements): - num_args = random.randint(1, 10) # Number of arguments for the log statement - args = random.sample(argument_types, num_args) - placeholders = ' '.join(["{}" for _ in args]) - num_words = random.randint(3, 4) # Number of random words in the log message - words = ' '.join(random.sample(random_words, num_words)) - statement = f' LOG_INFO(logger, "{words} {placeholders}", {", ".join(args)});' - statements.append(statement) - - return statements - - -def write_to_file(filename, statements): - with open(filename, 'w') as f: - f.write('#include "quill/Backend.h"\n') - f.write('#include "quill/Frontend.h"\n') - f.write('#include "quill/LogMacros.h"\n') - f.write('#include "quill/Logger.h"\n') - f.write('#include "quill/sinks/ConsoleSink.h"\n') - f.write('#include \n') - f.write('#include \n\n') - f.write('/**\n') - f.write(' * Trivial logging example to console\n') - f.write(' */\n\n') - f.write('int main()\n') - f.write('{\n') - f.write(' // Start the backend thread\n') - f.write(' quill::BackendOptions backend_options;\n') - f.write(' quill::Backend::start(backend_options);\n\n') - f.write(' // Frontend\n') - f.write(' auto console_sink = quill::Frontend::create_or_get_sink("sink_id_1");\n') - f.write(' quill::Logger* logger = quill::Frontend::create_or_get_logger("root", std::move(console_sink));\n\n') - - for statement in statements: - f.write(f'{statement}\n') - - f.write('\n return 0;\n') - f.write('}\n') - - -if __name__ == '__main__': - num_statements = 2000 - statements = generate_log_statements(num_statements) - write_to_file('log_benchmark.cpp', statements) diff --git a/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/CMakeLists.txt b/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/CMakeLists.txt deleted file mode 100644 index 1f814a8..0000000 --- a/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -set(LIB_NAME qwrapper_compile_time_bench) - -add_library(${LIB_NAME} STATIC - include/qwrapper/qwrapper.h - include/qwrapper/qwrapper.cpp) - -# Add include directories for this library -target_include_directories(${LIB_NAME} - PUBLIC - $ - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}) - -# Link quill dependency -target_link_libraries(${LIB_NAME} PUBLIC quill::quill) \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.cpp b/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.cpp deleted file mode 100644 index 2a217eb..0000000 --- a/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "qwrapper.h" - -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/Logger.h" -#include "quill/sinks/ConsoleSink.h" - -void setup_quill(char const* log_file) -{ - quill::Backend::start(); - - auto console_sink = quill::Frontend::create_or_get_sink("s1"); - - quill::Frontend::create_or_get_logger("root", std::move(console_sink), - "%(time) [%(thread_id)] %(short_source_location:<28) " - "LOG_%(log_level:<9) %(logger:<12) %(message)", - "%H:%M:%S.%Qns", quill::Timezone::GmtTime); -} \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.h b/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.h deleted file mode 100644 index c71a95e..0000000 --- a/subprojects/quill-4.2.0/benchmarks/compile_time/qwrapper/include/qwrapper/qwrapper.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void setup_quill(char const* log_file); \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/CMakeLists.txt b/subprojects/quill-4.2.0/benchmarks/hot_path_latency/CMakeLists.txt deleted file mode 100644 index cd521cf..0000000 --- a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_executable(BENCHMARK_quill_hot_path_rdtsc_clock hot_path_bench_config.h hot_path_bench.h quill_hot_path_rdtsc_clock.cpp) -set_common_compile_options(BENCHMARK_quill_hot_path_rdtsc_clock) -target_link_libraries(BENCHMARK_quill_hot_path_rdtsc_clock quill) - -add_executable(BENCHMARK_quill_hot_path_system_clock hot_path_bench_config.h hot_path_bench.h quill_hot_path_system_clock.cpp) -set_common_compile_options(BENCHMARK_quill_hot_path_system_clock) -target_link_libraries(BENCHMARK_quill_hot_path_system_clock quill) \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench.h b/subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench.h deleted file mode 100644 index f38297d..0000000 --- a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench.h +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Copyright(c) 2020-present, Odysseas Georgoudis & quill contributors. - * Distributed under the MIT License (http://opensource.org/licenses/MIT) - */ - -#pragma once - -#include "hot_path_bench_config.h" - -#include "quill/backend/BackendUtilities.h" -#include "quill/backend/RdtscClock.h" -#include "quill/core/Rdtsc.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) - #include -#else - #include -#endif - -inline uint16_t get_cpu_to_pin_thread(uint16_t thread_num) -{ - auto const num_cores = static_cast(std::thread::hardware_concurrency()); - - // If hardware_concurrency feature is not supported, zero value is returned. - if (num_cores == 0) - return 0; - - return thread_num % num_cores; -} - -// Instead of sleep -inline void wait(std::chrono::nanoseconds min, std::chrono::nanoseconds max) -{ -#ifdef PERF_ENABLED - // when in perf use sleep as the other variables add noise - std::this_thread::sleep_for(max); -#else - static std::random_device rd; - static std::mt19937 gen(rd()); - static std::uniform_int_distribution<> dis(static_cast(min.count()), static_cast(max.count())); - - auto const start_time = std::chrono::steady_clock::now(); - auto const end_time = start_time.time_since_epoch() + std::chrono::nanoseconds{dis(gen)}; - std::chrono::nanoseconds time_now; - do - { - time_now = std::chrono::steady_clock::now().time_since_epoch(); - } while (time_now < end_time); -#endif -} - -#ifdef PERF_ENABLED -/***/ -inline void run_log_benchmark(size_t num_iterations, size_t messages_per_iteration, - std::function on_thread_start, - std::function log_func, - std::function on_thread_exit, size_t current_thread_num) -{ - // running thread affinity - quill::detail::set_cpu_affinity(get_cpu_to_pin_thread(current_thread_num)); - - on_thread_start(); - - unsigned int aux; - // Main Benchmark - for (size_t iteration = 0; iteration < num_iterations; ++iteration) - { - double const d = iteration + (0.1 * iteration); - - auto const start = __rdtscp(&aux); - for (size_t i = 0; i < messages_per_iteration; ++i) - { - log_func(iteration, i, d); - } - auto const end = __rdtscp(&aux); - - // send the next batch of messages after x time - wait(MIN_WAIT_DURATION, MAX_WAIT_DURATION); - } - - on_thread_exit(); -} -#else -/***/ -inline void run_log_benchmark(size_t num_iterations, size_t messages_per_iteration, - std::function const& on_thread_start, - std::function const& log_func, - std::function const& on_thread_exit, uint16_t current_thread_num, - std::vector& latencies, double rdtsc_ns_per_tick) -{ - // running thread affinity - quill::detail::set_cpu_affinity(get_cpu_to_pin_thread(current_thread_num)); - - on_thread_start(); - - unsigned int aux; - // Main Benchmark - for (size_t iteration = 0; iteration < num_iterations; ++iteration) - { - double const d = static_cast(iteration) + (0.1 * static_cast(iteration)); - - auto const start = __rdtscp(&aux); - for (size_t i = 0; i < messages_per_iteration; ++i) - { - log_func(iteration, i, d); - } - auto const end = __rdtscp(&aux); - - uint64_t const latency{static_cast( - static_cast((end - start)) / static_cast(messages_per_iteration) * rdtsc_ns_per_tick)}; - latencies.push_back(latency); - - // send the next batch of messages after x time - wait(MIN_WAIT_DURATION, MAX_WAIT_DURATION); - } - - on_thread_exit(); -} -#endif - -/***/ -inline void run_benchmark(char const* benchmark_name, uint16_t thread_count, size_t num_iterations, - size_t messages_per_iteration, std::function const& on_thread_start, - std::function const& log_func, - std::function const& on_thread_exit) -{ - // main thread affinity - quill::detail::set_cpu_affinity(0); - -#ifndef PERF_ENABLED - std::cout << "running for " << thread_count << " thread(s)" << std::endl; - - quill::detail::RdtscClock rdtsc_clock{std::chrono::minutes{30}}; - - // each thread gets a vector of latencies - std::vector> latencies; - latencies.resize(thread_count); - for (auto& elem : latencies) - { - elem.reserve(num_iterations); - } -#endif - - std::vector threads; - threads.reserve(thread_count); - for (uint16_t thread_num = 0; thread_num < thread_count; ++thread_num) - { -#ifdef PERF_ENABLED - // Spawn num threads - threads.emplace_back(run_log_benchmark, num_iterations, (messages_per_iteration / thread_count), - on_thread_start, log_func, on_thread_exit, thread_num + 1); -#else - // Spawn num threads - threads.emplace_back(run_log_benchmark, num_iterations, - static_cast(messages_per_iteration / thread_count), - std::ref(on_thread_start), std::ref(log_func), std::ref(on_thread_exit), - static_cast(thread_num + 1u), std::ref(latencies[thread_num]), - rdtsc_clock.nanoseconds_per_tick()); -#endif - } - - // Wait for threads to finish - for (uint16_t i = 0; i < thread_count; ++i) - { - threads[i].join(); - } - -#ifndef PERF_ENABLED - // All threads have finished we can read all latencies - std::vector latencies_combined; - latencies_combined.reserve(num_iterations * thread_count); - for (auto const& elem : latencies) - { - latencies_combined.insert(latencies_combined.end(), elem.begin(), elem.end()); - } - - // Sort all latencies - std::sort(latencies_combined.begin(), latencies_combined.end()); - - std::cout - << "Thread Count " << thread_count << " - Total messages " << latencies_combined.size() * messages_per_iteration - << " - " << benchmark_name << "\n | 50th | 75th | 90th | 95th | 99th | 99.9th | Worst |\n" - << " | " - << latencies_combined[static_cast(static_cast(num_iterations * thread_count) * 0.5)] << " | " - << latencies_combined[static_cast(static_cast(num_iterations * thread_count) * 0.75)] - << " | " - << latencies_combined[static_cast(static_cast(num_iterations * thread_count) * 0.9)] << " | " - << latencies_combined[static_cast(static_cast(num_iterations * thread_count) * 0.95)] - << " | " - << latencies_combined[static_cast(static_cast(num_iterations * thread_count) * 0.99)] - << " | " - << latencies_combined[static_cast(static_cast(num_iterations * thread_count) * 0.999)] - << " | " << latencies_combined[static_cast(latencies_combined.size() - 1)] << " |\n\n"; -#endif -} \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench_config.h b/subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench_config.h deleted file mode 100644 index ab7113a..0000000 --- a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/hot_path_bench_config.h +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright(c) 2020-present, Odysseas Georgoudis & quill contributors. - * Distributed under the MIT License (http://opensource.org/licenses/MIT) - */ - -#pragma once -#include - -/** - * When running the benchmark using e.g. perf, enable this definition to remove extra noise - * from calculating and printing the results. - * - * To see shared cached lines : - * perf c2c record -g --call-graph dwarf,8192 ./benchmark_quill_call_site_latency - * perf c2c report -NN -g --call-graph -c pid,iaddr --stdio - */ -// #define PERF_ENABLED - -#define THREAD_LIST_COUNT \ - std::vector { 1, 4 } - -#define MESSAGES_PER_ITERATION \ - std::size_t { 20 } - -#define ITERATIONS \ - std::size_t { 100000 } - -/** - * Min-Max wait duration between each iteration - This lets the backend thread catch up - * a little bit with the caller thread, because the caller thread is so much faster. - * When the backend thread can't catch up it will cause the caller thread on the hot path - * to reallocate more space in the queue slowing it down. - * This benchmark is measuring latency not high throughput - * **/ -#define MIN_WAIT_DURATION \ - std::chrono::microseconds { 2000 } - -#define MAX_WAIT_DURATION \ - std::chrono::microseconds { 2200 } diff --git a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_rdtsc_clock.cpp b/subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_rdtsc_clock.cpp deleted file mode 100644 index 05aa0c4..0000000 --- a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_rdtsc_clock.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Adding a benchmark for a another logger should be straight forward by duplicating and modifying - * this file. - */ - -#include "hot_path_bench.h" - -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/sinks/FileSink.h" - -struct FrontendOptions -{ - static constexpr quill::QueueType queue_type = quill::QueueType::UnboundedBlocking; - static constexpr uint32_t initial_queue_capacity = 131'072; - static constexpr uint32_t blocking_queue_retry_interval_ns = 800; - static constexpr bool huge_pages_enabled = false; -}; - -using Frontend = quill::FrontendImpl; -using Logger = quill::LoggerImpl; - -/***/ -void quill_benchmark(std::vector const& thread_count_array, - size_t num_iterations_per_thread, size_t messages_per_iteration) -{ - /** - MAIN THREAD START - Logger setup if any **/ - - /** - Setup Quill **/ - // main thread affinity - quill::detail::set_cpu_affinity(0); - - quill::BackendOptions backend_options; - backend_options.backend_cpu_affinity = 5; - - // Start the logging backend thread and give it some tiem to init - quill::Backend::start(backend_options); - - std::this_thread::sleep_for(std::chrono::milliseconds{100}); - - // wait for the backend thread to start - std::this_thread::sleep_for(std::chrono::seconds(1)); - - // Create a file sink to write to a file - std::shared_ptr file_sink = Frontend::create_or_get_sink( - "quill_hot_path_rdtsc_clock.log", - []() - { - quill::FileSinkConfig cfg; - cfg.set_open_mode('w'); - return cfg; - }(), - quill::FileEventNotifier{}); - - Logger* logger = Frontend::create_or_get_logger( - "bench_logger", std::move(file_sink), - "%(time) [%(thread_id)] %(short_source_location) %(log_level) %(message)"); - - /** LOGGING THREAD FUNCTIONS - on_start, on_exit, log_func must be implemented **/ - /** those run on a several thread(s). It can be one or multiple threads based on THREAD_LIST_COUNT config */ - auto on_start = []() { - // on thread start - Frontend::preallocate(); - }; - - auto on_exit = [logger]() - { - // on thread exit we block flush, so the next benchmark starts with the backend thread ready - // to process the messages - logger->flush_log(); - }; - - // on main - auto log_func = [logger](uint64_t k, uint64_t i, double d) { - // Main logging function - // This will get called MESSAGES_PER_ITERATION * ITERATIONS for each caller thread. - // MESSAGES_PER_ITERATION will get averaged to a single number - - LOG_INFO(logger, "Logging iteration: {}, message: {}, double: {}", k, i, d); - }; - - /** ALWAYS REQUIRED **/ - // Run the benchmark for n threads - for (auto thread_count : thread_count_array) - { - run_benchmark("Logger: Quill - Benchmark: Hot Path Latency / Nanoseconds", thread_count, - num_iterations_per_thread, messages_per_iteration, on_start, log_func, on_exit); - } -} - -/***/ -int main(int, char**) { quill_benchmark(THREAD_LIST_COUNT, ITERATIONS, MESSAGES_PER_ITERATION); } \ No newline at end of file diff --git a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_system_clock.cpp b/subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_system_clock.cpp deleted file mode 100644 index 41f8b1c..0000000 --- a/subprojects/quill-4.2.0/benchmarks/hot_path_latency/quill_hot_path_system_clock.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Adding a benchmark for a another logger should be straight forward by duplicating and modifying - * this file. - */ - -#include "hot_path_bench.h" - -#include "quill/Backend.h" -#include "quill/Frontend.h" -#include "quill/LogMacros.h" -#include "quill/sinks/FileSink.h" - -struct FrontendOptions -{ - static constexpr quill::QueueType queue_type = quill::QueueType::UnboundedBlocking; - static constexpr uint32_t initial_queue_capacity = 131'072; - static constexpr uint32_t blocking_queue_retry_interval_ns = 800; - static constexpr bool huge_pages_enabled = false; -}; - -using Frontend = quill::FrontendImpl; -using Logger = quill::LoggerImpl; - -/***/ -void quill_benchmark(std::vector const& thread_count_array, - size_t num_iterations_per_thread, size_t messages_per_iteration) -{ - /** - MAIN THREAD START - Logger setup if any **/ - - /** - Setup Quill **/ - // main thread affinity - quill::detail::set_cpu_affinity(0); - - quill::BackendOptions backend_options; - backend_options.backend_cpu_affinity = 5; - - // Start the logging backend thread and give it some tiem to init - quill::Backend::start(backend_options); - - std::this_thread::sleep_for(std::chrono::milliseconds{100}); - - // wait for the backend thread to start - std::this_thread::sleep_for(std::chrono::seconds(1)); - - // Create a file sink to write to a file - std::shared_ptr file_sink = Frontend::create_or_get_sink( - "quill_hot_path_rdtsc_clock.log", - []() - { - quill::FileSinkConfig cfg; - cfg.set_open_mode('w'); - return cfg; - }(), - quill::FileEventNotifier{}); - - Logger* logger = Frontend::create_or_get_logger( - "bench_logger", std::move(file_sink), - "%(time) [%(thread_id)] %(short_source_location) %(log_level) %(message)", "%H:%M:%S.%Qns", - quill::Timezone::LocalTime, quill::ClockSourceType::System); - - /** LOGGING THREAD FUNCTIONS - on_start, on_exit, log_func must be implemented **/ - /** those run on a several thread(s). It can be one or multiple threads based on THREAD_LIST_COUNT config */ - auto on_start = []() - { - // on thread start - Frontend::preallocate(); - }; - - auto on_exit = [logger]() - { - // on thread exit we block flush, so the next benchmark starts with the backend thread ready - // to process the messages - logger->flush_log(); - }; - - // on main - auto log_func = [logger](uint64_t k, uint64_t i, double d) - { - // Main logging function - // This will get called MESSAGES_PER_ITERATION * ITERATIONS for each caller thread. - // MESSAGES_PER_ITERATION will get averaged to a single number - - LOG_INFO(logger, "Logging iteration: {}, message: {}, double: {}", k, i, d); - }; - - /** ALWAYS REQUIRED **/ - // Run the benchmark for n threads - for (auto thread_count : thread_count_array) - { - run_benchmark("Logger: Quill - Benchmark: Hot Path Latency / Nanoseconds", thread_count, - num_iterations_per_thread, messages_per_iteration, on_start, log_func, on_exit); - } -} - -/***/ -int main(int, char**) { quill_benchmark(THREAD_LIST_COUNT, ITERATIONS, MESSAGES_PER_ITERATION); } \ No newline at end of file diff --git a/subprojects/quill-4.2.0/cmake/FindSphinx.cmake b/subprojects/quill-4.2.0/cmake/FindSphinx.cmake deleted file mode 100644 index 24bf486..0000000 --- a/subprojects/quill-4.2.0/cmake/FindSphinx.cmake +++ /dev/null @@ -1,11 +0,0 @@ -#Look for an executable called sphinx-build -find_program(SPHINX_EXECUTABLE - NAMES sphinx-build - DOC "Path to sphinx-build executable") - -include(FindPackageHandleStandardArgs) - -#Handle standard arguments to find_package like REQUIRED and QUIET -find_package_handle_standard_args(Sphinx - "Failed to find sphinx-build executable" - SPHINX_EXECUTABLE) \ No newline at end of file diff --git a/subprojects/quill-4.2.0/cmake/SetCommonCompileOptions.cmake b/subprojects/quill-4.2.0/cmake/SetCommonCompileOptions.cmake deleted file mode 100644 index 8ba5bf6..0000000 --- a/subprojects/quill-4.2.0/cmake/SetCommonCompileOptions.cmake +++ /dev/null @@ -1,21 +0,0 @@ -# Define the function to set common compile options -function(set_common_compile_options target_name) - cmake_parse_arguments(COMPILE_OPTIONS "" "VISIBILITY" "" ${ARGN}) - - # Set default visibility to PRIVATE if not provided - if (NOT DEFINED COMPILE_OPTIONS_VISIBILITY) - set(COMPILE_OPTIONS_VISIBILITY PRIVATE) - endif () - - target_compile_options(${target_name} ${COMPILE_OPTIONS_VISIBILITY} - $<$,$,$>: - -Wall -Wextra -Wconversion -pedantic -Wfatal-errors -Wno-unused-private-field -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-parameter> - $<$:/bigobj /WX /W4 /wd4324 /wd4189 /wd4996 /wd4100 /wd4127 /wd4702>) - - # Additional MSVC specific options - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - if (NOT QUILL_NO_EXCEPTIONS) - target_compile_options(${target_name} ${COMPILE_OPTIONS_VISIBILITY} /EHsc) - endif () - endif () -endfunction() \ No newline at end of file diff --git a/subprojects/quill-4.2.0/cmake/doctest.cmake b/subprojects/quill-4.2.0/cmake/doctest.cmake deleted file mode 100644 index 169bbcd..0000000 --- a/subprojects/quill-4.2.0/cmake/doctest.cmake +++ /dev/null @@ -1,189 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -doctest ------ - -This module defines a function to help use the doctest test framework. - -The :command:`doctest_discover_tests` discovers tests by asking the compiled test -executable to enumerate its tests. This does not require CMake to be re-run -when tests change. However, it may not work in a cross-compiling environment, -and setting test properties is less convenient. - -This command is intended to replace use of :command:`add_test` to register -tests, and will create a separate CTest test for each doctest test case. Note -that this is in some cases less efficient, as common set-up and tear-down logic -cannot be shared by multiple test cases executing in the same instance. -However, it provides more fine-grained pass/fail information to CTest, which is -usually considered as more beneficial. By default, the CTest test name is the -same as the doctest name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``. - -.. command:: doctest_discover_tests - - Automatically add tests with CTest by querying the compiled test executable - for available tests:: - - doctest_discover_tests(target - [TEST_SPEC arg1...] - [EXTRA_ARGS arg1...] - [WORKING_DIRECTORY dir] - [TEST_PREFIX prefix] - [TEST_SUFFIX suffix] - [PROPERTIES name1 value1...] - [ADD_LABELS value] - [TEST_LIST var] - [JUNIT_OUTPUT_DIR dir] - ) - - ``doctest_discover_tests`` sets up a post-build command on the test executable - that generates the list of tests by parsing the output from running the test - with the ``--list-test-cases`` argument. This ensures that the full - list of tests is obtained. Since test discovery occurs at build time, it is - not necessary to re-run CMake when the list of tests changes. - However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set - in order to function in a cross-compiling environment. - - Additionally, setting properties on tests is somewhat less convenient, since - the tests are not available at CMake time. Additional test properties may be - assigned to the set of tests as a whole using the ``PROPERTIES`` option. If - more fine-grained test control is needed, custom content may be provided - through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES` - directory property. The set of discovered tests is made accessible to such a - script via the ``_TESTS`` variable. - - The options are: - - ``target`` - Specifies the doctest executable, which must be a known CMake executable - target. CMake will substitute the location of the built executable when - running the test. - - ``TEST_SPEC arg1...`` - Specifies test cases, wildcarded test cases, tags and tag expressions to - pass to the doctest executable with the ``--list-test-cases`` argument. - - ``EXTRA_ARGS arg1...`` - Any extra arguments to pass on the command line to each test case. - - ``WORKING_DIRECTORY dir`` - Specifies the directory in which to run the discovered test cases. If this - option is not provided, the current binary directory is used. - - ``TEST_PREFIX prefix`` - Specifies a ``prefix`` to be prepended to the name of each discovered test - case. This can be useful when the same test executable is being used in - multiple calls to ``doctest_discover_tests()`` but with different - ``TEST_SPEC`` or ``EXTRA_ARGS``. - - ``TEST_SUFFIX suffix`` - Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of - every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may - be specified. - - ``PROPERTIES name1 value1...`` - Specifies additional properties to be set on all tests discovered by this - invocation of ``doctest_discover_tests``. - - ``ADD_LABELS value`` - Specifies if the test labels should be set automatically. - - ``TEST_LIST var`` - Make the list of tests available in the variable ``var``, rather than the - default ``_TESTS``. This can be useful when the same test - executable is being used in multiple calls to ``doctest_discover_tests()``. - Note that this variable is only available in CTest. - - ``JUNIT_OUTPUT_DIR dir`` - If specified, the parameter is passed along with ``--reporters=junit`` - and ``--out=`` to the test executable. The actual file name is the same - as the test target, including prefix and suffix. This should be used - instead of EXTRA_ARGS to avoid race conditions writing the XML result - output when using parallel test execution. - -#]=======================================================================] - -#------------------------------------------------------------------------------ -function(doctest_discover_tests TARGET) - cmake_parse_arguments( - "" - "" - "TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;JUNIT_OUTPUT_DIR" - "TEST_SPEC;EXTRA_ARGS;PROPERTIES;ADD_LABELS" - ${ARGN} - ) - - if(NOT _WORKING_DIRECTORY) - set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endif() - if(NOT _TEST_LIST) - set(_TEST_LIST ${TARGET}_TESTS) - endif() - - ## Generate a unique name based on the extra arguments - string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}") - string(SUBSTRING ${args_hash} 0 7 args_hash) - - # Define rule to generate test list for aforementioned test executable - set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake") - set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake") - get_property(crosscompiling_emulator - TARGET ${TARGET} - PROPERTY CROSSCOMPILING_EMULATOR - ) - add_custom_command( - TARGET ${TARGET} POST_BUILD - BYPRODUCTS "${ctest_tests_file}" - COMMAND "${CMAKE_COMMAND}" - -D "TEST_TARGET=${TARGET}" - -D "TEST_EXECUTABLE=$" - -D "TEST_EXECUTOR=${crosscompiling_emulator}" - -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}" - -D "TEST_SPEC=${_TEST_SPEC}" - -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}" - -D "TEST_PROPERTIES=${_PROPERTIES}" - -D "TEST_ADD_LABELS=${_ADD_LABELS}" - -D "TEST_PREFIX=${_TEST_PREFIX}" - -D "TEST_SUFFIX=${_TEST_SUFFIX}" - -D "TEST_LIST=${_TEST_LIST}" - -D "TEST_JUNIT_OUTPUT_DIR=${_JUNIT_OUTPUT_DIR}" - -D "CTEST_FILE=${ctest_tests_file}" - -P "${_DOCTEST_DISCOVER_TESTS_SCRIPT}" - VERBATIM - ) - - file(WRITE "${ctest_include_file}" - "if(EXISTS \"${ctest_tests_file}\")\n" - " include(\"${ctest_tests_file}\")\n" - "else()\n" - " add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n" - "endif()\n" - ) - - if(NOT CMAKE_VERSION VERSION_LESS 3.10) - # Add discovered tests to directory TEST_INCLUDE_FILES - set_property(DIRECTORY - APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}" - ) - else() - # Add discovered tests as directory TEST_INCLUDE_FILE if possible - get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET) - if(NOT ${test_include_file_set}) - set_property(DIRECTORY - PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}" - ) - else() - message(FATAL_ERROR - "Cannot set more than one TEST_INCLUDE_FILE" - ) - endif() - endif() - -endfunction() - -############################################################################### - -set(_DOCTEST_DISCOVER_TESTS_SCRIPT - ${CMAKE_CURRENT_LIST_DIR}/doctestAddTests.cmake - ) diff --git a/subprojects/quill-4.2.0/cmake/doctestAddTests.cmake b/subprojects/quill-4.2.0/cmake/doctestAddTests.cmake deleted file mode 100644 index ec7f21b..0000000 --- a/subprojects/quill-4.2.0/cmake/doctestAddTests.cmake +++ /dev/null @@ -1,120 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -set(prefix "${TEST_PREFIX}") -set(suffix "${TEST_SUFFIX}") -set(spec ${TEST_SPEC}) -set(extra_args ${TEST_EXTRA_ARGS}) -set(properties ${TEST_PROPERTIES}) -set(add_labels ${TEST_ADD_LABELS}) -set(junit_output_dir "${TEST_JUNIT_OUTPUT_DIR}") -set(script) -set(suite) -set(tests) - -function(add_command NAME) - set(_args "") - foreach(_arg ${ARGN}) - if(_arg MATCHES "[^-./:a-zA-Z0-9_]") - set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument - else() - set(_args "${_args} ${_arg}") - endif() - endforeach() - set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE) -endfunction() - -# Run test executable to get list of available tests -if(NOT EXISTS "${TEST_EXECUTABLE}") - message(FATAL_ERROR - "Specified test executable '${TEST_EXECUTABLE}' does not exist" - ) -endif() - -if("${spec}" MATCHES .) - set(spec "--test-case=${spec}") -endif() - -execute_process( - COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-test-cases - OUTPUT_VARIABLE output - RESULT_VARIABLE result - WORKING_DIRECTORY "${TEST_WORKING_DIR}" -) -if(NOT ${result} EQUAL 0) - message(FATAL_ERROR - "Error running test executable '${TEST_EXECUTABLE}':\n" - " Result: ${result}\n" - " Output: ${output}\n" - ) -endif() - -string(REPLACE "\n" ";" output "${output}") - -# Parse output -foreach(line ${output}) - if("${line}" STREQUAL "===============================================================================" OR "${line}" MATCHES [==[^\[doctest\] ]==]) - continue() - endif() - set(test ${line}) - set(labels "") - if(${add_labels}) - # get test suite that test belongs to - execute_process( - COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" --test-case=${test} --list-test-suites - OUTPUT_VARIABLE labeloutput - RESULT_VARIABLE labelresult - WORKING_DIRECTORY "${TEST_WORKING_DIR}" - ) - if(NOT ${labelresult} EQUAL 0) - message(FATAL_ERROR - "Error running test executable '${TEST_EXECUTABLE}':\n" - " Result: ${labelresult}\n" - " Output: ${labeloutput}\n" - ) - endif() - - string(REPLACE "\n" ";" labeloutput "${labeloutput}") - foreach(labelline ${labeloutput}) - if("${labelline}" STREQUAL "===============================================================================" OR "${labelline}" MATCHES [==[^\[doctest\] ]==]) - continue() - endif() - list(APPEND labels ${labelline}) - endforeach() - endif() - - if(NOT "${junit_output_dir}" STREQUAL "") - # turn testname into a valid filename by replacing all special characters with "-" - string(REGEX REPLACE "[/\\:\"|<>]" "-" test_filename "${test}") - set(TEST_JUNIT_OUTPUT_PARAM "--reporters=junit" "--out=${junit_output_dir}/${prefix}${test_filename}${suffix}.xml") - else() - unset(TEST_JUNIT_OUTPUT_PARAM) - endif() - # use escape commas to handle properly test cases with commas inside the name - string(REPLACE "," "\\," test_name ${test}) - # ...and add to script - add_command(add_test - "${prefix}${test}${suffix}" - ${TEST_EXECUTOR} - "${TEST_EXECUTABLE}" - "--test-case=${test_name}" - "${TEST_JUNIT_OUTPUT_PARAM}" - ${extra_args} - ) - add_command(set_tests_properties - "${prefix}${test}${suffix}" - PROPERTIES - WORKING_DIRECTORY "${TEST_WORKING_DIR}" - ${properties} - LABELS ${labels} - ) - unset(labels) - list(APPEND tests "${prefix}${test}${suffix}") -endforeach() - -# Create a list of all discovered tests, which users may use to e.g. set -# properties on the tests -add_command(set ${TEST_LIST} ${tests}) - -# Write CTest script -file(WRITE "${CTEST_FILE}" "${script}") \ No newline at end of file diff --git a/subprojects/quill-4.2.0/docs/CMakeLists.txt b/subprojects/quill-4.2.0/docs/CMakeLists.txt deleted file mode 100644 index 1df3edf..0000000 --- a/subprojects/quill-4.2.0/docs/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -find_package(Doxygen REQUIRED) - -# Find all the public headers -get_target_property(QUILL_PUBLIC_HEADER_DIR quill INTERFACE_INCLUDE_DIRECTORIES) -file(GLOB_RECURSE QUILL_PUBLIC_HEADERS ${QUILL_PUBLIC_HEADER_DIR}/*.h) - -set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/quill) -set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen) -set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml) -set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) -set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - -#Replace variables inside @@ with the current values -configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) - -file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR}) #Doxygen won't create this for us -add_custom_command(OUTPUT ${DOXYGEN_INDEX_FILE} - DEPENDS ${QUILL_PUBLIC_HEADERS} - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} - MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN} - COMMENT "Generating docs") - -add_custom_target(Doxygen ALL DEPENDS ${DOXYGEN_INDEX_FILE}) - -find_package(Sphinx REQUIRED) - -set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}) -set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}/sphinx) -set(SPHINX_INDEX_FILE ${SPHINX_BUILD}/index.html) - -# Only regenerate Sphinx when: -# - Doxygen has rerun -# - Our doc files have been updated -# - The Sphinx config has been updated -add_custom_command(OUTPUT ${SPHINX_INDEX_FILE} - COMMAND - ${SPHINX_EXECUTABLE} -b html - # Tell Breathe where to find the Doxygen output - -Dbreathe_projects.Quill=${DOXYGEN_OUTPUT_DIR}/xml - ${SPHINX_SOURCE} ${SPHINX_BUILD} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS - # Other docs files you want to track should go here (or in some variable) - ${CMAKE_CURRENT_SOURCE_DIR}/index.rst - ${CMAKE_CURRENT_SOURCE_DIR}/users-api.rst - ${CMAKE_CURRENT_SOURCE_DIR}/install.rst - ${CMAKE_CURRENT_SOURCE_DIR}/usage.rst - ${CMAKE_CURRENT_SOURCE_DIR}/tutorial.rst - ${CMAKE_CURRENT_SOURCE_DIR}/features.rst - ${DOXYGEN_INDEX_FILE} - MAIN_DEPENDENCY ${SPHINX_SOURCE}/conf.py - COMMENT "Generating documentation with Sphinx") - -# Nice named target so we can run the job easily -add_custom_target(Sphinx ALL DEPENDS ${SPHINX_INDEX_FILE}) \ No newline at end of file diff --git a/subprojects/quill-4.2.0/docs/Doxyfile.in b/subprojects/quill-4.2.0/docs/Doxyfile.in deleted file mode 100644 index d30e770..0000000 --- a/subprojects/quill-4.2.0/docs/Doxyfile.in +++ /dev/null @@ -1,2660 +0,0 @@ -# Doxyfile 1.9.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "My Project" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = "@DOXYGEN_OUTPUT_DIR@" - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all generated output in the proper direction. -# Possible values are: None, LTR, RTL and Context. -# The default value is: None. - -OUTPUT_TEXT_DIRECTION = None - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# By default Python docstrings are displayed as preformatted text and doxygen's -# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. -# The default value is: YES. - -PYTHON_DOCSTRING = YES - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines (in the resulting output). You can put ^^ in the value part of an -# alias to insert a newline as if a physical newline was in the original file. -# When you need a literal { or } or , in the value part of an alias you have to -# escape them by means of a backslash (\), this can lead to conflicts with the -# commands \{ and \} for these it is advised to use the version @{ and @} or use -# a double escape (\\{ and \\}) - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, -# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files -# as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add -# * to the FILE_PATTERNS. -# -# Note see also the list of default file extension mappings. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 5 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of -# cores available in the system. You can set it explicitly to a value larger -# than 0 to get more control over the balance between CPU load and processing -# speed. At this moment only the input processing can be done using multiple -# threads. Since this is still an experimental feature the default is set to 1, -# which efficively disables parallel processing. Please report any issues you -# encounter. Generating dot graphs in parallel is controlled by the -# DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. - -NUM_PROC_THREADS = 1 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = YES - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = YES - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If this flag is set to YES, the name of an unnamed parameter in a declaration -# will be determined by the corresponding definition. By default unnamed -# parameters remain unnamed in the output. -# The default value is: YES. - -RESOLVE_UNNAMED_PARAMS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# declarations. If set to NO, these declarations will be included in the -# documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be -# able to match the capabilities of the underlying filesystem. In case the -# filesystem is case sensitive (i.e. it supports files in the same directory -# whose names only differ in casing), the option must be set to YES to properly -# deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be be set to NO to properly deal with -# output files written for symbols that only differ in casing, such as for two -# classes, one named CLASS and the other named Class, and to also support -# references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option -# to NO, whereas on Linux or other Unix flavors it should typically be set to -# YES. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. If -# EXTRACT_ALL is set to YES then this flag will automatically be disabled. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# Possible values are: NO, YES and FAIL_ON_WARNINGS. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = "@DOXYGEN_INPUT_DIR@" - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: -# https://www.gnu.org/software/libiconv/) for the list of possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# Note the list of default checked file patterns might differ from the list of -# default file extension mappings. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), -# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, -# *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.idl \ - *.ddl \ - *.odl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.cs \ - *.d \ - *.php \ - *.php4 \ - *.php5 \ - *.phtml \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.pyw \ - *.f90 \ - *.f95 \ - *.f03 \ - *.f08 \ - *.f18 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl \ - *.ucf \ - *.qsf \ - *.ice - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = */quill/bundled/* */src/bundled/* */test/* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: -# http://clang.llvm.org/) for more accurate parsing at the cost of reduced -# performance. This can be particularly helpful with template rich C++ code for -# which doxygen's built-in parser lacks the necessary type information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to -# YES then doxygen will add the directory of each input to the include path. -# The default value is: YES. - -CLANG_ADD_INC_PATHS = YES - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -# If clang assisted parsing is enabled you can provide the clang parser with the -# path to the directory containing a file called compile_commands.json. This -# file is the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the -# options used when the source files were built. This is equivalent to -# specifying the -p option to a clang tool, such as clang-check. These options -# will then be passed to the parser. Any options specified with CLANG_OPTIONS -# will be added as well. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. - -CLANG_DATABASE_PATH = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = NO - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via JavaScript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have JavaScript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: -# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML -# output directory. Running make will produce the docset in that directory and -# running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: -# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the main .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to -# run qhelpgenerator on the generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg -# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -# the HTML output. These images will generally look nicer at scaled resolutions. -# Possible values are: png (the default) and svg (looks nicer but requires the -# pdf2svg or inkscape tool). -# The default value is: png. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FORMULA_FORMAT = png - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -# to create new LaTeX commands to be used in formulas as building blocks. See -# the section "Including formulas" for details. - -FORMULA_MACROFILE = - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side JavaScript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /
    - - Quill logo - -

    Quill

    - - - - - - - -

    Asynchronous Low Latency C++ Logging Library

    - -