@@ -11,7 +11,8 @@ using Graphs:
1111 nv,
1212 steiner_tree,
1313 vertices
14- using NamedGraphs. GraphsExtensions: GraphsExtensions, incident_edges, vertextype
14+ using NamedGraphs. GraphsExtensions:
15+ GraphsExtensions, arrange_edge, incident_edges, is_edge_arranged, vertextype
1516using NamedGraphs. SimilarType: similar_type
1617using SimpleTraits: SimpleTraits, Not, @traitfn
1718
157158
158159@traitfn GraphsExtensions. directed_graph (graph:: AbstractDataGraph :: IsDirected ) = graph
159160
161+ reverse_data_direction (graph:: AbstractDataGraph , data) = data
162+ function reverse_data_direction (graph:: AbstractDataGraph , edge:: AbstractEdge , data)
163+ return is_edge_arranged (graph, edge) ? data : reverse_data_direction (graph, data)
164+ end
165+
160166@traitfn function GraphsExtensions. directed_graph (graph:: AbstractDataGraph :: (!IsDirected) )
161167 digraph = directed_graph (typeof (graph))(directed_graph (underlying_graph (graph)))
162168 for v in vertices (graph)
@@ -335,9 +341,8 @@ function Base.get!(graph::AbstractDataGraph, vertex, default)
335341end
336342
337343function Base. getindex (graph:: AbstractDataGraph , edge:: AbstractEdge )
338- is_edge_arranged_ = is_edge_arranged (graph, edge)
339- data = edge_data (graph)[arrange (is_edge_arranged_, edge)]
340- return reverse_data_direction (is_edge_arranged_, graph, data)
344+ data = edge_data (graph)[arrange_edge (graph, edge)]
345+ return reverse_data_direction (graph, edge, data)
341346end
342347
343348# Support syntax `g[v1 => v2]`
@@ -346,19 +351,17 @@ function Base.getindex(graph::AbstractDataGraph, edge::Pair)
346351end
347352
348353function Base. get (graph:: AbstractDataGraph , edge:: AbstractEdge , default)
349- is_edge_arranged_ = is_edge_arranged (graph, edge)
350- data = get (edge_data (graph), arrange (is_edge_arranged_, edge), default)
351- return reverse_data_direction (is_edge_arranged_, graph, data)
354+ data = get (edge_data (graph), arrange_edge (graph, edge), default)
355+ return reverse_data_direction (graph, edge, data)
352356end
353357
354358function Base. get (graph:: AbstractDataGraph , edge:: Pair , default)
355359 return get (graph, edgetype (graph)(edge), default)
356360end
357361
358362function Base. get! (graph:: AbstractDataGraph , edge:: AbstractEdge , default)
359- is_edge_arranged_ = is_edge_arranged (graph, edge)
360- data = get! (edge_data (graph), arrange (is_edge_arranged_, edge), default)
361- return reverse_data_direction (is_edge_arranged_, graph, data)
363+ data = get! (edge_data (graph), arrange_edge (graph, edge), default)
364+ return reverse_data_direction (graph, edge, data)
362365end
363366
364367function Base. get! (graph:: AbstractDataGraph , edge:: Pair , default)
@@ -374,12 +377,12 @@ function Base.isassigned(graph::AbstractDataGraph, vertex)
374377 return isassigned (vertex_data (graph), vertex)
375378end
376379
377- function Base. isassigned (graph:: AbstractDataGraph , vertex :: AbstractEdge )
378- return isassigned (edge_data (graph), arrange (graph, vertex ))
380+ function Base. isassigned (graph:: AbstractDataGraph , edge :: AbstractEdge )
381+ return isassigned (edge_data (graph), arrange_edge (graph, edge ))
379382end
380383
381- function Base. isassigned (graph:: AbstractDataGraph , vertex :: Pair )
382- return isassigned (graph, edgetype (graph)(vertex ))
384+ function Base. isassigned (graph:: AbstractDataGraph , edge :: Pair )
385+ return isassigned (graph, edgetype (graph)(edge ))
383386end
384387
385388function Base. setindex! (graph:: AbstractDataGraph , data, vertex)
@@ -388,9 +391,8 @@ function Base.setindex!(graph::AbstractDataGraph, data, vertex)
388391end
389392
390393function Base. setindex! (graph:: AbstractDataGraph , data, edge:: AbstractEdge )
391- is_edge_arranged_ = is_edge_arranged (graph, edge)
392- arranged_edge = arrange (is_edge_arranged_, edge)
393- arranged_data = reverse_data_direction (is_edge_arranged_, graph, data)
394+ arranged_edge = arrange_edge (graph, edge)
395+ arranged_data = reverse_data_direction (graph, edge, data)
394396 set! (edge_data (graph), arranged_edge, arranged_data)
395397 return graph
396398end
0 commit comments