| 12916 | } |
| 12917 | |
| 12918 | struct error_builder |
| 12919 | { |
| 12920 | static constexpr std::size_t buf_size = 512; |
| 12921 | char buf[buf_size]; |
| 12922 | char* write_pos = buf; |
| 12923 | char* const max_write_pos = buf + (buf_size - std::size_t{ 1 }); // allow for null terminator |
| 12924 | |
| 12925 | TOML_NODISCARD_CTOR |
| 12926 | error_builder(std::string_view scope) noexcept |
| 12927 | { |
| 12928 | concatenate(write_pos, max_write_pos, "Error while parsing "sv); |
| 12929 | concatenate(write_pos, max_write_pos, scope); |
| 12930 | concatenate(write_pos, max_write_pos, ": "sv); |
| 12931 | } |
| 12932 | |
| 12933 | template <typename T> |
| 12934 | void append(const T& arg) noexcept |
| 12935 | { |
| 12936 | concatenate(write_pos, max_write_pos, arg); |
| 12937 | } |
| 12938 | |
| 12939 | TOML_RETURNS_BY_THROWING |
| 12940 | auto finish(const source_position& pos, const source_path_ptr& source_path) const |
| 12941 | { |
| 12942 | *write_pos = '\0'; |
| 12943 | |
| 12944 | #if TOML_EXCEPTIONS |
| 12945 | throw parse_error{ buf, pos, source_path }; |
| 12946 | #else |
| 12947 | return parse_error{ std::string(buf, static_cast<size_t>(write_pos - buf)), pos, source_path }; |
| 12948 | #endif |
| 12949 | } |
| 12950 | |
| 12951 | TOML_DELETE_DEFAULTS(error_builder); |
| 12952 | }; |
| 12953 | |
| 12954 | struct parse_scope |
| 12955 | { |
nothing calls this directly
no outgoing calls
no test coverage detected