1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package internal
import (
"fmt"
"lukeshu.com/btrfs-tools/pkg/util"
)
type (
PhysicalAddr int64
LogicalAddr int64
AddrDelta int64
)
func formatAddr(addr int64, f fmt.State, verb rune) {
switch verb {
case 'v', 's', 'q':
str := fmt.Sprintf("%#016x", addr)
fmt.Fprintf(f, util.FmtStateString(f, verb), str)
default:
fmt.Fprintf(f, util.FmtStateString(f, verb), addr)
}
}
func (a PhysicalAddr) Format(f fmt.State, verb rune) { formatAddr(int64(a), f, verb) }
func (a LogicalAddr) Format(f fmt.State, verb rune) { formatAddr(int64(a), f, verb) }
func (d AddrDelta) Format(f fmt.State, verb rune) { formatAddr(int64(d), f, verb) }
func (a PhysicalAddr) Sub(b PhysicalAddr) AddrDelta { return AddrDelta(a - b) }
func (a LogicalAddr) Sub(b LogicalAddr) AddrDelta { return AddrDelta(a - b) }
func (a PhysicalAddr) Add(b AddrDelta) PhysicalAddr { return a + PhysicalAddr(b) }
func (a LogicalAddr) Add(b AddrDelta) LogicalAddr { return a + LogicalAddr(b) }
|