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

No packages published