Skip to content

Commit 5344863

Browse files
committed
Archive conversion for tables
1 parent 71b1b60 commit 5344863

File tree

4 files changed

+993
-146
lines changed

4 files changed

+993
-146
lines changed

immer/extra/archive/champ/archive.hpp

+19
Original file line numberDiff line numberDiff line change
@@ -249,5 +249,24 @@ auto transform_archive(const container_archive_load<
249249
};
250250
}
251251

252+
template <typename T,
253+
typename KeyFn,
254+
typename Hash,
255+
typename Equal,
256+
typename MemoryPolicy,
257+
immer::detail::hamts::bits_t B,
258+
class F>
259+
auto transform_archive(
260+
const container_archive_load<
261+
immer::table<T, KeyFn, Hash, Equal, MemoryPolicy, B>>& ar,
262+
F&& func)
263+
{
264+
using U = std::decay_t<decltype(func(std::declval<T>()))>;
265+
using new_table_t = immer::table<U, KeyFn, Hash, Equal, MemoryPolicy, B>;
266+
return container_archive_load<new_table_t>{
267+
.nodes = transform(ar.nodes, func),
268+
};
269+
}
270+
252271
} // namespace champ
253272
} // namespace immer::archive

0 commit comments

Comments
 (0)