Mercurial > gemma
diff pkg/misc/encode.go @ 1371:5b9b8eabcd01
Backend: Added the API documentation of the misc package.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 27 Nov 2018 12:49:53 +0100 |
parents | a244b18cb916 |
children |
line wrap: on
line diff
--- a/pkg/misc/encode.go Tue Nov 27 11:09:03 2018 +0100 +++ b/pkg/misc/encode.go Tue Nov 27 12:49:53 2018 +0100 @@ -18,11 +18,15 @@ "io" ) +// BinReader is a io.Reader to support an error tolerant way +// to read big endian encoded binary data. type BinReader struct { io.Reader + // Err is the first encountered error. Err error } +// Read implements io.Reader without any endian awareness. func (r *BinReader) Read(buf []byte) (int, error) { if r.Err != nil { return 0, r.Err @@ -32,12 +36,18 @@ return n, r.Err } +// ReadBin reads big endian encodes binary data into x. +// If an error was encountered before no data is read. func (r *BinReader) ReadBin(x interface{}) { if r.Err == nil { r.Err = binary.Read(r.Reader, binary.BigEndian, x) } } +// ReadString reads a big endian encoded string from +// the underlying io.Reader into *s. +// If an error was encountered before no data is read +// and *s is unmodified. func (r *BinReader) ReadString(s *string) { if r.Err != nil { return @@ -53,11 +63,15 @@ *s = string(b) } +// BinWriter is a io.Writer to support an error tolerant way +// to write big endian encoded binary data. type BinWriter struct { io.Writer + // Err is the first encountered error. Err error } +// Write implements io.Writer without any endian awareness. func (w *BinWriter) Write(buf []byte) (int, error) { if w.Err != nil { return 0, w.Err @@ -67,12 +81,17 @@ return n, w.Err } +// WriteBin writes x big endian encoded to the underlying io.Writer. +// If an error was encountered before no data is written. func (w *BinWriter) WriteBin(x interface{}) { if w.Err == nil { w.Err = binary.Write(w.Writer, binary.BigEndian, x) } } +// WriteString writes a big endian encoded string to +// the underlying io.Writer. +// If an error was encountered before no data is written. func (w *BinWriter) WriteString(s string) { if w.Err == nil { w.Err = binary.Write(w.Writer, binary.BigEndian, uint32(len(s)))