Skip to content

acd1034/cpp-namedargs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cpp-namedargs: Parse strings and convert to classes

Linux build status macOS build status Github issues Github forks Github stars Github top language Github license

cpp-namedargs は C++で名前付き引数を実現するためのライブラリです。文字列リテラルとして渡した名前付き引数をパースし、key-value リストを構築します。リストからクラスへの変換関数をカスタマイズすることで、任意のユーザー定義型に変換できます。

Quick example

#include <iostream>
#include <namedargs/parser.hpp>

namespace na = namedargs;

struct params {
  int num;
  std::string_view str;
};

template <>
struct na::ArgParserTraits<params> {
  static constexpr params convert(const na::ArgParser& p) {
    params result{};
    p.assign_or(result.num, "num", 0);
    p.assign_or(result.str, "str", "");
    return result;
  }
};

int main() {
  constexpr params p =
    na::parse_args<params>("num = 42, str = 'Hello, world!'");

  std::cout << "num: " << p.num << std::endl; // → num: 42
  std::cout << "str: " << p.str << std::endl; // → str: Hello, world!
}

実装: parser.hpp

Library Dependencies

This library depends on no external libraries.

About

Parse strings and convert to classes

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors