You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
12 lines
495 B
Racket
12 lines
495 B
Racket
7 years ago
|
#lang reader (submod "racket.rkt" reader)
|
||
7 years ago
|
(provide (all-defined-out))
|
||
7 years ago
|
(require "number.rkt")
|
||
|
|
||
7 years ago
|
(define (resolve-length len-arg [stream #f] [parent #f])
|
||
7 years ago
|
(cond
|
||
7 years ago
|
[(not len-arg) #f]
|
||
|
[(number? len-arg) len-arg]
|
||
|
[(procedure? len-arg) (len-arg parent)]
|
||
|
[(and parent (key? len-arg)) (ref parent len-arg)] ; treat as key into RStruct parent
|
||
|
[(and stream (NumberT? len-arg)) (send len-arg decode stream)]
|
||
|
[else (raise-argument-error 'resolveLength "fixed-size argument" len-arg)]))
|