aboutsummaryrefslogtreecommitdiff
path: root/commitgraph/read/layer_pos.go
blob: 7b87b3816ff1b93eff43dd734738ea0f1113adec (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package read

import "codeberg.org/lindenii/furgit/internal/intconv"

func (reader *Reader) layerByPosition(pos Position) (*layer, error) {
	graphIdx, err := intconv.Uint64ToInt(uint64(pos.Graph))
	if err != nil {
		return nil, err
	}

	if graphIdx < 0 || graphIdx >= len(reader.layers) {
		return nil, &PositionOutOfRangeError{Pos: pos}
	}

	layer := &reader.layers[graphIdx]
	if pos.Index >= layer.numCommits {
		return nil, &PositionOutOfRangeError{Pos: pos}
	}

	return layer, nil
}