serializer.hpp

# serializer.hpp #

## `format` #

Serializes the data.

    namespace toml
    {
    template<typename TC>
    std::string format(const basic_value<TC>& v,
                       const spec s = spec::default_version());
    template<typename TC>
    std::string format(const typename basic_value<TC>::key_type& k,
                       const basic_value<TC>& v,
                       const spec s = spec::default_version());
    template<typename TC>
    std::string format(const std::vector<typename basic_value<TC>::key_type>& ks,
                       const basic_value<TC>& v,
                       const spec s = spec::default_version());
    }

If there’s a conflict between the format information and the `spec`, for example, when using `v1.0.0` with `table_format::multiline_oneline`, the `spec` takes precedence.

### `format(v, spec)` #

Formats a `toml::value` according to its format information and the provided `spec`.

If it’s a `table_type`, it’s formatted as if it were the root table. Otherwise, only the value is formatted.

### `format(k, v, spec)` #

Formats a `toml::value` along with the given key.

`v` is interpreted as being defined under that key.

### `format([k,...], v, spec)` #

`v` is interpreted as being defined under those keys. If multiple keys are provided, it’s interpreted as a recursively defined table.

## `serialization_error` #

Reports errors that occurred during serialization.

    namespace toml
    {
    struct serialization_error final : public ::toml::exception
    {
      public:
        explicit serialization_error(std::string what_arg, source_location loc);
        ~serialization_error() noexcept override = default;

        const char* what() const noexcept override;
        source_location const& location() const noexcept;
    };
    }