diff options
Diffstat (limited to 'vendor/toml++/impl/at_path.hpp')
| -rw-r--r-- | vendor/toml++/impl/at_path.hpp | 152 |
1 files changed, 74 insertions, 78 deletions
diff --git a/vendor/toml++/impl/at_path.hpp b/vendor/toml++/impl/at_path.hpp index e351e6b..8ea273e 100644 --- a/vendor/toml++/impl/at_path.hpp +++ b/vendor/toml++/impl/at_path.hpp @@ -1,96 +1,92 @@ -//# This file is a part of toml++ and is subject to the the terms of the MIT license. -//# Copyright (c) Mark Gillard <mark.gillard@outlook.com.au> -//# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text. -// SPDX-License-Identifier: MIT +// # This file is a part of toml++ and is subject to the the terms of the MIT license. +// # Copyright (c) Mark Gillard <mark.gillard@outlook.com.au> +// # See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text. +// SPDX-License-Identifier: MIT #pragma once #include "forward_declarations.hpp" /// \cond -TOML_IMPL_NAMESPACE_START -{ - template <typename T> - using parse_path_callback = bool(TOML_CALLCONV*)(void*, T); +TOML_IMPL_NAMESPACE_START { + template <typename T> + using parse_path_callback = bool(TOML_CALLCONV*)(void*, T); - TOML_NODISCARD - bool TOML_CALLCONV parse_path(std::string_view, - void*, - parse_path_callback<std::string_view>, - parse_path_callback<size_t>); + TOML_NODISCARD + bool TOML_CALLCONV parse_path(std::string_view, void*, parse_path_callback<std::string_view>, + parse_path_callback<size_t>); } TOML_IMPL_NAMESPACE_END; /// \endcond -TOML_NAMESPACE_START -{ - /// \brief Returns a view of the node matching a fully-qualified "TOML path". - /// - /// \detail \cpp - /// auto config = toml::parse(R"( - /// - /// [foo] - /// bar = [ 0, 1, 2, [ 3 ], { kek = 4 } ] - /// - /// )"sv); - /// - /// std::cout << toml::at_path(config, "foo.bar[2]") << "\n"; - /// std::cout << toml::at_path(config, "foo.bar[3][0]") << "\n"; - /// std::cout << toml::at_path(config, "foo.bar[4].kek") << "\n"; - /// \ecpp - /// - /// \out - /// 2 - /// 3 - /// 4 - /// \eout - /// - /// - /// \note Keys in paths are interpreted literally, so whitespace (or lack thereof) matters: - /// \cpp - /// toml::at_path(config, "foo.bar") // same as config["foo"]["bar"] - /// toml::at_path(config, "foo. bar") // same as config["foo"][" bar"] - /// toml::at_path(config, "foo..bar") // same as config["foo"][""]["bar"] - /// toml::at_path(config, ".foo.bar") // same as config[""]["foo"]["bar"] - /// \ecpp - /// <br> - /// Additionally, TOML allows '.' (period) characters to appear in keys if they are quoted strings. - /// This function makes no allowance for this, instead treating all period characters as sub-table delimiters. - /// If you have periods in your table keys, first consider: - /// 1. Not doing that - /// 2. Using node_view::operator[] instead. - /// - /// \param root The root node from which the path will be traversed. - /// \param path The "TOML path" to traverse. - TOML_NODISCARD - TOML_EXPORTED_FREE_FUNCTION - node_view<node> TOML_CALLCONV at_path(node & root, std::string_view path) noexcept; +TOML_NAMESPACE_START { + /// \brief Returns a view of the node matching a fully-qualified "TOML path". + /// + /// \detail \cpp + /// auto config = toml::parse(R"( + /// + /// [foo] + /// bar = [ 0, 1, 2, [ 3 ], { kek = 4 } ] + /// + /// )"sv); + /// + /// std::cout << toml::at_path(config, "foo.bar[2]") << "\n"; + /// std::cout << toml::at_path(config, "foo.bar[3][0]") << "\n"; + /// std::cout << toml::at_path(config, "foo.bar[4].kek") << "\n"; + /// \ecpp + /// + /// \out + /// 2 + /// 3 + /// 4 + /// \eout + /// + /// + /// \note Keys in paths are interpreted literally, so whitespace (or lack thereof) matters: + /// \cpp + /// toml::at_path(config, "foo.bar") // same as config["foo"]["bar"] + /// toml::at_path(config, "foo. bar") // same as config["foo"][" bar"] + /// toml::at_path(config, "foo..bar") // same as config["foo"][""]["bar"] + /// toml::at_path(config, ".foo.bar") // same as config[""]["foo"]["bar"] + /// \ecpp + /// <br> + /// Additionally, TOML allows '.' (period) characters to appear in keys if they are quoted + /// strings. This function makes no allowance for this, instead treating all period characters as + /// sub-table delimiters. If you have periods in your table keys, first consider: + /// 1. Not doing that + /// 2. Using node_view::operator[] instead. + /// + /// \param root The root node from which the path will be traversed. + /// \param path The "TOML path" to traverse. + TOML_NODISCARD + TOML_EXPORTED_FREE_FUNCTION + node_view<node> TOML_CALLCONV at_path(node & root, std::string_view path) noexcept; - /// \brief Returns a const view of the node matching a fully-qualified "TOML path". - /// - /// \see #toml::at_path(node&, std::string_view) - TOML_NODISCARD - TOML_EXPORTED_FREE_FUNCTION - node_view<const node> TOML_CALLCONV at_path(const node& root, std::string_view path) noexcept; + /// \brief Returns a const view of the node matching a fully-qualified "TOML path". + /// + /// \see #toml::at_path(node&, std::string_view) + TOML_NODISCARD + TOML_EXPORTED_FREE_FUNCTION + node_view<const node> TOML_CALLCONV at_path(const node& root, std::string_view path) noexcept; #if TOML_ENABLE_WINDOWS_COMPAT - /// \brief Returns a view of the node matching a fully-qualified "TOML path". - /// - /// \availability This overload is only available when #TOML_ENABLE_WINDOWS_COMPAT is enabled. - /// - /// \see #toml::at_path(node&, std::string_view) - TOML_NODISCARD - TOML_EXPORTED_FREE_FUNCTION - node_view<node> TOML_CALLCONV at_path(node & root, std::wstring_view path); + /// \brief Returns a view of the node matching a fully-qualified "TOML path". + /// + /// \availability This overload is only available when #TOML_ENABLE_WINDOWS_COMPAT is enabled. + /// + /// \see #toml::at_path(node&, std::string_view) + TOML_NODISCARD + TOML_EXPORTED_FREE_FUNCTION + node_view<node> TOML_CALLCONV at_path(node & root, std::wstring_view path); - /// \brief Returns a const view of the node matching a fully-qualified "TOML path". - /// - /// \availability This overload is only available when #TOML_ENABLE_WINDOWS_COMPAT is enabled. - /// - /// \see #toml::at_path(node&, std::string_view) - TOML_NODISCARD - TOML_EXPORTED_FREE_FUNCTION - node_view<const node> TOML_CALLCONV at_path(const node& root, std::wstring_view path); + /// \brief Returns a const view of the node matching a fully-qualified "TOML path". + /// + /// \availability This overload is only available when #TOML_ENABLE_WINDOWS_COMPAT is enabled. + /// + /// \see #toml::at_path(node&, std::string_view) + TOML_NODISCARD + TOML_EXPORTED_FREE_FUNCTION + node_view<const node> TOML_CALLCONV at_path(const node& root, std::wstring_view path); #endif } |
