2015-07-29 07:19:43 -05:00
|
|
|
namespace caf
|
|
|
|
{
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
caf::PdmPtrField<DataType*>::PdmPtrField(const DataTypePtr& fieldValue)
|
|
|
|
{
|
2016-06-19 09:15:39 -05:00
|
|
|
m_isResolved = true;
|
2015-07-29 07:19:43 -05:00
|
|
|
m_fieldValue = fieldValue;
|
|
|
|
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
caf::PdmPtrField<DataType*>::~PdmPtrField()
|
|
|
|
{
|
|
|
|
if (!m_fieldValue.isNull()) m_fieldValue.rawPtr()->removeReferencingPtrField(this);
|
|
|
|
m_fieldValue.setRawPtr(NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
void PdmPtrField<DataType*>::setValue(const DataTypePtr& fieldValue)
|
|
|
|
{
|
2017-03-08 01:19:51 -06:00
|
|
|
CAF_ASSERT(isInitializedByInitFieldMacro());
|
2016-05-31 04:28:54 -05:00
|
|
|
|
2015-07-29 07:19:43 -05:00
|
|
|
if (m_fieldValue) m_fieldValue->removeReferencingPtrField(this);
|
|
|
|
m_fieldValue = fieldValue;
|
|
|
|
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
void PdmPtrField<DataType*>::setRawPtr(PdmObjectHandle* obj)
|
|
|
|
{
|
2017-03-08 01:19:51 -06:00
|
|
|
CAF_ASSERT(isInitializedByInitFieldMacro());
|
2016-05-31 04:28:54 -05:00
|
|
|
|
2015-07-29 07:19:43 -05:00
|
|
|
if (m_fieldValue.notNull()) m_fieldValue.rawPtr()->removeReferencingPtrField(this);
|
|
|
|
m_fieldValue.setRawPtr(obj);
|
|
|
|
if (m_fieldValue.notNull()) m_fieldValue.rawPtr()->addReferencingPtrField(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
caf::PdmPtrField<DataType*>& PdmPtrField<DataType*>::operator=(const DataTypePtr & fieldValue)
|
|
|
|
{
|
2017-03-08 01:19:51 -06:00
|
|
|
CAF_ASSERT(isInitializedByInitFieldMacro());
|
2016-05-31 04:28:54 -05:00
|
|
|
|
2015-07-29 07:19:43 -05:00
|
|
|
if (m_fieldValue) m_fieldValue->removeReferencingPtrField(this);
|
|
|
|
m_fieldValue = fieldValue;
|
|
|
|
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
caf::PdmPtrField<DataType*>& PdmPtrField<DataType*>::operator=(const FieldDataType & fieldValue)
|
|
|
|
{
|
2017-03-08 01:19:51 -06:00
|
|
|
CAF_ASSERT(isInitializedByInitFieldMacro());
|
2016-05-31 04:28:54 -05:00
|
|
|
|
2015-07-29 07:19:43 -05:00
|
|
|
if (m_fieldValue) m_fieldValue->removeReferencingPtrField(this);
|
|
|
|
m_fieldValue = fieldValue;
|
|
|
|
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
2015-08-06 00:35:52 -05:00
|
|
|
|
2015-07-29 07:19:43 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
template<typename DataType >
|
|
|
|
void PdmPtrField<DataType*>::ptrReferencedObjects(std::vector<PdmObjectHandle*>* objectsToFill)
|
|
|
|
{
|
|
|
|
if (m_fieldValue.rawPtr())
|
|
|
|
{
|
|
|
|
objectsToFill->push_back(m_fieldValue.rawPtr());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} // End of namespace caf
|
|
|
|
|