# HG changeset patch # User Richard Westhaver # Date 1720843393 14400 # Node ID b88bd4b0a03999e6580b002688707ec395a54ee5 # Parent d83b4d25d5c999d772296c869e87e3ff346477e9 tweaks diff -r d83b4d25d5c9 -r b88bd4b0a039 lisp/lib/dat/parquet/gen.lisp --- a/lisp/lib/dat/parquet/gen.lisp Fri Jul 12 22:58:59 2024 -0400 +++ b/lisp/lib/dat/parquet/gen.lisp Sat Jul 13 00:03:13 2024 -0400 @@ -207,6 +207,13 @@ (with-package (:dat/parquet) (define-parquet-class parquet-enum-object () ()) (define-parquet-class parquet-struct-object () ()) - (export (define-parquet-types)) + (let ((types (define-parquet-types))) + (export types) + (deftype dat/parquet::parquet-type (&optional (designator octet-vector) optional) + (if optional + (if (eql designator 'list) + list + `(or null ,designator)) + designator))) (export (mapcar 'class-name (define-parquet-structs))) (export *parquet-enums*))) diff -r d83b4d25d5c9 -r b88bd4b0a039 lisp/lib/dat/parquet/parquet.lisp --- a/lisp/lib/dat/parquet/parquet.lisp Fri Jul 12 22:58:59 2024 -0400 +++ b/lisp/lib/dat/parquet/parquet.lisp Sat Jul 13 00:03:13 2024 -0400 @@ -66,6 +66,8 @@ (defconstant +default-parquet-page-size+ (* 8 1024)) ;; 8kb (defconstant +default-parquet-row-group-size (expt 1024 3)) ;; 1gb +(defvar *parquet-creator* "parquet-cl version 0.1.0") + (defun parquet-write-magic (stream) (write-string +parquet-magic-number+ stream)) diff -r d83b4d25d5c9 -r b88bd4b0a039 lisp/std/bit.lisp --- a/lisp/std/bit.lisp Fri Jul 12 22:58:59 2024 -0400 +++ b/lisp/std/bit.lisp Sat Jul 13 00:03:13 2024 -0400 @@ -505,6 +505,15 @@ ((>= j end) sum) (setf sum (+ (aref octet-vec j) (ash sum 8))))) +(defun read-little-endian (s &optional (bytes 4)) + "Read a number in little-endian format from an byte (octet) stream S, +the number having BYTES octets (defaulting to 4)." + (loop for i from 0 below bytes + sum (ash (read-byte s) (* 8 i)))) + +(defun write-little-endian (i s &optional (bytes 4)) + (write-sequence (nreverse (integer-to-octets i (* 8 bytes))) s)) + (defun integer-to-octets (bignum &optional (n-bits (integer-length bignum))) (let* ((n-bytes (ceiling n-bits 8)) (octet-vec (make-array n-bytes :element-type '(unsigned-byte 8))))