;; stream.ol (require 'objective-lisp) (defClass Stream () (stream) ) (defMethod Stream :isnew (s) (setf stream s) self ) (defClass IStream Stream () (common-lisp-read-table) ;; *readtable* is a class variable of IStream ) (defMethod IStream :isnew (s) (send-super :isnew s) (unless common-lisp-read-table (setq common-lisp-read-table *readtable*)) ;;HACK self ) (defClassMethod IStream :open (fn) [self :new (open fn)] ) (defMethod IStream :set-readtable (&optional tbl) (setq *readtable* (or tbl common-lisp-read-table)) ) (defMethod IStream :read (&optional eof) (read stream eof) ) (defClass OStream Stream () ) (defMethod OStream :format (form &rest args) (apply #'format (append (list stream form) args)) ) (provide 'stream)