Go to file
2023-12-01 15:22:47 +01:00
flags.cpp macro and basic parsers 2023-12-01 03:32:03 +01:00
flags.h macro and basic parsers 2023-12-01 03:32:03 +01:00
Readme.md readme 2023-12-01 15:22:47 +01:00

Flags for C++

This project aims to recreate the functionality of the flag package from Golang.

Usage

Create a parser

#include "flags.h"

Parser parser;
or
// set the prefix and the help text
Parser parser("--", "Help:");

Declare a flag

// name, description, required, default value
std::string* x = parser.add<std::string>("myStr", "some description", true, "default value");

Parse arguments and show help text

if (!parser.parse(argc, argv))
  parser.help();

Declare a custom parser class

PARSER(MyTypeFlag, MyType, {
  // parser body
  // available variables:
  //   MyType value;      <- storage for your value
  //   std::string arg;   <- the next argument after the current flag
  set_found(true);
  try {
    value = my_parser_function(arg);
    set_found(true);
  } catch(std::exception&) {}
})

parser.set_parser<MyType>(flag_constructor_t(MyTypeFlag::make));

Built-in parsers

  • std::string
  • int (long, long long, unsigned long, unsigned long long)
  • float, double, long double
  • bool