CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
response_or_error.h
Go to the documentation of this file.
1// Author: Diffblue Ltd.
2
3#ifndef CPROVER_SOLVERS_SMT2_INCREMENTAL_RESPONSE_OR_ERROR_H
4#define CPROVER_SOLVERS_SMT2_INCREMENTAL_RESPONSE_OR_ERROR_H
5
6#include <util/invariant.h>
7
8#include <string>
9#include <variant>
10#include <vector>
11
15template <class smtt>
17{
18public:
20 {
21 }
22
23 explicit response_or_errort(std::vector<std::string> messages)
24 : smt_or_messages{std::move(messages)}
25 {
26 }
27
30 const smtt *get_if_valid() const
31 {
32 return std::get_if<smtt>(&smt_or_messages);
33 }
34
37 const std::vector<std::string> *get_if_error() const
38 {
39 return std::get_if<std::vector<std::string>>(&smt_or_messages);
40 }
41
42private:
43 std::variant<smtt, std::vector<std::string>> smt_or_messages;
44};
45
46#endif // CPROVER_SOLVERS_SMT2_INCREMENTAL_RESPONSE_OR_ERROR_H
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
Holds either a valid parsed response or response sub-tree of type.
const std::vector< std::string > * get_if_error() const
Gets the error messages if the response is invalid, or returns nullptr otherwise.
const smtt * get_if_valid() const
Gets the smt response if the response is valid, or returns nullptr otherwise.
response_or_errort(std::vector< std::string > messages)
std::variant< smtt, std::vector< std::string > > smt_or_messages
STL namespace.