MeVisLab Toolbox Reference
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< BaseItem > ml::BaseListTemplate< BaseContainerItem > ml::BaseListTemplate< XMarker > ml::VecListTemplate< Vector6 > ml::VecListTemplate< Vector3 > ml::VecListTemplate< vec6i > ml::VecListTemplate< Vector4 > ml::VecListTemplate< vec3i > ml::VecListTemplate< vec4i > ml::BaseListTemplate< T > ml::VecListTemplate< T >

Public Types

typedef T itemType
 Declare type name for item type (this allows declarations like: ObjectList::itemType obj) More...
 
- Public Types inherited from ml::ListBase
enum  ActionClass {
  ActNone = 0 , ActUnknown , ActNew , ActSelect ,
  ActModify , ActDelete , ActInsert , ActInsertOvw ,
  ActNumActions
}
 Constants to describe the type of action most recently performed. More...
 
- Public Types inherited from ml::Base
enum  PersistenceInterface { PersistenceByString , PersistenceByTreeNode , PersistenceByStream }
 This enum describes the different persistence interfaces available. More...
 

Public Member Functions

Constructors
 ListTemplate ()
 Standard constructor, disables persistence. More...
 
 ListTemplate (bool persistance)
 Special constructor to explicitly enable/disable persistence. More...
 
 ListTemplate (const ListTemplate &other)
 
Abstract list access
size_t getSize () const override
 Get number of list elements. More...
 
void clearList () override
 Clear complete list. More...
 
ListTemplate< T > & operator= (const ListTemplate< T > &list)
 Assignment operator. More...
 
ListTemplate< T > * clone () const override
 Create a copy of (*this) using the ML runtime system and the '='-operator. More...
 
ListTemplate< T > * deepCopy () const override
 Create a deep copy of the list. More...
 
- Public Member Functions inherited from ml::ListBase
 ListBase (bool persistance)
 Constructor. Derived class should indicate whether persistence is implemented. More...
 
 ListBase (const ListBase &other)
 
virtual BaseItemgetItemAt (MLssize_t)
 This virtual function is reimplemented in BaseListTemplate<T>, where it actually returns the item at the given index. More...
 
virtual const BaseItemgetConstItemAt (MLssize_t) const
 Same as getItemAt(MLssize_t index) for constant access. More...
 
virtual void insertItemAt (MLssize_t, const BaseItem *)
 This virtual function is reimplemented in BaseListTemplate<T>, where it actually inserts the item at the given index. More...
 
virtual void modifyItemAt (MLssize_t, const BaseItem *)
 This virtual function is reimplemented in BaseListTemplate<T>, where it actually modifies the item at the given index. More...
 
virtual void deleteItemAt (MLssize_t)
 This virtual function is reimplemented in BaseListTemplate<T>, where it actually deletes the item at the given index. More...
 
virtual void selectItemAt (MLssize_t)
 This virtual function is reimplemented in BaseListTemplate<T>, where it actually selects the item at the given index. More...
 
virtual const RuntimeTypegetItemTypeId () const
 This virtual function is reimplemented in BaseListTemplate<T>, where it actually returns the item class' type id. More...
 
virtual void setAction (ActionClass actionClass, MLssize_t id, MLssize_t index)
 Set actionClass, affected item id and index. More...
 
virtual void setAction (ActionClass actionClass)
 Set actionClass for actions affecting the whole list. More...
 
virtual void getAction (ActionClass &actionClass, MLssize_t &id, MLssize_t &index) const
 Get actionClass, affected item id and index. More...
 
virtual ActionClass getActionClass () const
 Get actionClass of last action. More...
 
virtual MLssize_t getActionId () const
 Get id of item affected by last action. More...
 
virtual MLssize_t getActionIndex () const
 Get index of item affected by last action. More...
 
virtual MLssize_t getCurrentIndex () const
 Get index of currently selected item, or -1 if no item selected. More...
 
virtual bool isModified () const
 Tests, if the last action has been an action that has modified the content of the list. More...
 
virtual bool hasPersistance () const
 Test if persistence is available and enabled. More...
 
virtual void setPersistance (bool persistance)
 Enable/disable persistence functionality. More...
 
 ML_SET_ADDSTATE_VERSION (0)
 Set addState version number. More...
 
- Public Member Functions inherited from ml::Base
 Base ()
 Constructor. More...
 
virtual ~Base ()
 Destructor. More...
 
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
 Check if this object's type is equal to or derived from one of the types given in the argument. More...
 
virtual bool isRefCountedBase () const
 Returns if the instance is derived from RefCountedBase. More...
 
virtual std::string detailString () const
 Return a string describing this object. More...
 
virtual bool implementsPersistence (PersistenceInterface) const
 Override this method to declare which persistence interfaces are implemented by your derived class. More...
 
virtual void writeTo (AbstractPersistenceOutputStream *) const
 Write the objects state to the data stream object. More...
 
