mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
caf: Added assert to guard against forgetting to add the fields using the init field macros
This commit is contained in:
parent
d90a6041aa
commit
286c434d3a
@ -40,6 +40,8 @@ DataType* PdmChildArrayField<DataType*>::operator[](size_t index) const
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::push_back(DataType* pointer)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
m_pointers.push_back(pointer);
|
||||
if (pointer) pointer->setAsParentField(this);
|
||||
}
|
||||
@ -51,6 +53,8 @@ void PdmChildArrayField<DataType*>::push_back(DataType* pointer)
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::set(size_t index, DataType* pointer)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_pointers[index]) m_pointers[index]->removeAsParentField(this);
|
||||
m_pointers[index] = pointer;
|
||||
if (m_pointers[index]) pointer->setAsParentField(this);
|
||||
@ -63,6 +67,8 @@ void PdmChildArrayField<DataType*>::set(size_t index, DataType* pointer)
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::insert(size_t index, DataType* pointer)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
m_pointers.insert(m_pointers.begin()+index, pointer);
|
||||
|
||||
if (pointer) pointer->setAsParentField(this);
|
||||
@ -76,6 +82,8 @@ void PdmChildArrayField<DataType*>::insert(size_t index, DataType* pointer)
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::insert(size_t index, const std::vector<PdmPointer<DataType> >& objects)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
m_pointers.insert(m_pointers.begin()+index, objects.begin(), objects.end());
|
||||
|
||||
typename std::vector< PdmPointer< DataType > >::iterator it;
|
||||
@ -114,6 +122,8 @@ size_t PdmChildArrayField<DataType*>::count(const DataType* pointer) const
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::clear()
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
this->removeThisAsParentField();
|
||||
m_pointers.clear();
|
||||
}
|
||||
@ -124,6 +134,8 @@ void PdmChildArrayField<DataType*>::clear()
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::deleteAllChildObjects()
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
size_t index;
|
||||
for (index = 0; index < m_pointers.size(); ++index)
|
||||
{
|
||||
@ -141,6 +153,8 @@ void PdmChildArrayField<DataType*>::deleteAllChildObjects()
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::erase(size_t index)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_pointers[index].rawPtr())
|
||||
{
|
||||
m_pointers[index].rawPtr()->removeAsParentField(this);
|
||||
@ -174,6 +188,8 @@ size_t PdmChildArrayField<DataType*>::index(DataType* pointer)
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::removeChildObject(PdmObjectHandle* object)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
std::vector< PdmPointer<DataType> > tempPointers;
|
||||
|
||||
tempPointers = m_pointers;
|
||||
@ -215,6 +231,8 @@ void PdmChildArrayField<DataType*>::childObjects(std::vector<PdmObjectHandle*>*
|
||||
template<typename DataType>
|
||||
void PdmChildArrayField<DataType*>::insertAt(int indexAfter, PdmObjectHandle* obj)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
// This method should assert if obj to insert is not castable to the container type, but since this
|
||||
// is a virtual method, its implementation is always created and that makes a dyn_cast add the need for
|
||||
// #include of the header file "everywhere"
|
||||
|
@ -47,7 +47,7 @@ public:
|
||||
// Access operators
|
||||
|
||||
/*Conversion*/ operator DataType* () const { return m_fieldValue; }
|
||||
DataType* operator->() const { return m_fieldValue; }
|
||||
DataType* operator->() const { return m_fieldValue; }
|
||||
|
||||
const PdmPointer<DataType>& operator()() const { return m_fieldValue; }
|
||||
const PdmPointer<DataType>& v() const { return m_fieldValue; }
|
||||
|
@ -67,6 +67,8 @@ caf::PdmChildField<DataType*>::~PdmChildField()
|
||||
template<typename DataType >
|
||||
caf::PdmChildField<DataType*>& PdmChildField<DataType*>::operator=(const DataTypePtr & fieldValue)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_fieldValue) m_fieldValue->removeAsParentField(this);
|
||||
m_fieldValue = fieldValue;
|
||||
if (m_fieldValue != NULL) m_fieldValue->setAsParentField(this);
|
||||
|
@ -42,6 +42,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include <QVariant>
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
namespace caf
|
||||
@ -66,18 +67,18 @@ public:
|
||||
|
||||
// Assignment
|
||||
|
||||
PdmDataValueField& operator= (const PdmDataValueField& other) { m_fieldValue = other.m_fieldValue; return *this; }
|
||||
PdmDataValueField& operator= (const DataType& fieldValue) { m_fieldValue = fieldValue; return *this; }
|
||||
PdmDataValueField& operator= (const PdmDataValueField& other) { assert(isInitializedByInitFieldMacro()); m_fieldValue = other.m_fieldValue; return *this; }
|
||||
PdmDataValueField& operator= (const DataType& fieldValue) { assert(isInitializedByInitFieldMacro()); m_fieldValue = fieldValue; return *this; }
|
||||
|
||||
// Basic access
|
||||
|
||||
DataType value() const { return m_fieldValue; }
|
||||
void setValue(const DataType& fieldValue) { m_fieldValue = fieldValue; }
|
||||
void setValue(const DataType& fieldValue) { assert(isInitializedByInitFieldMacro()); m_fieldValue = fieldValue; }
|
||||
|
||||
// Implementation of PdmValueField interface
|
||||
|
||||
virtual QVariant toQVariant() const { return PdmValueFieldSpecialization<DataType>::convert(m_fieldValue); }
|
||||
virtual void setFromQVariant(const QVariant& variant) { PdmValueFieldSpecialization<DataType>::setFromVariant(variant, m_fieldValue); }
|
||||
virtual QVariant toQVariant() const { assert(isInitializedByInitFieldMacro()); return PdmValueFieldSpecialization<DataType>::convert(m_fieldValue); }
|
||||
virtual void setFromQVariant(const QVariant& variant) { assert(isInitializedByInitFieldMacro()); PdmValueFieldSpecialization<DataType>::setFromVariant(variant, m_fieldValue); }
|
||||
virtual bool isReadOnly() const { return false; }
|
||||
|
||||
// Access operators
|
||||
|
@ -44,6 +44,9 @@ public:
|
||||
PdmUiFieldHandle* uiCapability();
|
||||
PdmXmlFieldHandle* xmlCapability();
|
||||
|
||||
protected:
|
||||
bool isInitializedByInitFieldMacro() const { return m_ownerObject != NULL; }
|
||||
|
||||
private:
|
||||
PDM_DISABLE_COPY_AND_ASSIGN(PdmFieldHandle);
|
||||
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
|
||||
// Basic access
|
||||
|
||||
void setValue(const DataType& fieldValue) { if (m_valueSetter) m_valueSetter->setValue(fieldValue); }
|
||||
void setValue(const DataType& fieldValue) { assert(isInitializedByInitFieldMacro()); if (m_valueSetter) m_valueSetter->setValue(fieldValue); }
|
||||
DataType value() const { assert(m_valueGetter); return m_valueGetter->getValue(); }
|
||||
|
||||
// Implementation of PdmValueField interface
|
||||
|
@ -54,7 +54,7 @@ public:
|
||||
// Access operators
|
||||
|
||||
/*Conversion*/ operator DataType* () const { return m_fieldValue; }
|
||||
DataType* operator->() const { return m_fieldValue; }
|
||||
DataType* operator->() const { return m_fieldValue; }
|
||||
|
||||
const PdmPointer<DataType>& operator()() const { return m_fieldValue; }
|
||||
const PdmPointer<DataType>& v() const { return m_fieldValue; }
|
||||
|
@ -28,6 +28,8 @@ caf::PdmPtrField<DataType*>::~PdmPtrField()
|
||||
template<typename DataType >
|
||||
void PdmPtrField<DataType*>::setValue(const DataTypePtr& fieldValue)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_fieldValue) m_fieldValue->removeReferencingPtrField(this);
|
||||
m_fieldValue = fieldValue;
|
||||
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
||||
@ -39,6 +41,8 @@ void PdmPtrField<DataType*>::setValue(const DataTypePtr& fieldValue)
|
||||
template<typename DataType >
|
||||
void PdmPtrField<DataType*>::setRawPtr(PdmObjectHandle* obj)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_fieldValue.notNull()) m_fieldValue.rawPtr()->removeReferencingPtrField(this);
|
||||
m_fieldValue.setRawPtr(obj);
|
||||
if (m_fieldValue.notNull()) m_fieldValue.rawPtr()->addReferencingPtrField(this);
|
||||
@ -51,6 +55,8 @@ void PdmPtrField<DataType*>::setRawPtr(PdmObjectHandle* obj)
|
||||
template<typename DataType >
|
||||
caf::PdmPtrField<DataType*>& PdmPtrField<DataType*>::operator=(const DataTypePtr & fieldValue)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_fieldValue) m_fieldValue->removeReferencingPtrField(this);
|
||||
m_fieldValue = fieldValue;
|
||||
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
||||
@ -65,6 +71,8 @@ caf::PdmPtrField<DataType*>& PdmPtrField<DataType*>::operator=(const DataTypePtr
|
||||
template<typename DataType >
|
||||
caf::PdmPtrField<DataType*>& PdmPtrField<DataType*>::operator=(const FieldDataType & fieldValue)
|
||||
{
|
||||
assert(isInitializedByInitFieldMacro());
|
||||
|
||||
if (m_fieldValue) m_fieldValue->removeReferencingPtrField(this);
|
||||
m_fieldValue = fieldValue;
|
||||
if (m_fieldValue != NULL) m_fieldValue->addReferencingPtrField(this);
|
||||
|
Loading…
Reference in New Issue
Block a user