+(define (get-array num-index root-index type)
+ (lambda (pointer)
+ (let ((num (bv-uint-ref pointer num-index))
+ (rootp (make-pointer (bv-uint-ref pointer root-index))))
+ (cond ((> num 0)
+ (array->list
+ (pointer->bytevector rootp num 0 type)))
+ (else
+ '())))))
+
+(define* (get-structs-array num-index root-index struct-size #:optional wrap-proc)
+ (lambda (pointer)
+ (let ((num (bv-uint-ref pointer num-index))
+ (rootp (bv-uint-ref pointer root-index)))
+ (let loop ((i (- num 1)))
+ (cond ((< i 0)
+ '())
+ (else
+ (let* ((p (make-pointer (+ rootp (* i struct-size))))
+ (wp (if wrap-proc (wrap-proc p) p)))
+ (cons wp (loop (- i 1))))))))))
+
+(define* (get-pointer-of-pointers num-index root-index #:optional wrap-proc)