Visual Servoing Platform  version 3.3.0 under development (2020-02-17)
vpList< type > Class Template Reference

#include <visp3/core/vpList.h>

Public Member Functions

 vpList ()
 
 vpList (const vpList &l)
 
virtual ~vpList ()
 
void next (void)
 
void previous (void)
 
void front (void)
 
void end (void)
 
bool outside (void) const
 
bool empty (void) const
 
type & value (void)
 
const type & value (void) const
 
void suppress (void)
 
void kill ()
 
void display ()
 
void print ()
 
void addRight (const type &el)
 
void addLeft (const type &el)
 
void modify (const type &el)
 
void addRight (type &el)
 
void addLeft (type &el)
 
void swapLeft ()
 
void swapRight ()
 
unsigned int nbElement (void)
 
unsigned int nbElements (void)
 
vpList< type > & operator= (const vpList< type > &l)
 
void operator+= (vpList< type > &l)
 
void operator+= (const type &l)
 
bool nextOutside (void) const
 
bool previousOutside (void) const
 
type & previousValue (void)
 
type & nextValue (void)
 
type & firstValue (void)
 
type & lastValue (void)
 

Public Attributes

unsigned int nb
 
vpListElement< type > * first
 
vpListElement< type > * last
 
vpListElement< type > * cur
 

Detailed Description

template<class type>
class vpList< type >

Provide simple list management.

Data structure:
  each object vpListElement contains its own value and
  two pointers to the next element of the list and to the previous one

  A list is mainly a pointer to three of these elements
    - one (cur) points the current element
    - one (first) points to a virtual element located at the
      beginning of the list
    - one (last) points  to a virtual element located at the
      end of the list

    first, last and cur are used internally and are not to be considered
    by "basic" user.

Notation:
  In this documentation we note such a list as
        [*, a, b, c, *]
         f     ^     l
  where
   - the * are the two virtual elements (first (f) and last (l))
   - the ^ denotes the position of the current element

Definition at line 113 of file vpList.h.

Constructor & Destructor Documentation

◆ vpList() [1/2]

template<class type >
vpList< type >::vpList ( )

Basic constructor, initialization, Create an empty list.

init() --> [*, *]
See also
init()

Definition at line 219 of file vpList.h.

◆ vpList() [2/2]

template<class type >
vpList< type >::vpList ( const vpList< type > &  l)

copy constructor

Parameters
l: the list to copy

Definition at line 682 of file vpList.h.

◆ ~vpList()

template<class type >
vpList< type >::~vpList ( )
virtual

vpList destructor

See also
kill()

Definition at line 225 of file vpList.h.

References vpList< type >::first, vpList< type >::kill(), and vpList< type >::last.

Member Function Documentation

◆ addLeft() [1/2]

template<class type >
void vpList< type >::addLeft ( const type &  v)
inline

add a new element in the list, at the left of the current one

Warning
the new element becomes the current one
[*, a, b, c, *]  --> addLeft(i) -->   [*, a, i, b, c, *]
       ^                                     ^

Definition at line 425 of file vpList.h.

References vpList< type >::cur, vpList< type >::empty(), vpList< type >::last, vpList< type >::nb, and vpList< type >::outside().

◆ addLeft() [2/2]

template<class type >
void vpList< type >::addLeft ( type &  v)
inline

add a new element in the list, at the left of the current one

Warning
the new element becomes the current one
[*, a, b, c, *]  --> addLeft(i) -->   [*, a, i, b, c, *]
       ^                                     ^

Definition at line 484 of file vpList.h.

References vpList< type >::cur, vpList< type >::empty(), vpList< type >::last, vpList< type >::nb, and vpList< type >::outside().

◆ addRight() [1/2]

template<class type >
void vpList< type >::addRight ( const type &  v)
inline

add a new element in the list, at the right of the current one

Warning
the new element becomes the current one
[*, a, b, c, *]  --> addRight(i) -->   [*, a, b, i, c, *]
       ^                                         ^

Definition at line 396 of file vpList.h.

References vpList< type >::cur, vpList< type >::empty(), vpList< type >::first, vpList< type >::nb, and vpList< type >::outside().

Referenced by vpList< type >::operator+=(), and vpList< type >::operator=().

◆ addRight() [2/2]

template<class type >
void vpList< type >::addRight ( type &  v)
inline

add a new element in the list, at the right of the current one

