emacs.d/elpa/racket-mode-20191204.205/racket/channel.rkt

71 lines
2 KiB
Racket
Raw Normal View History

2019-11-23 09:10:03 +01:00
#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?]
[cmd-line-args (vectorof string?)]
[debug-files (set/c path?)]
[retry-skeletal? boolean?]
[ready-thunk (-> any/c)]))
(define rerun-default (rerun #f
0
#f
'low
#()
(set)
#t
void))