Skip to content

Commit 487c28c

Browse files
author
Remi Delmas
committed
Add emplace method to forward_list_as_mapt and simplify where possible
1 parent 7523caf commit 487c28c

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/util/forward_list_as_map.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,23 @@ class forward_list_as_mapt : public std::forward_list<std::pair<keyt, mappedt>>
9494
return it->second;
9595
}
9696

97+
mappedt &emplace(const keyt &name, const mappedt &irep)
98+
{
99+
iterator it = mutable_lower_bound(name);
100+
101+
if(it == this->end() || it->first != name)
102+
{
103+
iterator before = this->before_begin();
104+
while(std::next(before) != it)
105+
++before;
106+
it = this->emplace_after(before, name, irep);
107+
}
108+
else
109+
it->second = irep;
110+
111+
return it->second;
112+
}
113+
97114
std::size_t size() const
98115
{
99116
return narrow<std::size_t>(std::distance(this->begin(), this->end()));

src/util/irep_serialization.cpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,31 +75,18 @@ irept irep_serializationt::read_irep(std::istream &in)
7575
sub.push_back(reference_convert(in));
7676
}
7777

78-
#if NAMED_SUB_IS_FORWARD_LIST
79-
irept::named_subt::iterator before = named_sub.before_begin();
80-
#endif
8178
while(in.peek()=='N')
8279
{
8380
in.get();
8481
irep_idt id = read_string_ref(in);
85-
#if NAMED_SUB_IS_FORWARD_LIST
86-
named_sub.emplace_after(before, id, reference_convert(in));
87-
++before;
88-
#else
8982
named_sub.emplace(id, reference_convert(in));
90-
#endif
9183
}
9284

9385
while(in.peek()=='C')
9486
{
9587
in.get();
9688
irep_idt id = read_string_ref(in);
97-
#if NAMED_SUB_IS_FORWARD_LIST
98-
named_sub.emplace_after(before, id, reference_convert(in));
99-
++before;
100-
#else
10189
named_sub.emplace(id, reference_convert(in));
102-
#endif
10390
}
10491

10592
if(in.get()!=0)

0 commit comments

Comments
 (0)