Files
renovate-sh-app[bot]GitHubrenovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
6a21dc7e6d fix(deps): update module github.com/parquet-go/parquet-go to v0.27.0 (#6243)
| datasource | package                          | from    | to      |
| ---------- | -------------------------------- | ------- | ------- |
| go         | github.com/parquet-go/parquet-go | v0.26.4 | v0.27.0 |

Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
2026-01-16 23:38:26 +00:00

87 lines
2.1 KiB
Go

// Package wkbcommon contains code common to WKB and EWKB encoding.
package wkbcommon
import (
"encoding/binary"
"io"
"math"
"github.com/twpayne/go-geom"
)
func readFloat(buf []byte, byteOrder binary.ByteOrder) float64 {
u := byteOrder.Uint64(buf)
return math.Float64frombits(u)
}
// ReadUInt32 reads a uint32 from r.
func ReadUInt32(r io.Reader, byteOrder binary.ByteOrder) (uint32, error) {
var buf [4]byte
if _, err := io.ReadFull(r, buf[:]); err != nil {
return 0, err
}
return byteOrder.Uint32(buf[:]), nil
}
// ReadFloatArray reads a []float64 from r.
func ReadFloatArray(r io.Reader, byteOrder binary.ByteOrder, array []float64) error {
buf := make([]byte, 8*len(array))
if _, err := io.ReadFull(r, buf); err != nil {
return err
}
// Convert to an array of floats
for i := range array {
array[i] = readFloat(buf[8*i:], byteOrder)
}
return nil
}
// ReadByte reads a byte from r.
func ReadByte(r io.Reader) (byte, error) {
var buf [1]byte
if _, err := r.Read(buf[:]); err != nil {
return 0, err
}
return buf[0], nil
}
func writeFloat(buf []byte, byteOrder binary.ByteOrder, value float64) {
u := math.Float64bits(value)
byteOrder.PutUint64(buf, u)
}
// WriteFloatArray writes a []float64 to w.
func WriteFloatArray(w io.Writer, byteOrder binary.ByteOrder, array []float64) error {
buf := make([]byte, 8*len(array))
for i, f := range array {
writeFloat(buf[8*i:], byteOrder, f)
}
_, err := w.Write(buf)
return err
}
// WriteUInt32 writes a uint32 to w.
func WriteUInt32(w io.Writer, byteOrder binary.ByteOrder, value uint32) error {
var buf [4]byte
byteOrder.PutUint32(buf[:], value)
_, err := w.Write(buf[:])
return err
}
// WriteByte wrties a byte to w.
func WriteByte(w io.Writer, value byte) error {
var buf [1]byte
buf[0] = value
_, err := w.Write(buf[:])
return err
}
// WriteEmptyPointAsNaN outputs EmptyPoint as NaN values.
func WriteEmptyPointAsNaN(w io.Writer, byteOrder binary.ByteOrder, numCoords int) error {
coords := make([]float64, numCoords)
for i := range numCoords {
coords[i] = geom.PointEmptyCoord()
}
return WriteFlatCoords0(w, byteOrder, coords)
}