DataList
adapter that acts like it holds const pointers.
More...
#include <ConstDataList.h>
Public Types | |
typedef DL::size_type | size_type |
Basic types, forwarded from the base. | |
typedef DL::difference_type | difference_type |
typedef DL::allocator_type | allocator_type |
typedef DL::base_value_type | base_value_type |
typedef DL::BaseContainer | BaseContainer |
typedef DL::DVL_BASE | DVL_BASE |
typedef DL::const_iterator | const_iterator |
typedef DL::const_reverse_iterator | const_reverse_iterator |
typedef DL::const_value_type | value_type |
typedef DL::const_value_type | const_value_type |
typedef DL::const_value_type & | reference |
typedef DL::const_value_type const & | const_reference |
typedef DL::const_value_type * | pointer |
typedef DL::const_value_type const * | const_pointer |
typedef DataModel_detail::ElementProxy < ConstDataList > | ElementProxy |
typedef DataModel_detail::iterator < ConstDataList > | iterator |
The iterator for this type. | |
typedef std::reverse_iterator < iterator > | reverse_iterator |
Public Member Functions | |
Constructors, destructors, assignment. | |
ConstDataList (SG::OwnershipPolicy ownPolicy=SG::OWN_ELEMENTS) | |
Default constructor. | |
ConstDataList (size_type n, SG::OwnershipPolicy ownPolicy=SG::OWN_ELEMENTS) | |
Sized constructor. | |
template<class InputIterator > | |
ConstDataList (InputIterator first, InputIterator last, SG::OwnershipPolicy ownPolicy=SG::VIEW_ELEMENTS) | |
Constructor from iterators. | |
ConstDataList & | operator= (const ConstDataList &rhs) |
Assignment operator. | |
template<class InputIterator > | |
void | assign (InputIterator first, InputIterator last) |
Assign from iterators. | |
Element access. | |
ElementProxy | front () |
Access the first element in the collection as an lvalue. | |
ElementProxy | back () |
Access the last element in the collection as an lvalue. | |
Iterator creation. | |
iterator | begin () |
Return an iterator pointing at the beginning of the collection. | |
iterator | end () |
Return an iterator pointing past the end of the collection. | |
reverse_iterator | rbegin () |
Return a reverse_iterator pointing past the end of the collection. | |
reverse_iterator | rend () |
Return a reverse_iterator pointing at the beginning of the collection. | |
Insertion operations. | |
void | push_front (value_type pElem) |
Add an element at the beginning of the collection. | |
void | push_back (value_type pElem) |
Add an element to the end of the collection. | |
iterator | insert (iterator position, value_type pElem) |
Add a new element to the collection. | |
template<class InputIterator > | |
void | insert (iterator position, InputIterator first, InputIterator last) |
Add a group of new elements to the collection. | |
Erasure operations. | |
iterator | erase (iterator position) |
Remove element at a given position. | |
iterator | erase (iterator first, iterator last) |
Remove a range of elements. | |
List operations. | |
void | splice (iterator position, ConstDataList &l) |
Insert contents of another list. | |
void | splice (iterator position, ConstDataList &l, iterator i) |
Insert element from another list. | |
void | splice (iterator position, ConstDataList &l, iterator first, iterator last) |
Insert range from another list. | |
void | remove (const value_type &value) |
Remove all elements equal to value. | |
void | merge (ConstDataList &l) |
Merge sorted lists. | |
template<typename COMPARE > | |
void | merge (ConstDataList &l, COMPARE predicate) |
Merge sorted lists according to comparison function. | |
Non-standard operations. | |
void | swapElement (iterator pos, value_type newElem, reference oldElem) |
Swap one element out of the container. | |
const DL * | asDataList () const |
Return a pointer to this object, as a const DataList . | |
void | resortAux (iterator beg, iterator end) |
Reset indices / reorder aux data after elements have been permuted. | |
Relational operators. | |
bool | operator< (const ConstDataList &b) const |
List ordering relation. | |
bool | operator> (const ConstDataList &b) const |
Based on operator<. | |
bool | operator<= (const ConstDataList &b) const |
Based on operator<. | |
bool | operator>= (const ConstDataList &b) const |
Based on operator<. | |
bool | operator== (const ConstDataList &b) const |
List equality comparison. | |
bool | operator!= (const ConstDataList &b) const |
Based on operator==. | |
Static Public Attributes | |
static const bool | has_virtual = DL::has_virtual |
This needs to be forwarded from the base as well. | |
Private helpers. | |
| |
class | DataModel_detail::ElementProxy< ConstDataList > |
void | test2_assignelement1 () |
Swap and sort. | |
| |
void | swap (ConstDataList &rhs) |
Swap this collection with another. | |
static void | iter_swap (iterator a, iterator b) |
Swap the referents of two DataVector iterators. |
DataList
adapter that acts like it holds const pointers.
typedef DataModel_detail::ElementProxy<ConstDataList> ConstDataList< DL >::ElementProxy |
This type is used to proxy lvalue accesses to DataList
elements, in order to handle ownership.
typedef std::reverse_iterator<iterator> ConstDataList< DL >::reverse_iterator |
Standard reverse_iterator
. Note that lvalue references here will yield an ElementProxy
, not a reference
.
typedef DL::const_value_type ConstDataList< DL >::value_type |
These types get modified so that the base's const_value_type
becomes our value_type
.
ConstDataList< DL >::ConstDataList | ( | SG::OwnershipPolicy | ownPolicy = SG::OWN_ELEMENTS |
) | [inline, explicit] |
Default constructor.
ownPolicy | The ownership mode for the container. |
By default, a DataList
will own its elements. To avoid this, pass SG::VIEW_ELEMENTS
for ownPolicy.
ConstDataList< DL >::ConstDataList | ( | size_type | n, | |
SG::OwnershipPolicy | ownPolicy = SG::OWN_ELEMENTS | |||
) | [inline, explicit] |
Sized constructor.
n | The size of the container. | |
ownPolicy | The ownership mode for the container. |
Note that unlike the standard list constructor, you can't specify an initial value here. The container will be initialized with 0's.
By default, a DataList
will own its elements. To avoid this, pass SG::VIEW_ELEMENTS
for ownPolicy.
ConstDataList< DL >::ConstDataList | ( | InputIterator | first, | |
InputIterator | last, | |||
SG::OwnershipPolicy | ownPolicy = SG::VIEW_ELEMENTS | |||
) | [inline] |
Constructor from iterators.
first | The start of the range to put in the new container. | |
last | The end of the range to put in the new container. | |
ownPolicy | The ownership mode for the container. |
By default, a DataList
will own its elements (and take ownership of the pointers passed to this constructor). To avoid this, pass SG::VIEW_ELEMENTS
for ownPolicy.
const DL * ConstDataList< DL >::asDataList | ( | ) | const [inline] |
Return a pointer to this object, as a const DataList
.
Return a pointer to this object, as a const DataVector
.
void ConstDataList< DL >::assign | ( | InputIterator | first, | |
InputIterator | last | |||
) | [inline] |
Assign from iterators.
first | The start of the range to put in the container. | |
last | The end of the range to put in the container. |
Any existing owned elements will be released. The DataList's
ownership policy determines whether it will take ownership of the new elements.
ConstDataList< DL >::ElementProxy ConstDataList< DL >::back | ( | ) | [inline] |
Access the last element in the collection as an lvalue.
No checking is done to ensure that the container is not empty. Note that we return a proxy object rather than a reference; the proxy will handle deleting an owned element if it's assigned to.
ConstDataList< DL >::iterator ConstDataList< DL >::begin | ( | ) | [inline] |
Return an iterator
pointing at the beginning of the collection.
iterator
.Note that dereferencing the iterator will yield a proxy rather than a reference; the proxy will handle deleting an owned element if it's assigned to.
ConstDataList< DL >::iterator ConstDataList< DL >::end | ( | ) | [inline] |
Return an iterator
pointing past the end of the collection.
iterator
.Note that dereferencing the iterator will yield a proxy rather than a reference; the proxy will handle deleting an owned element if it's assigned to.
ConstDataList< DL >::iterator ConstDataList< DL >::erase | ( | iterator | first, | |
iterator | last | |||
) | [inline] |
Remove a range of elements.
first | Iterator pointing to the first element to be removed. | |
last | Iterator pointing one past the last element to be removed. |
end()
).If the container owns its elements, then the removed elements will be deleted. Any duplicates will be removed in this process, but don't rely on this.
ConstDataList< DL >::iterator ConstDataList< DL >::erase | ( | iterator | position | ) | [inline] |
Remove element at a given position.
position | Iterator pointing to the element to be removed. |
end()
).If the container owns its elements, then the pointed-to element will be deleted.
ConstDataList< DL >::ElementProxy ConstDataList< DL >::front | ( | ) | [inline] |
Access the first element in the collection as an lvalue.
No checking is done to ensure that the container is not empty. Note that we return a proxy object rather than a reference; the proxy will handle deleting an owned element if it's assigned to.
void ConstDataList< DL >::insert | ( | iterator | position, | |
InputIterator | first, | |||
InputIterator | last | |||
) | [inline] |
Add a group of new elements to the collection.
position | Iterator before which the element will be added. | |
first | The start of the range to put in the container. | |
last | The end of the range to put in the container. |
The container's ownership policy will determine if it takes ownership of the new element.
Note: this method may only be called using the most derived DataList
in the hierarchy.
ConstDataList< DL >::iterator ConstDataList< DL >::insert | ( | iterator | position, | |
value_type | pElem | |||
) | [inline] |
Add a new element to the collection.
position | Iterator before which the element will be added. | |
pElem | The element to add to the collection. |
The container's ownership policy will determine if it takes ownership of the new element.
Note: this method may only be called using the most derived DataList
in the hierarchy.
void ConstDataList< DL >::iter_swap | ( | iterator | a, | |
iterator | b | |||
) | [inline, static] |
Swap the referents of two DataVector
iterators.
a | The first iterator for the swap. | |
b | The second iterator for the swap/ |
void ConstDataList< DL >::merge | ( | ConstDataList< DL > & | l, | |
COMPARE | predicate | |||
) | [inline] |
Merge sorted lists according to comparison function.
l | Sorted list to merge. | |
predicate | Comparison function defining a sort order (which must be strictly weak ordering). |
Assumes that both l and this DataList
are sorted according to COMPARE predicate. Merges elements of l into this list in sorted order, leaving l empty when complete. Elements in this list precede elements in x that are equivalent according to StrictWeakOrdering().
void ConstDataList< DL >::merge | ( | ConstDataList< DL > & | l | ) | [inline] |
Merge sorted lists.
l | Sorted list to merge. |
Assumes that both l and this list are sorted according to operator<(). Merges elements of l into this list in sorted order, leaving l empty when complete. Elements in this list precede elements in l that are equal.
bool ConstDataList< DL >::operator< | ( | const ConstDataList< DL > & | b | ) | const [inline] |
List ordering relation.
a | A ConstDataList . | |
b | A ConstDataList of the same type as x. |
This is a total ordering relation. It is linear in the size of the lists. Comparisons are done on the pointer values of the elements.
See std::lexicographical_compare()
for how the determination is made.
ConstDataList< DL > & ConstDataList< DL >::operator= | ( | const ConstDataList< DL > & | rhs | ) | [inline] |
Assignment operator.
rhs | The DataList from which to assign. |
This is a `shallow' copy; after the completion of this, the DataList
will not own its elements. Any elements it owned prior to this call will be released.
Note: this method may only be called using the most derived DataList
in the hierarchy.
bool ConstDataList< DL >::operator== | ( | const ConstDataList< DL > & | b | ) | const [inline] |
List equality comparison.
a | A ConstDataList . | |
b | A ConstDataList of the same type as x. |
This is an equivalence relation. It is linear in the size of the lists. Lists are considered equivalent if their sizes are equal, and if corresponding elements compare equal.
void ConstDataList< DL >::push_back | ( | value_type | pElem | ) | [inline] |
Add an element to the end of the collection.
pElem | The element to add to the collection. |
The container's ownership policy will determine if it takes ownership of the new element.
Note: this method may only be called using the most derived DataList
in the hierarchy.
void ConstDataList< DL >::push_front | ( | value_type | pElem | ) | [inline] |
Add an element at the beginning of the collection.
pElem | The element to add to the collection. |
The container's ownership policy will determine if it takes ownership of the new element.
Note: this method may only be called using the most derived DataList
in the hierarchy.
ConstDataList< DL >::reverse_iterator ConstDataList< DL >::rbegin | ( | ) | [inline] |
Return a reverse_iterator
pointing past the end of the collection.
reverse_iterator
.Note that dereferencing the iterator will yield a proxy rather than a reference; the proxy will handle deleting an owned element if it's assigned to.
void ConstDataList< DL >::remove | ( | const value_type & | value | ) | [inline] |
Remove all elements equal to value.
value | The value to remove. |
Removes every element in the list equal to value. Remaining elements stay in list order.
ConstDataList< DL >::reverse_iterator ConstDataList< DL >::rend | ( | ) | [inline] |
Return a reverse_iterator
pointing at the beginning of the collection.
reverse_iterator
.Note that dereferencing the iterator will yield a proxy rather than a reference; the proxy will handle deleting an owned element if it's assigned to.
void ConstDataList< DL >::resortAux | ( | iterator | beg, | |
iterator | end | |||
) | [inline] |
Reset indices / reorder aux data after elements have been permuted.
beg | Start of the range of elements to process. | |
end | End of the range of elements to process. |
This is a no-op for ConstDataList
.
void ConstDataList< DL >::splice | ( | iterator | position, | |
ConstDataList< DL > & | l, | |||
iterator | first, | |||
iterator | last | |||
) | [inline] |
Insert range from another list.
position | Iterator referencing the element to insert before. | |
l | Source list. | |
first | Iterator referencing the start of range in l. | |
last | Iterator referencing the end of range in l. |
Removes elements in the range [first, last ) and inserts them before position in constant time.
Undefined if position is in [first, last ).
void ConstDataList< DL >::splice | ( | iterator | position, | |
ConstDataList< DL > & | l, | |||
iterator | i | |||
) | [inline] |
Insert element from another list.
position | Iterator referencing the element to insert before. | |
l | Source list. | |
i | Iterator referencing the element to move. |
Removes the element in list l referenced by i and inserts it into the current list before position.
void ConstDataList< DL >::splice | ( | iterator | position, | |
ConstDataList< DL > & | l | |||
) | [inline] |
Insert contents of another list.
position | Iterator referencing the element to insert before. | |
l | Source list. |
The elements of l are inserted in constant time in front of the element referenced by position. l becomes an empty list.
void ConstDataList< DL >::swap | ( | ConstDataList< DL > & | rhs | ) | [inline] |
void ConstDataList< DL >::swapElement | ( | iterator | pos, | |
value_type | newElem, | |||
reference | oldElem | |||
) | [inline] |
Swap one element out of the container.
pos | The element in the container to swap. | |
newElem | New element to put in the container. May be 0. | |
oldElem | Reference to receive the element removed from the container. |
Reference oldElem is initialized with element pos of the collection (no bounds checking). Then element index is set to newElem
. If the collection owns its elements, then it will take ownership of newElem and release (without deleting) the element returned through oldElem.
Note: this method may only be called using the most derived DataList
in the hierarchy.