get rid of bytes.Buffer use

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Joel Wetzell
2026-04-26 13:37:48 -05:00
parent d82919e9f1
commit 4d8ba2a47b
+24 -27
View File
@@ -2,7 +2,6 @@ package osc
// TODO(jwetzell): split things up // TODO(jwetzell): split things up
import ( import (
"bytes"
"encoding/binary" "encoding/binary"
"errors" "errors"
"fmt" "fmt"
@@ -27,39 +26,37 @@ func stringToOSCBytes(rawString string) []byte {
} }
func int32ToOSCBytes(number int32) ([]byte, error) { func int32ToOSCBytes(number int32) ([]byte, error) {
var buf bytes.Buffer bytes := make([]byte, 4)
err := binary.Write(&buf, binary.BigEndian, number) bytes[0] = byte((number >> 24) & 0xFF)
if err != nil { bytes[1] = byte((number >> 16) & 0xFF)
return nil, err bytes[2] = byte((number >> 8) & 0xFF)
} bytes[3] = byte(number & 0xFF)
return buf.Bytes(), nil return bytes, nil
} }
func int64ToOSCBytes(number int64) ([]byte, error) { func int64ToOSCBytes(number int64) ([]byte, error) {
var buf bytes.Buffer bytes := make([]byte, 8)
err := binary.Write(&buf, binary.BigEndian, number) bytes[0] = byte((number >> 56) & 0xFF)
if err != nil { bytes[1] = byte((number >> 48) & 0xFF)
return nil, err bytes[2] = byte((number >> 40) & 0xFF)
} bytes[3] = byte((number >> 32) & 0xFF)
return buf.Bytes(), nil bytes[4] = byte((number >> 24) & 0xFF)
bytes[5] = byte((number >> 16) & 0xFF)
bytes[6] = byte((number >> 8) & 0xFF)
bytes[7] = byte(number & 0xFF)
return bytes, nil
} }
func float32ToOSCBytes(number float32) ([]byte, error) { func float32ToOSCBytes(number float32) ([]byte, error) {
var buf bytes.Buffer bytes := make([]byte, 4)
err := binary.Write(&buf, binary.BigEndian, number) binary.BigEndian.PutUint32(bytes, math.Float32bits(number))
if err != nil { return bytes, nil
return nil, err
}
return buf.Bytes(), nil
} }
func float64ToOSCBytes(number float64) ([]byte, error) { func float64ToOSCBytes(number float64) ([]byte, error) {
var buf bytes.Buffer bytes := make([]byte, 8)
err := binary.Write(&buf, binary.BigEndian, number) binary.BigEndian.PutUint64(bytes, math.Float64bits(number))
if err != nil { return bytes, nil
return nil, err
}
return buf.Bytes(), nil
} }
func byteArrayToOSCBytes(bytes []byte) ([]byte, error) { func byteArrayToOSCBytes(bytes []byte) ([]byte, error) {
@@ -102,7 +99,7 @@ func argsToBuffer(args []OSCArg) ([]byte, error) {
var argBuffers = []byte{} var argBuffers = []byte{}
for _, arg := range args { for _, arg := range args {
switch oscType := arg.Type; oscType { switch arg.Type {
case "s": case "s":
if value, ok := arg.Value.(string); ok { if value, ok := arg.Value.(string); ok {
argBuffers = append(argBuffers, stringToOSCBytes(value)...) argBuffers = append(argBuffers, stringToOSCBytes(value)...)
@@ -243,7 +240,7 @@ func argsToBuffer(args []OSCArg) ([]byte, error) {
return nil, errors.New("OSC arg had float64 type but non-number value") return nil, errors.New("OSC arg had float64 type but non-number value")
} }
default: default:
return nil, fmt.Errorf("unsupported OSC argument type: %s", oscType) return nil, fmt.Errorf("unsupported OSC argument type: %s", arg.Type)
} }
} }
return argBuffers, nil return argBuffers, nil