]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/hashicorp/terraform/dag/edge.go
Initial transfer of provider code
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / dag / edge.go
1 package dag
2
3 import (
4 "fmt"
5 )
6
7 // Edge represents an edge in the graph, with a source and target vertex.
8 type Edge interface {
9 Source() Vertex
10 Target() Vertex
11
12 Hashable
13 }
14
15 // BasicEdge returns an Edge implementation that simply tracks the source
16 // and target given as-is.
17 func BasicEdge(source, target Vertex) Edge {
18 return &basicEdge{S: source, T: target}
19 }
20
21 // basicEdge is a basic implementation of Edge that has the source and
22 // target vertex.
23 type basicEdge struct {
24 S, T Vertex
25 }
26
27 func (e *basicEdge) Hashcode() interface{} {
28 return fmt.Sprintf("%p-%p", e.S, e.T)
29 }
30
31 func (e *basicEdge) Source() Vertex {
32 return e.S
33 }
34
35 func (e *basicEdge) Target() Vertex {
36 return e.T
37 }