MCPcopy Index your code
hub / github.com/coder/hnsw / binaryRead

Function binaryRead

encode.go:18–64  ·  view source on GitHub ↗
(r io.Reader, data interface{})

Source from the content-addressed store, hash-verified

16var byteOrder = binary.LittleEndian
17
18func binaryRead(r io.Reader, data interface{}) (int, error) {
19 switch v := data.(type) {
20 case *int:
21 br, ok := r.(io.ByteReader)
22 if !ok {
23 return 0, fmt.Errorf("reader does not implement io.ByteReader")
24 }
25
26 i, err := binary.ReadVarint(br)
27 if err != nil {
28 return 0, err
29 }
30
31 *v = int(i)
32 // TODO: this will usually overshoot size.
33 return binary.MaxVarintLen64, nil
34
35 case *string:
36 var ln int
37 _, err := binaryRead(r, &ln)
38 if err != nil {
39 return 0, err
40 }
41
42 s := make([]byte, ln)
43 _, err = binaryRead(r, &s)
44 *v = string(s)
45 return len(s), err
46
47 case *[]float32:
48 var ln int
49 _, err := binaryRead(r, &ln)
50 if err != nil {
51 return 0, err
52 }
53
54 *v = make([]float32, ln)
55 return binary.Size(*v), binary.Read(r, byteOrder, *v)
56
57 case io.ReaderFrom:
58 n, err := v.ReadFrom(r)
59 return int(n), err
60
61 default:
62 return binary.Size(data), binary.Read(r, byteOrder, data)
63 }
64}
65
66func binaryWrite(w io.Writer, data any) (int, error) {
67 switch v := data.(type) {

Callers 4

Test_binaryVarintFunction · 0.85
Test_binaryWrite_stringFunction · 0.85
multiBinaryReadFunction · 0.85
ImportMethod · 0.85

Calls

no outgoing calls

Tested by 2

Test_binaryVarintFunction · 0.68
Test_binaryWrite_stringFunction · 0.68