48 lines
715 B
Go
48 lines
715 B
Go
package bin
|
|
|
|
type Buffer struct {
|
|
arr []byte
|
|
}
|
|
|
|
func NewBuffer(arr []byte) *Buffer {
|
|
s := new(Buffer)
|
|
s.arr = arr
|
|
return s
|
|
}
|
|
|
|
func (s *Buffer) WriteByte(b byte) (err error) {
|
|
s.arr = append(s.arr, b)
|
|
return nil
|
|
}
|
|
|
|
func (s *Buffer) Write(data []byte) (int, error) {
|
|
s.arr = append(s.arr, data...)
|
|
return len(data), nil
|
|
}
|
|
|
|
func (s *Buffer) ByteAt(idx int) byte {
|
|
return s.arr[idx]
|
|
}
|
|
|
|
func (s *Buffer) WriteByteAt(b byte, idx int) {
|
|
s.arr[idx] = b
|
|
}
|
|
|
|
func (s *Buffer) Len() int {
|
|
return len(s.arr)
|
|
}
|
|
|
|
func (s *Buffer) Bytes() []byte {
|
|
return s.arr[:]
|
|
}
|
|
|
|
func (s *Buffer) CopyBytes() []byte {
|
|
dst := make([]byte, len(s.arr))
|
|
copy(dst, s.arr)
|
|
return dst
|
|
}
|
|
|
|
func (s *Buffer) Reset() {
|
|
s.arr = s.arr[:0]
|
|
}
|