diff options
Diffstat (limited to 'pkg/signal')
| -rw-r--r-- | pkg/signal/signal.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/pkg/signal/signal.go b/pkg/signal/signal.go index e82255537..20deba46a 100644 --- a/pkg/signal/signal.go +++ b/pkg/signal/signal.go @@ -28,6 +28,33 @@ func (s Signal) Empty() bool { return len(s) == 0 } +func (s Signal) Copy() Signal { + c := make(Signal, len(s)) + for e, p := range s { + c[e] = p + } + return c +} + +func (s *Signal) Split(n int) Signal { + if s.Empty() { + return nil + } + c := make(Signal, n) + for e, p := range *s { + delete(*s, e) + c[e] = p + n-- + if n == 0 { + break + } + } + if len(*s) == 0 { + *s = nil + } + return c +} + func FromRaw(raw []uint32, prio uint8) Signal { if len(raw) == 0 { return nil |
