[Scummvm-cvs-logs] SF.net SVN: scummvm:[41829] tools/branches/gsoc2009-decompiler/decompiler/ graph.h

kjdf at users.sourceforge.net kjdf at users.sourceforge.net
Wed Jun 24 20:27:29 CEST 2009


Revision: 41829
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41829&view=rev
Author:   kjdf
Date:     2009-06-24 18:27:29 +0000 (Wed, 24 Jun 2009)

Log Message:
-----------
decompiler: removed hideNode and _hidden field in graph, because it doesn't seem we will need node
deletion for now

Modified Paths:
--------------
    tools/branches/gsoc2009-decompiler/decompiler/graph.h

Modified: tools/branches/gsoc2009-decompiler/decompiler/graph.h
===================================================================
--- tools/branches/gsoc2009-decompiler/decompiler/graph.h	2009-06-24 18:21:39 UTC (rev 41828)
+++ tools/branches/gsoc2009-decompiler/decompiler/graph.h	2009-06-24 18:27:29 UTC (rev 41829)
@@ -37,14 +37,13 @@
 
 		friend class Graph;
 
-		bool _hidden;
 		bool _visited;
 		Node *_interval;
 		Node *_primitive;
 		std::list<Node*> _in;
 		std::list<Node*> _out;
 
-		Node(const Data &data) : _data(data), _hidden(), _interval(), _primitive() {
+		Node(const Data &data) : _data(data), _interval(), _primitive() {
 		}
 
 		~Node() {
@@ -130,10 +129,15 @@
 			u->_visited = false;
 		assert(_entry);
 		visit(_entry);
-		foreach (Node *u, _nodes)
-			if (!u->_visited)
-				hideNode(u);
-		removeHiddenNodes();
+		for (typename std::list<Node*>::iterator uit = _nodes.begin(); uit != _nodes.end(); )
+			if ((*uit)->_visited)
+				uit++;
+			else {
+				foreach (Node *v, (*uit)->_out)
+					v->_in.remove(*uit);
+				delete *uit;
+				uit = _nodes.erase(uit);
+			}
 	}
 
 	std::list<Node*> intervals() const {
@@ -203,14 +207,6 @@
 
 private:
 
-	void hideNode(Node *u) {
-		foreach (Node *v, u->_in)
-			v->_out.remove(u);
-		foreach (Node *v, u->_out)
-			v->_in.remove(u);
-		u->_hidden = true;
-	}
-
 	void visit(Node *u) {
 		u->_visited = true;
 		foreach (Node *v, u->_out)
@@ -245,15 +241,6 @@
 		}
 	}
 
-	void removeHiddenNodes() {
-		for (typename std::list<Node*>::iterator it = _nodes.begin(); it != _nodes.end(); )
-			if ((*it)->_hidden) {
-				delete *it;
-				it = _nodes.erase(it);
-			} else
-				it++;
-	}
-
 	static std::string graphvizEscapeLabel(const std::string &s) {
 		std::string ret;
 		foreach (char c, s) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list