Public Member Functions | Static Public Member Functions | Protected Attributes

vtkObjectSet Class Reference

#include <vtkObjectSet.h>

List of all members.

Public Member Functions

 vtkObjectSet ()
virtual ~vtkObjectSet ()
void AddObserver (vtkObjectObserver *observer)
void RemoveObserver (vtkObjectObserver *observer)
void AddObject (vtkObject *obj)
void RemoveObject (vtkObject *obj)

Static Public Member Functions

static void OnObjectModified (vtkObject *, unsigned long eid, void *clientdata, void *)

Protected Attributes

std::set< vtkObjectObserver * > m_vtkObjectObservers
std::set< const vtkObject * > m_Objects
std::map< const vtkObject
*, unsigned long > 
m_ObjectModifiedTags
 Holds all tags of Modified Event Listeners.
std::map< const vtkObject
*, unsigned long > 
m_ObjectDeleteTags
 Holds all tags of Modified Event Listeners.

Detailed Description

a class holding a list of itk objects and/or vtk objects. the main idea of the class is that it listens to the modified and delete events of the objects and informs associated objectobservers. This eases the handling of the sometimes complicated event handling mechanisms.

Definition at line 21 of file vtkObjectSet.h.


Constructor & Destructor Documentation

vtkObjectSet::vtkObjectSet (  )

Definition at line 8 of file vtkObjectSet.cpp.

{
}
vtkObjectSet::~vtkObjectSet (  ) [virtual]

Definition at line 12 of file vtkObjectSet.cpp.

{

}

Member Function Documentation

void vtkObjectSet::AddObject ( vtkObject *  obj )

Definition at line 27 of file vtkObjectSet.cpp.

References m_ObjectDeleteTags, m_ObjectModifiedTags, m_Objects, and OnObjectModified().

{
  // if add object, add observer for modified and delete event
  std::pair<std::set<const vtkObject *>::iterator, bool> res = m_Objects.insert(obj);

  if(res.second)
  {
    vtkSmartPointer<vtkCallbackCommand> modifiedCallback =
        vtkSmartPointer<vtkCallbackCommand>::New();
    modifiedCallback->SetCallback ( vtkObjectSet::OnObjectModified );
    modifiedCallback->SetClientData(this);

    m_ObjectModifiedTags[obj] = obj->AddObserver
                                 ( vtkCommand::ModifiedEvent, modifiedCallback );
    m_ObjectDeleteTags[obj] = obj->AddObserver
                                 ( vtkCommand::DeleteEvent, modifiedCallback );
  }
}
void vtkObjectSet::AddObserver ( vtkObjectObserver observer )

Definition at line 17 of file vtkObjectSet.cpp.

References m_vtkObjectObservers.

{
  m_vtkObjectObservers.insert(observer);
}
void vtkObjectSet::OnObjectModified ( vtkObject *  caller,
unsigned long  eid,
void *  clientdata,
void *   
) [static]

vtk event function

Definition at line 61 of file vtkObjectSet.cpp.

References m_vtkObjectObservers, and RemoveObject().

Referenced by AddObject().

{
  // if event == modified event, inform objectobservers
  // else: call RemoveObject() or remove objectobserver and inform objectobservers

  vtkObjectSet* instance = static_cast<vtkObjectSet*>( clientdata );

  for(std::set<vtkObjectObserver*>::iterator it = instance->m_vtkObjectObservers.begin();
    it != instance->m_vtkObjectObservers.end(); ++it)
    eid == vtkCommand::ModifiedEvent ? (*it)->OnModified( caller ):
        (*it)->OnDeleted( caller );

  if(eid != vtkCommand::ModifiedEvent)
    instance->RemoveObject( caller );
}
void vtkObjectSet::RemoveObject ( vtkObject *  obj )

Definition at line 46 of file vtkObjectSet.cpp.

References m_ObjectDeleteTags, m_ObjectModifiedTags, and m_Objects.

Referenced by OnObjectModified().

{
  // if object removed, remove observer and tags for modified and delete event
  std::set<const vtkObject *>::size_type deletedObjs = m_Objects.erase(obj);

  if(deletedObjs > 0)
  {
    obj->RemoveObserver(m_ObjectModifiedTags[obj]);
    obj->RemoveObserver(m_ObjectDeleteTags[obj]);

    m_ObjectModifiedTags.erase(obj);
    m_ObjectDeleteTags.erase(obj);
  }
}
void vtkObjectSet::RemoveObserver ( vtkObjectObserver observer )

Definition at line 22 of file vtkObjectSet.cpp.

References m_vtkObjectObservers.

{
  m_vtkObjectObservers.erase(observer);
}

Member Data Documentation

std::map<const vtkObject *, unsigned long> vtkObjectSet::m_ObjectDeleteTags [protected]

Holds all tags of Modified Event Listeners.

Definition at line 48 of file vtkObjectSet.h.

Referenced by AddObject(), and RemoveObject().

std::map<const vtkObject *, unsigned long> vtkObjectSet::m_ObjectModifiedTags [protected]

Holds all tags of Modified Event Listeners.

Definition at line 44 of file vtkObjectSet.h.

Referenced by AddObject(), and RemoveObject().

std::set<const vtkObject*> vtkObjectSet::m_Objects [protected]

Definition at line 40 of file vtkObjectSet.h.

Referenced by AddObject(), and RemoveObject().

Definition at line 39 of file vtkObjectSet.h.

Referenced by AddObserver(), OnObjectModified(), and RemoveObserver().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines