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

kjdf at users.sourceforge.net kjdf at users.sourceforge.net
Thu Jun 25 03:11:29 CEST 2009


Revision: 41842
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41842&view=rev
Author:   kjdf
Date:     2009-06-25 01:11:29 +0000 (Thu, 25 Jun 2009)

Log Message:
-----------
decompiler: removed graph copy constructor and assinment operator

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

Modified: tools/branches/gsoc2009-decompiler/decompiler/Makefile
===================================================================
--- tools/branches/gsoc2009-decompiler/decompiler/Makefile	2009-06-25 00:14:07 UTC (rev 41841)
+++ tools/branches/gsoc2009-decompiler/decompiler/Makefile	2009-06-25 01:11:29 UTC (rev 41842)
@@ -64,7 +64,7 @@
 all: $(TARGETS)
 
 clean:
-	rm -f *.o $(TARGETS)
+	rm -f *.o $(TARGETS) test_runner*
 
 test:
 	cxxtest/cxxtestgen.pl --error-printer --abort-on-fail --have-eh -o test_runner.cpp test/test_graph.h

Modified: tools/branches/gsoc2009-decompiler/decompiler/graph.h
===================================================================
--- tools/branches/gsoc2009-decompiler/decompiler/graph.h	2009-06-25 00:14:07 UTC (rev 41841)
+++ tools/branches/gsoc2009-decompiler/decompiler/graph.h	2009-06-25 01:11:29 UTC (rev 41842)
@@ -19,7 +19,7 @@
 
 
 template<typename Data>
