xsens::List< T > Class Template Reference

Dynamic list class. More...

#include <Robots/SeaBeeIII/IMUDataServer/xsens_list.h>

Collaboration diagram for xsens::List< T >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef int32_t(* cmpFunc )(const T &, const T &)
 A comparison function type, should return -1, 0 or 1 for <, == and >
typedef int32_t(__cdecl * InequalityFunction )(const T &, const T &)
 Type for an equality compare function, should return true when NOT equal.

Public Member Functions

 List ()
 Standard constructor, creates an empty list with some room for items.
 List (const uint32_t size)
 Construct a list with a capacity of at least the given size.
 List (const List< T > &src)
 Construct a list as a direct copy of another list.
 List (const uint32_t size, const T *src)
 Construct a list as a copy of a raw list.
 ~List ()
 Destroy the list. This does NOT automatically delete items IN the list.
void deleteAndClear (void)
 Calls delete for all items in the list and then clears the list.
void freeAndClear (void)
 Calls free for all items in the list and then clears the list.
void clear (void)
 Clears the list without explicitly deleting anything.
void resize (uint32_t newSize)
 Resizes the list to at least the given size.
void append (const T &item)
 Adds an item to the end of the list.
void appendList (uint32_t count, const T *lst)
 Adds a number of items to the end of the list.
void appendDeepCopy (const List< T > &source)
 Adds the contents of the source list to the end of the list.
void appendShallowCopy (const List< T > &source)
 Adds the contents of the source list to the end of the list.
template<typename TB >
void appendCopy (const TB &item)
 Adds a copy of a referenced item to the end of the list using newItem = new TB(item).
template<typename TR >
void appendRelated (const TR &item)
 Adds a related item to the end of the list, using the T = TR operator.
void remove (const uint32_t index) XSENS_LIST_THROW
 Removes an item at the given index in the list.
void swap (const uint32_t i, const uint32_t j) XSENS_LIST_THROW
 Swaps two items in the list.
void deleteAndRemove (const uint32_t index) XSENS_LIST_THROW
 Removes an item at the given index in the list.
void freeAndRemove (const uint32_t index) XSENS_LIST_THROW
 Removes an item at the given index in the list.
T & last (void) const XSENS_LIST_THROW
 Retrieves the last item.
T & get (const uint32_t index) const XSENS_LIST_THROW
 Retrieves the item at the given index. An index beyond the end returns the first item.
T & operator[] (const uint32_t index) const XSENS_LIST_THROW
 Retrieves the item at the given index. An index beyond the end probably causes an exception.
void insert (const T &item, const uint32_t index)
 Inserts an item at the given index, shifting any items below it down one spot.
template<typename TB >
void insertCopy (const TB &item, const uint32_t index)
 Inserts a copy of the referenced item at the given index, shifting any items below it down one spot.
uint32_t insertSorted (const T &item)
 Assumes the list is sorted and inserts the item at the appropriate spot.
uint32_t insertSortedDeref (const T &item)
 Assumes the list is sorted by dereferenced values and inserts the item at the appropriate spot.
template<typename TB >
uint32_t insertSortedCopy (const TB &item)
 Assumes the list is sorted and inserts a copy of the referenced item at the appropriate spot.
uint32_t length (void) const
 Returns the number of items currently in the list.
void sortAscending (void)
 Sorts the list in an ascending order, using the T::< operator.
void sortAscendingDeref (void)
 Sorts the list in an ascending order, using the T::< operator on dereferenced list items.
template<typename T2 >
void twinSortAscending (List< T2 > &twin)
 Sorts the first list in an ascending order, using the T::< operator, the second list will be updated the same way.
template<typename TB >
uint32_t find (const TB &item) const
 Finds an item in an unsorted list (walk over all items) using the T::== operator.
template<typename TB >
uint32_t findDeref (const TB &item) const
 Finds an item in an unsorted list (walk over all items) using the T::== operator on dereferenced list items.
template<typename TB >
uint32_t findSorted (const TB &item) const
 Finds an item in a sorted list (binary search) using the T::== and T::< operators.
