doc: add document about basic_value and toml::into

related to #146.
This commit is contained in:
ToruNiina
2020-12-29 18:52:07 +09:00
parent be0d4bd0a9
commit 2fb8793f1a

View File

@@ -1303,9 +1303,9 @@ struct foo
double b; double b;
std::string c; std::string c;
toml::table into_toml() const // you need to mark it const. toml::value into_toml() const // you need to mark it const.
{ {
return toml::table{{"a", this->a}, {"b", this->b}, {"c", this->c}}; return toml::value{{"a", this->a}, {"b", this->b}, {"c", this->c}};
} }
}; };
} // ext } // ext
@@ -1332,9 +1332,9 @@ namespace toml
template<> template<>
struct into<ext::foo> struct into<ext::foo>
{ {
static toml::table into_toml(const ext::foo& f) static toml::value into_toml(const ext::foo& f)
{ {
return toml::table{{"a", f.a}, {"b", f.b}, {"c", f.c}}; return toml::value{{"a", f.a}, {"b", f.b}, {"c", f.c}};
} }
}; };
} // toml } // toml
@@ -1346,6 +1346,27 @@ toml::value v(f);
Any type that can be converted to `toml::value`, e.g. `int`, `toml::table` and Any type that can be converted to `toml::value`, e.g. `int`, `toml::table` and
`toml::array` are okay to return from `into_toml`. `toml::array` are okay to return from `into_toml`.
You can also return a custom `toml::basic_value` from `toml::into`.
```cpp
namespace toml
{
template<>
struct into<ext::foo>
{
static toml::basic_value<toml::preserve_comments> into_toml(const ext::foo& f)
{
toml::basic_value<toml::preserve_comments> v{{"a", f.a}, {"b", f.b}, {"c", f.c}};
v.comments().push_back(" comment");
return v;
}
};
} // toml
```
But note that, if this `basic_value` would be assigned into other `toml::value`
that discards `comments`, the comments would be dropped.
## Formatting user-defined error messages ## Formatting user-defined error messages
When you encounter an error after you read the toml value, you may want to When you encounter an error after you read the toml value, you may want to