summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-08-28 14:08:21 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-08-28 14:08:21 +0200
commitfef4ced569da1bdbc167d0786ab0a188973de3c5 (patch)
tree48b462896938ae4bf05b5bee732a748150e18d0c
parent4b748f68b851d1eea8edf188f5778975a45c5cfb (diff)
Comments
-rw-r--r--go/circular-buffer/circular_buffer.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/go/circular-buffer/circular_buffer.go b/go/circular-buffer/circular_buffer.go
index b17ea2b..7d15aa1 100644
--- a/go/circular-buffer/circular_buffer.go
+++ b/go/circular-buffer/circular_buffer.go
@@ -4,6 +4,7 @@ import "errors"
const testVersion = 3
+// Buffer is circular buffer
type Buffer struct {
v []byte // values
rpos int // read position
@@ -11,10 +12,12 @@ type Buffer struct {
n int // occupied cells
}
+// NewBuffer allocates new buffer
func NewBuffer(size int) *Buffer {
return &Buffer{v: make([]byte, size)}
}
+// ReadByte reads byte from buffer
func (b *Buffer) ReadByte() (byte, error) {
if b.n == 0 {
return 0, errors.New("empty")
@@ -25,6 +28,7 @@ func (b *Buffer) ReadByte() (byte, error) {
return val, nil
}
+// WriteByte appends byte to buffer
func (b *Buffer) WriteByte(c byte) error {
if b.n == len(b.v) {
return errors.New("full")
@@ -35,6 +39,7 @@ func (b *Buffer) WriteByte(c byte) error {
return nil
}
+// Overwrite oldest value
func (b *Buffer) Overwrite(c byte) {
if err := b.WriteByte(c); err != nil {
b.v[b.rpos] = c
@@ -42,6 +47,7 @@ func (b *Buffer) Overwrite(c byte) {
}
}
+// Reset buffer
func (b *Buffer) Reset() {
b.n = 0
b.rpos = b.wpos