Skip to content
Snippets Groups Projects
Commit df13f946 authored by Radek Hušek's avatar Radek Hušek Committed by Radek Hušek
Browse files

Interface & classes transfer mechanism change

Function testGroupConnectivity now doesn't return list
of classes by default but you have to opt in
for it. Moreover the transfer mechanism  of list of classes
between C++ and Python was changed from instance
variable to (virtual) function.
parent 6f1ad27a
No related branches found
No related tags found
No related merge requests found
...@@ -34,6 +34,7 @@ struct AbstractTester { ...@@ -34,6 +34,7 @@ struct AbstractTester {
std::vector<EdgeId> spanningTree, std::vector<EdgeId> spanningTree,
std::vector< std::vector<DirectedEdgeId> > elementaryCycles std::vector< std::vector<DirectedEdgeId> > elementaryCycles
) =0; ) =0;
virtual std::vector<size_t> getClasses() =0;
virtual bool run() =0; virtual bool run() =0;
virtual ~AbstractTester() {} virtual ~AbstractTester() {}
...@@ -125,6 +126,11 @@ struct Tester : public AbstractTester { ...@@ -125,6 +126,11 @@ struct Tester : public AbstractTester {
} }
virtual std::vector<size_t> getClasses() {
return classes;
}
virtual bool run() { virtual bool run() {
Mapping forb(edges, 0); Mapping forb(edges, 0);
......
...@@ -12,10 +12,8 @@ cdef extern from "group-connectivity.h" namespace "Ring": ...@@ -12,10 +12,8 @@ cdef extern from "group-connectivity.h" namespace "Ring":
cdef extern from "group-connectivity.h": cdef extern from "group-connectivity.h":
cdef cppclass AbstractTester: cdef cppclass AbstractTester:
bool isConnected
vector[size_t] classes
void init(int, vector[int], vector[vector[int]]) void init(int, vector[int], vector[vector[int]])
vector[size_t] getClasses()
bool run() bool run()
cdef cppclass Tester[T](AbstractTester): cdef cppclass Tester[T](AbstractTester):
...@@ -31,7 +29,7 @@ def pathToEdges(G, path): ...@@ -31,7 +29,7 @@ def pathToEdges(G, path):
u = v u = v
return ret return ret
def testGroupConnectivity(G, group = "Z4", debug = False): def testGroupConnectivity(G, group = "Z4", getClasses = False, debug = False):
cdef AbstractTester* tester = NULL cdef AbstractTester* tester = NULL
if group == "Z4": if group == "Z4":
tester = new Tester[Z4[int]]() tester = new Tester[Z4[int]]()
...@@ -59,11 +57,14 @@ def testGroupConnectivity(G, group = "Z4", debug = False): ...@@ -59,11 +57,14 @@ def testGroupConnectivity(G, group = "Z4", debug = False):
tester.init(G.num_edges(), [ l for (_, _, l) in spanningTree.edge_iterator() ], elemCycles) tester.init(G.num_edges(), [ l for (_, _, l) in spanningTree.edge_iterator() ], elemCycles)
ret = tester.run() ret = tester.run()
classes = tester.classes
if getClasses:
classes = tester.getClasses()
del tester del tester
return (ret, classes) return (ret, classes)
else:
del tester
return ret
def subdivisionIterator(G, edges = None): def subdivisionIterator(G, edges = None):
if edges is None: if edges is None:
......
...@@ -7,8 +7,8 @@ Command: ...@@ -7,8 +7,8 @@ Command:
graphs.CubeGraph(3).edges()[0:2], graphs.CubeGraph(3).edges()[0:2],
function = lambda H: "%-20s Z4: %-5s Z2_2: %s" % ( function = lambda H: "%-20s Z4: %-5s Z2_2: %s" % (
H.graph6_string(), H.graph6_string(),
groupConnectivity.testGroupConnectivity(H, "Z4")[0], groupConnectivity.testGroupConnectivity(H, "Z4"),
groupConnectivity.testGroupConnectivity(H, "Z2_2")[0] groupConnectivity.testGroupConnectivity(H, "Z2_2")
) )
) )
`` ``
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment