Skip to content

Commit dc94b85

Browse files
Use defines for string options and help text
1 parent d527b68 commit dc94b85

File tree

5 files changed

+30
-10
lines changed

5 files changed

+30
-10
lines changed

jbmc/src/jbmc/jbmc_parse_options.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,9 +1084,7 @@ void jbmc_parse_optionst::help()
10841084
" --yices use Yices\n"
10851085
" --z3 use Z3\n"
10861086
" --refine use refinement procedure (experimental)\n"
1087-
" --no-refine-strings turn off string refinement\n"
1088-
" --string-printable restrict to printable strings (experimental)\n" // NOLINT(*)
1089-
" --max-nondet-string-length n bound the length of nondet (e.g. input) strings\n" // NOLINT(*)
1087+
HELP_STRING_REFINEMENT
10901088
" --outfile filename output formula to given file\n"
10911089
" --arrays-uf-never never turn arrays into uninterpreted functions\n" // NOLINT(*)
10921090
" --arrays-uf-always always turn arrays into uninterpreted functions\n" // NOLINT(*)

jbmc/src/jbmc/jbmc_parse_options.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ Author: Daniel Kroening, [email protected]
2929

3030
#include <goto-symex/path_storage.h>
3131

32+
#include <solvers/refinement/string_refinement.h>
33+
3234
#include <java_bytecode/java_bytecode_language.h>
3335

3436
class bmct;
@@ -52,9 +54,7 @@ class optionst;
5254
"(no-sat-preprocessor)" \
5355
"(beautify)" \
5456
"(dimacs)(refine)(max-node-refinement):(refine-arrays)(refine-arithmetic)"\
55-
"(no-refine-strings)" \
56-
"(string-printable)" \
57-
"(max-nondet-string-length):" \
57+
OPT_STRING_REFINEMENT \
5858
"(16)(32)(64)(LP64)(ILP64)(LLP64)(ILP32)(LP32)" \
5959
OPT_SHOW_GOTO_FUNCTIONS \
6060
OPT_SHOW_CLASS_HIERARCHY \

src/cbmc/cbmc_parse_options.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -959,8 +959,7 @@ void cbmc_parse_optionst::help()
959959
" --yices use Yices\n"
960960
" --z3 use Z3\n"
961961
" --refine use refinement procedure (experimental)\n"
962-
" --refine-strings use string refinement (experimental)\n"
963-
" --string-printable add constraint that strings are printable (experimental)\n" // NOLINT(*)
962+
HELP_STRING_REFINEMENT_CBMC
964963
" --outfile filename output formula to given file\n"
965964
" --arrays-uf-never never turn arrays into uninterpreted functions\n" // NOLINT(*)
966965
" --arrays-uf-always always turn arrays into uninterpreted functions\n" // NOLINT(*)

src/cbmc/cbmc_parse_options.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ Author: Daniel Kroening, [email protected]
2222

2323
#include <goto-programs/goto_trace.h>
2424

25+
#include <solvers/refinement/string_refinement.h>
26+
2527
#include "bmc.h"
2628
#include "xml_interface.h"
2729
#include "cbmc_solvers.h"
@@ -48,8 +50,7 @@ class optionst;
4850
"(no-sat-preprocessor)" \
4951
"(beautify)" \
5052
"(dimacs)(refine)(max-node-refinement):(refine-arrays)(refine-arithmetic)"\
51-
"(refine-strings)" \
52-
"(string-printable)" \
53+
OPT_STRING_REFINEMENT_CBMC \
5354
"(16)(32)(64)(LP64)(ILP64)(LLP64)(ILP32)(LP32)" \
5455
"(little-endian)(big-endian)" \
5556
OPT_SHOW_GOTO_FUNCTIONS \

src/solvers/refinement/string_refinement.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,28 @@ Author: Alberto Griggio, [email protected]
2929
#include <solvers/refinement/string_refinement_invariant.h>
3030
#include <solvers/refinement/string_refinement_util.h>
3131

32+
// clang-format off
33+
#define OPT_STRING_REFINEMENT \
34+
"(no-refine-strings)" \
35+
"(string-printable)" \
36+
"(max-nondet-string-length):"
37+
38+
#define HELP_STRING_REFINEMENT \
39+
" --no-refine-strings turn off string refinement\n" \
40+
" --string-printable restrict to printable strings (experimental)\n" /* NOLINT(*) */ \
41+
" --max-nondet-string-length n bound the length of nondet (e.g. input) strings\n" /* NOLINT(*) */
42+
43+
// The integration of the string solver into CBMC is incomplete. Therefore,
44+
// it is not turned on by default and not all options are available.
45+
#define OPT_STRING_REFINEMENT_CBMC \
46+
"(refine-strings)" \
47+
"(string-printable)"
48+
49+
#define HELP_STRING_REFINEMENT_CBMC \
50+
" --refine-strings use string refinement (experimental)\n" \
51+
" --string-printable restrict to printable strings (experimental)\n" /* NOLINT(*) */
52+
// clang-format on
53+
3254
#define DEFAULT_MAX_NB_REFINEMENT std::numeric_limits<size_t>::max()
3355

3456
class string_refinementt final: public bv_refinementt

0 commit comments

Comments
 (0)