github.com/segmentio/parquet-go@v0.0.0-20230712180008-5d42db8f0d47/array.go (about) 1 package parquet 2 3 import ( 4 "unsafe" 5 6 "github.com/segmentio/parquet-go/sparse" 7 ) 8 9 func makeArrayValue(values []Value, offset uintptr) sparse.Array { 10 ptr := *(*unsafe.Pointer)(unsafe.Pointer(&values)) 11 return sparse.UnsafeArray(unsafe.Add(ptr, offset), len(values), unsafe.Sizeof(Value{})) 12 } 13 14 func makeArrayString(values []string) sparse.Array { 15 str := "" 16 ptr := *(*unsafe.Pointer)(unsafe.Pointer(&values)) 17 return sparse.UnsafeArray(ptr, len(values), unsafe.Sizeof(str)) 18 } 19 20 func makeArrayBE128(values []*[16]byte) sparse.Array { 21 ptr := *(*unsafe.Pointer)(unsafe.Pointer(&values)) 22 return sparse.UnsafeArray(ptr, len(values), unsafe.Sizeof((*[16]byte)(nil))) 23 }