#lang racket/base (require racket/gui/base racket/class) (provide make-sexp-snipclass%) (define (make-sexp-snipclass% sexp-snip%) (class snip-class% (define/override (read in) (define left-bracket (integer->char (bytes-ref (send in get-bytes) 0))) (define right-bracket (integer->char (bytes-ref (send in get-bytes) 0))) (define snip-count (send in get-exact)) (define saved-snips (for/list ([in-range snip-count]) (define classname (bytes->string/utf-8 (send in get-bytes))) (define snipclass (send (get-the-snip-class-list) find classname)) (send snipclass read in))) (new sexp-snip% [left-bracket left-bracket] [right-bracket right-bracket] [saved-snips saved-snips])) (super-new)))