diff options
Diffstat (limited to 'vendor/github.com/djherbis/buffer/list.go')
-rw-r--r-- | vendor/github.com/djherbis/buffer/list.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/github.com/djherbis/buffer/list.go b/vendor/github.com/djherbis/buffer/list.go new file mode 100644 index 0000000000..11ec6961c7 --- /dev/null +++ b/vendor/github.com/djherbis/buffer/list.go @@ -0,0 +1,47 @@ +package buffer + +import "math" + +// List is a slice of Buffers, it's the backing for NewPartition +type List []Buffer + +// Len is the sum of the Len()'s of the Buffers in the List. +func (l *List) Len() (n int64) { + for _, buffer := range *l { + if n > math.MaxInt64-buffer.Len() { + return math.MaxInt64 + } + n += buffer.Len() + } + return n +} + +// Cap is the sum of the Cap()'s of the Buffers in the List. +func (l *List) Cap() (n int64) { + for _, buffer := range *l { + if n > math.MaxInt64-buffer.Cap() { + return math.MaxInt64 + } + n += buffer.Cap() + } + return n +} + +// Reset calls Reset() on each of the Buffers in the list. +func (l *List) Reset() { + for _, buffer := range *l { + buffer.Reset() + } +} + +// Push adds a Buffer to the end of the List +func (l *List) Push(b Buffer) { + *l = append(*l, b) +} + +// Pop removes and returns a Buffer from the front of the List +func (l *List) Pop() (b Buffer) { + b = (*l)[0] + *l = (*l)[1:] + return b +} |