virtual void readFrom (AbstractPersistenceInputStream *, int)
 Read the objects state from the data stream object. More...
 

List persistence

Return a string representation of the list object.

std::string persistentState () const override
 Returns a string describing the object's internal state. More...
 
void setPersistentState (const std::string &state) override
 Initialize the list object from the string state. More...
 
void addStateToTree (TreeNode *parent) const override
 Attaches the state as children of the given parent node. More...
 
 ML_SET_ADDSTATE_VERSION (2)
 Set addState version number, version 2 indicates data saved by a 64 bit version. More...
 
void readStateFromTree (TreeNode *parent) override
 Reads the object state from the children of the given parent node. More...
 

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 std::string itemState (typename ListTemplate< T >::const_iterator it) const
 Return a string representation of the item object. More...
 
virtual void setItemState (typename ListTemplate< T >::iterator, const std::string &)
 Initialize the item object from the string state. More...
 

Additional Inherited Members

- Static Public Attributes inherited from ml::ListBase
static const char *const ActionClassNames [ActNumActions]
 Action class name constants. More...
 
- Protected Member Functions inherited from ml::ListBase
char * newString (const std::string &str) const
 Convenience method to create a copy of the string str allocated on the heap. More...
 
void deleteString (char *str) const
 Dispose a string allocated with newString() More...
 
ListBaseoperator= (const ListBase &list)
 Assignment operator, used in derived list classes. More...
 
- Protected Member Functions inherited from ml::Base

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 311 of file mlListBase.h.

Member Typedef Documentation

◆ itemType

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 317 of file mlListBase.h.

Constructor & Destructor Documentation

◆ ListTemplate() [1/3]

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

Standard constructor, disables persistence.

Definition at line 324 of file mlListBase.h.

◆ ListTemplate() [2/3]

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

Special constructor to explicitly enable/disable persistence.

Definition at line 327 of file mlListBase.h.

◆ ListTemplate() [3/3]

template<class T >
ml::ListTemplate< T >::ListTemplate ( const ListTemplate< T > &  other)
inline

Definition at line 329 of file mlListBase.h.

Member Function Documentation

◆ addStateToTree()

template<class T >
void ml::ListTemplate< T >::addStateToTree ( TreeNode parent) const
overridevirtual

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 578 of file mlListBase.h.

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

◆ clearList()

template<class T >
void ml::ListTemplate< T >::clearList ( )
inlineoverridevirtual

◆ clone()

template<class T >
ListTemplate< T > * ml::ListTemplate< T >::clone ( void  ) const
overridevirtual

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 670 of file mlListBase.h.

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

◆ deepCopy()

template<class T >
ListTemplate<T>* ml::ListTemplate< T >::deepCopy ( ) const
inlineoverridevirtual

Create a deep copy of the list.

Reimplemented from ml::ListBase.

Definition at line 364 of file mlListBase.h.

◆ getSize()

template<class T >
size_t ml::ListTemplate< T >::getSize ( ) const
inlineoverridevirtual

Get number of list elements.

Implements ml::ListBase.

Definition at line 338 of file mlListBase.h.

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

◆ itemState()

template<class T >
virtual std::string ml::ListTemplate< T >::itemState ( typename ListTemplate< T >::const_iterator  it) const
inlineprotectedvirtual

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 >.

Definition at line 437 of file mlListBase.h.

◆ ML_SET_ADDSTATE_VERSION()

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

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

◆ operator=()

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

Assignment operator.

Definition at line 347 of file mlListBase.h.

◆ persistentState()

template<class T >
std::string ml::ListTemplate< T >::persistentState ( ) const
overridevirtual

Returns a string describing the object's internal state.

Reimplemented from ml::Base.

Definition at line 481 of file mlListBase.h.

Referenced by ml::BaseListTemplate< T >::getItemState(), and ml::BaseListTemplate< T >::itemState().

◆ readStateFromTree()

template<class T >
void ml::ListTemplate< T >::readStateFromTree ( TreeNode parent)
overridevirtual

Reads the object state from the children of the given parent node.

Reimplemented from ml::ListBase.

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

Definition at line 606 of file mlListBase.h.

References ML_READCHILD_OPTIONAL, ML_READSTATE_SUPER, T, and ml::TNE_UnsupportedClassVersion.

◆ setItemState()

template<class T >
virtual void ml::ListTemplate< T >::setItemState ( typename ListTemplate< T >::iterator  ,
const std::string &   
)
inlineprotectedvirtual

Initialize the item object from the string state.

Reimplemented in ml::BaseListTemplate< T >.

Definition at line 448 of file mlListBase.h.

◆ setPersistentState()

template<class T >
void ml::ListTemplate< T >::setPersistentState ( const std::string &  state)
overridevirtual

Initialize the list object from the string state.

Reimplemented from ml::Base.

Definition at line 533 of file mlListBase.h.

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

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


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