Skip to content

Commit ebf5ce8

Browse files
author
Daniel Kroening
authored
Merge pull request #3083 from smowton/smowton/feature/cmdline-has-option
Add cmdlinet::has_option
2 parents 2c47e04 + 1225b77 commit ebf5ce8

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/util/cmdline.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ class cmdlinet
3535
virtual void set(const std::string &option, const std::string &value);
3636
virtual void clear();
3737

38+
bool has_option(const std::string &option) const
39+
{
40+
return getoptnr(option).has_value();
41+
}
42+
3843
typedef std::vector<std::string> argst;
3944
argst args;
4045
std::string unknown_arg;

unit/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ SRC += analyses/ai/ai.cpp \
2929
solvers/refinement/string_refinement/sparse_array.cpp \
3030
solvers/refinement/string_refinement/substitute_array_list.cpp \
3131
solvers/refinement/string_refinement/union_find_replace.cpp \
32+
util/cmdline.cpp \
3233
util/expr_cast/expr_cast.cpp \
3334
util/expr.cpp \
3435
util/file_util.cpp \

unit/util/cmdline.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*******************************************************************\
2+
3+
Module: cmdlinet unit tests
4+
5+
Author: Diffblue Ltd.
6+
7+
\*******************************************************************/
8+
9+
#include <testing-utils/catch.hpp>
10+
#include <util/cmdline.h>
11+
12+
TEST_CASE("cmdlinet::has_option", "[core][util][cmdline]")
13+
{
14+
cmdlinet cmdline;
15+
REQUIRE(!cmdline.parse(0, nullptr, "(a)(b):"));
16+
REQUIRE(cmdline.has_option("a"));
17+
REQUIRE(cmdline.has_option("b"));
18+
REQUIRE(!cmdline.has_option("c"));
19+
}

0 commit comments

Comments
 (0)