[kgraphviewer-devel] [kgraphviewer/libkgraphviz] src/kgraphviz: Return pointers to added graph elements
Kevin Funk
krf at electrostorm.net
Fri Jan 28 18:55:25 CET 2011
Git commit 1751ecad642c7d26fd7bef46b6af1d9e3e1d38b0 by Kevin Funk.
Pushed by kfunk into branch 'libkgraphviz'.
Return pointers to added graph elements
M +26 -23 src/kgraphviz/dotgraph.cpp
M +7 -7 src/kgraphviz/dotgraph.h
M +1 -2 src/kgraphviz/graphsubgraph.cpp
M +1 -1 src/kgraphviz/graphsubgraph.h
http://commits.kde.org/9c7b74a4/1751ecad642c7d26fd7bef46b6af1d9e3e1d38b0
diff --git a/src/kgraphviz/dotgraph.cpp b/src/kgraphviz/dotgraph.cpp
index bf07cef..0e97aa3 100644
--- a/src/kgraphviz/dotgraph.cpp
+++ b/src/kgraphviz/dotgraph.cpp
@@ -836,16 +836,16 @@ void DotGraph::setAttribute(const QString& elementId, const QString& attributeNa
GraphElement* DotGraph::elementNamed(const QString& id) const
{
Q_D(const DotGraph);
- GraphElement* ret = 0;
- if ((ret = d->m_nodesMap.value(id, 0))) {
- return ret;
+ GraphElement* graphElement = 0;
+ if (graphElement = d->m_nodesMap.value(id, 0)) {
+ return graphElement;
}
- if ((ret = d->m_edgesMap.value(id, 0))) {
- return ret;
+ if (graphElement = d->m_edgesMap.value(id, 0)) {
+ return graphElement;
}
- foreach(GraphSubgraph* subGraph, subgraphs()) {
- if ((ret = subGraph->elementNamed(id))) {
- return ret;
+ foreach(const GraphSubgraph* subGraph, subgraphs()) {
+ if ((graphElement = subGraph->elementNamed(id))) {
+ return graphElement;
}
}
return 0;
@@ -858,8 +858,7 @@ GraphNode* DotGraph::nodeNamed(const QString& id) const
if ((ret = d->m_nodesMap.value(id, 0))) {
return ret;
}
- foreach(GraphSubgraph* subGraph, subgraphs()) {
- GraphNode* node = 0;
+ foreach(const GraphSubgraph* subGraph, subgraphs()) {
if ((ret = dynamic_cast<GraphNode*>(subGraph->elementNamed(id)))) {
return ret;
}
@@ -873,58 +872,61 @@ void DotGraph::setGraphAttributes(const QMap<QString,QString>& attribs)
attributes() = attribs;
}
-void DotGraph::addNewNode(const QString& id)
+GraphNode* DotGraph::addNewNode(const QString& id)
{
QMap<QString, QString> attribs;
attribs["id"] = id;
- addNewNode(attribs);
+ return addNewNode(attribs);
}
-void DotGraph::addNewNode(const QMap<QString,QString>& attribs)
+GraphNode* DotGraph::addNewNode(const QMap<QString,QString>& attribs)
{
kDebug() << attribs;
GraphNode* newNode = new GraphNode();
newNode->attributes() = attribs;
nodes().insert(newNode->id(), newNode);
kDebug() << "node added as" << newNode->id();
+ return newNode;
}
-void DotGraph::addNewSubgraph(const QString& id)
+GraphSubgraph* DotGraph::addNewSubgraph(const QString& id)
{
QMap<QString, QString> attribs;
attribs["id"] = id;
- addNewSubgraph(attribs);
+ return addNewSubgraph(attribs);
}
-void DotGraph::addNewSubgraph(const QMap<QString,QString>& attribs)
+GraphSubgraph* DotGraph::addNewSubgraph(const QMap<QString,QString>& attribs)
{
kDebug() << attribs;
GraphSubgraph* newSG = new GraphSubgraph();
newSG->attributes() = attribs;
subgraphs()[newSG->id()] = newSG;
kDebug() << "subgraph added as" << newSG->id();
+ return newSG;
}
-void DotGraph::addNewNodeToSubgraph(const QString& id, const QString& subgraph)
+GraphNode* DotGraph::addNewNodeToSubgraph(const QString& id, const QString& subgraph)
{
QMap<QString, QString> attribs;
attribs["id"] = id;
- addNewNodeToSubgraph(attribs, subgraph);
+ return addNewNodeToSubgraph(attribs, subgraph);
}
-void DotGraph::addNewNodeToSubgraph(const QMap<QString,QString>& attribs,
+GraphNode* DotGraph::addNewNodeToSubgraph(const QMap<QString,QString>& attribs,
const QString& subgraph)
{
kDebug() << attribs << "to" << subgraph;
if (!subgraphs().contains(subgraph)) {
kWarning() << "Invalid subgraph:" << subgraph;
- return;
+ return 0;
}
GraphNode* newNode = new GraphNode();
newNode->attributes() = attribs;
subgraphs()[subgraph]->content().push_back(newNode);
kDebug() << "node added as" << newNode->id() << "in" << subgraph;
+ return newNode;
}
void DotGraph::addExistingNodeToSubgraph(const QMap<QString,QString>& attribs,
@@ -1008,7 +1010,7 @@ void DotGraph::moveExistingNodeToMainGraph(const QMap<QString,QString>& attribs)
}
}
-void DotGraph::addNewEdge(const QString& sourceState,
+GraphEdge* DotGraph::addNewEdge(const QString& sourceState,
const QString& targetState,
const QMap<QString,QString>& attribs)
{
@@ -1028,8 +1030,8 @@ void DotGraph::addNewEdge(const QString& sourceState,
if (srcElement == 0 || tgtElement == 0)
{
- kError() << sourceState << "or" << targetState << "missing";
- return;
+ kWarning() << sourceState << "or" << targetState << "missing";
+ return 0;
}
if (attribs.contains("id"))
{
@@ -1042,6 +1044,7 @@ void DotGraph::addNewEdge(const QString& sourceState,
newEdge->setFromNode(srcElement);
newEdge->setToNode(tgtElement);
edges().insert(newEdge->id(), newEdge);
+ return newEdge;
}
void DotGraph::removeElementAttribute(const QString& nodeName, const QString& attribName)
diff --git a/src/kgraphviz/dotgraph.h b/src/kgraphviz/dotgraph.h
index 8e81232..70393cb 100644
--- a/src/kgraphviz/dotgraph.h
+++ b/src/kgraphviz/dotgraph.h
@@ -108,16 +108,16 @@ public:
void setGraphAttributes(const QMap<QString,QString>& attribs); // TODO: Redundant, GraphElement already has setter
- void addNewNode(const QString& id);
- void addNewNode(const QMap<QString,QString>& attribs);
- void addNewSubgraph(const QString& id);
- void addNewSubgraph(const QMap<QString,QString>& attribs);
- void addNewNodeToSubgraph(const QString& id, const QString& subgraph);
- void addNewNodeToSubgraph(const QMap<QString,QString>& attribs, const QString& subgraph);
+ GraphNode* addNewNode(const QString& id);
+ GraphNode* addNewNode(const QMap<QString,QString>& attribs);
+ GraphSubgraph* addNewSubgraph(const QString& id);
+ GraphSubgraph* addNewSubgraph(const QMap<QString,QString>& attribs);
+ GraphNode* addNewNodeToSubgraph(const QString& id, const QString& subgraph);
+ GraphNode* addNewNodeToSubgraph(const QMap<QString,QString>& attribs, const QString& subgraph);
void addExistingNodeToSubgraph(const QMap<QString,QString>& attribs, const QString& subgraph);
void moveExistingNodeToMainGraph(const QMap<QString,QString>& attribs);
- void addNewEdge(const QString& sourceState, const QString& targetState, const QMap<QString,QString>& attribs = QMap<QString,QString>());
+ GraphEdge* addNewEdge(const QString& sourceState, const QString& targetState, const QMap<QString,QString>& attribs = QMap<QString,QString>());
void removeElementAttribute(const QString& nodeName, const QString& attribName);
void renameNode(const QString& oldNodeName, const QString& newNodeName);
void removeNodeNamed(const QString& nodeName);
diff --git a/src/kgraphviz/graphsubgraph.cpp b/src/kgraphviz/graphsubgraph.cpp
index 8e74518..b9de6ab 100644
--- a/src/kgraphviz/graphsubgraph.cpp
+++ b/src/kgraphviz/graphsubgraph.cpp
@@ -162,9 +162,8 @@ void GraphSubgraph::removeElement(GraphElement* element)
m_content.removeAll(element);
}
-GraphElement* GraphSubgraph::elementNamed(const QString& id)
+GraphElement* GraphSubgraph::elementNamed(const QString& id) const
{
- if (this->id() == id) return this;
foreach (GraphElement* element, content())
{
if (element->id() == id)
diff --git a/src/kgraphviz/graphsubgraph.h b/src/kgraphviz/graphsubgraph.h
index 6735183..f24da2d 100644
--- a/src/kgraphviz/graphsubgraph.h
+++ b/src/kgraphviz/graphsubgraph.h
@@ -64,7 +64,7 @@ public:
/// Recursively walk through this subgraph and its subsubgraphs to find an element named id
/// @return the node found or 0 if there is no such node
- GraphElement* elementNamed(const QString& id);
+ GraphElement* elementNamed(const QString& id) const;
/// Recursively walk through this subgraph and its subsubgraphs to make
More information about the kgraphviewer-devel
mailing list