1#ifndef ROSE_BinaryAnalysis_Variables_BaseVariable_H
2#define ROSE_BinaryAnalysis_Variables_BaseVariable_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
6#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
7#include <Rose/BinaryAnalysis/Variables/InstructionAccess.h>
9#ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
10#include <boost/serialization/access.hpp>
14namespace BinaryAnalysis {
20 rose_addr_t maxSizeBytes_ = 0;
21 std::vector<InstructionAccess> insns_;
24#ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
26 friend class boost::serialization::access;
29 void serialize(S &s,
const unsigned ) {
30 s & BOOST_SERIALIZATION_NVP(maxSizeBytes_);
31 s & BOOST_SERIALIZATION_NVP(insns_);
32 s & BOOST_SERIALIZATION_NVP(name_);
86 const std::string&
name()
const;
87 void name(
const std::string &s);
Base class describing a source-level variable.
BaseVariable()
Default constructor.
void maxSizeBytes(rose_addr_t size)
Property: Maximum variable size in bytes.
InstructionSemantics::BaseSemantics::InputOutputPropertySet ioProperties() const
Property: I/O properties.
BaseVariable(size_t maxSizeBytes, const std::vector< InstructionAccess > &definingInstructions, const std::string &name)
Construct a variable with a given maximum size.
void name(const std::string &s)
Property: Optional variable name.
rose_addr_t maxSizeBytes() const
Property: Maximum variable size in bytes.
const std::vector< InstructionAccess > & instructionsAccessing() const
Property: Defining instructions.
AccessFlags accessFlags() const
Read/write status.
void instructionsAccessing(const std::vector< InstructionAccess > &)
Property: Defining instructions.
const std::string & name() const
Property: Optional variable name.
void insertAccess(Address insnAddr, AccessFlags)
Insert information about how an instruction accesses this variable.
std::uint64_t Address
Address.