swift
Public Types | Public Member Functions | Friends | List of all members
swift::misc::CSequence< T > Class Template Reference

Generic sequential container with value semantics. More...

Inheritance diagram for swift::misc::CSequence< T >:
[legend]

Public Types

typedef T key_type
 STL compatibility.
 
typedef T value_type
 STL compatilibty.
 
typedef T & reference
 STL compatibility.
 
typedef const T & const_reference
 STL compatibility.
 
typedef T * pointer
 STL compatibility.
 
typedef const T * const_pointer
 STL compatibility.
 
typedef QVector< T >::const_iterator const_iterator
 STL compatibility.
 
typedef QVector< T >::iterator iterator
 STL compatibility.
 
typedef QVector< T >::const_reverse_iterator const_reverse_iterator
 STL compatibility.
 
typedef QVector< T >::reverse_iterator reverse_iterator
 STL compatibility.
 
typedef ptrdiff_t difference_type
 STL compatibility.
 
typedef int size_type
 STL compatibility.
 

Public Member Functions

 CSequence ()=default
 Default constructor.
 
 CSequence (std::initializer_list< T > il)
 Initializer list constructor.
 
 CSequence (QList< T > &&list)
 By QList of type T.
 
 CSequence (const QList< T > &list)
 By QList of type T.
 
template<typename It >
 CSequence (It first, It last)
 Range constructor.
 
 CSequence (const CSequence &other)=default
 Copy constructor.
 
 CSequence (CSequence &&other)=default
 Move constructor.
 
CSequenceoperator= (const CSequence &other)=default
 Copy assignment.
 
CSequenceoperator= (CSequence &&other)=default
 Move assignment.
 
 ~CSequence ()=default
 Destructor.
 
QVector< T > toVector () const &
 Copy of internal vector.
 
QVector< T > toVector () &&
 Copy of internal vector.
 
iterator begin ()
 Returns iterator at the beginning of the sequence.
 
const_iterator begin () const
 Returns const iterator at the beginning of the sequence.
 
const_iterator cbegin () const
 Returns const iterator at the beginning of the sequence.
 
iterator end ()
 Returns iterator one past the end of the sequence.
 
const_iterator end () const
 Returns const iterator one past the end of the sequence.
 
const_iterator cend () const
 Returns const iterator one past the end of the sequence.
 
reverse_iterator rbegin ()
 Returns iterator at the beginning of the reversed sequence.
 
const_reverse_iterator rbegin () const
 Returns const iterator at the beginning of the reversed sequence.
 
const_reverse_iterator crbegin () const
 Returns const iterator at the beginning of the reversed sequence.
 
reverse_iterator rend ()
 Returns iterator at the end of the reversed sequence.
 
const_reverse_iterator rend () const
 Returns const iterator at the end of the reversed sequence.
 
const_reverse_iterator crend () const
 Returns const iterator at the end of the reversed sequence.
 
void swap (CSequence &other) noexcept
 Swap this sequence with another.
 
reference operator[] (size_type index)
 Access an element by its index.
 
const_reference operator[] (size_type index) const
 Access an element by its index.
 
reference front ()
 Access the first element.
 
const_reference front () const
 Access the first element.
 
const_reference frontOrDefault () const
 Access the first element, or a default-initialized value if the sequence is empty.
 
value_type frontOrDefault (value_type def) const
 Access the first element, or a default-initialized value if the sequence is empty.
 
reference back ()
 Access the last element.
 
const_reference back () const
 Access the last element.
 
const_reference backOrDefault () const
 Access the last element, or a default value if the sequence is empty.
 
value_type backOrDefault (value_type def) const
 Access the last element, or a default value if the sequence is empty.
 
size_type size () const
 Returns number of elements in the sequence.
 
int sizeInt () const
 Avoid compiler warnings when using with int.
 
QString sizeString () const
 Convenience function.
 
bool empty () const
 Returns true if the sequence is empty.
 
bool isEmpty () const
 Synonym for empty.
 
void clear ()
 Removes all elements in the sequence.
 
void truncate (size_type maxSize)
 Changes the size of the sequence, if it is bigger than the given size.
 
