cprover
parse_options.cpp
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 #include "parse_options.h"
10 
11 #include <iostream>
12 
13 #if defined (_WIN32)
14 #define EX_OK 0
15 #define EX_USAGE 1
16 #else
17 #include <sysexits.h>
18 #endif
19 
20 #include "cmdline.h"
21 #include "signal_catcher.h"
22 
24  const std::string &_optstring, int argc, const char **argv)
25 {
26  std::string optstring=std::string("?h(help)")+_optstring;
27  parse_result=cmdline.parse(argc, argv, optstring.c_str());
28 }
29 
31 {
32 }
33 
35 {
36  std::cerr << "Usage error!\n\n";
37  help();
38 }
39 
43 {
44  if(!cmdline.unknown_arg.empty())
45  std::cerr << "Unknown option: " << cmdline.unknown_arg << "\n";
46 }
47 
49 {
50  if(parse_result)
51  {
52  usage_error();
54  return EX_USAGE;
55  }
56 
57  if(cmdline.isset('?') || cmdline.isset('h') || cmdline.isset("help"))
58  {
59  help();
60  return EX_OK;
61  }
62 
63  // install signal catcher
65 
66  return doit();
67 }
68 
69 std::string
70 banner_string(const std::string &front_end, const std::string &version)
71 {
72  const std::string version_str = front_end + " " + version + " " +
73  std::to_string(sizeof(void *) * 8) + "-bit";
74 
75  std::string::size_type left_padding = 0, right_padding = 0;
76  if(version_str.size() < 57)
77  {
78  left_padding = (57 - version_str.size() + 1) / 2;
79  right_padding = (57 - version_str.size()) / 2;
80  }
81 
82  return "* *" + std::string(left_padding, ' ') + version_str +
83  std::string(right_padding, ' ') + "* *";
84 }
virtual int doit()=0
virtual void help()
virtual int main()
unsignedbv_typet size_type()
Definition: c_types.cpp:58
virtual bool parse(int argc, const char **argv, const char *optstring)
Definition: cmdline.cpp:139
void unknown_option_msg()
Print an error message mentioning the option that was not recognized when parsing the command line...
virtual bool isset(char option) const
Definition: cmdline.cpp:27
void install_signal_catcher()
std::string banner_string(const std::string &front_end, const std::string &version)
std::string to_string(const string_constraintt &expr)
Used for debug printing.
virtual void usage_error()
std::string unknown_arg
Definition: cmdline.h:38
parse_options_baset(const std::string &optstring, int argc, const char **argv)