Skip to content
This repository was archived by the owner on Mar 22, 2023. It is now read-only.
This repository was archived by the owner on Mar 22, 2023. It is now read-only.

radix_tree improvements #828

@igchor

Description

@igchor

radix_tree improvements

  • heterogeneous methods (opt-in, like for std::map)

  • optimized lower/upper_bound

  • reverse_iterator has problems with current operator->() implementation in radix_tree::iterator

  • It would be nice to have some test for insert_or_assign / try_emplace where we use something like MoveableWrapper (something which is constructed from Moveable rvalue reference) as key and pass std::move(Moveable) to those methods. The we could check if the Moveable was actually moved from

  • Libcxx tests for erase(iterator)

  • Enable tests for radix (At least the code under ifdefs 'xxx' in tests/map/map_ctor_and_assignment.cpp and tests/map/map_txabort.cpp can be enabled)

  • change value_type from std::pair to detail::pair

  • optimize insert (implementation can take advantage of knowing the key)

  • allow inline_string modifications (range/at methods in inline string)

  • rollback iterator in case of transaction abort (in case of inline_string).

    After some thought, this improvement could be quite hard to implement. One solution would be to rollback the iterator's internal state through on_abort callback. However, when on_abort callback is called the iterator might not exists anymore and we have no way (?) of checking if it's still alive.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: FeatureNew feature or requestradix_treeNeeds to be resolved to productize radix_tree

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions