From 339a162877a78641a45338983de2192353fe7a5a Mon Sep 17 00:00:00 2001 From: Will Hawkins Date: Fri, 10 Dec 2021 22:14:26 -0500 Subject: More work. --- saturating/saturating.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 saturating/saturating.go (limited to 'saturating') diff --git a/saturating/saturating.go b/saturating/saturating.go new file mode 100644 index 0000000..10a0c87 --- /dev/null +++ b/saturating/saturating.go @@ -0,0 +1,27 @@ +package saturating + +type SaturatingInt struct { + max int + value int + saturated bool +} + +func NewSaturatingInt(max int) *SaturatingInt { + return &SaturatingInt{max: max, value: 0, saturated: false} +} + +func (s *SaturatingInt) Value() int { + if s.saturated { + return s.max + } + return s.value +} + +func (s *SaturatingInt) Add(operand int) { + if !s.saturated { + s.value += operand + if s.value >= s.max { + s.saturated = true + } + } +} -- cgit v1.2.3