-
Notifications
You must be signed in to change notification settings - Fork 82
Module: Containers
Hannes Hauswedell edited this page Mar 6, 2017
·
3 revisions
We work with STL containers and only create custom containers, where we need to. None of these need to be created during the initial sprint.
-
bitcompressed_vector<alphabet_concept>
similar to SeqAn2'sString<TValue, Alloc<Packed<>>
- should work with any Type that satisfies the SeqAn Alphabet concept
- difficulty to implement: easy
-
mmapped<random_access_container_concept>
similar to SeqAn2'sString<TValue, MMapp<T>
- should work with any random access container as base
- difficulty to implement: mediumβhard
-
externalized<random_access_container_concept>
similar to SeqAn2'sString<TValue, External<T>
- should work with any random access container as base
- difficulty to implement: medium
- do we really need this one?
- if this gets ported from SeqAn2, make sure to make read access thread-safe (use thread_local cache)
All of these would model the SequenceContainer concept and a (possibly custom random_access_container_concept), but would not model ContiguousContainer, because one cannot strictly infer j's memory position from i's memory position, even if the linear distance between i and j are known.
- add a concept for this
- create something like the ConcatDirect StringSet
- Maybe this should be done during the sprint?
- different implementations possible, for many short sequences compressed bitvectors would be better for delimiter than vector of uint64_t