Skip to content

Commit 3b5263f

Browse files
committed
Remove inheritance from map in value_set.h
1 parent e5baaa8 commit 3b5263f

File tree

2 files changed

+50
-18
lines changed

2 files changed

+50
-18
lines changed

src/pointer-analysis/value_set.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Author: Daniel Kroening, [email protected]
3333

3434
#include "add_failed_symbols.h"
3535

36-
const value_sett::object_map_dt value_sett::object_map_dt::blank;
36+
const value_sett::object_map_dt value_sett::object_map_dt::blank{};
3737
object_numberingt value_sett::object_numbering;
3838

3939
bool value_sett::field_sensitive(
@@ -74,7 +74,7 @@ bool value_sett::insert(
7474
unsigned n,
7575
const objectt &object) const
7676
{
77-
object_map_dt::const_iterator entry=dest.read().find(n);
77+
auto entry=dest.read().find(n);
7878

7979
if(entry==dest.read().end())
8080
{
@@ -184,9 +184,9 @@ void value_sett::output(
184184
}
185185
}
186186

187-
exprt value_sett::to_expr(object_map_dt::const_iterator it) const
187+
exprt value_sett::to_expr(const object_map_dt::value_type &it) const
188188
{
189-
const exprt &object=object_numbering[it->first];
189+
const exprt &object=object_numbering[it.first];
190190

191191
if(object.id()==ID_invalid ||
192192
object.id()==ID_unknown)
@@ -196,8 +196,8 @@ exprt value_sett::to_expr(object_map_dt::const_iterator it) const
196196

197197
od.object()=object;
198198

199-
if(it->second.offset_is_set)
200-
od.offset()=from_integer(it->second.offset, index_type());
199+
if(it.second.offset_is_set)
200+
od.offset()=from_integer(it.second.offset, index_type());
201201

202202
od.type()=od.object().type();
203203

@@ -251,7 +251,7 @@ bool value_sett::make_union(object_mapt &dest, const object_mapt &src) const
251251
it!=src.read().end();
252252
it++)
253253
{
254-
if(insert(dest, it))
254+
if(insert(dest, *it))
255255
result=true;
256256
}
257257

@@ -323,7 +323,7 @@ void value_sett::get_value_set(
323323
it=object_map.read().begin();
324324
it!=object_map.read().end();
325325
it++)
326-
dest.push_back(to_expr(it));
326+
dest.push_back(to_expr(*it));
327327

328328
#if 0
329329
for(value_setst::valuest::const_iterator it=dest.begin();
@@ -918,7 +918,7 @@ void value_sett::get_reference_set(
918918
it=object_map.read().begin();
919919
it!=object_map.read().end();
920920
it++)
921-
dest.push_back(to_expr(it));
921+
dest.push_back(to_expr(*it));
922922
}
923923

924924
void value_sett::get_reference_set_rec(
@@ -1267,7 +1267,7 @@ void value_sett::do_free(
12671267
to_dynamic_object_expr(object);
12681268

12691269
if(to_mark.count(dynamic_object.get_instance())==0)
1270-
set(new_object_map, o_it);
1270+
set(new_object_map, *o_it);
12711271
else
12721272
{
12731273
// adjust
@@ -1279,7 +1279,7 @@ void value_sett::do_free(
12791279
}
12801280
}
12811281
else
1282-
set(new_object_map, o_it);
1282+
set(new_object_map, *o_it);
12831283
}
12841284

12851285
if(changed)

src/pointer-analysis/value_set.h

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,57 @@ class value_sett
5858
{ return offset_is_set && offset.is_zero(); }
5959
};
6060

61-
class object_map_dt:public std::map<unsigned, objectt>
61+
class object_map_dt
6262
{
63+
typedef std::map<unsigned, objectt> data_typet;
64+
data_typet data;
65+
6366
public:
64-
object_map_dt() {}
67+
// NOLINTNEXTLINE(readability/identifiers)
68+
typedef data_typet::iterator iterator;
69+
// NOLINTNEXTLINE(readability/identifiers)
70+
typedef data_typet::const_iterator const_iterator;
71+
// NOLINTNEXTLINE(readability/identifiers)
72+
typedef data_typet::value_type value_type;
73+
74+
iterator begin() { return data.begin(); }
75+
const_iterator begin() const { return data.begin(); }
76+
const_iterator cbegin() const { return data.cbegin(); }
77+
78+
iterator end() { return data.end(); }
79+
const_iterator end() const { return data.end(); }
80+
const_iterator cend() const { return data.cend(); }
81+
82+
size_t size() const { return data.size(); }
83+
84+
objectt &operator[](unsigned i) { return data[i]; }
85+
86+
template <typename It>
87+
void insert(It b, It e) { data.insert(b, e); }
88+
89+
template <typename T>
90+
const_iterator find(T &&t) const { return data.find(std::forward<T>(t)); }
91+
6592
static const object_map_dt blank;
93+
94+
object_map_dt()=default;
95+
96+
protected:
97+
~object_map_dt()=default;
6698
};
6799

68-
exprt to_expr(object_map_dt::const_iterator it) const;
100+
exprt to_expr(const object_map_dt::value_type &it) const;
69101

70102
typedef reference_counting<object_map_dt> object_mapt;
71103

72-
void set(object_mapt &dest, object_map_dt::const_iterator it) const
104+
void set(object_mapt &dest, const object_map_dt::value_type &it) const
73105
{
74-
dest.write()[it->first]=it->second;
106+
dest.write()[it.first]=it.second;
75107
}
76108

77-
bool insert(object_mapt &dest, object_map_dt::const_iterator it) const
109+
bool insert(object_mapt &dest, const object_map_dt::value_type &it) const
78110
{
79-
return insert(dest, it->first, it->second);
111+
return insert(dest, it.first, it.second);
80112
}
81113

82114
bool insert(object_mapt &dest, const exprt &src) const

0 commit comments

Comments
 (0)