github.com/LdDl/ch@v1.7.8/vertex_alternatives.go (about)

     1  package ch
     2  
     3  type VertexAlternative struct {
     4  	Label              int64
     5  	AdditionalDistance float64
     6  }
     7  
     8  type vertexAlternativeInternal struct {
     9  	vertexNum          int64
    10  	additionalDistance float64
    11  }
    12  
    13  const vertexNotFound = -1
    14  
    15  func (graph *Graph) vertexAlternativeToInternal(alternative VertexAlternative) vertexAlternativeInternal {
    16  	vertexNum, ok := graph.mapping[alternative.Label]
    17  	if !ok {
    18  		vertexNum = vertexNotFound
    19  	}
    20  	return vertexAlternativeInternal{
    21  		vertexNum:          vertexNum,
    22  		additionalDistance: alternative.AdditionalDistance,
    23  	}
    24  }
    25  
    26  func (graph *Graph) vertexAlternativesToInternal(alternatives []VertexAlternative) []vertexAlternativeInternal {
    27  	result := make([]vertexAlternativeInternal, 0, len(alternatives))
    28  	for _, alternative := range alternatives {
    29  		result = append(result, graph.vertexAlternativeToInternal(alternative))
    30  	}
    31  	return result
    32  }