Recently Written · git

clic

MIRROR ONLY Gopher client with pretty colours in Common Lisp

git clone https://github.com/equwal/clic

Log | Files | Refs


3rdparties/software/trivial-gray-streams-20181018-git/package.lisp (3077 bytes)

1 #+xcvb (module ())
2 
3 (in-package :cl-user)
4 
5 #+:abcl
6 (eval-when (:compile-toplevel :load-toplevel :execute)
7   (require :gray-streams))
8 
9 #+(or cmu genera)
10 (eval-when (:compile-toplevel :load-toplevel :execute)
11   (require :gray-streams))
12 
13 #+allegro
14 (eval-when (:compile-toplevel :load-toplevel :execute)
15   (unless (fboundp 'excl:stream-write-string)
16     (require "streamc.fasl")))
17 
18 #+(or ecl clasp)
19 (eval-when (:compile-toplevel :load-toplevel :execute)
20   (gray::redefine-cl-functions))
21 
22 (macrolet
23     ((frob ()
24        (let ((gray-class-symbols
25               '(#:fundamental-stream
26                 #:fundamental-input-stream #:fundamental-output-stream
27                 #:fundamental-character-stream #:fundamental-binary-stream
28                 #:fundamental-character-input-stream #:fundamental-character-output-stream
29                 #:fundamental-binary-input-stream #:fundamental-binary-output-stream))
30              (gray-function-symbols
31               '(#:stream-read-char
32                 #:stream-unread-char #:stream-read-char-no-hang
33                 #:stream-peek-char #:stream-listen #:stream-read-line
34                 #:stream-clear-input #:stream-write-char #:stream-line-column
35                 #:stream-start-line-p #:stream-write-string #:stream-terpri
36                 #:stream-fresh-line #:stream-finish-output #:stream-force-output
37                 #:stream-clear-output #:stream-advance-to-column
38                 #:stream-read-byte #:stream-write-byte)))
39 	 `(progn
40 
41             (defpackage impl-specific-gray
42               (:use :cl)
43               (:import-from
44                #+sbcl :sb-gray
45                #+allegro :excl
46                #+cmu :ext
47                #+(or clisp ecl mocl clasp) :gray
48                #+openmcl :ccl
49                #+lispworks :stream
50                #+(or abcl genera) :gray-streams
51                #-(or sbcl allegro cmu clisp openmcl lispworks ecl clasp abcl mocl genera) ...
52                ,@gray-class-symbols
53                ,@gray-function-symbols)
54               (:export
55                ,@gray-class-symbols
56                ,@gray-function-symbols))
57 
58             (defpackage :trivial-gray-streams
59               (:use :cl)
60               (:import-from #:impl-specific-gray
61                             ;; We import and re-export only
62                             ;; function symbols;
63                             ;; But we define our own classes
64                             ;; mirroring the gray class hierarchy
65                             ;; of the lisp implementation (this
66                             ;; is necessary to define our methods
67                             ;; for particular generic functions)
68                             ,@gray-function-symbols)
69               (:export ,@gray-class-symbols
70                        ,@gray-function-symbols
71                        ;; extension functions
72                        #:stream-read-sequence
73                        #:stream-write-sequence
74                        #:stream-file-position
75                        ;; deprecated
76                        #:trivial-gray-stream-mixin))))))
77   (frob))