[kgraphviewer-devel] [kgraphviewer/libkgraphviz] src/kgraphviz: Add overloaded methods for graph manipulation

Kevin Funk krf at electrostorm.net
Thu Jan 27 15:10:44 CET 2011


Git commit c43badd0cd23149989686b9496b49d037a0ef953 by Kevin Funk.
Pushed by kfunk into branch 'libkgraphviz'.

Add overloaded methods for graph manipulation

Overload DotGraph::addNewNode, DotGraph::addNewSubgraph, etc. to just
have an ID as parameter.

M  +37   -13   src/kgraphviz/dotgraph.cpp     
M  +12   -8    src/kgraphviz/dotgraph.h     

http://commits.kde.org/9c7b74a4/c43badd0cd23149989686b9496b49d037a0ef953

diff --git a/src/kgraphviz/dotgraph.cpp b/src/kgraphviz/dotgraph.cpp
index b659a9b..897039d 100644
--- a/src/kgraphviz/dotgraph.cpp
+++ b/src/kgraphviz/dotgraph.cpp
@@ -860,14 +860,20 @@ GraphNode* DotGraph::nodeNamed(const QString& id) const
   return 0;
 }
 
-void DotGraph::setGraphAttributes(QMap<QString,QString> attribs)
+void DotGraph::setGraphAttributes(const QMap<QString,QString>& attribs)
 {
   kDebug() << attribs;
   attributes() = attribs;
 }
 
+void DotGraph::addNewNode(const QString& id)
+{
+  QMap<QString, QString> attribs;
+  attribs["id"] = id;
+  addNewNode(attribs);
+}
 
-void DotGraph::addNewNode(QMap<QString,QString> attribs)
+void DotGraph::addNewNode(const QMap<QString,QString>& attribs)
 {
   kDebug() << attribs;
   GraphNode* newNode = new GraphNode();
@@ -876,7 +882,14 @@ void DotGraph::addNewNode(QMap<QString,QString> attribs)
   kDebug() << "node added as" << newNode->id();
 }
 
-void DotGraph::addNewSubgraph(QMap<QString,QString> attribs)
+void DotGraph::addNewSubgraph(const QString& id)
+{
+  QMap<QString, QString> attribs;
+  attribs["id"] = id;
+  addNewSubgraph(attribs);
+}
+
+void DotGraph::addNewSubgraph(const QMap<QString,QString>& attribs)
 {
   kDebug() << attribs;
   GraphSubgraph* newSG = new GraphSubgraph();
@@ -885,7 +898,15 @@ void DotGraph::addNewSubgraph(QMap<QString,QString> attribs)
   kDebug() << "subgraph added as" << newSG->id();
 }
 
-void DotGraph::addNewNodeToSubgraph(QMap<QString,QString> attribs, QString subgraph)
+void DotGraph::addNewNodeToSubgraph(const QString& id, const QString& subgraph)
+{
+  QMap<QString, QString> attribs;
+  attribs["id"] = id;
+  addNewNodeToSubgraph(attribs, subgraph);
+}
+
+void DotGraph::addNewNodeToSubgraph(const QMap<QString,QString>& attribs,
+                                    const QString& subgraph)
 {
   kDebug() << attribs << "to" << subgraph;
   if (!subgraphs().contains(subgraph)) {
@@ -899,7 +920,8 @@ void DotGraph::addNewNodeToSubgraph(QMap<QString,QString> attribs, QString subgr
   kDebug() << "node added as" << newNode->id() << "in" << subgraph;
 }
 
-void DotGraph::addExistingNodeToSubgraph(QMap<QString,QString> attribs,QString subgraph)
+void DotGraph::addExistingNodeToSubgraph(const QMap<QString,QString>& attribs,
+                                         const QString& subgraph)
 {
   kDebug() << attribs << "to" << subgraph;
   GraphNode* node = dynamic_cast<GraphNode*>(elementNamed(attribs["id"]));
@@ -940,7 +962,7 @@ void DotGraph::addExistingNodeToSubgraph(QMap<QString,QString> attribs,QString s
   }
 }
 
-void DotGraph::moveExistingNodeToMainGraph(QMap<QString,QString> attribs)
+void DotGraph::moveExistingNodeToMainGraph(const QMap<QString,QString>& attribs)
 {
   kDebug() << attribs;
   GraphNode* node = dynamic_cast<GraphNode*>(elementNamed(attribs["id"]));
@@ -979,25 +1001,27 @@ void DotGraph::moveExistingNodeToMainGraph(QMap<QString,QString> attribs)
   }
 }
 
-void DotGraph::addNewEdge(QString src, QString tgt, QMap<QString,QString> attribs)
+void DotGraph::addNewEdge(const QString& sourceState,
+                          const QString& targetState,
+                          const QMap<QString,QString>& attribs)
 {
-  kDebug() << src << tgt << attribs;
+  kDebug() << sourceState << targetState << attribs;
   GraphEdge* newEdge = new GraphEdge();
   newEdge->attributes() = attribs;
-  GraphNode* srcElement = nodeNamed(src);
+  GraphNode* srcElement = nodeNamed(sourceState);
   if (srcElement == 0)
   {
-    srcElement = nodeNamed(QString("cluster_")+src);
+    srcElement = nodeNamed(QString("cluster_") + sourceState);
   }
-  GraphNode* tgtElement = nodeNamed(tgt);
+  GraphNode* tgtElement = nodeNamed(targetState);
   if (tgtElement == 0)
   {
-    tgtElement = nodeNamed(QString("cluster_")+tgt);
+    tgtElement = nodeNamed(QString("cluster_") + targetState);
   }
 
   if (srcElement == 0 || tgtElement == 0)
   {
-    kError() << src << "or" << tgt << "missing";
+    kError() << sourceState << "or" << targetState << "missing";
     return;
   }
   if (attribs.contains("id"))
diff --git a/src/kgraphviz/dotgraph.h b/src/kgraphviz/dotgraph.h
index 9cebab3..562ad40 100644
--- a/src/kgraphviz/dotgraph.h
+++ b/src/kgraphviz/dotgraph.h
@@ -105,14 +105,18 @@ public:
   void setUseLibrary(bool value);
   bool useLibrary() const;
 
-  void setGraphAttributes(QMap<QString,QString> attribs);
-  void addNewNode(QMap<QString,QString> attribs);
-  void addNewSubgraph(QMap<QString,QString> attribs);
-  void addNewNodeToSubgraph(QMap<QString,QString> attribs, QString subgraph);
-  void addExistingNodeToSubgraph(QMap<QString,QString> attribs,QString subgraph);
-  void moveExistingNodeToMainGraph(QMap<QString,QString> attribs);
-
-  void addNewEdge(QString src, QString tgt, QMap<QString,QString> attribs);
+  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);
+  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>());
   void removeElementAttribute(const QString& nodeName, const QString& attribName);
   void renameNode(const QString& oldNodeName, const QString& newNodeName);
   void removeNodeNamed(const QString& nodeName);



More information about the kgraphviewer-devel mailing list