From 40f27f81538960cb435cbcd1971546574700c2ee Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 12 Feb 2019 14:39:05 -0700 Subject: [PATCH] io: convert make-output-port to object style --- racket/src/io/port/custom-output-port.rkt | 45 +++++++++++------------ 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/racket/src/io/port/custom-output-port.rkt b/racket/src/io/port/custom-output-port.rkt index 6cfc7920da..f44bf9dfbf 100644 --- a/racket/src/io/port/custom-output-port.rkt +++ b/racket/src/io/port/custom-output-port.rkt @@ -132,7 +132,7 @@ (wrap-check-write-evt-result '|user port write| r start end non-block/buffer?)] [else r])])) - (define (get-write-evt self orig-out bstr start end) + (define (get-write-evt self bstr start end) (end-atomic) (define r (user-get-write-evt bstr start end)) (unless (evt? r) @@ -167,25 +167,24 @@ (user-close) (start-atomic)) - (make-core-output-port - #:name name - #:self #f - #:evt evt - #:write-out - (if (output-port? user-write-out) - user-write-out - write-out) - #:close close - #:write-out-special - (if (output-port? user-write-out-special) - user-write-out-special - (and user-write-out-special write-out-special)) - #:get-write-evt (and user-get-write-evt get-write-evt) - #:get-write-special-evt (and user-get-write-special-evt - (lambda (self v) - (user-get-write-special-evt v))) - #:get-location get-location - #:count-lines! count-lines! - #:init-offset init-offset - #:file-position file-position - #:buffer-mode buffer-mode)) + (new core-output-port + #:override + ([write-out (if (output-port? user-write-out) + user-write-out + write-out)] + [close close] + [write-out-special + (if (output-port? user-write-out-special) + user-write-out-special + (and user-write-out-special write-out-special))] + [get-write-evt (and user-get-write-evt get-write-evt)] + [get-write-special-evt (and user-get-write-special-evt + (lambda (self v) + (user-get-write-special-evt v)))] + [get-location get-location] + [count-lines! count-lines!] + [file-position file-position] + [buffer-mode buffer-mode]) + [name name] + [evt evt] + [offset init-offset]))