![]() |
OpenMS
|
A collection of identification records, unique and ordered by the key formed from the members KeyMembers.
More...
#include <OpenMS/METADATA/ID/IDDataContainer.h>
Classes | |
| struct | Compare |
Public Types | |
| using | value_type = Value |
| using | key_type = Key |
| using | size_type = std::size_t |
| using | iterator = typename Set::const_iterator |
| using | const_iterator = iterator |
| using | reverse_iterator = std::reverse_iterator< iterator > |
| using | const_reverse_iterator = reverse_iterator |
Public Member Functions | |
| IDDataContainer ()=default | |
| IDDataContainer (std::initializer_list< Value > values) | |
| iterator | begin () const |
| iterator | end () const |
| iterator | cbegin () const |
| iterator | cend () const |
| reverse_iterator | rbegin () const |
| reverse_iterator | rend () const |
| const Value & | front () const |
| const Value & | back () const |
| bool | empty () const |
| size_type | size () const |
| void | clear () |
| void | swap (IDDataContainer &other) noexcept |
| std::pair< iterator, bool > | insert (const Value &value) |
| std::pair< iterator, bool > | push_back (const Value &value) |
| template<typename... Args> | |
| std::pair< iterator, bool > | emplace (Args &&... args) |
| template<typename... Args> | |
| std::pair< iterator, bool > | emplace_back (Args &&... args) |
| iterator | erase (iterator position) |
| template<typename Modifier > | |
| bool | modify (iterator &position, Modifier &&modifier) |
Calls modifier(Value&) on the record at position. | |
| iterator | find (const Key &key) const |
| std::pair< iterator, iterator > | equal_range (const Prefix &key) const |
Private Types | |
| using | Set = std::set< Value, Compare > |
Private Member Functions | |
| bool | stillOrdered_ (iterator position) const |
True if the record at position still sorts strictly between its neighbours. | |
Static Private Member Functions | |
| template<typename T > | |
| static decltype(auto) | keyView (const T &x) |
Private Attributes | |
| Set | records_ |
Friends | |
| bool | operator== (const IDDataContainer &lhs, const IDDataContainer &rhs) |
| Value equality is available only for equality-comparable record types. | |
A collection of identification records, unique and ordered by the key formed from the members KeyMembers.
A std::set underneath: references and iterators to records stay valid on insertion and on a modification that keeps the record's key, and they are 8-byte iterators that step inline. Lookup takes the key (a std::tuple for a composite key) or a Prefix of it. Copying copies the records; moving and swapping keep references to them.
modify() changes a record in place. A modification that changes the key moves the record to its new position (references to it stay valid); one that duplicates another record's key erases the record instead and returns false, as Boost.MultiIndex did.
| using const_iterator = iterator |
| using const_reverse_iterator = reverse_iterator |
| using iterator = typename Set::const_iterator |
| using key_type = Key |
| using reverse_iterator = std::reverse_iterator<iterator> |
|
private |
| using size_type = std::size_t |
| using value_type = Value |
|
default |
|
inline |
|
inline |
|
inline |
References IDDataContainer< Value, Key, Prefix, KeyMembers >::records_.
Referenced by IDDataContainer< Value, Key, Prefix, KeyMembers >::cbegin(), IDDataContainer< Value, Key, Prefix, KeyMembers >::front(), NucleicAcidSearchEngine::main_(), NucleicAcidSearchEngine::postProcessHits_(), and IDDataContainer< Value, Key, Prefix, KeyMembers >::rend().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
References IDDataContainer< Value, Key, Prefix, KeyMembers >::records_.
Referenced by IDDataContainer< Value, Key, Prefix, KeyMembers >::back(), IDDataContainer< Value, Key, Prefix, KeyMembers >::cend(), NucleicAcidSearchEngine::main_(), and IDDataContainer< Value, Key, Prefix, KeyMembers >::rbegin().
|
inline |
|
inline |
|
inline |
|
inlinestaticprivate |
|
inline |
Calls modifier(Value&) on the record at position.
position follows the record: it keeps pointing at it after a key change, and after a modification that was rejected as a duplicate it points at the record after the erased one.
References IDDataContainer< Value, Key, Prefix, KeyMembers >::records_, and IDDataContainer< Value, Key, Prefix, KeyMembers >::stillOrdered_().
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
True if the record at position still sorts strictly between its neighbours.
References IDDataContainer< Value, Key, Prefix, KeyMembers >::records_.
Referenced by IDDataContainer< Value, Key, Prefix, KeyMembers >::modify().
|
inlinenoexcept |
|
friend |
Value equality is available only for equality-comparable record types.
|
private |
Referenced by IDDataContainer< Value, Key, Prefix, KeyMembers >::begin(), IDDataContainer< Value, Key, Prefix, KeyMembers >::clear(), IDDataContainer< Value, Key, Prefix, KeyMembers >::empty(), IDDataContainer< Value, Key, Prefix, KeyMembers >::end(), IDDataContainer< Value, Key, Prefix, KeyMembers >::equal_range(), IDDataContainer< Value, Key, Prefix, KeyMembers >::erase(), IDDataContainer< Value, Key, Prefix, KeyMembers >::find(), IDDataContainer< Value, Key, Prefix, KeyMembers >::insert(), IDDataContainer< Value, Key, Prefix, KeyMembers >::modify(), IDDataContainer< Value, Key, Prefix, KeyMembers >::size(), IDDataContainer< Value, Key, Prefix, KeyMembers >::stillOrdered_(), and IDDataContainer< Value, Key, Prefix, KeyMembers >::swap().