Model::Ptr Model::clone(const std::string& newname) const { NodeMap map; Model::Ptr result(new Model()); if (newname.empty()) { result->id = id; } else { result->id = newname; } result->root = root->clone(map); //this populates map with Old Node -> New Node entries for (Controller *obj: controllers) { result->addController(obj->clone(map)); } for (Renderable *obj: renderables) { result->addRenderable(obj->clone(map)); } for (const auto& entry: nodes) { result->addNamedNode(entry.first, map.get(entry.second)); } result->shape = shape; return result; }
DOMNode* ScriptInterpreter::getDOMNodeForDocument(Document* document, Node* node) { if (!document) return static_cast<DOMNode*>(domObjects().get(node)); NodeMap* documentDict = domNodesPerDocument().get(document); if (documentDict) return documentDict->get(node); return NULL; }