Warning
the new element becomes the current one
[*, a, b, c, *]  --> addRight(i) -->   [*, a, b, i, c, *]
       ^                                         ^

Definition at line 455 of file vpList.h.

References vpList< type >::cur, vpList< type >::empty(), vpList< type >::first, vpList< type >::nb, and vpList< type >::outside().

◆ display()

template<class type >
void vpList< type >::display ( )

Print (std::cout) all the element of the list.

Definition at line 691 of file vpList.h.

References vpList< type >::front(), vpList< type >::next(), vpList< type >::outside(), and vpList< type >::value().

◆ empty()

template<class type >
bool vpList< type >::empty ( void  ) const

Test if the list is empty.

[*, a, b, c, d, *]  --> empty return false
[*, *]              --> empty return true

Definition at line 343 of file vpList.h.

References vpList< type >::first, and vpList< type >::last.

Referenced by vpList< type >::addLeft(), vpList< type >::addRight(), and vpList< type >::kill().

◆ end()

template<class type >
void vpList< type >::end ( void  )
inline

Position the current element on the last element of the list.

[*, a, b, c, d, *]  --> end() --> [*, a, b, c, d, *]
       ^                                         ^

Definition at line 333 of file vpList.h.

References vpList< type >::cur, and vpList< type >::last.

Referenced by vpList< type >::operator+=().

◆ firstValue()

template<class type >
type & vpList< type >::firstValue ( void  )

return the first element of the list

 [*, a, b, c, d, *]  --> firstValue() return a

Definition at line 306 of file vpList.h.

References vpList< type >::first.

◆ front()

template<class type >
void vpList< type >::front ( void  )
inline

Position the current element on the first element of the list.

[*, a, b, c, d, *]  --> front() --> [*, a, b, c, d, *]
       ^                                ^

Definition at line 323 of file vpList.h.

References vpList< type >::cur, and vpList< type >::first.

Referenced by vpList< type >::display(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), vpList< type >::kill(), vpList< type >::operator+=(), and vpList< type >::operator=().

◆ kill()

template<class type >
void vpList< type >::kill ( )

Destroy the list.

[*, a, b, c, *]  --> kill -->   [*, *]
       ^                            ^

Definition at line 582 of file vpList.h.

References vpList< type >::empty(), vpList< type >::front(), and vpList< type >::suppress().

Referenced by vpList< type >::operator=(), and vpList< type >::~vpList().

◆ lastValue()

template<class type >
type & vpList< type >::lastValue ( void  )

return the last element of the list

 [*, a, b, c, d, *]  --> lastValue() return d

Definition at line 313 of file vpList.h.

References vpList< type >::last.

◆ modify()

template<class type >
void vpList< type >::modify ( const type &  v)
inline

Modify the value of the current element.

[*, a, b, c, *]  --> modify(i) -->   [*, a, i, c, *]
       ^                                    ^

Definition at line 512 of file vpList.h.

References vpList< type >::cur.

◆ nbElement()

template<class type >
unsigned int vpList< type >::nbElement ( void  )
inline

return the number of element in the list

Definition at line 236 of file vpList.h.

References vpList< type >::nb.

◆ nbElements()

template<class type >
unsigned int vpList< type >::nbElements ( void  )
inline

return the number of element in the list

Definition at line 241 of file vpList.h.

References vpList< type >::nb.

◆ next()

template<class type >
void vpList< type >::next ( void  )
inline

position the current element on the next one

[*, a, b, c, d, *] --> next() -->   [*, a, b, c, d, *]
       ^                                      ^

Definition at line 250 of file vpList.h.

References vpList< type >::cur.

Referenced by vpList< type >::display(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), and vpList< type >::operator+=().

◆ nextOutside()

template<class type >
bool vpList< type >::nextOutside ( void  ) const

Test if the next element is outside the list (ie if the current element is the last one)

[*, a, b, c, d, *]  --> nextOutside return true
             ^

Definition at line 367 of file vpList.h.

References vpList< type >::cur, vpList< type >::first, and vpList< type >::last.

◆ nextValue()

template<class type >
type & vpList< type >::nextValue ( void  )

return the value of the next element

[*, a, b, c, d, *]  --> nextValue() return c
       ^

Definition at line 298 of file vpList.h.

References vpList< type >::cur.

◆ operator+=() [1/2]

template<class type >
void vpList< type >::operator+= ( vpList< type > &  l)
inline

