github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/native/gas_power_left.go (about) 1 package native 2 3 import "fmt" 4 5 const ( 6 ShortTermGas = 0 7 LongTermGas = 1 8 GasPowerConfigs = 2 9 ) 10 11 // GasPowerLeft is long-term gas power left and short-term gas power left 12 type GasPowerLeft struct { 13 Gas [GasPowerConfigs]uint64 14 } 15 16 // Add add to all gas power lefts 17 func (g GasPowerLeft) Add(diff uint64) { 18 for i := range g.Gas { 19 g.Gas[i] += diff 20 } 21 } 22 23 // Min returns minimum within long-term gas power left and short-term gas power left 24 func (g GasPowerLeft) Min() uint64 { 25 min := g.Gas[0] 26 for _, gas := range g.Gas { 27 if min > gas { 28 min = gas 29 } 30 } 31 return min 32 } 33 34 // Max returns maximum within long-term gas power left and short-term gas power left 35 func (g GasPowerLeft) Max() uint64 { 36 max := g.Gas[0] 37 for _, gas := range g.Gas { 38 if max < gas { 39 max = gas 40 } 41 } 42 return max 43 } 44 45 // Sub subtracts from all gas power lefts 46 func (g GasPowerLeft) Sub(diff uint64) GasPowerLeft { 47 cp := g 48 for i := range cp.Gas { 49 cp.Gas[i] -= diff 50 } 51 return cp 52 } 53 54 // String returns string representation. 55 func (g GasPowerLeft) String() string { 56 return fmt.Sprintf("{short=%d, long=%d}", g.Gas[ShortTermGas], g.Gas[LongTermGas]) 57 }