diff options
author | kumquat-ir <66188216+kumquat-ir@users.noreply.github.com> | 2021-04-17 09:46:11 -0700 |
---|---|---|
committer | kumquat-ir <66188216+kumquat-ir@users.noreply.github.com> | 2021-04-17 09:46:11 -0700 |
commit | e668aa0f95f4f56a1ac4320f014662d279c22708 (patch) | |
tree | 7462597a5b709081b15c224d928b36018c74248f /libraries/toml11/include/toml/literal.hpp | |
parent | 13afad80fb9b17503621dc63509113203af8887c (diff) | |
download | PrismLauncher-e668aa0f95f4f56a1ac4320f014662d279c22708.tar.gz PrismLauncher-e668aa0f95f4f56a1ac4320f014662d279c22708.tar.bz2 PrismLauncher-e668aa0f95f4f56a1ac4320f014662d279c22708.zip |
switch to new toml library
Diffstat (limited to 'libraries/toml11/include/toml/literal.hpp')
-rw-r--r-- | libraries/toml11/include/toml/literal.hpp | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/libraries/toml11/include/toml/literal.hpp b/libraries/toml11/include/toml/literal.hpp deleted file mode 100644 index 0824f838..00000000 --- a/libraries/toml11/include/toml/literal.hpp +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright Toru Niina 2019. -// Distributed under the MIT License. -#ifndef TOML11_LITERAL_HPP -#define TOML11_LITERAL_HPP -#include "parser.hpp" - -namespace toml -{ -inline namespace literals -{ -inline namespace toml_literals -{ - -// implementation -inline ::toml::basic_value<::toml::discard_comments, std::unordered_map, std::vector> -literal_internal_impl(::toml::detail::location loc) -{ - using value_type = ::toml::basic_value< - ::toml::discard_comments, std::unordered_map, std::vector>; - // if there are some comments or empty lines, skip them. - using skip_line = ::toml::detail::repeat<toml::detail::sequence< - ::toml::detail::maybe<::toml::detail::lex_ws>, - ::toml::detail::maybe<::toml::detail::lex_comment>, - ::toml::detail::lex_newline - >, ::toml::detail::at_least<1>>; - skip_line::invoke(loc); - - // if there are some whitespaces before a value, skip them. - using skip_ws = ::toml::detail::repeat< - ::toml::detail::lex_ws, ::toml::detail::at_least<1>>; - skip_ws::invoke(loc); - - // to distinguish arrays and tables, first check it is a table or not. - // - // "[1,2,3]"_toml; // this is an array - // "[table]"_toml; // a table that has an empty table named "table" inside. - // "[[1,2,3]]"_toml; // this is an array of arrays - // "[[table]]"_toml; // this is a table that has an array of tables inside. - // - // "[[1]]"_toml; // this can be both... (currently it becomes a table) - // "1 = [{}]"_toml; // this is a table that has an array of table named 1. - // "[[1,]]"_toml; // this is an array of arrays. - // "[[1],]"_toml; // this also. - - const auto the_front = loc.iter(); - - const bool is_table_key = ::toml::detail::lex_std_table::invoke(loc); - loc.reset(the_front); - - const bool is_aots_key = ::toml::detail::lex_array_table::invoke(loc); - loc.reset(the_front); - - // If it is neither a table-key or a array-of-table-key, it may be a value. - if(!is_table_key && !is_aots_key) - { - if(auto data = ::toml::detail::parse_value<value_type>(loc)) - { - return data.unwrap(); - } - } - - // Note that still it can be a table, because the literal might be something - // like the following. - // ```cpp - // R"( // c++11 raw string literals - // key = "value" - // int = 42 - // )"_toml; - // ``` - // It is a valid toml file. - // It should be parsed as if we parse a file with this content. - - if(auto data = ::toml::detail::parse_toml_file<value_type>(loc)) - { - return data.unwrap(); - } - else // none of them. - { - throw ::toml::syntax_error(data.unwrap_err(), source_location(loc)); - } - -} - -inline ::toml::basic_value<::toml::discard_comments, std::unordered_map, std::vector> -operator"" _toml(const char* str, std::size_t len) -{ - ::toml::detail::location loc( - std::string("TOML literal encoded in a C++ code"), - std::vector<char>(str, str + len)); - return literal_internal_impl(std::move(loc)); -} - -// value of __cplusplus in C++2a/20 mode is not fixed yet along compilers. -// So here we use the feature test macro for `char8_t` itself. -#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L -// value of u8"" literal has been changed from char to char8_t and char8_t is -// NOT compatible to char -inline ::toml::basic_value<::toml::discard_comments, std::unordered_map, std::vector> -operator"" _toml(const char8_t* str, std::size_t len) -{ - ::toml::detail::location loc( - std::string("TOML literal encoded in a C++ code"), - std::vector<char>(reinterpret_cast<const char*>(str), - reinterpret_cast<const char*>(str) + len)); - return literal_internal_impl(std::move(loc)); -} -#endif - -} // toml_literals -} // literals -} // toml -#endif//TOML11_LITERAL_HPP |