15 mitk::SmartPointerProperty::ReferenceCountMapType mitk::SmartPointerProperty::m_ReferenceCount;
16 mitk::SmartPointerProperty::ReferencesUIDMapType mitk::SmartPointerProperty::m_ReferencesUID;
17 mitk::SmartPointerProperty::ReadInSmartPointersMapType mitk::SmartPointerProperty::m_ReadInInstances;
18 mitk::SmartPointerProperty::ReadInTargetsMapType mitk::SmartPointerProperty::m_ReadInTargets;
23 for (
auto iter = m_ReadInInstances.begin(); iter != m_ReadInInstances.end(); ++iter)
25 if (m_ReadInTargets.find(iter->second) != m_ReadInTargets.end())
27 iter->first->SetSmartPointer(m_ReadInTargets[iter->second]);
31 m_ReadInInstances.clear();
37 if (m_ReferenceCount.find(
object) != m_ReferenceCount.end())
39 return m_ReferenceCount[object];
49 m_ReadInTargets[uid] = object;
54 if (m_ReferencesUID.find(
object) != m_ReferencesUID.end())
56 return m_ReferencesUID[object];
60 return std::string(
"invalid");
64 bool mitk::SmartPointerProperty::IsEqual(
const BaseProperty &property)
const 69 bool mitk::SmartPointerProperty::Assign(
const BaseProperty &property)
107 if (pointer && ++m_ReferenceCount[pointer] == 1)
109 m_ReferencesUID[pointer] = m_UIDGenerator.
GetUID();
128 return std::string(
"nullptr");
131 itk::LightObject::Pointer mitk::SmartPointerProperty::InternalClone()
const 133 itk::LightObject::Pointer result(
new Self(*
this));
134 result->UnRegister();
static void PostProcessXMLReading()
itk::Object::Pointer ValueType
itk::Object::Pointer GetSmartPointer() const
Property containing a smart-pointer.
std::string GetValueAsString() const override
mainly for XML output
ValueType GetValue() const
SmartPointerProperty(itk::Object *=nullptr)
Abstract base class for properties.
static std::string GetReferenceUIDFor(itk::Object *)
SmartPointerProperty Self
static void RegisterPointerTarget(itk::Object *, const std::string uid)
itk::Object::Pointer m_SmartPointer
void SetValue(const ValueType &)
static unsigned int GetReferenceCountFor(itk::Object *)
Return the number of SmartPointerProperties that reference the object given as parameter.
void SetSmartPointer(itk::Object *)