12#ifndef MCRL2_PBES_PBES_OUTPUT_TOOL_H
13#define MCRL2_PBES_PBES_OUTPUT_TOOL_H
15#include "mcrl2/utilities/command_line_interface.h"
16#include "mcrl2/pbes/io.h"
27template <
typename Tool>
40 std::set<utilities::file_format> result;
41 result.insert(pbes_system::pbes_format_internal());
42 result.insert(pbes_system::pbes_format_text());
43 result.insert(pbes_system::pbes_format_internal_bes());
44 result.insert(pbes_system::pbes_format_pgsolver());
54 utilities::file_format result= pbes_system::guess_format(Tool::output_filename());
67 Tool::add_options(desc);
68 std::set<utilities::file_format> types = available_output_formats();
69 auto option_argument = utilities::make_enum_argument<std::string>(
"FORMAT");
70 for (
const utilities::file_format& type: types)
72 option_argument.add_value_desc(type.shortname(), type.description(), type == default_output_format());
74 desc.add_option(
"out", option_argument,
"use output format FORMAT:",
'o');
81 Tool::parse_options(parser);
82 m_pbes_output_format = utilities::file_format();
83 if(parser.options.count(
"out"))
85 std::set<utilities::file_format> types = available_output_formats();
86 std::string arg = parser.option_argument_as<std::string>(
"out");
87 for (
const utilities::file_format& type: types)
89 if (type.shortname() == arg)
91 m_pbes_output_format = type;
94 if (m_pbes_output_format == utilities::file_format())
96 mCRL2log(log::warning) <<
"Invalid input format given (" << arg <<
").\n";
99 if (m_pbes_output_format == utilities::file_format())
101 m_pbes_output_format = default_output_format();
102 mCRL2log(log::verbose) <<
"Guessing output format: " << m_pbes_output_format.description()
116 const std::string& author,
117 const std::string& what_is,
118 const std::string& tool_description,
119 std::string known_issues =
"")
130 return m_pbes_output_format;
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
const utilities::file_format & pbes_format_internal()