12#ifndef MCRL2_PBES_PBES_INPUT_TOOL_H
13#define MCRL2_PBES_PBES_INPUT_TOOL_H
15#include "mcrl2/utilities/command_line_interface.h"
16#include "mcrl2/pbes/io.h"
17#include "mcrl2/pbes/io.h"
28template <
typename Tool>
41 std::set<utilities::file_format> result;
42 result.insert(pbes_system::pbes_format_internal());
43 result.insert(pbes_system::pbes_format_text());
44 result.insert(pbes_system::pbes_format_pgsolver());
54 utilities::file_format result = pbes_system::guess_format(Tool::input_filename());
57 result = pbes_system::guess_format(Tool::input_filename());
71 Tool::add_options(desc);
72 std::set<utilities::file_format> types = available_input_formats();
73 auto option_argument = utilities::make_enum_argument<std::string>(
"FORMAT");
74 for (
const utilities::file_format& type: types)
76 option_argument.add_value_desc(type.shortname(), type.description(), type == default_input_format());
78 desc.add_option(
"in", option_argument,
"use input format FORMAT:",
'i');
85 Tool::parse_options(parser);
86 m_pbes_input_format = utilities::file_format();
87 if(parser.options.count(
"in"))
89 std::set<utilities::file_format> types = available_input_formats();
90 std::string arg = parser.option_argument_as<std::string>(
"in");
91 for (
const utilities::file_format& type: types)
93 if (type.shortname() == arg)
95 m_pbes_input_format = type;
98 if (m_pbes_input_format == utilities::file_format())
100 mCRL2log(log::warning) <<
"Invalid input format given (" << arg <<
").\n";
103 if (m_pbes_input_format == utilities::file_format())
105 m_pbes_input_format = default_input_format();
106 mCRL2log(log::verbose) <<
"Guessing input format: " << m_pbes_input_format.description()
120 const std::string& author,
121 const std::string& what_is,
122 const std::string& tool_description,
123 std::string known_issues =
""
135 return m_pbes_input_format;
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
const utilities::file_format & pbes_format_internal()