1 #ifndef ROSE_DwarfLineMapper_H
2 #define ROSE_DwarfLineMapper_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
31 SrcInfo(
int file_id,
size_t line_num): file_id(file_id), line_num(line_num) {}
32 bool operator==(
const SrcInfo &other)
const {
return file_id==other.file_id && line_num==other.line_num; }
33 bool operator<(
const SrcInfo &other)
const {
34 return file_id<other.file_id || (file_id==other.file_id && line_num<other.line_num);
36 void print(std::ostream &o)
const { o <<Sg_File_Info::getFilenameFromID(file_id) <<
":" <<line_num; }
57 typedef std::map<SrcInfo, ExtentMap> SourceAddressMap;
62 : p_direction(d), up_to_date(true) { init(); }
71 void init(
SgNode *ast, Direction d=BIDIRECTIONAL) ROSE_DEPRECATED("use SourceLocations");
75 void insert(
SgNode *ast) ROSE_DEPRECATED("use SourceLocations");
78 void clear() ROSE_DEPRECATED("use SourceLocations");
85 void fix_holes(
size_t max_hole_size=64) ROSE_DEPRECATED("use SourceLocations");
89 SrcInfo addr2src(rose_addr_t) const ROSE_DEPRECATED("use SourceLocations");
92 ExtentMap src2addr(const SrcInfo&) const ROSE_DEPRECATED("use SourceLocations");
96 rose_addr_t src2first_addr(const SrcInfo&) const ROSE_DEPRECATED("use SourceLocations");
100 void print(
std::ostream&) const ROSE_DEPRECATED("use SourceLocations");
103 void print_addr2src(
std::ostream&) const ROSE_DEPRECATED("use SourceLocations");
106 void print_src2addr(
std::ostream&) const ROSE_DEPRECATED("use SourceLocations");
109 DwarfLineMapper& operator()(Direction d) ROSE_DEPRECATED("use SourceLocations") {
116 std::set<int> all_files() const ROSE_DEPRECATED("use SourceLocations");
120 SrcInfo next_src(const SrcInfo &srcinfo = SrcInfo()) const ROSE_DEPRECATED("use SourceLocations");
123 Direction p_direction;
124 AddressSourceMap p_addr2src;
125 mutable SourceAddressMap p_src2addr;
126 mutable
bool up_to_date;
132 std::ostream& operator<<(
std::ostream&, const DwarfLineMapper::SrcInfo&);
133 std::ostream& operator<<(
std::ostream&, const DwarfLineMapper&);
Class for traversing the AST.
Bidirectional mapping between addresses and source locations.
Scalar value type for a RangeMap.
A contiguous range of values.
Main namespace for the ROSE library.
This class represents the base class for all IR nodes within Sage III.
virtual void visit(SgNode *node) ROSE_OVERRIDE
this method is called at every traversed node.
bool contains(const Range &x, bool strict=false) const
Does this range contain the argument range?