1#ifndef ROSE_BinaryAnalysis_Concolic_InputVariables_H
2#define ROSE_BinaryAnalysis_Concolic_InputVariables_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_CONCOLIC_TESTING
5#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
7#include <Rose/BinaryAnalysis/SymbolicExpression.h>
8#include <Rose/Constants.h>
11namespace BinaryAnalysis {
28 using Ptr = InputVariablesPtr;
33 SymbolicExpression::ExprExprHashMap bindings_;
43 static Ptr instance();
56 const SymbolicExpression::ExprExprHashMap& bindings()
const;
64 ExecutionEventPtr event(
const std::string &variableName)
const;
65 ExecutionEventPtr event(
const SymbolicExpressionPtr &
variable)
const;
84 void activate(
const ExecutionEventPtr&, InputType,
size_t idx1 = INVALID_INDEX,
size_t idx2 = INVALID_INDEX);
95 void deactivate(
const ExecutionEventPtr&);
102 void playback(
const ExecutionEventPtr&);
108 void unplayback(
const ExecutionEventPtr&);
111 void addBindingsToSolver(
const SmtSolverPtr&)
const;
114 void print(std::ostream&,
const std::string &prefix =
"")
const;
129 void define(
const ExecutionEventPtr&, InputType,
size_t idx1 = INVALID_INDEX,
size_t idx2 = INVALID_INDEX);
141 void undefine(
const ExecutionEventPtr&);
149 void bind(
const ExecutionEventPtr&);
160 void unbind(
const ExecutionEventPtr&);
170 void bindVariableValue(
const SymbolicExpressionPtr &
variable,
const SymbolicExpressionPtr &value);
176 void unbindVariableValue(
const SymbolicExpressionPtr &
variable);
Container associating values with keys.
Base class for reference counted objects.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
void print(const GlobalVariables &, const Partitioner2::PartitionerConstPtr &, std::ostream &out, const std::string &prefix="")
Print info about multiple global variables.