iterator insert (iterator before, const T &value)
 Inserts an element into the sequence. More...
 
iterator insert (iterator before, T &&value)
 Moves an element into the sequence. More...
 
void push_back (const T &value)
 Appends an element at the end of the sequence.
 
void push_front (const T &value)
 Insert as first element.
 
void push_front (const CSequence &other)
 Inserts all elements from another sequence at the beginning of this sequence.
 
void push_frontMaxElements (const T &value, int maxElements)
 Insert as first element by keep maxElements.
 
void push_backMaxElements (const T &value, int maxElements)
 Insert as last element by keep maxElements.
 
void push_back (T &&value)
 Move-appends an element at the end of the sequence.
 
void push_front (T &&value)
 Move-insert as first element.
 
void push_back (const CSequence &other)
 Appends all elements from another sequence at the end of this sequence.
 
void push_back (CSequence &&other)
 Appends all elements from another sequence at the end of this sequence. This version moves elements instead of copying.
 
template<typename I >
void push_back (const CRange< I > &range)
 Appends all elements from a range at the end of this sequence.
 
CSequence join (const CSequence &other) const
 Concatenates two sequences and returns the result.
 
template<typename I >
CSequence join (const CRange< I > &range) const
 Concatenates a sequence and a range and returns the result.
 
void pop_back ()
 Removes an element at the end of the sequence.
 
void pop_front ()
 Removes an element at the front of the sequence.
 
iterator erase (iterator pos)
 Remove the element pointed to by the given iterator. More...
 
iterator erase (iterator it1, iterator it2)
 Remove the range of elements between two iterators. More...
 
iterator find (const T &object)
 Return an iterator to the first element equal to the given object, or the end iterator if not found. O(n).
 
const_iterator find (const T &object) const
 Return an iterator to the first element equal to the given object, or the end iterator if not found. O(n).
 
template<class Predicate >
CSequence findBy (Predicate p) const
 Return a copy containing only those elements for which a given predicate returns true. More...
 
template<class Predicate , class VariantMap >
int applyIf (Predicate p, const VariantMap &newValues, bool skipEqualValues=false)
 Modify by applying a value map to each element for which a given predicate returns true. More...
 
template<class K1 , class V1 , class VariantMap >
int applyIf (K1 key1, V1 value1, const VariantMap &newValues, bool skipEqualValues=false)
 Modify by applying a value map to each element matching a particular key/value pair. More...
 
int remove (const T &object)
 Remove all elements equal to the given object, if it is contained. More...
 
template<class Predicate >
int removeIf (Predicate p)
 Remove elements for which a given predicate returns true. More...
 
template<class K0 , class V0 , class... KeysValues>
int removeIf (K0 k0, V0 v0, KeysValues... keysValues)
 Remove elements matching some particular key/value pair(s). More...
 
int removeIfIn (const CSequence &other)
 Remove all elements if they are in other. More...
 
void removeIfInSubset (const CSequence &other)
 Remove all elements if they are in other. More...
 
int replace (const T &original, const T &replacement)
 Replace elements matching the given element with a replacement. More...
 
template<class Predicate >
int replaceIf (Predicate p, const T &replacement)
 Replace elements for which a given predicate returns true. More...
 
template<class K1 , class V1 >
int replaceIf (K1 key1, V1 value1, const T &replacement)
 Replace elements matching a particular key/value pair. More...
 
void replaceOrAdd (const T &original, const T &replacement)
 Replace elements matching the given element. If there is no match, push the new element on the end.
 
void replaceOrAdd (const T &replacement)
 Replace elements matching the given element. If there is no match, push the new element on the end.
 
void replaceOrAdd (const CSequence< T > &replacements)
 Replace or add given elements.
 
template<class K1 , class V1 >
void replaceOrAdd (K1 key1, V1 value1, const T &replacement)
 Replace elements matching a particular key/value pair. If there is no match, push the new element on the end. More...
 
void reverse ()
 In-place reverse.
 
Q_REQUIRED_RESULT CSequence reversed () const
 Reversed order.
 