template<typename TB >
uint32_t findSortedDeref (const TB &item) const
 Finds an item in a sorted list (binary search) using the T::== and T::< operators on dereferenced list items.
void reverse (void)
 Reverse the order of the list, useful for sorted lists that are read/created in the reverse order.
void removeTail (const uint32_t count) XSENS_LIST_THROW
 Removes items from the end of the list.
void deleteAndRemoveTail (const uint32_t count) XSENS_LIST_THROW
void freeAndRemoveTail (const uint32_t count) XSENS_LIST_THROW
uint32_t find (const T item, InequalityFunction fnc) const
 Finds an item in an unsorted list (walk over all items) using the given inequality function.
void deleteItemsOnDestroy (void)
void freeItemsOnDestroy (void)
uint32_t removeDuplicateEntries (void)
 Removes any duplicate entries and returns the number of items removed. Items are compared directly.
uint32_t removeDuplicateEntriesDeref (void)
 Removes any duplicate entries and returns the number of items removed. Items are compared after dereferencing.
template<typename TB >
void isDeepCopyOf (const List< T > &source)
 Make a copy of the list, duplicating list items i with: copy[i] = new TB(*source[i]).
void isShallowCopyOf (const List< T > &source)
 Overwrites the current list with a direct copy (a=b) of another list.
const T * getBuffer (void) const
 Returns the start of the linear data buffer.

Protected Member Functions

 List (const uint32_t size, T *src, bool manage)
 Construct a list as a reference to a raw list.

Protected Attributes

T * m_data
 The array containing the items.
uint32_t m_max
 The current size of the data array.
uint32_t m_count
 The number of items currently in the list.
JanitorClassFunc< List< T > > * m_jcf
 Used to clean up the list on exit.
bool m_manage

Detailed Description

template<typename T>
class xsens::List< T >

Dynamic list class.

This class can store items of the given type. If the type supports the < operator it can also be sorted. Items in the list can be accessed through the [] operator or the get() function.

Do NOT use any item type that requires a constructor to work correctly. Pointers to these objects can work though.

Definition at line 74 of file xsens_list.h.


Member Typedef Documentation

template<typename T>
typedef int32_t(* xsens::List< T >::cmpFunc)(const T &, const T &)

A comparison function type, should return -1, 0 or 1 for <, == and >

Definition at line 95 of file xsens_list.h.

template<typename T>
typedef int32_t(__cdecl * xsens::List< T >::InequalityFunction)(const T &, const T &)

Type for an equality compare function, should return true when NOT equal.

Definition at line 185 of file xsens_list.h.


Constructor & Destructor Documentation

template<typename T >
xsens::List< T >::List ( const uint32_t  size,
T *  src,
bool  manage 
) [inline, protected]

Construct a list as a reference to a raw list.

Definition at line 259 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_jcf, and xsens::List< T >::m_max.

template<typename T >
xsens::List< T >::List (  )  [inline]

Standard constructor, creates an empty list with some room for items.

Definition at line 209 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_jcf, and xsens::List< T >::m_max.

template<typename T >
xsens::List< T >::List ( const uint32_t  size  )  [inline]

Construct a list with a capacity of at least the given size.

Definition at line 219 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_jcf, and xsens::List< T >::m_max.

template<typename T >
xsens::List< T >::List ( const List< T > &  src  )  [inline]

Construct a list as a direct copy of another list.

Definition at line 231 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_jcf, and xsens::List< T >::m_max.

template<typename T >
xsens::List< T >::List ( const uint32_t  size,
const T *  src 
) [inline]

Construct a list as a copy of a raw list.

Definition at line 245 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_jcf, and xsens::List< T >::m_max.

template<typename T >
xsens::List< T >::~List (  )  [inline]

Destroy the list. This does NOT automatically delete items IN the list.

Definition at line 269 of file xsens_list.h.

References xsens::List< T >::m_data, and xsens::List< T >::m_jcf.


Member Function Documentation

template<typename T >
void xsens::List< T >::append ( const T &  item  )  [inline]
template<typename T >
template<typename TB >
void xsens::List< T >::appendCopy ( const TB &  item  )  [inline]

