MeVisLabToolboxReference
ml::ListTemplate< T > Class Template Reference

Basic list class template combining properties of ListBase and a vector of the template argument type. More...

#include <mlListBase.h>

Inheritance diagram for ml::ListTemplate< T >:
ml::ListBase ml::Base ml::BaseListTemplate< T > ml::VecListTemplate< T >

List of all members.

Public Types

typedef T itemType
 Declare type name for item type (this allows declarations like: ObjectList::itemType obj)

Public Member Functions

Constructors
 ListTemplate ()
 Standard constructor, disables persistence.
 ListTemplate (bool persistance)
 Special constructor to explicitly enable/disable persistence.
Abstract list access
virtual size_t getSize () const
 Get number of list elements.
virtual void clearList ()
 Clear complete list.
ListTemplate< T > & operator= (const ListTemplate< T > &list)
 Assignment operator.
virtual ListTemplate< T > * clone () const
 Create a copy of (*this) using the ML runtime system and the '='-operator.
virtual ListTemplate< T > * deepCopy () const
 Create a deep copy of the list.
List persistence
virtual char * getPersistentState () const
 Return a string representation of the list object.
virtual void setPersistentState (const char *state)
 Initialize the list object from the string state.
virtual void clearPersistentState (char *state) const
 Dispose the string state, which has been previously obtained by getPersistentState()
virtual void addStateToTree (TreeNode *parent) const
 Attaches the state as children of the given parent node.
 ML_SET_ADDSTATE_VERSION (2)
 Set addState version number, version 2 indicates data saved by a 64 bit version.
virtual void readStateFromTree (TreeNode *parent)
 Reads the object state from the children of the given parent node.

Protected Member Functions

List item persistence

To implement persistence, overload getItemState() and setItemState().

Make sure that the string returned by getItemState() can be disposed by clearItemState(), or otherwise overload clearItemState() appropriately. The item's string representation may contain any character, including those used in the list string syntax: [],"\. The list persistence methods take care of quoting the item strings if necessary.

virtual char * getItemState (typename ListTemplate< T >::const_iterator) const
 Return a string representation of the item object.
virtual void setItemState (typename ListTemplate< T >::iterator, const char *)
 Initialize the item object from the string state.
virtual void clearItemState (typename ListTemplate< T >::iterator, char *state) const
 Dispose the string state, which has been previously obtained by getItemState()

Detailed Description

template<class T>
class ml::ListTemplate< T >

Basic list class template combining properties of ListBase and a vector of the template argument type.

Basic list class template (derived from ListBase and std::vector) combining properties of ListBase and a vector of the template argument type. Implements persistence methods that iterate through the vector items and call corresponding persistence methods for each item.

To implement an instance of ListTemplate with a given type T, the following steps are necessary:

  • Derive a subclass from the template instance class ListTemplate<T>
  • Use the ML_CLASS_HEADER and ML_CLASS_SOURCE macros to implement the runtime type system for this class. In the ML_CLASS_SOURCE macro, use ListBase in the base class argument.
  • If persistence is desired for the new class, make sure to initialize the base class with ListTemplate<T>(true) in the constructor of the new class.
  • If desired, implement persistence for the item class T by overloading getItemState() and setItemState(). Make sure that the string returned by getItemState() can be disposed by deleteString(), or otherwise overload clearItemState() appropriately.
  • IMPORTANT: Make sure that the item class T has proper copy constructor and assignment operator (these are used by the STL).

Definition at line 312 of file mlListBase.h.


Member Typedef Documentation

template<class T>
typedef T ml::ListTemplate< T >::itemType

Declare type name for item type (this allows declarations like: ObjectList::itemType obj)

Definition at line 318 of file mlListBase.h.


Constructor & Destructor Documentation

template<class T>
ml::ListTemplate< T >::ListTemplate ( ) [inline]

Standard constructor, disables persistence.

Definition at line 325 of file mlListBase.h.

template<class T>
ml::ListTemplate< T >::ListTemplate ( bool  persistance) [inline]

Special constructor to explicitly enable/disable persistence.

Definition at line 328 of file mlListBase.h.


Member Function Documentation

template<class T >
void ml::ListTemplate< T >::addStateToTree ( TreeNode parent) const [virtual]

Attaches the state as children of the given parent node.

BE SURE TO INCREASE THE VERSION NUMBER IN THE DECLARATION AND ADAPT readStateFromTree() TO THE NEW VERSION WHILE KEEPING IT DOWNWARD- COMPATIBLE!

Reimplemented from ml::ListBase.

Reimplemented in ml::BaseListTemplate< T >, ml::BaseListTemplate< BaseItem >, ml::BaseListTemplate< BaseContainerItem >, and ml::BaseListTemplate< XMarker >.