template<class Predicate >
void sort (Predicate p)
 In-place sort by a given comparator predicate.
 
template<class K1 , class... Keys>
void sortBy (K1 key1, Keys... keys)
 In-place sort by some particular key(s). More...
 
template<class Predicate >
Q_REQUIRED_RESULT CSequence sorted (Predicate p) const
 Return a copy sorted by a given comparator predicate.
 
template<class K1 , class... Keys>
CSequence sortedBy (K1 key1, Keys... keys) const
 Return a copy sorted by some particular key(s). More...
 
template<class Predicate >
void partiallySort (size_type n, Predicate p)
 In-place move the smallest n elements to the beginning and sort them.
 
template<class K1 , class... Keys>
void partiallySortBy (size_type n, K1 key1, Keys... keys)
 In-place partially sort by some particular key(s). More...
 
template<class Predicate >
Q_REQUIRED_RESULT CSequence partiallySorted (size_type n, Predicate p) const
 Return a copy with the smallest n elements at the beginning and sorted.
 
template<class K1 , class... Keys>
CSequence partiallySortedBy (size_type n, K1 key1, Keys... keys) const
 Return a copy partially sorted by some particular key(s). More...
 
template<class U , class Key0 , class... Keys>
bool unorderedEqualsByKeys (const U &other, Key0 k0, Keys... keys) const
 Return true if this container equals another container, considering only the given element members. Order of elements is not considered; this is implemented using a transient sort, so don't overuse.
 
template<class Predicate >
auto separate (Predicate p) const -> QMap< decltype(p(std::declval< T >())), CSequence >
 Split up the sequence into subsequences for which the given predicate returns the same value.
 
template<class Key >
auto separateBy (Key k) const -> QMap< decltype(std::invoke(k, std::declval< T >())), CSequence >
 Split up the sequence into subsequences of elements having the same value for the given key.
 
void marshalToDataStream (QDataStream &stream) const
 Marshal a value to a QDataStream. More...
 
void unmarshalFromDataStream (QDataStream &stream)
 Unmarshal a value from a QDataStream. More...
 
- Public Member Functions inherited from swift::misc::CContainerBase< CSequence< T > >
auto to () const
 Return a new container of a different type, containing the same elements as this one. More...
 
Other< T > to (Other< T > other) const
 Return a new container of a different type, containing the same elements as this one. More...
 
int removeIf (K0 k0, V0 v0, KeysValues... keysValues)
 Remove elements matching some particular key/value pair(s). More...
 
QJsonObject toJson () const
 Cast to JSON object. More...
 
QString toJsonString (QJsonDocument::JsonFormat format=QJsonDocument::Indented) const
 Convenience function JSON as string.
 
void convertFromJson (const QJsonObject &json)
 Assign from JSON object. More...
 
void convertFromJson (const QString &jsonString, bool acceptCacheFormat=false)
 Assign from JSON object string.
 
CStatusMessage convertFromJsonNoThrow (const QJsonObject &json, const CLogCategoryList &categories, const QString &prefix)
 Call convertFromJson, catch any CJsonException that is thrown and return it as CStatusMessage.
 
CStatusMessage convertFromJsonNoThrow (const QString &jsonString, const CLogCategoryList &categories, const QString &prefix)
 Call convertFromJson, catch any CJsonException that is thrown and return it as CStatusMessage.
 
QString convertToQString (bool i18n=false) const
 Cast as QString. More...
 
QStringList toStringList (bool i18n=false) const
 To string list.
 
void marshallToDbus (QDBusArgument &argument) const
 Marshall without begin/endStructure, for when composed within another object. More...
 
void unmarshallFromDbus (const QDBusArgument &argument)
 Unmarshall without begin/endStructure, for when composed within another object. More...
 
- Public Member Functions inherited from swift::misc::CRangeBase< Derived >
template<class F >
auto transform (F function) const
 Return a new container generated by applying some transformation function to all elements of this one.
 
template<class Predicate >
auto findBy (Predicate p) const
 Return a copy containing only those elements for which a given predicate returns true.
 