Adds a copy of a referenced item to the end of the list using newItem = new TB(item).

Definition at line 358 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
void xsens::List< T >::appendDeepCopy ( const List< T > &  source  )  [inline]

Adds the contents of the source list to the end of the list.

Definition at line 337 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
void xsens::List< T >::appendList ( uint32_t  count,
const T *  lst 
) [inline]

Adds a number of items to the end of the list.

Definition at line 328 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
template<typename TR >
void xsens::List< T >::appendRelated ( const TR &  item  )  [inline]

Adds a related item to the end of the list, using the T = TR operator.

Definition at line 367 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
void xsens::List< T >::appendShallowCopy ( const List< T > &  source  )  [inline]

Adds the contents of the source list to the end of the list.

Definition at line 347 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
void xsens::List< T >::clear ( void   )  [inline]

Clears the list without explicitly deleting anything.

Definition at line 296 of file xsens_list.h.

References xsens::List< T >::m_count.

template<typename T >
void xsens::List< T >::deleteAndClear ( void   )  [inline]

Calls delete for all items in the list and then clears the list.

Definition at line 280 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::deleteAndRemove ( const uint32_t  index  )  [inline]

Removes an item at the given index in the list.

Definition at line 819 of file xsens_list.h.

References m_count.

template<typename T >
uint32_t xsens::List< T >::find ( const T  item,
InequalityFunction  fnc 
) const [inline]

Finds an item in an unsorted list (walk over all items) using the given inequality function.

Definition at line 865 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
template<typename TB >
uint32_t xsens::List< T >::find ( const TB &  item  )  const [inline]

Finds an item in an unsorted list (walk over all items) using the T::== operator.

Definition at line 856 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

Referenced by xsens::List< T >::findSorted().

template<typename T >
template<typename TB >
uint32_t xsens::List< T >::findDeref ( const TB &  item  )  const [inline]

Finds an item in an unsorted list (walk over all items) using the T::== operator on dereferenced list items.

Definition at line 875 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

Referenced by xsens::List< T >::findSortedDeref().

template<typename T >
template<typename TB >
uint32_t xsens::List< T >::findSorted ( const TB &  item  )  const [inline]

Finds an item in a sorted list (binary search) using the T::== and T::< operators.

Definition at line 885 of file xsens_list.h.

References xsens::List< T >::find(), xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
template<typename TB >
uint32_t xsens::List< T >::findSortedDeref ( const TB &  item  )  const [inline]

Finds an item in a sorted list (binary search) using the T::== and T::< operators on dereferenced list items.

Definition at line 910 of file xsens_list.h.

References xsens::List< T >::findDeref(), xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::freeAndClear ( void   )  [inline]

Calls free for all items in the list and then clears the list.

Definition at line 288 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::freeAndRemove ( const uint32_t  index  )  [inline]

Removes an item at the given index in the list.

Definition at line 837 of file xsens_list.h.

References m_count.

template<typename T >
T & xsens::List< T >::get ( const uint32_t  index  )  const [inline]

Retrieves the item at the given index. An index beyond the end returns the first item.

Definition at line 385 of file xsens_list.h.

References m_count.

template<typename T>
const T* xsens::List< T >::getBuffer ( void   )  const [inline]

Returns the start of the linear data buffer.

Definition at line 204 of file xsens_list.h.

References xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::insert ( const T &  item,
const uint32_t  index 
) [inline]

Inserts an item at the given index, shifting any items below it down one spot.

Definition at line 397 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

Referenced by xsens::List< T >::insertSorted(), and xsens::List< T >::insertSortedDeref().

template<typename T >
template<typename TB >
void xsens::List< T >::insertCopy ( const TB &  item,
const uint32_t  index 
) [inline]

Inserts a copy of the referenced item at the given index, shifting any items below it down one spot.

Definition at line 412 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
uint32_t xsens::List< T >::insertSorted ( const T &  item  )  [inline]

Assumes the list is sorted and inserts the item at the appropriate spot.

Definition at line 934 of file xsens_list.h.

References xsens::List< T >::append(), xsens::List< T >::insert(), xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
template<typename TB >
uint32_t xsens::List< T >::insertSortedCopy ( const TB &  item  )  [inline]

