[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