template<class K0 , class V0 , class... KeysValues>
auto findBy (K0 k0, V0 v0, KeysValues... keysValues) const
 Return a copy containing only those elements matching some particular key/value pair(s). More...
 
template<class Predicate >
const auto & findFirstBy (Predicate p) const
 Return a reference to the first element for which a given predicate returns true. Undefined if there is none.
 
template<class K , class V >
const auto & findFirstBy (K key, V value) const
 Return a reference to the first element matching some particular key/value pair(s). Undefined if there is none.
 
template<class Predicate , class Value >
auto findFirstByOrDefault (Predicate p, const Value &def) const
 Return a copy of the first element for which a given predicate returns true, or a default value if there is none.
 
template<class Predicate >
auto findFirstByOrDefault (Predicate p) const
 Return a copy of the first element for which a given predicate returns true, or a default value if there is none.
 
template<class K , class V , class Value >
auto findFirstByOrDefault (K key, V value, const Value &def) const
 Return a copy of the first element matching some particular key/value pair(s), or a default value if there is none.
 
template<class T , class K , class V >
auto findFirstByOrDefault (K T::*key, V value) const
 Return a copy of the first element matching some particular key/value pair(s), or a default value if there is none.
 
template<class Predicate >
bool containsBy (Predicate p) const
 Return true if there is an element for which a given predicate returns true.
 
template<class T >
bool contains (const T &object) const
 Return true if there is an element equal to given object. Uses the most efficient implementation available in the derived container.
 
template<class K0 , class V0 , class... KeysValues>
bool contains (K0 k0, V0 v0, KeysValues... keysValues) const
 Return a copy containing only those elements matching some particular key/value pair(s). More...
 
template<class T , class Predicate >
bool equalsBy (const T &other, Predicate c) const
 Return true if this container equals another container according to the given element equality predicate.
 
template<class T , class Key0 , class... Keys>
bool equalsByKeys (const T &other, Key0 k0, Keys... keys) const
 Return true if this container equals another container, considering only the given element members.
 
template<class T >
randomElement () const
 Pick one random element.
 
Derived randomElements (int n) const
 Copy n elements from the container at random.
 
Derived sampleElements (int n) const
 Copy n elements from the container, randomly selected but evenly distributed.
 
- Public Member Functions inherited from swift::misc::mixin::MetaType< Derived >
int getMetaTypeId () const
 Returns the Qt meta type ID of this object. More...
 
QString getClassName () const
 Class name.
 
bool isA (int metaTypeId) const
 Returns true if this object is an instance of the class with the given meta type ID, or one of its subclasses.
 
- Public Member Functions inherited from swift::misc::mixin::String< Derived >
QString toQString (bool i18n=false) const
 Cast as QString.
 
std::string toStdString (bool i18n=false) const
 To std string.
 
QString stringForStreaming () const
 String for streaming operators.
 
- Public Member Functions inherited from swift::misc::mixin::Icon< CSequence< T > >
CIcons::IconIndex toIcon () const
 As icon, not implemented by all classes.
 

Friends

bool operator== (const CSequence &a, const CSequence &b)
 Equals operator.
 
bool operator!= (const CSequence &a, const CSequence &b)
 Not equals operator.
 
bool operator< (const CSequence &a, const CSequence &b)
 Less than operator.
 
bool operator> (const CSequence &a, const CSequence &b)
 Greater than operator.
 
bool operator<= (const CSequence &a, const CSequence &b)
 Less or equal than operator.
 
bool operator>= (const CSequence &a, const CSequence &b)
 Greater or equal operator.
 

Additional Inherited Members

- Static Public Member Functions inherited from swift::misc::CContainerBase< CSequence< T > >
static CSequence< T > fromJson (const QJsonObject &json)
 Static version of convertFromJson.
 
static CSequence< T > fromJson (const QString &jsonString, bool acceptCacheJson=false)
 Static version of convertFromJson.
 
static CSequence< T > fromJsonNoThrow (const QString &jsonString, bool acceptCacheJson, bool &success, QString &errMsg)
 Static version of convertFromJson.
 
