changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/io/pkg.lisp

changeset 698: 96958d3eb5b0
parent: 2bad47888dbf
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; io/pkg.lisp --- high-level IO API
2 
3 ;;
4 
5 ;;; Commentary:
6 
7 ;; pay close attention to the spec for opportunities to replace io
8 ;; primitives -- for example WITH-OPEN-FILE accepts a :CLASS keyword
9 ;; argument, which defaults to SB-SYS:FD-STREAM.
10 
11 ;; this package would be responsible for providing an alternative
12 ;; class, something like IO-STREAM.
13 
14 ;;; Code:
15 (defpackage :io/proto
16  (:use :cl :std/condition)
17  (:export :io-error))
18 
19 (defpackage :io/static-vector
20  (:use :cl :std :sb-alien)
21  (:shadow :constantp)
22  (:export
23  ;; Constructors and destructors
24  :make-static-vector
25  :free-static-vector
26  :with-static-vector
27  :with-static-vectors
28  ;; Accessors
29  :static-vector-pointer
30  ;; Alien wrapper type
31  :static-vector
32  ;; Foreign memory operations
33  :replace-foreign-memory
34  :fill-foreign-memory))
35 
36 (defpackage :io/fast
37  (:use :cl :std :io/proto)
38  (:import-from :io/static-vector :make-static-vector)
39  (:export
40  #:fast-read-byte #:fast-write-byte
41  #:fast-read-sequence #:fast-write-sequence
42  #:with-fast-input #:with-fast-output
43  #:write8 #:writeu8
44  #:write8-le #:writeu8-le #:write8-be #:writeu8-be
45  #:write16-le #:writeu16-le #:write16-be #:writeu16-be
46  #:write24-le #:writeu24-le #:write24-be #:writeu24-be
47  #:write32-le #:writeu32-le #:write32-be #:writeu32-be
48  #:write64-le #:writeu64-le #:write64-be #:writeu64-be
49  #:write128-le #:writeu128-le #:write128-be #:writeu128-be
50  #:read8 #:readu8
51  #:read8-le #:readu8-le #:read8-be #:readu8-be
52  #:read16-le #:readu16-le #:read16-be #:readu16-be
53  #:read32-le #:readu32-le #:read32-be #:readu32-be
54  #:read64-le #:readu64-le #:read64-be #:readu64-be
55  #:read128-le #:readu128-le #:read128-be #:readu128-be
56  #:fast-output-stream #:fast-input-stream))
57 
58 (defpackage :io/ring
59  (:use :cl :uring :io/proto)
60  (:import-from :sb-alien :addr)
61  (:import-from :std :deferror :eval-always))
62 
63 (defpackage :io/stream
64  (:use :cl :io/proto)
65  (:import-from :std :deferror :eval-always)
66  (:export :io-stream-error :io-stream))
67 
68 (defpackage :io/socket
69  (:use :cl :io/proto)
70  (:import-from :std :deferror :eval-always)
71  (:export :io-socket-error :io-socket :sockopt-receive-timeout))
72 
73 (defpackage :io/flate
74  (:use :cl :io/proto)
75  (:import-from :std :deferror :eval-always)
76  (:export :flate-error :compression-error :decompression-error
77  :*compression-buffer-size* :decompression-buffer-size* :finish-compression :finish-decompression
78  :reset-compressor :reset-decompressor :make-compressing-stream :make-decompressing-stream
79  :compress-object :decompress-object :compress :decompress
80  :compressor :compressing-stream :decompressor :decompressing-stream))
81 
82 (defpackage :io/zstd
83  (:use :cl :std :io/proto :io/flate)
84  (:import-from :std :deferror :eval-always)
85  (:export :zstd-error :zstd-compressor :zstd-decompressor))
86 
87 (defpackage :io/kbd
88  (:use :cl :std :io/proto :xkb)
89  (:export :kbd-error))
90 
91 (pkg:defpkg :io
92  (:use :cl)
93  (:use-reexport :io/proto :io/ring :io/flate :io/zstd :io/stream :io/socket))