original commit: f1eb8122bd9c105b8a7155a2db63a6d8869453ad
This commit is contained in:
Matthew Flatt 2004-07-30 21:21:18 +00:00
parent 92c674039c
commit 4558dab073
3 changed files with 85 additions and 5 deletions

View File

@ -80,7 +80,7 @@
(readable-snip<%>) (readable-snip<%>)
(define/public (read-one-special index src line col pos) (define/public (read-one-special index src line col pos)
(if multi-mode? (if multi-mode?
(values 'multi 1 (= index 1)) (values 'multi (= index 1))
(error 'ack))) (error 'ack)))
(super-new)))) (super-new))))
(let ([p (open-input-text-editor e)]) (let ([p (open-input-text-editor e)])
@ -114,7 +114,87 @@
(test 'multi 'read (read p)) (test 'multi 'read (read p))
(test 'multi 'read (read p)) (test 'multi 'read (read p))
(test #t 'read (is-a? (read p) image-snip%)))) (test #t 'read (is-a? (read p) image-snip%))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Snips and Streams ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define number-snip-class%
(class snip-class%
(define/override (read f)
(let* ([number-str (send f get-bytes)]
[number (string->number (bytes->string/utf-8 number-str))]
[decimal-prefix (bytes->string/utf-8 (send f get-bytes))]
[snip
(instantiate number-snip% ()
[number number]
[decimal-prefix decimal-prefix])])
snip))
(super-instantiate ())))
(define snip-class (make-object number-snip-class%))
(send snip-class set-classname (format "~s" `(lib "number-snip.ss" "drscheme" "private")))
(send (get-the-snip-class-list) add snip-class)
(define number-snip%
(class snip%
(init-field number)
(define/public (get-number) number)
(define/public (get-prefix) decimal-prefix)
(init-field [decimal-prefix ""])
(define/override (write f)
(send f put (string->bytes/utf-8 (number->string number)))
(send f put (string->bytes/utf-8 decimal-prefix)))
(define/override (copy)
(instantiate number-snip% ()
[number number]
[decimal-prefix decimal-prefix]))
(inherit get-style)
(super-instantiate ())
(inherit set-snipclass set-flags get-flags)
(set-snipclass snip-class)))
(define t (new text%))
(define t2 (new text%))
(send t insert (instantiate number-snip% () [number 1/2]))
(send t set-position 0 1)
(send t copy)
;; Under X, force snip to be marshalled:
(let ([s (send the-clipboard get-clipboard-data "WXME" 0)])
(send the-clipboard set-clipboard-client
(make-object (class clipboard-client%
(define/override (get-data fmt)
(and (string=? fmt "WXME")
s))
(inherit add-type)
(super-new)
(add-type "WXME")))
0))
(send t2 paste)
(let ([s (send t2 find-first-snip)])
(st 1/2 s get-number)
(st "" s get-prefix))
(let ()
(define orig-snip (make-object string-snip% "hello"))
(define out (make-object editor-stream-out-bytes-base%))
(define out-stream (make-object editor-stream-out% out))
(define _ (send orig-snip write out-stream))
(define in (make-object editor-stream-in-bytes-base% (send out get-bytes)))
(define in-stream (make-object editor-stream-in% in))
(define new-snip
(send (send (get-the-snip-class-list)
find
(send (send (new string-snip%) get-snipclass) get-classname))
read in-stream))
(st "hello" new-snip get-text 0 10))
;; ----------------------------------------
(report-errs) (report-errs)

View File

@ -9,7 +9,7 @@
(define (test expect name got) (define (test expect name got)
(set! test-count (add1 test-count)) (set! test-count (add1 test-count))
(unless (equal? expect got) (unless (equal? expect got)
(let ([s (format "~a: expected ~a; got ~a" name expect got)]) (let ([s (format "~a: expected ~e; got ~e" name expect got)])
(printf "ERROR: ~a~n" s) (printf "ERROR: ~a~n" s)
(set! errs (cons s errs))))) (set! errs (cons s errs)))))

View File

@ -33,10 +33,10 @@
(let ([s (make-semaphore 1)]) (let ([s (make-semaphore 1)])
(test s 'yield-wrapped (yield s))) (test s 'yield-wrapped (yield s)))
(let ([s (make-semaphore 1)]) (let ([s (make-semaphore 1)])
(test (list s) 'yield-wrapped (yield (make-wrapped-waitable s (lambda (v) (list v)))))) (test (list s) 'yield-wrapped (yield (wrap-evt s (lambda (v) (list v))))))
(let ([s (make-semaphore)]) (let ([s (make-semaphore)])
(thread (lambda () (sleep 0.01) (semaphore-post s))) (thread (lambda () (sleep 0.01) (semaphore-post s)))
(test (list s) 'yield-wrapped (yield (make-wrapped-waitable s (lambda (v) (list v)))))) (test (list s) 'yield-wrapped (yield (wrap-evt s (lambda (v) (list v))))))
(define (enable-tests f) (define (enable-tests f)
(printf "Enable ~a~n" f) (printf "Enable ~a~n" f)