From 942b973ade8aa625de14a6a58c8d8998b8e1c37b Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Wed, 20 Aug 2008 07:12:04 +0200 Subject: [PATCH] Move reader macro utils to base. --- base/pkgdcl.lisp | 4 ++++ base/reader.lisp | 39 +++++++++++++++++++++++++++++++++++++++ iolib.base.asd | 1 + net.sockets/common.lisp | 33 --------------------------------- net.sockets/pkgdcl.lisp | 5 ----- 5 files changed, 44 insertions(+), 38 deletions(-) create mode 100644 base/reader.lisp diff --git a/base/pkgdcl.lisp b/base/pkgdcl.lisp index 369a835..8a7feea 100644 --- a/base/pkgdcl.lisp +++ b/base/pkgdcl.lisp @@ -18,6 +18,10 @@ #:deprecation-warning-function-name #:deprecation-warning-type #:deprecation-warning-reason + ;; Reader utils + #:define-syntax + #:enable-reader-macro #:enable-reader-macro* + #:disable-reader-macro #:disable-reader-macro* ;; SPLIT-SEQUENCE #:split-sequence #:split-sequence-if #:split-sequence-if-not ;; MISC diff --git a/base/reader.lisp b/base/reader.lisp new file mode 100644 index 0000000..ff5b7d3 --- /dev/null +++ b/base/reader.lisp @@ -0,0 +1,39 @@ +;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*- +;;; +;;; --- Reader utils +;;; + +(in-package :iolib.base) + +;; Reader macros + +(defgeneric enable-reader-macro* (name)) + +(defgeneric disable-reader-macro* (name)) + +(defmacro enable-reader-macro (name) + `(eval-when (:compile-toplevel) + (enable-reader-macro* ,name))) + +(defmacro disable-reader-macro (name) + `(eval-when (:compile-toplevel) + (disable-reader-macro* ,name))) + +(defun save-old-readtable (symbol readtable) + (setf (getf (symbol-plist symbol) 'old-readtable) readtable)) + +(defun get-old-readtable (symbol) + (getf (symbol-plist symbol) 'old-readtable)) + +(defmethod enable-reader-macro* :before ((name symbol)) + (save-old-readtable name *readtable*) + (setf *readtable* (copy-readtable))) + +(defmethod disable-reader-macro* ((name symbol)) + (assert (readtablep (get-old-readtable name))) + (setf *readtable* (get-old-readtable name)) + (save-old-readtable name nil)) + +(defmacro define-syntax (name &body body) + `(defmethod enable-reader-macro* ((name (eql ',name))) + ,@body)) diff --git a/iolib.base.asd b/iolib.base.asd index 575dcf0..89ca089 100644 --- a/iolib.base.asd +++ b/iolib.base.asd @@ -12,4 +12,5 @@ :components ((:file "pkgdcl") (:file "return-star" :depends-on ("pkgdcl")) (:file "defobsolete" :depends-on ("pkgdcl" "return-star")) + (:file "reader" :depends-on ("pkgdcl" "return-star")) (:file "split-sequence" :depends-on ("pkgdcl" "return-star")))) diff --git a/net.sockets/common.lisp b/net.sockets/common.lisp index 21929e8..b3594ab 100644 --- a/net.sockets/common.lisp +++ b/net.sockets/common.lisp @@ -238,36 +238,3 @@ (defun unset-method-docstring (gf qualifiers specializers) (setf (documentation (find-method gf qualifiers (mapcar #'find-class specializers)) t) nil)) - -;;; Reader macros - -(defgeneric enable-reader-macro* (name)) - -(defgeneric disable-reader-macro* (name)) - -(defmacro enable-reader-macro (name) - `(eval-when (:compile-toplevel) - (enable-reader-macro* ,name))) - -(defmacro disable-reader-macro (name) - `(eval-when (:compile-toplevel) - (disable-reader-macro* ,name))) - -(defun save-old-readtable (symbol readtable) - (setf (getf (symbol-plist symbol) 'old-readtable) readtable)) - -(defun get-old-readtable (symbol) - (getf (symbol-plist symbol) 'old-readtable)) - -(defmethod enable-reader-macro* :before ((name symbol)) - (save-old-readtable name *readtable*) - (setf *readtable* (copy-readtable))) - -(defmethod disable-reader-macro* ((name symbol)) - (assert (readtablep (get-old-readtable name))) - (setf *readtable* (get-old-readtable name)) - (save-old-readtable name nil)) - -(defmacro define-syntax (name &body body) - `(defmethod enable-reader-macro* ((name (eql ',name))) - ,@body)) diff --git a/net.sockets/pkgdcl.lisp b/net.sockets/pkgdcl.lisp index a4f2f5d..2cd3a18 100644 --- a/net.sockets/pkgdcl.lisp +++ b/net.sockets/pkgdcl.lisp @@ -210,11 +210,6 @@ #:*dns-search-domain* ;; Miscellaneous - #:enable-reader-macro - #:enable-reader-macro* - #:disable-reader-macro - #:disable-reader-macro* - #:define-syntax #:ip-address )) -- 2.11.4.GIT