mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Created infrastructure used to resolve references for ptrFields
This commit is contained in:
@@ -34,6 +34,7 @@ public:
|
||||
// Ptr referenced objects
|
||||
bool hasPtrReferencedObjects();
|
||||
virtual void ptrReferencedObjects(std::vector<PdmObjectHandle*>*) { }
|
||||
virtual void resolveReferences() { }
|
||||
|
||||
// Capabilities
|
||||
void addCapability(PdmFieldCapability* capability, bool takeOwnership) { m_capabilities.push_back(std::make_pair(capability, takeOwnership)); }
|
||||
|
||||
@@ -37,7 +37,7 @@ class PdmPtrField <DataType*> : public PdmFieldHandle
|
||||
public:
|
||||
typedef PdmPointer<DataType> FieldDataType;
|
||||
|
||||
PdmPtrField() { }
|
||||
PdmPtrField() { m_referenceString = ""; m_isResolved = false; }
|
||||
explicit PdmPtrField(const DataTypePtr& fieldValue);
|
||||
virtual ~PdmPtrField();
|
||||
|
||||
@@ -68,6 +68,7 @@ public:
|
||||
// Ptr referenced objects
|
||||
|
||||
virtual void ptrReferencedObjects(std::vector<PdmObjectHandle*>* objectsToFill);
|
||||
virtual void resolveReferences();
|
||||
|
||||
private:
|
||||
PDM_DISABLE_COPY_AND_ASSIGN(PdmPtrField);
|
||||
@@ -76,6 +77,10 @@ private:
|
||||
void setRawPtr(PdmObjectHandle* obj);
|
||||
|
||||
PdmPointer<DataType> m_fieldValue;
|
||||
|
||||
// Resolving
|
||||
QString m_referenceString;
|
||||
bool m_isResolved;
|
||||
};
|
||||
|
||||
} // End of namespace caf
|
||||
|
||||
@@ -100,5 +100,19 @@ void PdmPtrField<DataType*>::ptrReferencedObjects(std::vector<PdmObjectHandle*>*
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template<typename DataType >
|
||||
void PdmPtrField<DataType*>::resolveReferences()
|
||||
{
|
||||
if (m_isResolved) return;
|
||||
if (m_referenceString.isEmpty()) return;
|
||||
|
||||
PdmObjectHandle* objHandle = PdmReferenceHelper::objectFromFieldReference(this, m_referenceString);
|
||||
this->setRawPtr(objHandle);
|
||||
m_isResolved = true;
|
||||
}
|
||||
|
||||
} // End of namespace caf
|
||||
|
||||
|
||||
Reference in New Issue
Block a user