EKAT icon indicating copy to clipboard operation
EKAT copied to clipboard

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

Open bartgol opened this issue 3 years ago • 0 comments

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<std::pair<int,int>> 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<MyEnum>("The Enum");
...

without having to tediously do string->enum conversion every time.

To do this, we should put the is_type<T> and str2type<T> 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.

bartgol avatar Feb 22 '22 20:02 bartgol