#lang racket/base (require "data.rkt") (provide (struct-out qr-spec)) (struct qr-spec (version edc-level data) #:guard (lambda (version edc-level data name) (unless (exact-integer? version) (error name "version not an exact integer: ~a" version)) (unless (<= 1 version 40) (error name "version not between 1 and 40: ~a" version)) (unless (memq edc-level '(L M Q H)) (error name "edc level not one of L, M, Q, H: ~a" edc-level)) (unless (qr-data? data) (error name "data not qr-data: ~a" data)) (values version edc-level data)) #:transparent)