Definition at line 540 of file mlListBase.h.

References ml::TreeNode::addChild(), ML_ADDSTATE_SUPER, ML_ADDSTATE_VERSION, and ML_DELETE_ARRAY.

template<class T>
virtual void ml::ListTemplate< T >::clearItemState ( typename ListTemplate< T >::iterator  ,
char *  state 
) const [inline, protected, virtual]

Dispose the string state, which has been previously obtained by getItemState()

Reimplemented in ml::BaseListTemplate< T >, ml::BaseListTemplate< BaseItem >, ml::BaseListTemplate< BaseContainerItem >, and ml::BaseListTemplate< XMarker >.

Definition at line 420 of file mlListBase.h.

template<class T>
virtual void ml::ListTemplate< T >::clearList ( ) [inline, virtual]
template<class T>
virtual void ml::ListTemplate< T >::clearPersistentState ( char *  state) const [inline, virtual]

Dispose the string state, which has been previously obtained by getPersistentState()

Reimplemented from ml::Base.

Definition at line 380 of file mlListBase.h.

Referenced by ml::BaseListTemplate< XMarker >::clearItemState().

template<class T >
ListTemplate< T > * ml::ListTemplate< T >::clone ( void  ) const [virtual]

Create a copy of (*this) using the ML runtime system and the '='-operator.

Create a copy of (*this) using the ML runtime system.

Overwrite in derived classes if copying the list is not equivalent to copying the object (for instance, if the derived class has a global list description member). Returns NULL if a copy could not be created, or the cloned list otherwise.

Reimplemented from ml::ListBase.

Definition at line 650 of file mlListBase.h.

References ml::RuntimeType::canCreateInstance(), and ml::RuntimeType::createInstance().

template<class T>
virtual ListTemplate<T>* ml::ListTemplate< T >::deepCopy ( ) const [inline, virtual]

Create a deep copy of the list.

Reimplemented from ml::ListBase.

Reimplemented in ml::BaseList.

Definition at line 363 of file mlListBase.h.

template<class T>
virtual char* ml::ListTemplate< T >::getItemState ( typename ListTemplate< T >::const_iterator  ) const [inline, protected, virtual]

Return a string representation of the item object.

The string is allocated on the heap and is later disposed by clearItemState().

Reimplemented in ml::BaseListTemplate< T >, ml::BaseListTemplate< BaseItem >, ml::BaseListTemplate< BaseContainerItem >, and ml::BaseListTemplate< XMarker >.

Definition at line 411 of file mlListBase.h.

template<class T >
char * ml::ListTemplate< T >::getPersistentState ( ) const [virtual]

Return a string representation of the list object.

The string is allocated on the heap and is later disposed by clearPersistentState().

Reimplemented from ml::Base.

Definition at line 436 of file mlListBase.h.

Referenced by ml::BaseListTemplate< XMarker >::getItemState().

template<class T>
virtual size_t ml::ListTemplate< T >::getSize ( ) const [inline, virtual]

Get number of list elements.

Implements ml::ListBase.

Definition at line 337 of file mlListBase.h.

Referenced by ml::VecListTemplate< T >::getItemState(), and ml::VecListTemplate< T >::setItemState().

template<class T>
ml::ListTemplate< T >::ML_SET_ADDSTATE_VERSION ( )

Set addState version number, version 2 indicates data saved by a 64 bit version.

template<class T>
ListTemplate<T>& ml::ListTemplate< T >::operator= ( const ListTemplate< T > &  list) [inline]

Assignment operator.

Definition at line 346 of file mlListBase.h.

template<class T >
void ml::ListTemplate< T >::readStateFromTree ( TreeNode parent) [virtual]
template<class T>
virtual void ml::ListTemplate< T >::setItemState ( typename ListTemplate< T >::iterator  ,
const char *   
) [inline, protected, virtual]

Initialize the item object from the string state.

Reimplemented in ml::BaseListTemplate< T >, ml::BaseListTemplate< BaseItem >, ml::BaseListTemplate< BaseContainerItem >, and ml::BaseListTemplate< XMarker >.

Definition at line 415 of file mlListBase.h.

template<class T >
void ml::ListTemplate< T >::setPersistentState ( const char *  state) [virtual]

Initialize the list object from the string state.

Reimplemented from ml::Base.

Definition at line 491 of file mlListBase.h.

References ml::ListParser::getErrorMessage(), ml::ListParser::init(), ML_EMPTY_MESSAGE, ML_PRINT_ERROR, ml::ListParser::nextItemString(), and T.

Referenced by ml::BaseListTemplate< XMarker >::setItemState().


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