-struct Graph {
+struct Graph : boost::noncopyable {
 
 	struct Node : boost::noncopyable {
 
@@ -60,39 +60,6 @@
 	Graph() : _entry(), _currentOrder(), _currentLoop() {
 	}
 
-	Graph(const Graph &g) : _entry() {
-		std::map<Node*, Node*> trans;
-		trans[0] = 0;
-		foreach (Node *u, g._nodes)
-			trans[u] = addNode(u->_data);
-		foreach (Node *u, g._nodes) {
-			foreach (Node *v, u->_out)
-				addEdge(trans[u], trans[v]);
-			trans[u]->_interval = trans[u->_interval];
-		}
-		_entry = trans[g._entry];
-	}
-
-	// TODO cleanup
-	Graph &operator=(const Graph &g) {
-		if (this == &g)
-			return *this;
-		foreach (Node *u, _nodes)
-			delete u;
-		_nodes.clear();
-		std::map<Node*, Node*> trans;
-		trans[0] = 0;
-		foreach (Node *u, g._nodes)
-			trans[u] = addNode(u->_data);
-		foreach (Node *u, g._nodes) {
-			foreach (Node *v, u->_out)
-				addEdge(trans[u], trans[v]);
-			trans[u]->_interval = trans[u->_interval];
-		}
-		_entry = trans[g._entry];
-		return *this;
-	}
-
 	~Graph() {
 		foreach (Node *u, _nodes)
 			delete u;

Modified: tools/branches/gsoc2009-decompiler/decompiler/test/test_graph.h
===================================================================
--- tools/branches/gsoc2009-decompiler/decompiler/test/test_graph.h	2009-06-25 00:14:07 UTC (rev 41841)
+++ tools/branches/gsoc2009-decompiler/decompiler/test/test_graph.h	2009-06-25 01:11:29 UTC (rev 41842)
@@ -20,7 +20,7 @@
 
 class GraphTestSuite : public CxxTest::TestSuite {
 
-	IntGraph g1, g2, g3, g4;
+	IntGraph *g1, *g2, *g3, *g4;
 
 public:
 
@@ -33,48 +33,48 @@
 
 	// this tests internal, intermediate results, not part of the api
 	void test_intervals() {
-		g1.intervals();
+		g1->intervals();
 		TS_ASSERT_EQUALS(findNode(g1, 1)->interval()->_data, findNode(g1, 1)->_data);
 		for (int i = 2; i <= 6; i++)
 			TS_ASSERT_EQUALS(findNode(g1, i)->interval()->_data, findNode(g1, 2)->_data);
-		g2.intervals();
+		g2->intervals();
 		for (int i = 1; i <= 5; i++)
 			TS_ASSERT_EQUALS(findNode(g2, i)->interval()->_data, findNode(g2, 1)->_data);
 		for (int i = 6; i <= 12; i++)
 			TS_ASSERT_EQUALS(findNode(g2, i)->interval()->_data, findNode(g2, 6)->_data);
 		for (int i = 13; i <= 15; i++)
 			TS_ASSERT_EQUALS(findNode(g2, i)->interval()->_data, findNode(g2, 13)->_data);
-		g3.intervals();
+		g3->intervals();
 		TS_ASSERT_EQUALS(findNode(g3, 1)->interval()->_data, findNode(g3, 1)->_data);
 		TS_ASSERT_EQUALS(findNode(g3, 2)->interval()->_data, findNode(g3, 2)->_data);
 		TS_ASSERT_EQUALS(findNode(g3, 3)->interval()->_data, findNode(g3, 3)->_data);
-		g4.intervals();
+		g4->intervals();
 		TS_ASSERT_EQUALS(findNode(g4, 1)->interval()->_data, findNode(g4, 1)->_data);
 		TS_ASSERT_EQUALS(findNode(g4, 2)->interval()->_data, findNode(g4, 2)->_data);
 		TS_ASSERT_EQUALS(findNode(g4, 3)->interval()->_data, findNode(g4, 2)->_data);
 	}
 
 	void test_extendIntervals() {
-		g1.intervals();
-		g1.extendIntervals();
+		g1->intervals();
+		g1->extendIntervals();
 		for (int i = 1; i <= 6; i++)
 			TS_ASSERT_EQUALS(findNode(g1, i)->interval()->_data, findNode(g1, 1)->_data);
-		g2.intervals();
-		g2.extendIntervals();
+		g2->intervals();
+		g2->extendIntervals();
 		for (int i = 1; i <= 5; i++)
 			TS_ASSERT_EQUALS(findNode(g2, i)->interval()->_data, findNode(g2, 1)->_data);
 		for (int i = 6; i <= 15; i++)
 			TS_ASSERT_EQUALS(findNode(g2, i)->interval()->_data, findNode(g2, 6)->_data);
-		g2.extendIntervals();
+		g2->extendIntervals();
 		for (int i = 1; i <= 15; i++)
 			TS_ASSERT_EQUALS(findNode(g2, i)->interval()->_data, findNode(g2, 1)->_data);
-		g3.intervals();
-		g3.extendIntervals();
+		g3->intervals();
+		g3->extendIntervals();
 		TS_ASSERT_EQUALS(findNode(g3, 1)->interval()->_data, findNode(g3, 1)->_data);
 		TS_ASSERT_EQUALS(findNode(g3, 2)->interval()->_data, findNode(g3, 2)->_data);
 		TS_ASSERT_EQUALS(findNode(g3, 3)->interval()->_data, findNode(g3, 3)->_data);
-		g4.intervals();
-		g4.extendIntervals();
+		g4->intervals();
+		g4->extendIntervals();
 		TS_ASSERT_EQUALS(findNode(g4, 1)->interval()->_data, findNode(g4, 1)->_data);
 		TS_ASSERT_EQUALS(findNode(g4, 2)->interval()->_data, findNode(g4, 1)->_data);
 		TS_ASSERT_EQUALS(findNode(g4, 3)->interval()->_data, findNode(g4, 1)->_data);
@@ -82,103 +82,92 @@
 
 private:
 
-	IntNode *findNode(IntGraph &g, int data) {
-		foreach (IntNode *u, g._nodes)
+	IntNode *findNode(IntGraph *g, int data) {
+		foreach (IntNode *u, g->_nodes)
 			if (u->_data == data)
 				return u;
 		return 0;
 	}
 
-	int outEdgesCount(IntGraph &g, int data) {
-		return findNode(g, data)->out().size();
-	}
-
-	bool pointsTo(IntGraph &g, int dataFrom, int dataTo) {
-		foreach (IntNode *u, findNode(g, dataFrom)->out())
-			if (u->_data == dataTo)
-				return true;
-		return false;
-	}
-
-	IntGraph makeGraph1() {
-    	IntGraph g;;
-		g.addNode(1);
-		g.addNode(2);
-		g.addNode(3);
-		g.addNode(4);
-		g.addNode(5);
-		g.addNode(6);
-		g.addEdge(findNode(g, 1), findNode(g, 2));
-		g.addEdge(findNode(g, 2), findNode(g, 3));
-		g.addEdge(findNode(g, 2), findNode(g, 5));
-		g.addEdge(findNode(g, 3), findNode(g, 4));
-		g.addEdge(findNode(g, 4), findNode(g, 2));
-		g.addEdge(findNode(g, 5), findNode(g, 1));
-		g.addEdge(findNode(g, 5), findNode(g, 6));
+	IntGraph *makeGraph1() {
+    	IntGraph *g = new IntGraph;
+		g->addNode(1);
+		g->addNode(2);
+		g->addNode(3);
+		g->addNode(4);
+		g->addNode(5);
+		g->addNode(6);
+		g->addEdge(findNode(g, 1), findNode(g, 2));
+		g->addEdge(findNode(g, 2), findNode(g, 3));
+		g->addEdge(findNode(g, 2), findNode(g, 5));
+		g->addEdge(findNode(g, 3), findNode(g, 4));
+		g->addEdge(findNode(g, 4), findNode(g, 2));
+		g->addEdge(findNode(g, 5), findNode(g, 1));
+		g->addEdge(findNode(g, 5), findNode(g, 6));
 		return g;
 	}
 
-	IntGraph makeGraph2() {
-		IntGraph g;
-		g.addNode(1);
-		g.addNode(2);
-		g.addNode(3);
-		g.addNode(4);
-		g.addNode(5);
-		g.addNode(6);
-		g.addNode(7);
-		g.addNode(8);
-		g.addNode(9);
-		g.addNode(10);
-		g.addNode(11);
-		g.addNode(12);
-		g.addNode(13);
-		g.addNode(14);
-		g.addNode(15);
-		g.addEdge(findNode(g, 1), findNode(g, 2));
-		g.addEdge(findNode(g, 1), findNode(g, 5));
-		g.addEdge(findNode(g, 2), findNode(g, 3));
-		g.addEdge(findNode(g, 2), findNode(g, 4));
-		g.addEdge(findNode(g, 3), findNode(g, 5));
-		g.addEdge(findNode(g, 4), findNode(g, 5));
-		g.addEdge(findNode(g, 5), findNode(g, 6));
-		g.addEdge(findNode(g, 6), findNode(g, 7));
-		g.addEdge(findNode(g, 6), findNode(g, 12));
-		g.addEdge(findNode(g, 7), findNode(g, 8));
-		g.addEdge(findNode(g, 7), findNode(g, 9));
-		g.addEdge(findNode(g, 8), findNode(g, 9));
-		g.addEdge(findNode(g, 8), findNode(g, 10));
-		g.addEdge(findNode(g, 9), findNode(g, 10));
-		g.addEdge(findNode(g, 10), findNode(g, 11));
-		g.addEdge(findNode(g, 12), findNode(g, 13));
-		g.addEdge(findNode(g, 13), findNode(g, 14));
-		g.addEdge(findNode(g, 14), findNode(g, 13));
-		g.addEdge(findNode(g, 14), findNode(g, 15));
-		g.addEdge(findNode(g, 15), findNode(g, 6));
+	IntGraph *makeGraph2() {
+		IntGraph *g = new IntGraph;
+		g->addNode(1);
+		g->addNode(2);
+		g->addNode(3);
+		g->addNode(4);
+		g->addNode(5);
+		g->addNode(6);
+		g->addNode(7);
+		g->addNode(8);
+		g->addNode(9);
+		g->addNode(10);
+		g->addNode(11);
+		g->addNode(12);
+		g->addNode(13);
+		g->addNode(14);
+		g->addNode(15);
+		g->addEdge(findNode(g, 1), findNode(g, 2));
+		g->addEdge(findNode(g, 1), findNode(g, 5));
+		g->addEdge(findNode(g, 2), findNode(g, 3));
+		g->addEdge(findNode(g, 2), findNode(g, 4));
+		g->addEdge(findNode(g, 3), findNode(g, 5));
+		g->addEdge(findNode(g, 4), findNode(g, 5));
+		g->addEdge(findNode(g, 5), findNode(g, 6));
+		g->addEdge(findNode(g, 6), findNode(g, 7));
+		g->addEdge(findNode(g, 6), findNode(g, 12));
+		g->addEdge(findNode(g, 7), findNode(g, 8));
+		g->addEdge(findNode(g, 7), findNode(g, 9));
+		g->addEdge(findNode(g, 8), findNode(g, 9));
+		g->addEdge(findNode(g, 8), findNode(g, 10));
+		g->addEdge(findNode(g, 9), findNode(g, 10));
+		g->addEdge(findNode(g, 10), findNode(g, 11));
+		g->addEdge(findNode(g, 12), findNode(g, 13));
+		g->addEdge(findNode(g, 13), findNode(g, 14));
+		g->addEdge(findNode(g, 14), findNode(g, 13));
+		g->addEdge(findNode(g, 14), findNode(g, 15));
+		g->addEdge(findNode(g, 15), findNode(g, 6));
 		return g;
 	}
 
-	IntGraph makeGraph3() {
-		IntGraph g;
-		g.addNode(1);
-		g.addNode(2);
-		g.addNode(3);
-		g.addEdge(findNode(g, 1), findNode(g, 2));
-		g.addEdge(findNode(g, 1), findNode(g, 3));
-		g.addEdge(findNode(g, 2), findNode(g, 3));
-		g.addEdge(findNode(g, 3), findNode(g, 2));
+	IntGraph *makeGraph3() {
+		IntGraph *g = new IntGraph;
+		g->addNode(1);
+		g->addNode(2);
+		g->addNode(3);
+		g->addEdge(findNode(g, 1), findNode(g, 2));
+		g->addEdge(findNode(g, 1), findNode(g, 3));
+		g->addEdge(findNode(g, 2), findNode(g, 3));
+		g->addEdge(findNode(g, 3), findNode(g, 2));
 		return g;
 	}
 
-	IntGraph makeGraph4() {
-		IntGraph g;
-		g.addNode(1);
-		g.addNode(2);
-		g.addNode(3);
-		g.addEdge(findNode(g, 1), findNode(g, 2));
-		g.addEdge(findNode(g, 2), findNode(g, 2));
-		g.addEdge(findNode(g, 2), findNode(g, 3));
-		g.addEdge(findNode(g, 3), findNode(g, 1));
+	IntGraph *makeGraph4() {
+		IntGraph *g = new IntGraph;
+		g->addNode(1);
+		g->addNode(2);
+		g->addNode(3);
+		g->addEdge(findNode(g, 1), findNode(g, 2));
+		g->addEdge(findNode(g, 2), findNode(g, 2));
+		g->addEdge(findNode(g, 2), findNode(g, 3));
+		g->addEdge(findNode(g, 3), findNode(g, 1));
 		return g;
 	}
 };


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