#include <mitkSet.h>
Public Types | |
| typedef mitk::SetObserver< T > | Observer |
| typedef Set< T > | Self |
| typedef itk::Object | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
| virtual const char * | GetClassName () const |
| itkFactorylessNewMacro (Set< T >) | |
| Set () | |
| void | Copy (mitk::Set< T > *otherSet) |
| bool | Add (const T &obj) |
| bool | Remove (const T &obj) |
| bool | Remove (int index) |
| void | Clear () |
| unsigned int | GetSize () const |
| int | IndexOf (const T &obj) const |
| bool | Has (const T &obj) const |
| bool | IsEmpty () const |
| bool | IsValid (int index) const |
| T & | Front () |
| T & | Back () |
| T & | Get (unsigned int index) |
| const T & | Front () const |
| const T & | Back () const |
| const T & | Get (unsigned int index) const |
| void | AddObserver (SetObserver< T > *observer) const |
| void | RemoveObserver (SetObserver< T > *observer) const |
| void | OnObjectModified (const itk::Object *caller, const itk::EventObject &event) |
| Set (const Set< T > &other) | |
| Set< T > & | operator= (const Set< T > &other) |
| virtual | ~Set () |
Protected Attributes | |
| std::vector< T > | m_Objects |
| std::set< SetObserver< T > * > | m_SetObserver |
| std::map< const T, unsigned long > | m_ObjectModifiedTags |
| Holds all tags of Modified Event Listeners. | |
| std::map< const T, unsigned long > | m_ObjectDeleteTags |
| Holds all tags of Modified Event Listeners. | |
A class that acts like a weak pointer but for a list of itk objects
Definition at line 20 of file mitkSet.h.
| typedef itk::SmartPointer<const Self> mitk::Set< T >::ConstPointer |
| typedef mitk::SetObserver<T> mitk::Set< T >::Observer |
| typedef itk::Object mitk::Set< T >::Superclass |
| bool mitk::Set< T >::Add | ( | const T & | obj ) | [inline] |
Definition at line 43 of file mitkSet.h.
References mitk::Set< T >::Has(), mitk::Set< T >::m_ObjectDeleteTags, mitk::Set< T >::m_ObjectModifiedTags, mitk::Set< T >::m_Objects, and mitk::Set< T >::m_SetObserver.
Referenced by mitk::Set< T >::Copy(), and mitk::Set< T >::operator=().
{
if(this->Has(obj)) // this is a set! do not add twice
return false;
// add it now
m_Objects.push_back(obj); // if index is not valid any more, just add
// the element
// subscribe for modified event
typename itk::MemberCommand<mitk::Set<T> >::Pointer _modifiedCommand =
itk::MemberCommand<mitk::Set<T> >::New();
_modifiedCommand->SetCallbackFunction(this
, &Set<T>::OnObjectModified);
m_ObjectModifiedTags[obj] =
obj->AddObserver(itk::ModifiedEvent(), _modifiedCommand);
// subscribe for delete event
typename itk::MemberCommand<mitk::Set<T> >::Pointer _DeleteCommand =
itk::MemberCommand<mitk::Set<T> >::New();
_DeleteCommand->SetCallbackFunction(this
, &Set<T>::OnObjectModified);
m_ObjectDeleteTags[obj] =
obj->AddObserver(itk::DeleteEvent(), _DeleteCommand);
for(typename std::set<SetObserver<T>*>::iterator it = m_SetObserver.begin();
it != m_SetObserver.end(); ++it)
(*it)->OnAdded(obj);
this->Modified();
return true;
}
| void mitk::Set< T >::AddObserver | ( | SetObserver< T > * | observer ) | const [inline] |
Definition at line 168 of file mitkSet.h.
References mitk::Set< T >::m_SetObserver.
{
m_SetObserver.insert( observer );
}
| const T& mitk::Set< T >::Back | ( | ) | const [inline] |
Definition at line 160 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
{
return m_Objects.back();
}
| T& mitk::Set< T >::Back | ( | ) | [inline] |
Definition at line 148 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
{
return m_Objects.back();
}
| void mitk::Set< T >::Clear | ( | ) | [inline] |
Definition at line 103 of file mitkSet.h.
References mitk::Set< T >::m_Objects, and mitk::Set< T >::Remove().
Referenced by mitk::Set< T >::Copy(), and mitk::Set< T >::~Set().
clears this set, copies over all elements from otherSet
Definition at line 34 of file mitkSet.h.
References mitk::Set< T >::Add(), mitk::Set< T >::Clear(), mitk::Set< T >::Get(), and mitk::Set< T >::GetSize().
| const T& mitk::Set< T >::Front | ( | ) | const [inline] |
Definition at line 156 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
{
return m_Objects.front();
}
| T& mitk::Set< T >::Front | ( | ) | [inline] |
Definition at line 144 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
{
return m_Objects.front();
}
| const T& mitk::Set< T >::Get | ( | unsigned int | index ) | const [inline] |
Definition at line 164 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
{
return m_Objects.at(index);
}
| T& mitk::Set< T >::Get | ( | unsigned int | index ) | [inline] |
Definition at line 152 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
Referenced by mitk::Set< T >::Copy().
{
return m_Objects.at(index);
}
| virtual const char* mitk::Set< T >::GetClassName | ( | ) | const [virtual] |
| unsigned int mitk::Set< T >::GetSize | ( | ) | const [inline] |
Definition at line 109 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
Referenced by mitk::Set< T >::Copy().
{
return m_Objects.size();
}
| bool mitk::Set< T >::Has | ( | const T & | obj ) | const [inline] |
Definition at line 127 of file mitkSet.h.
References mitk::Set< T >::IndexOf().
Referenced by mitk::Set< T >::Add().
{
return this->IndexOf(obj) != -1;
}
| int mitk::Set< T >::IndexOf | ( | const T & | obj ) | const [inline] |
Definition at line 113 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
Referenced by mitk::Set< T >::Has(), and mitk::Set< T >::Remove().
| bool mitk::Set< T >::IsEmpty | ( | ) | const [inline] |
Definition at line 131 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
{
return m_Objects.empty();
}
| bool mitk::Set< T >::IsValid | ( | int | index ) | const [inline] |
Definition at line 135 of file mitkSet.h.
References mitk::Set< T >::m_Objects.
Referenced by mitk::Set< T >::Remove().
| void mitk::Set< T >::OnObjectModified | ( | const itk::Object * | caller, |
| const itk::EventObject & | event | ||
| ) | [inline] |
Definition at line 176 of file mitkSet.h.
References mitk::Set< T >::m_Objects, mitk::Set< T >::m_SetObserver, and mitk::Set< T >::Remove().
{
unsigned int i=0;
for(; i<m_Objects.size(); ++i)
if(m_Objects.at(i) == caller)
break;
const itk::DeleteEvent* delEvent
= dynamic_cast<const itk::DeleteEvent*>(&event);
// inform listeners
for(typename std::set<SetObserver<T>*>::iterator it = m_SetObserver.begin();
it != m_SetObserver.end(); ++it)
delEvent ? (*it)->OnDelete( this->Get(i) )
: (*it)->OnModified( this->Get(i) );
// remove from list if object was deleted (no dangling pointers)
if(delEvent)
{
this->Remove(i);
}
}
Definition at line 205 of file mitkSet.h.
References mitk::Set< T >::Add().
{
// do not simply copy -> because of observer objects
// instead: use add method for each element of the other List
for(int i=0; i<other.GetSize(); ++i)
this->Add( other.Get(i) );
return *this;
}
| bool mitk::Set< T >::Remove | ( | int | index ) | [inline] |
Definition at line 80 of file mitkSet.h.
References mitk::Set< T >::IsValid(), mitk::Set< T >::m_ObjectDeleteTags, mitk::Set< T >::m_ObjectModifiedTags, mitk::Set< T >::m_Objects, and mitk::Set< T >::m_SetObserver.
{
if( !this->IsValid(index) ) // element must exist to be removed
return false;
typename std::vector<T>::iterator it = m_Objects.begin();
std::advance(it, index);
T& obj = *it;
for(typename std::set<SetObserver<T>*>::iterator it2
= m_SetObserver.begin(); it2 != m_SetObserver.end(); ++it2)
(*it2)->OnRemove(*it);
// remove it now
obj->RemoveObserver(m_ObjectModifiedTags[obj]);
obj->RemoveObserver(m_ObjectDeleteTags[obj]);
m_ObjectModifiedTags.erase(obj);
m_ObjectDeleteTags.erase(obj);
m_Objects.erase(it);
this->Modified();
return true;
}
| bool mitk::Set< T >::Remove | ( | const T & | obj ) | [inline] |
Definition at line 75 of file mitkSet.h.
References mitk::Set< T >::IndexOf().
Referenced by mitk::Set< T >::Clear(), and mitk::Set< T >::OnObjectModified().
| void mitk::Set< T >::RemoveObserver | ( | SetObserver< T > * | observer ) | const [inline] |
Definition at line 172 of file mitkSet.h.
References mitk::Set< T >::m_SetObserver.
{
m_SetObserver.erase( observer );
}
std::map<const T, unsigned long> mitk::Set< T >::m_ObjectDeleteTags [protected] |
Holds all tags of Modified Event Listeners.
Definition at line 237 of file mitkSet.h.
Referenced by mitk::Set< T >::Add(), and mitk::Set< T >::Remove().
std::map<const T, unsigned long> mitk::Set< T >::m_ObjectModifiedTags [protected] |
Holds all tags of Modified Event Listeners.
Definition at line 232 of file mitkSet.h.
Referenced by mitk::Set< T >::Add(), and mitk::Set< T >::Remove().
Holds all objects
Definition at line 222 of file mitkSet.h.
Referenced by mitk::Set< T >::Add(), mitk::Set< T >::Back(), mitk::Set< T >::Clear(), mitk::Set< T >::Front(), mitk::Set< T >::Get(), mitk::Set< T >::GetSize(), mitk::Set< T >::IndexOf(), mitk::Set< T >::IsEmpty(), mitk::Set< T >::IsValid(), mitk::Set< T >::OnObjectModified(), and mitk::Set< T >::Remove().
std::set<SetObserver<T>*> mitk::Set< T >::m_SetObserver [mutable, protected] |
holds the list of observed itk objects (will be updated in setat())
Definition at line 227 of file mitkSet.h.
Referenced by mitk::Set< T >::Add(), mitk::Set< T >::AddObserver(), mitk::Set< T >::OnObjectModified(), mitk::Set< T >::Remove(), and mitk::Set< T >::RemoveObserver().
1.7.2