E3SM-Project / E3SM-Project/EKAT

Allow user to extend set of supported types for YAML parsing/writing.

Open
#191 0 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.