xo-alloc2: working operator* for AAllocIterator
This commit is contained in:
parent
13edc3a973
commit
c6fbaf7b5e
5 changed files with 36 additions and 2 deletions
|
|
@ -27,6 +27,8 @@ namespace xo {
|
||||||
return O::iface()->compare(O::data(), other); }
|
return O::iface()->compare(O::data(), other); }
|
||||||
void next() noexcept { O::iface()->next(O::data()); }
|
void next() noexcept { O::iface()->next(O::data()); }
|
||||||
|
|
||||||
|
AllocInfo operator*() const noexcept { return deref(); }
|
||||||
|
|
||||||
/** triggers operator++ in obj<RAllocIterator<Object>> **/
|
/** triggers operator++ in obj<RAllocIterator<Object>> **/
|
||||||
void _preincrement() noexcept { this->next(); }
|
void _preincrement() noexcept { this->next(); }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace xo {
|
||||||
if (!other)
|
if (!other)
|
||||||
return cmpresult::incomparable();
|
return cmpresult::incomparable();
|
||||||
|
|
||||||
DArenaIterator & other_ix = *other;
|
DArenaIterator & other_ix = *other.data();
|
||||||
|
|
||||||
log && log(xtag("&other_ix", &other_ix),
|
log && log(xtag("&other_ix", &other_ix),
|
||||||
xtag("other_ix.arena", other_ix.arena_),
|
xtag("other_ix.arena", other_ix.arena_),
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ namespace xo {
|
||||||
if (!other)
|
if (!other)
|
||||||
return cmpresult::incomparable();
|
return cmpresult::incomparable();
|
||||||
|
|
||||||
DX1CollectorIterator & other_ix = *other;
|
DX1CollectorIterator & other_ix = *other.data();
|
||||||
|
|
||||||
return ix.compare(other_ix);
|
return ix.compare(other_ix);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -269,6 +269,22 @@ namespace xo {
|
||||||
REQUIRE(ix == end_ix);
|
REQUIRE(ix == end_ix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// repeat, this time using range iteration
|
||||||
|
{
|
||||||
|
DArena scratch_mm
|
||||||
|
= DArena::map(
|
||||||
|
ArenaConfig{
|
||||||
|
.size_ = 4*1024,
|
||||||
|
.hugepage_z_ = 4*1024});
|
||||||
|
|
||||||
|
for (const auto & info : a1o.alloc_range(scratch_mm)) {
|
||||||
|
REQUIRE(info.is_valid());
|
||||||
|
REQUIRE(info.size() == padding::with_padding(req_z));
|
||||||
|
REQUIRE(info.payload().first == mem);
|
||||||
|
REQUIRE(info.payload().second == mem + info.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} /*namespace ut*/
|
} /*namespace ut*/
|
||||||
|
|
|
||||||
|
|
@ -198,6 +198,22 @@ namespace xo {
|
||||||
REQUIRE(ix == end_ix);
|
REQUIRE(ix == end_ix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// repeat, this time using range iteration
|
||||||
|
{
|
||||||
|
DArena scratch_mm
|
||||||
|
= DArena::map(
|
||||||
|
ArenaConfig{
|
||||||
|
.size_ = 4*1024,
|
||||||
|
.hugepage_z_ = 4*1024});
|
||||||
|
|
||||||
|
for (const auto & info : a1o.alloc_range(scratch_mm)) {
|
||||||
|
REQUIRE(info.is_valid());
|
||||||
|
REQUIRE(info.size() == padding::with_padding(req_z));
|
||||||
|
REQUIRE(info.payload().first == mem);
|
||||||
|
REQUIRE(info.payload().second == mem + info.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} /*namespace ut*/
|
} /*namespace ut*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue