E3SM-Project / E3SM-Project/EKAT
Allow user to extend set of supported types for YAML parsing/writing.
- Dominant language
- C++
- Stars
- 22
- Forks
- 12
- PR merge metrics
- No merged PRs in 30d
Description
It would be nice to allow users to provide YAML files that can directly be parsed into some structs. E.g., it would be nice to parse
```
My Complex: 1.0 + 3i
My Int Pairs: [ P(1,2), P(0,1)]
```
directly into a `std::complex` and a `std::vector>` respectively. Even more interesting/useful would be to parse straight into enums, so that one can do
```
auto plist = parse_yaml_file("blah.yaml");
MyEnum value = plist.get("The Enum");
...
```
without having to tediously do string->enum conversion every time.
To do this, we should put the `is_type` and `str2type` functions into a separate file. Then, somehow, allow the user to provide its own specializations (along with `operator<<` for writing, if writing/print is needed). One way could be to have a "database" of these functions, and let the user register its own functions at any point before calling the YAML parse/write routines.
Contributor guide
Assessment
This issue has not been assessed yet.