@@ -4,27 +4,32 @@ using .GraphsExtensions: GraphsExtensions
44struct NamedEdge{V} <: AbstractNamedEdge{V}
55 src:: V
66 dst:: V
7- NamedEdge {V} (src:: V , dst:: V ) where {V} = new {V} (src, dst)
7+ NamedEdge {V} (src, dst) where {V} = new {V} (src, dst)
88end
99NamedEdge (src:: V , dst:: V ) where {V} = NamedEdge {V} (src, dst)
10- NamedEdge (src:: S , dst:: D ) where {S,D} = NamedEdge {promote_type(S, D )} (src, dst)
10+ NamedEdge (src, dst) = NamedEdge {promote_type(typeof(src), typeof(dst) )} (src, dst)
1111
12- GraphsExtensions. convert_vertextype (V:: Type , :: Type{<:NamedEdge} ) = NamedEdge{V}
12+ function GraphsExtensions. convert_vertextype (vertextype:: Type , :: Type{<:NamedEdge} )
13+ return NamedEdge{vertextype}
14+ end
1315
1416Graphs. src (e:: NamedEdge ) = e. src
1517Graphs. dst (e:: NamedEdge ) = e. dst
1618
1719NamedEdge {V} (e:: NamedEdge{V} ) where {V} = e
1820NamedEdge (e:: NamedEdge ) = e
1921
20- NamedEdge {V} (e:: AbstractNamedEdge ) where {V} = NamedEdge {V} (e. src, e. dst)
22+ NamedEdge {V} (e:: AbstractEdge ) where {V} = NamedEdge {V} (src (e), dst (e))
23+ NamedEdge (e:: AbstractEdge ) = NamedEdge (src (e), dst (e))
24+
25+ AbstractNamedEdge (e:: AbstractEdge ) = NamedEdge (e)
2126
22- Base. convert (E :: Type{<:NamedEdge} , e:: NamedEdge ) = E (e)
27+ Base. convert (edgetype :: Type{<:NamedEdge} , e:: AbstractEdge ) = edgetype (e)
2328
24- NamedEdge (t :: Tuple ) = NamedEdge (t[ 1 ], t[ 2 ] )
25- NamedEdge (p:: Pair ) = NamedEdge (p. first, p . second )
26- NamedEdge {V} (p:: Pair ) where {V} = NamedEdge {V} (p. first, p . second )
27- NamedEdge {V} (t :: Tuple ) where {V} = NamedEdge {V} (t[ 1 ], t[ 2 ] )
29+ NamedEdge (p :: Tuple ) = NamedEdge (p ... )
30+ NamedEdge (p:: Pair ) = NamedEdge (p... )
31+ NamedEdge {V} (p:: Pair ) where {V} = NamedEdge {V} (p... )
32+ NamedEdge {V} (p :: Tuple ) where {V} = NamedEdge {V} (p ... )
2833
2934# TODO : Define generic `set_vertices` in `GraphsExtensions`.
3035set_vertices (e:: NamedEdge , src, dst) = NamedEdge (src, dst)
0 commit comments