X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=io.lisp;h=4134bd669966f63104bd06416be4ebfe069f3c24;hb=c711146209cf9fbda5fe2f11368c6c43949798f7;hp=69bcb649d84081078ce46cc0c1870a0c8ef8edc4;hpb=4a5b626f01db51b02f969adb33ddad6aa9ee303a;p=kmrcl.git diff --git a/io.lisp b/io.lisp index 69bcb64..4134bd6 100644 --- a/io.lisp +++ b/io.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: io.lisp,v 1.7 2003/06/06 21:59:29 kevin Exp $ +;;;; $Id: io.lisp,v 1.14 2003/07/30 23:01:46 kevin Exp $ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -56,17 +56,27 @@ (stream-subst old new in out)))) (defun print-n-chars (char n stream) - (declare (fixnum n) - (optimize (speed 3) (safety 0) (space 0))) - (do ((i 0 (1+ i))) - ((= i n) char) + (declare (fixnum n) (optimize (speed 3) (safety 0) (space 0))) + (dotimes (i n) (declare (fixnum i)) (write-char char stream))) - + +(defun print-n-strings (str n stream) + (declare (fixnum n) (optimize (speed 3) (safety 0) (space 0))) + (dotimes (i n) + (declare (fixnum i)) + (write-string str stream))) + (defun indent-spaces (n &optional (stream *standard-output*)) "Indent n*2 spaces to output stream" (print-n-chars #\space (+ n n) stream)) + +(defun indent-html-spaces (n &optional (stream *standard-output*)) + "Indent n*2 html spaces to output stream" + (print-n-strings " " (+ n n) stream)) + + (defun print-list (l &optional (output *standard-output*)) "Print a list to a stream" (format output "~{~A~%~}" l)) @@ -153,3 +163,18 @@ (setf pos 0)))) (buf-flush buf out))) +(declaim (inline write-fixnum)) +(defun write-fixnum (n s) + #+allegro (excl::print-fixnum s 10 n) + #-allegro (write-string (write-to-string n) s)) + + + +(defun null-output-stream () + #-openmcl + (when (probe-file #p"/dev/null") + (open #p"/dev/null" :direction :output :if-exists :overwrite)) + #+openmcl + (when (probe-file #p"/dev/null") + (open-device-stream #p"/dev/null" :output)) + )