Assumes the list is sorted and inserts a copy of the referenced item at the appropriate spot.

Definition at line 1013 of file xsens_list.h.

References xsens::List< T >::append(), xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
uint32_t xsens::List< T >::insertSortedDeref ( const T &  item  )  [inline]

Assumes the list is sorted by dereferenced values and inserts the item at the appropriate spot.

Definition at line 973 of file xsens_list.h.

References xsens::List< T >::append(), xsens::List< T >::insert(), xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
template<typename TB >
void xsens::List< T >::isDeepCopyOf ( const List< T > &  source  )  [inline]

Make a copy of the list, duplicating list items i with: copy[i] = new TB(*source[i]).

Definition at line 1075 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
void xsens::List< T >::isShallowCopyOf ( const List< T > &  source  )  [inline]

Overwrites the current list with a direct copy (a=b) of another list.

Definition at line 1086 of file xsens_list.h.

References xsens::List< T >::m_count, xsens::List< T >::m_data, xsens::List< T >::m_max, and xsens::List< T >::resize().

template<typename T >
T & xsens::List< T >::last ( void   )  const [inline]

Retrieves the last item.

Definition at line 375 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T>
uint32_t xsens::List< T >::length ( void   )  const [inline]

Returns the number of items currently in the list.

Definition at line 157 of file xsens_list.h.

References xsens::List< T >::m_count.

template<typename T >
T & xsens::List< T >::operator[] ( const uint32_t  index  )  const [inline]

Retrieves the item at the given index. An index beyond the end probably causes an exception.

Definition at line 426 of file xsens_list.h.

References m_count.

template<typename T >
void xsens::List< T >::remove ( const uint32_t  index  )  [inline]

Removes an item at the given index in the list.

Definition at line 717 of file xsens_list.h.

References m_count.

template<typename T >
uint32_t xsens::List< T >::removeDuplicateEntries ( void   )  [inline]

Removes any duplicate entries and returns the number of items removed. Items are compared directly.

Definition at line 781 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
uint32_t xsens::List< T >::removeDuplicateEntriesDeref ( void   )  [inline]

Removes any duplicate entries and returns the number of items removed. Items are compared after dereferencing.

Definition at line 800 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::removeTail ( const uint32_t  count  )  [inline]

Removes items from the end of the list.

Definition at line 734 of file xsens_list.h.

References m_count.

template<typename T >
void xsens::List< T >::resize ( uint32_t  newSize  )  [inline]
template<typename T >
void xsens::List< T >::reverse ( void   )  [inline]

Reverse the order of the list, useful for sorted lists that are read/created in the reverse order.

Definition at line 1109 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::sortAscending ( void   )  [inline]

Sorts the list in an ascending order, using the T::< operator.

Definition at line 503 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::sortAscendingDeref ( void   )  [inline]

Sorts the list in an ascending order, using the T::< operator on dereferenced list items.

Definition at line 591 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.

template<typename T >
void xsens::List< T >::swap ( const uint32_t  i,
const uint32_t  j 
) [inline]

Swaps two items in the list.

Definition at line 1097 of file xsens_list.h.

References m_count.

template<typename T >
template<typename T2 >
void xsens::List< T >::twinSortAscending ( List< T2 > &  twin  )  [inline]

Sorts the first list in an ascending order, using the T::< operator, the second list will be updated the same way.

Definition at line 680 of file xsens_list.h.

References xsens::List< T >::m_count, and xsens::List< T >::m_data.


Member Data Documentation

template<typename T>
uint32_t xsens::List< T >::m_count [protected]
template<typename T>
T* xsens::List< T >::m_data [protected]
template<typename T>
JanitorClassFunc<List<T> >* xsens::List< T >::m_jcf [protected]

Used to clean up the list on exit.

Definition at line 87 of file xsens_list.h.

Referenced by xsens::List< T >::List(), and xsens::List< T >::~List().

template<typename T>
uint32_t xsens::List< T >::m_max [protected]

The documentation for this class was generated from the following file:
Generated on Sun May 8 08:44:46 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3