Created
January 4, 2022 01:52
-
-
Save samdphillips/db507867cebff520c2affccc73dba6c9 to your computer and use it in GitHub Desktop.
Barely using Arrow array library from Racket
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#lang racket/base | |
(require ffi/unsafe | |
gir) | |
(define arrow-lib (gi-ffi "Arrow")) | |
(define (make-arrow-buffer buf size) | |
(arrow-lib 'Buffer 'new buf size)) | |
(define (make-arrow-double-array size buf) | |
(arrow-lib 'DoubleArray 'new size (buf ':this) #f 0)) | |
(define array-size 32) | |
(define bytes-size (* 8 array-size)) | |
(define rdata (make-bytes bytes-size)) | |
(for ([n (in-naturals 42)] | |
[i (in-range array-size)]) | |
(real->floating-point-bytes n 8 (system-big-endian?) rdata (* i 8))) | |
;; memory for the buffer | |
(define data (malloc bytes-size 'raw)) | |
;; copy racket bytes into a raw bit of memory | |
(memcpy data rdata bytes-size) | |
(define an-arrow-buffer | |
(make-arrow-buffer data bytes-size)) | |
(define a-double-array | |
(make-arrow-double-array array-size an-arrow-buffer)) | |
(for ([i (in-range array-size)]) | |
(displayln (a-double-array 'get_value i))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment