Skip to content

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

@bartgol

Description

@bartgol

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions