OpenMS
2.7.0
|
A base class for random access containers for classes derived from UniqueIdInterface that adds functionality to convert a unique id into an index into the container. More...
#include <OpenMS/CONCEPT/UniqueIdIndexer.h>
Public Types | |
typedef boost::unordered_map< UInt64, Size > | UniqueIdMap |
Public Member Functions | |
Size | uniqueIdToIndex (UInt64 unique_id) const |
Returns the index of the feature with the given unique id, or Size(-1) if none exists in this random access container. More... | |
void | updateUniqueIdToIndex () const |
Updates the hash map from unique id to index. More... | |
Size | resolveUniqueIdConflicts () |
Assign new UID's to doubly occurring UID's. More... | |
void | swap (UniqueIdIndexer &rhs) |
Swap. More... | |
Protected Member Functions | |
const RandomAccessContainer & | getBase_ () const |
A little helper to get access to the base (!) class RandomAccessContainer. More... | |
RandomAccessContainer & | getBase_ () |
A little helper to get access to the base (!) class RandomAccessContainer. More... | |
Protected Attributes | |
UniqueIdMap | uniqueid_to_index_ |
hash map from unique id to index of features More... | |
A base class for random access containers for classes derived from UniqueIdInterface that adds functionality to convert a unique id into an index into the container.
See FeatureMap and ConsensusMap for living examples. The RandomAccessContainer must support operator[], at(), and size().
typedef boost::unordered_map<UInt64, Size> UniqueIdMap |
|
inlineprotected |
A little helper to get access to the base (!) class RandomAccessContainer.
This is just a static_cast and probably not interesting elsewhere, so we make it a protected member.
|
inlineprotected |
A little helper to get access to the base (!) class RandomAccessContainer.
This is just a static_cast and probably not interesting elsewhere, so we make it a protected member.
Referenced by UniqueIdIndexer< RandomAccessContainer >::resolveUniqueIdConflicts(), UniqueIdIndexer< RandomAccessContainer >::uniqueIdToIndex(), and UniqueIdIndexer< RandomAccessContainer >::updateUniqueIdToIndex().
|
inline |
Assign new UID's to doubly occurring UID's.
Assign new UID's to non-unique UID's. This usually occurs in merging of 'old' feature files, which have sequentially increasing UID's. Conflicting entries receive a new UID, such that all UID's are unique in the container.
References UniqueIdIndexer< RandomAccessContainer >::getBase_(), UniqueIdInterface::isValid(), and UniqueIdIndexer< RandomAccessContainer >::uniqueid_to_index_.
|
inline |
Swap.
References UniqueIdIndexer< RandomAccessContainer >::uniqueid_to_index_.
Returns the index of the feature with the given unique id, or Size(-1) if none exists in this random access container.
The complexity is expected constant upon success, linear upon failure.
The lookup actually performs the following steps:
References UniqueIdIndexer< RandomAccessContainer >::getBase_(), UniqueIdIndexer< RandomAccessContainer >::uniqueid_to_index_, and UniqueIdIndexer< RandomAccessContainer >::updateUniqueIdToIndex().
|
inline |
Updates the hash map from unique id to index.
References UniqueIdIndexer< RandomAccessContainer >::getBase_(), UniqueIdInterface::INVALID, UniqueIdInterface::isValid(), and UniqueIdIndexer< RandomAccessContainer >::uniqueid_to_index_.
Referenced by UniqueIdIndexer< RandomAccessContainer >::uniqueIdToIndex().
|
mutableprotected |
hash map from unique id to index of features
This is mutable because the hash map is updated on demand, even if the underlying container is const.
Referenced by UniqueIdIndexer< RandomAccessContainer >::resolveUniqueIdConflicts(), UniqueIdIndexer< RandomAccessContainer >::swap(), UniqueIdIndexer< RandomAccessContainer >::uniqueIdToIndex(), and UniqueIdIndexer< RandomAccessContainer >::updateUniqueIdToIndex().