package varbin

import (
	"io"
)

type Reader interface {
	io.Reader
	io.ByteReader
}

type Writer interface {
	io.Writer
	io.ByteWriter
}

var _ Reader = stubReader{}

func StubReader(reader io.Reader) Reader {
	if r, ok := reader.(Reader); ok {
		return r
	}
	return stubReader{reader}
}

type stubReader struct {
	io.Reader
}

func (r stubReader) ReadByte() (byte, error) {
	var b [1]byte
	_, err := io.ReadFull(r.Reader, b[:])
	return b[0], err
}
