serializer.hpp

# serializer.hpp #

# `format` #

シリアライズを行います。

    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());
    }

フォーマット情報と`spec`が矛盾する場合、例えば`v1.0.0`で`table_format::multiline_oneline`が指定されているときなどは、`spec`が優先されます。

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

`toml::value`を、それが持つフォーマット情報と`spec`に従ってフォーマットします。

`table_type`だった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。

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

`toml::value`を、与えられたキーと同時にフォーマットします。

`v`はそのキー以下に定義されていると解釈されます。

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

`v`はそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。

# `serialization_error` #

シリアライズ中に発生したエラーを報告します。

    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;
    };
    }