- Static Public Member Functions inherited from swift::misc::mixin::MetaType< Derived >
static void registerMetadata ()
 Register metadata.
 
- Protected Member Functions inherited from swift::misc::CContainerBase< CSequence< T > >
int getMetaTypeId () const
 Returns the Qt meta type ID of this object. More...
 
- Static Protected Member Functions inherited from swift::misc::CRangeBase< Derived >
template<typename T , typename U >
static bool equalPointers (const T *a, const U *b)
 Efficiently compare addresses of two objects. Return false if types are not compatible.
 

Detailed Description

template<class T>
class swift::misc::CSequence< T >

Generic sequential container with value semantics.

Template Parameters
Tthe type of elements contained.

Definition at line 82 of file sequence.h.

Member Function Documentation

◆ applyIf() [1/2]

template<class T >
template<class K1 , class V1 , class VariantMap >
int swift::misc::CSequence< T >::applyIf ( K1  key1,
V1  value1,
const VariantMap &  newValues,
bool  skipEqualValues = false 
)
inline

Modify by applying a value map to each element matching a particular key/value pair.

Parameters
key1A pointer to a member function of T.
value1Will be compared to the return value of key1.
newValuesValues from this map will be put into each matching element.
skipEqualValuesEqual values will not be updated
Returns
The number of elements modified.

Definition at line 428 of file sequence.h.

◆ applyIf() [2/2]

template<class T >
template<class Predicate , class VariantMap >
int swift::misc::CSequence< T >::applyIf ( Predicate  p,
const VariantMap &  newValues,
bool  skipEqualValues = false 
)
inline

Modify by applying a value map to each element for which a given predicate returns true.

Returns
The number of elements modified.

Definition at line 411 of file sequence.h.

◆ erase() [1/2]

template<class T >
iterator swift::misc::CSequence< T >::erase ( iterator  it1,
iterator  it2 
)
inline

Remove the range of elements between two iterators.

Returns
An iterator to the position of the next element after the one removed.

Definition at line 386 of file sequence.h.

◆ erase() [2/2]

template<class T >
iterator swift::misc::CSequence< T >::erase ( iterator  pos)
inline

Remove the element pointed to by the given iterator.

Returns
An iterator to the position of the next element after the one removed.

Definition at line 382 of file sequence.h.

◆ findBy()

template<class T >
template<class Predicate >
CSequence swift::misc::CSequence< T >::findBy ( Predicate  p) const
inline

Return a copy containing only those elements for which a given predicate returns true.

Definition at line 398 of file sequence.h.

◆ insert() [1/2]

template<class T >
iterator swift::misc::CSequence< T >::insert ( iterator  before,
const T &  value 
)
inline

Inserts an element into the sequence.

Returns
An iterator to the position where value was inserted.

Definition at line 298 of file sequence.h.

◆ insert() [2/2]

template<class T >
iterator swift::misc::CSequence< T >::insert ( iterator  before,
T &&  value 
)
inline

Moves an element into the sequence.

Returns
An iterator to the position where value was inserted.

Definition at line 302 of file sequence.h.

◆ marshalToDataStream()

template<class T >
void swift::misc::CSequence< T >::marshalToDataStream ( QDataStream &  stream) const
inline

Marshal a value to a QDataStream.

Definition at line 690 of file sequence.h.

◆ partiallySortBy()

template<class T >
template<class K1 , class... Keys>
void swift::misc::CSequence< T >::partiallySortBy ( size_type  n,
K1  key1,
Keys...  keys 
)
inline

In-place partially sort by some particular key(s).

Parameters
nsize.
key1A pointer to a member function of T.
keysZero or more additional pointers to member functions of T.

Definition at line 611 of file sequence.h.

◆ partiallySortedBy()

template<class T >
template<class K1 , class... Keys>
CSequence swift::misc::CSequence< T >::partiallySortedBy ( size_type  n,
K1  key1,
Keys...  keys 
) const
inline

Return a copy partially sorted by some particular key(s).

Parameters
nsize
key1A pointer to a member function of T.
keysZero or more additional pointers to member functions of T.

Definition at line 630 of file sequence.h.

◆ remove()

