Prototype of copy/paste of reservoir case

p4#: 20962
This commit is contained in:
Magne Sjaastad
2013-03-19 09:55:17 +01:00
parent 5860cb2e49
commit 051710b82f
6 changed files with 261 additions and 50 deletions

View File

@@ -72,6 +72,34 @@ void PdmObjectGroup::addObject(PdmObject * obj)
objects.push_back(obj);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmObjectGroup::initAfterReadTraversal(PdmObject* object)
{
if (object == NULL) return;
std::vector<PdmFieldHandle*> fields;
object->fields(fields);
std::vector<PdmObject*> children;
size_t fIdx;
for (fIdx = 0; fIdx < fields.size(); ++fIdx)
{
if (fields[fIdx]) fields[fIdx]->childObjects(&children);
}
size_t cIdx;
for (cIdx = 0; cIdx < children.size(); ++cIdx)
{
PdmObjectGroup::initAfterReadTraversal(children[cIdx]);
if (children[cIdx]) children[cIdx]->initAfterRead();
}
object->initAfterRead();
}
CAF_PDM_SOURCE_INIT(PdmDocument, "PdmDocument");
@@ -157,29 +185,6 @@ void PdmDocument::writeFile(QIODevice* xmlFile)
xmlStream.writeEndDocument();
}
void PdmDocument::initAfterReadTraversal(PdmObject* object)
{
if (object == NULL) return;
std::vector<PdmFieldHandle*> fields;
object->fields(fields);
std::vector<PdmObject*> children;
size_t fIdx;
for (fIdx = 0; fIdx < fields.size(); ++fIdx)
{
if (fields[fIdx]) fields[fIdx]->childObjects(&children);
}
size_t cIdx;
for (cIdx = 0; cIdx < children.size(); ++cIdx)
{
PdmDocument::initAfterReadTraversal(children[cIdx]);
if (children[cIdx]) children[cIdx]->initAfterRead();
}
object->initAfterRead();
}
void PdmDocument::setupBeforeSaveTraversal(PdmObject * object)
{

View File

@@ -44,6 +44,8 @@ public:
void removeNullPtrs();
void addObject(PdmObject * obj);
static void initAfterReadTraversal(PdmObject * root);
template <typename T>
void objectsByType(std::vector<PdmPointer<T> >* typedObjects ) const
{
@@ -115,7 +117,6 @@ class PdmDocument: public PdmObjectGroup
void writeFile(QIODevice* device);
private:
static void initAfterReadTraversal(PdmObject * root);
static void setupBeforeSaveTraversal(PdmObject * root);
};