Append two lists.

[*, a, b, *] += [*, c, d, *] --> [*, a, b, c, d, *]
                                              ^

Definition at line 650 of file vpList.h.

References vpList< type >::addRight(), vpList< type >::end(), vpList< type >::front(), vpList< type >::next(), vpList< type >::outside(), and vpList< type >::value().

◆ operator+=() [2/2]

template<class type >
void vpList< type >::operator+= ( const type &  l)
inline

Append an element to a list.

[*, a, b, *] += c --> [*, a, b, c, *]
                                ^

Definition at line 671 of file vpList.h.

References vpList< type >::addRight(), and vpList< type >::end().

◆ operator=()

template<class type >
vpList< type > & vpList< type >::operator= ( const vpList< type > &  l)

Copy constructor const.

Parameters
l: the list to copy

Definition at line 622 of file vpList.h.

References vpList< type >::addRight(), vpList< type >::cur, vpList< type >::first, vpList< type >::front(), vpList< type >::kill(), vpList< type >::last, and vpList< type >::nb.

◆ outside()

template<class type >
bool vpList< type >::outside ( void  ) const
inline

Test if the current element is outside the list (on the virtual element)

[*, a, b, c, d, *]  --> outside return false
       ^
[*, a, b, c, d, *]  --> outside return true
 ^      or      ^

Definition at line 356 of file vpList.h.

References vpList< type >::cur, vpList< type >::first, and vpList< type >::last.

Referenced by vpList< type >::addLeft(), vpList< type >::addRight(), vpList< type >::display(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), and vpList< type >::operator+=().

◆ previous()

template<class type >
void vpList< type >::previous ( void  )
inline

position the current element on the previous one

[*, a, b, c, d, *] --> previous() -->   [*, a, b, c, d, *]
       ^                                ^

Definition at line 259 of file vpList.h.

References vpList< type >::cur.

◆ previousOutside()

template<class type >
bool vpList< type >::previousOutside ( void  ) const

Test if the previous element is outside the list (ie if the current element is the firts one)

[*, a, b, c, d, *]  --> nextOutside return true
    ^

Definition at line 381 of file vpList.h.

References vpList< type >::cur, vpList< type >::first, and vpList< type >::last.

◆ previousValue()

template<class type >
type & vpList< type >::previousValue ( void  )

return the value of the previous element

[*, a, b, c, *]  --> previousValue() return a
       ^

Definition at line 289 of file vpList.h.

References vpList< type >::cur.

◆ print()

template<class type>
void vpList< type >::print ( )
inline

Definition at line 164 of file vpList.h.

◆ suppress()

template<class type >
void vpList< type >::suppress ( void  )

suppress the current element

Warning
new current element is on the next one
[*, a, b, c, d, *] --> suppress -->  [*, a, c, d, *]
       ^                                    ^

Definition at line 601 of file vpList.h.

References vpList< type >::cur, and vpList< type >::nb.

Referenced by vpList< type >::kill().

◆ swapLeft()

template<class type >
void vpList< type >::swapLeft ( )
inline

Switch the current element with the element on the left.

[*, a, b, c, *]  --> swapLeft -->   [*, b, a, c, *]
       ^                                  ^

Definition at line 522 of file vpList.h.

References vpList< type >::cur, and vpList< type >::first.

◆ swapRight()

template<class type >
void vpList< type >::swapRight ( )
inline

Switch the current element with the element on the right.

[*, a, b, c, *]  --> swapRight -->   [*, a, c, b, *]
       ^                                         ^

Definition at line 552 of file vpList.h.

References vpList< type >::cur, and vpList< type >::last.

◆ value() [1/2]

template<class type >
type & vpList< type >::value ( void  )
inline

return the value of the current element

[*, a, b, c, *]  --> value() return b
       ^

Definition at line 269 of file vpList.h.

References vpList< type >::cur.

Referenced by vpList< type >::display(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), and vpList< type >::operator+=().

◆ value() [2/2]

template<class type >
const type & vpList< type >::value ( void  ) const
inline

return the value of the current element using a const ref.

[*, a, b, c, *]  --> value() return b
       ^

Definition at line 279 of file vpList.h.

References vpList< type >::cur.

Member Data Documentation

◆ cur

◆ first

template<class type>
vpListElement<type>* vpList< type >::first

◆ last

◆ nb