From 06eb6f8cb616eb3b2aaa0adbbb574878d25eac0a Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 14 Dec 2018 17:16:53 -0800 Subject: [PATCH] parent parameter --- xenomorph/xenomorph/helper.rkt | 2 ++ xenomorph/xenomorph/versioned-struct.rkt | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/xenomorph/xenomorph/helper.rkt b/xenomorph/xenomorph/helper.rkt index 50484423..bf73bf05 100644 --- a/xenomorph/xenomorph/helper.rkt +++ b/xenomorph/xenomorph/helper.rkt @@ -4,6 +4,8 @@ racket/port) (provide (all-defined-out)) +(define current-parent (make-parameter #f)) + (define (->input-port arg) (cond [(bytes? arg) (open-input-bytes arg)] diff --git a/xenomorph/xenomorph/versioned-struct.rkt b/xenomorph/xenomorph/versioned-struct.rkt index cf430c59..779e78a6 100644 --- a/xenomorph/xenomorph/versioned-struct.rkt +++ b/xenomorph/xenomorph/versioned-struct.rkt @@ -12,8 +12,9 @@ https://github.com/mbutterick/restructure/blob/master/src/VersionedStruct.coffee (define (xversioned-struct-decode . args) (dict->mutable-hash (apply xversioned-struct-xdecode args))) -(define/post-decode (xversioned-struct-xdecode xvs [port-arg (current-input-port)] #:parent [parent #f] [length 0]) +(define/post-decode (xversioned-struct-xdecode xvs [port-arg (current-input-port)] #:parent [parent-arg #f] [length 0]) (define port (->input-port port-arg)) + (define parent (or (current-parent) parent-arg)) (define res (xstruct-setup port parent length)) (dict-set! res 'version