Skip to content

Commit 2239a83

Browse files
author
Vincent Landau
committed
fix graphs interface
1 parent 8b96328 commit 2239a83

File tree

1 file changed

+105
-14
lines changed

1 file changed

+105
-14
lines changed

src/graph_interface.jl

Lines changed: 105 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,99 @@ import Graphs:
55
inneighbors, outneighbors, is_directed, add_edge!
66

77
import SimpleWeightedGraphs:
8-
add_edge!, get_weight, add_vertex!, vertices
8+
add_edge!, get_weight, add_vertex!
99

1010
import Base: zero
1111

1212
### Graphs interface
13-
nv(g::AbstractSpatialGraph) = nv(g.graph)
14-
ne(g::AbstractSpatialGraph) = ne(g.graph)
15-
vertices(g::AbstractSpatialGraph) = vertices(g.graph)
16-
edges(g::AbstractSpatialGraph) = edges(g.graph)
17-
eltype(g::AbstractSpatialGraph) = eltype(g.graph)
18-
edgetype(g::AbstractSpatialGraph) = edgetype(g.graph)
19-
has_edge(g::AbstractSpatialGraph, s, d) = has_edge(g.graph, s, d)
20-
has_vertex(g::AbstractSpatialGraph, v) = has_vertex(g.graph, v)
21-
inneighbors(g::AbstractSpatialGraph, v) = inneighbors(g.graph, v)
22-
outneighbors(g::AbstractSpatialGraph, v) = outneighbors(g.graph, v)
23-
is_directed(g::AbstractSpatialGraph) = is_directed(g.graph)
13+
function nv(g::AbstractSpatialGraph)
14+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
15+
SimpleWeightedGraphs.nv(g.graph)
16+
else
17+
nv(g.graph)
18+
end
19+
end
20+
21+
function ne(g::AbstractSpatialGraph)
22+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
23+
SimpleWeightedGraphs.ne(g.graph)
24+
else
25+
ne(g.graph)
26+
end
27+
end
28+
29+
function vertices(g::AbstractSpatialGraph)
30+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
31+
SimpleWeightedGraphs.vertices(g.graph)
32+
else
33+
vertices(g.graph)
34+
end
35+
end
36+
37+
function edges(g::AbstractSpatialGraph)
38+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
39+
SimpleWeightedGraphs.edges(g.graph)
40+
else
41+
edges(g.graph)
42+
end
43+
end
44+
45+
function eltype(g::AbstractSpatialGraph)
46+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
47+
SimpleWeightedGraphs.eltype(g.graph)
48+
else
49+
eltype(g.graph)
50+
end
51+
end
52+
53+
function edgetype(g::AbstractSpatialGraph)
54+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
55+
SimpleWeightedGraphs.edgetype(g.graph)
56+
else
57+
edgetype(g.graph)
58+
end
59+
end
60+
61+
function has_edge(g::AbstractSpatialGraph, s, d)
62+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
63+
SimpleWeightedGraphs.has_edge(g.graph, s, d)
64+
else
65+
has_edge(g.graph, s, d)
66+
end
67+
end
68+
69+
function has_vertex(g::AbstractSpatialGraph, v)
70+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
71+
SimpleWeightedGraphs.has_vertex(g.graph, v)
72+
else
73+
has_vertex(g.graph, v)
74+
end
75+
end
76+
77+
function inneighbors(g::AbstractSpatialGraph, v)
78+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
79+
SimpleWeightedGraphs.inneighbors(g.graph, v)
80+
else
81+
inneighbors(g.graph, v)
82+
end
83+
end
84+
85+
function outneighbors(g::AbstractSpatialGraph, v)
86+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
87+
SimpleWeightedGraphs.outneighbors(g.graph, v)
88+
else
89+
outneighbors(g.graph, v)
90+
end
91+
end
92+
93+
function is_directed(g::AbstractSpatialGraph)
94+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
95+
SimpleWeightedGraphs.is_directed(g.graph)
96+
else
97+
is_directed(g.graph)
98+
end
99+
end
100+
24101
function Base.zero(g::AbstractRasterGraph)
25102
if g.graph isa Graph
26103
RasterGraph(
@@ -44,8 +121,22 @@ function Base.zero(g::AbstractRasterGraph)
44121
)
45122
end
46123
end
47-
add_edge!(g::AbstractSpatialGraph, a::Integer, b::Integer, c::Number) = add_edge!(g.graph, a, b, c)
48-
add_vertex!(g::AbstractSpatialGraph) = add_vertex!(g.graph)
124+
125+
function add_edge!(g::AbstractSpatialGraph, a::Integer, b::Integer, c::Number)
126+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
127+
SimpleWeightedGraphs.add_edge!(g.graph, a, b, c)
128+
else
129+
add_edge!(g.graph, a, b, c)
130+
end
131+
end
132+
133+
function add_vertex!(g::AbstractSpatialGraph)
134+
if typeof(g.graph) <: Union{SimpleWeightedGraph, SimpleWeightedDiGraph}
135+
SimpleWeightedGraphs.add_vertex!(g.graph)
136+
else
137+
add_vertex!(g.graph)
138+
end
139+
end
49140

50141
### SimpleWeightedGraphs
51142
get_weight(g::WeightedRasterGraph, a::Integer, b::Integer) = get_weight(g.graph, a, b)

0 commit comments

Comments
 (0)