cmdopt2/parser: remove ostream usage in favour of FILE*
This commit is contained in:
parent
9caba84fc6
commit
787b91c6ef
@ -217,60 +217,37 @@ parser::parse (int const argc, const char *const *argv)
|
|||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
template <typename OutputT>
|
void
|
||||||
static void
|
parser::usage (int argc, char const * const* argv, FILE *fp) const
|
||||||
usage (
|
{
|
||||||
int argc,
|
|
||||||
char const * const* argv,
|
|
||||||
std::vector<cruft::cmdopt2::positional_t> const &positional,
|
|
||||||
std::vector<cruft::cmdopt2::keyword_t> const &keyword,
|
|
||||||
OutputT &output
|
|
||||||
) {
|
|
||||||
fmt::print (output, "Usage:");
|
|
||||||
if (argc > 0)
|
if (argc > 0)
|
||||||
fmt::print (output, " {}", argv[0]);
|
fmt::print (fp, " {}", argv[0]);
|
||||||
|
|
||||||
static char constexpr OPTIONAL[2] { '[', ']' };
|
static char constexpr OPTIONAL[2] { '[', ']' };
|
||||||
static char constexpr REQUIRED[2] { '<', '>' };
|
static char constexpr REQUIRED[2] { '<', '>' };
|
||||||
|
|
||||||
for (auto const &arg: keyword) {
|
for (auto const &arg: m_keyword) {
|
||||||
auto const &delimiters = arg.required () ? REQUIRED : OPTIONAL;
|
auto const &delimiters = arg.required () ? REQUIRED : OPTIONAL;
|
||||||
|
|
||||||
if (arg.short_) {
|
if (arg.short_) {
|
||||||
fmt::print (output, FMT_STRING (" {}-{}"), delimiters[0], *arg.short_);
|
fmt::print (fp, FMT_STRING (" {}-{}"), delimiters[0], *arg.short_);
|
||||||
if (arg.acceptor1)
|
if (arg.acceptor1)
|
||||||
fmt::print (output, FMT_STRING (" <{}>"), arg.name);
|
fmt::print (fp, FMT_STRING (" <{}>"), arg.name);
|
||||||
fmt::print (output, FMT_STRING ("{}"), delimiters[1]);
|
fmt::print (fp, FMT_STRING ("{}"), delimiters[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg.long_) {
|
if (arg.long_) {
|
||||||
fmt::print (output, FMT_STRING (" {}--{}"), delimiters[0], *arg.long_);
|
fmt::print (fp, FMT_STRING (" {}--{}"), delimiters[0], *arg.long_);
|
||||||
if (arg.acceptor1)
|
if (arg.acceptor1)
|
||||||
fmt::print (output, FMT_STRING (" <{}>"), arg.name);
|
fmt::print (fp, FMT_STRING (" <{}>"), arg.name);
|
||||||
fmt::print (output, FMT_STRING ("{}"), delimiters[1]);
|
fmt::print (fp, FMT_STRING ("{}"), delimiters[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto const &arg: positional) {
|
for (auto const &arg: m_positional) {
|
||||||
auto const &delimiters = arg.required () ? REQUIRED : OPTIONAL;
|
auto const &delimiters = arg.required () ? REQUIRED : OPTIONAL;
|
||||||
fmt::print (output, FMT_STRING (" {}{}{}"), delimiters[0], arg.name, delimiters[1]);
|
fmt::print (fp, FMT_STRING (" {}{}{}"), delimiters[0], arg.name, delimiters[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt::print (output, "\n");
|
fmt::print (fp, "\n");
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
void
|
|
||||||
parser::usage (int argc, char const * const* argv, std::ostream &os) const
|
|
||||||
{
|
|
||||||
::usage (argc, argv, m_positional, m_keyword, os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
void
|
|
||||||
parser::usage (int argc, char const * const* argv, FILE *fp) const
|
|
||||||
{
|
|
||||||
::usage (argc, argv, m_positional, m_keyword, fp);
|
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@ namespace cruft::cmdopt2 {
|
|||||||
keyword_t& add (keyword_t const&) &;
|
keyword_t& add (keyword_t const&) &;
|
||||||
|
|
||||||
void usage (int argc, char const * const* argv, FILE*) const;
|
void usage (int argc, char const * const* argv, FILE*) const;
|
||||||
void usage (int argc, char const * const* argv, std::ostream&) const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int parse_named (int argc, char const* const* argv, int*) const;
|
int parse_named (int argc, char const* const* argv, int*) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user