template<class T >
int swift::misc::CSequence< T >::remove ( const T &  object)
inline

Remove all elements equal to the given object, if it is contained.

Returns
The number of elements removed.

Definition at line 435 of file sequence.h.

◆ removeIf() [1/2]

template<class T >
template<class K0 , class V0 , class... KeysValues>
int swift::misc::CSequence< T >::removeIf ( K0  k0,
V0  v0,
KeysValues...  keysValues 
)
inline

Remove elements matching some particular key/value pair(s).

Parameters
k0A pointer to a member function of T.
v0A value to compare against the value returned by k0.
keysValuesZero or more additional pairs of { pointer to member function of T, value to compare it against }.
Returns
The number of elements removed.

Definition at line 456 of file sequence.h.

◆ removeIf() [2/2]

template<class T >
template<class Predicate >
int swift::misc::CSequence< T >::removeIf ( Predicate  p)
inline

Remove elements for which a given predicate returns true.

Returns
The number of elements removed.

Definition at line 446 of file sequence.h.

◆ removeIfIn()

template<class T >
int swift::misc::CSequence< T >::removeIfIn ( const CSequence< T > &  other)
inline

Remove all elements if they are in other.

Returns
The number of elements removed.

Definition at line 464 of file sequence.h.

◆ removeIfInSubset()

template<class T >
void swift::misc::CSequence< T >::removeIfInSubset ( const CSequence< T > &  other)
inline

Remove all elements if they are in other.

Precondition
All elements of other must be present in the same order in this.

Definition at line 471 of file sequence.h.

◆ replace()

template<class T >
int swift::misc::CSequence< T >::replace ( const T &  original,
const T &  replacement 
)
inline

Replace elements matching the given element with a replacement.

Returns
The number of elements replaced.

Definition at line 478 of file sequence.h.

◆ replaceIf() [1/2]

template<class T >
template<class K1 , class V1 >
int swift::misc::CSequence< T >::replaceIf ( K1  key1,
V1  value1,
const T &  replacement 
)
inline

Replace elements matching a particular key/value pair.

Parameters
key1A pointer to a member function of T.
value1Will be compared to the return value of key1.
replacementAll matching elements will be replaced by copies of this one.
Returns
The number of elements replaced.

Definition at line 515 of file sequence.h.

◆ replaceIf() [2/2]

template<class T >
template<class Predicate >
int swift::misc::CSequence< T >::replaceIf ( Predicate  p,
const T &  replacement 
)
inline

Replace elements for which a given predicate returns true.

Returns
The number of elements replaced.

Definition at line 495 of file sequence.h.

◆ replaceOrAdd()

template<class T >
template<class K1 , class V1 >
void swift::misc::CSequence< T >::replaceOrAdd ( K1  key1,
V1  value1,
const T &  replacement 
)
inline

Replace elements matching a particular key/value pair. If there is no match, push the new element on the end.

Parameters
key1A pointer to a member function of T.
value1Will be compared to the return value of key1.
replacementAll matching elements will be replaced by copies of this one, or a copy will be added.

Definition at line 541 of file sequence.h.

◆ sortBy()

template<class T >
template<class K1 , class... Keys>
void swift::misc::CSequence< T >::sortBy ( K1  key1,
Keys...  keys 
)
inline

In-place sort by some particular key(s).

Parameters
key1A pointer to a member function of T.
keysZero or more additional pointers to member functions of T.

Definition at line 576 of file sequence.h.

◆ sortedBy()

template<class T >
template<class K1 , class... Keys>
CSequence swift::misc::CSequence< T >::sortedBy ( K1  key1,
Keys...  keys 
) const
inline

Return a copy sorted by some particular key(s).

Parameters
key1A pointer to a member function of T.
keysZero or more additional pointers to member functions of T.

Definition at line 594 of file sequence.h.

◆ unmarshalFromDataStream()

template<class T >
void swift::misc::CSequence< T >::unmarshalFromDataStream ( QDataStream &  stream)
inline

Unmarshal a value from a QDataStream.

Definition at line 693 of file sequence.h.


The documentation for this class was generated from the following file: