1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#lang racket/base
(require racket/contract
racket/match
racket/set
"mod.rkt")
(provide message-to-main-thread-channel
(struct-out message-to-main-thread)
(struct-out load-gui)
(struct-out rerun)
rerun-default
context-level?
instrument-level?
profile/coverage-level?
debug-level?)
;;; Definitions for the context-level member of rerun
(define profile/coverage-levels
;; "sibling" levels that need instrument plus...
'(profile ;profiling-enabled
coverage)) ;execute-counts-enabled
(define instrument-levels
`(high ;compile-context-preservation-enabled #t + instrument
,@profile/coverage-levels))
(define context-levels
`(low ;compile-context-preservation-enabled #f
medium ;compile-context-preservation-enabled #t
,@instrument-levels
debug))
(define-syntax-rule (memq? x xs)
(and (memq x xs) #t))
(define (context-level? v) (memq? v context-levels))
(define (instrument-level? v) (memq? v instrument-levels))
(define (profile/coverage-level? v) (memq? v profile/coverage-levels))
(define (debug-level? v) (eq? v 'debug))
;;; Messages to the main thread via a channel
(define message-to-main-thread-channel (make-channel))
(define-struct/contract message-to-main-thread ())
(define-struct/contract (load-gui message-to-main-thread)
([in-repl? boolean?]))
(define-struct/contract (rerun message-to-main-thread)
([maybe-mod (or/c #f mod?)]
[memory-limit exact-nonnegative-integer?] ;0 = no limit
[pretty-print? boolean?]
[context-level context-level?]
;; The following contract is the weaker `vector?` instead of
;; `(vectorof string?)` because latter fails under Racket 6.0 and
;; 6.1 when the value is accessed from the struct and passed to
;; `current-command-line-arguments`. WAT.
[cmd-line-args vector?]
[debug-files (set/c path?)]
[ready-thunk (-> any/c)]))
(define rerun-default (rerun #f
0
#f
'low
#()
(set)
void))
|