Update of /project/cl-irc/cvsroot/cl-irc
In directory common-lisp.net:/home/bmastenbrook/cl-irc
Modified Files:
protocol.lisp
Log Message:
speedup from Maddas
Date: Fri Aug 6 06:08:10 2004
Author: bmastenbrook
Index: cl-irc/protocol.lisp
diff -u cl-irc/protocol.lisp:1.10 cl-irc/protocol.lisp:1.11
--- cl-irc/protocol.lisp:1.10 Fri Aug 6 06:00:52 2004
+++ cl-irc/protocol.lisp Fri Aug 6 06:08:09 2004
@@ -1,4 +1,4 @@
-;;;; $Id: protocol.lisp,v 1.10 2004/08/06 13:00:52 bmastenbrook Exp $
+;;;; $Id: protocol.lisp,v 1.11 2004/08/06 13:08:09 bmastenbrook Exp $
;;;; $Source: /project/cl-irc/cvsroot/cl-irc/protocol.lisp,v $
;;;; See LICENSE for licensing information.
@@ -592,34 +592,32 @@
(defclass irc-error-reply (irc-message) ())
-(defun intern-message-symbol (prefix name)
- "Intern based on symbol-name to support case-sensitive mlisp"
- (intern
- (concatenate 'string
- (symbol-name prefix)
- "-"
- (symbol-name name)
- "-"
- (symbol-name '#:message))))
-
-(defmacro define-irc-message (command)
- (let ((name (intern-message-symbol :irc command)))
- `(progn
- (defmethod find-irc-message-class ((type (eql ,command)))
- (find-class ',name))
- (export ',name)
- (defclass ,name (irc-message) ()))))
-
-(defun create-irc-message-classes (class-list)
- (dolist (class class-list)
- (eval (list 'define-irc-message class)))) ; argh. eval.
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defun intern-message-symbol (prefix name)
+ "Intern based on symbol-name to support case-sensitive mlisp"
+ (intern
+ (concatenate 'string
+ (symbol-name prefix)
+ "-"
+ (symbol-name name)
+ "-"
+ (symbol-name '#:message))))
+
+ (defun define-irc-message (command)
+ (let ((name (intern-message-symbol :irc command)))
+ `(progn
+ (defmethod find-irc-message-class ((type (eql ,command)))
+ (find-class ',name))
+ (export ',name)
+ (defclass ,name (irc-message) ())))))
+
+(defmacro create-irc-message-classes (class-list)
+ `(progn ,@(mapcar #'define-irc-message class-list)))
;; should perhaps wrap this in an eval-when?
-(create-irc-message-classes (remove-duplicates
- (mapcar #'second *reply-names*)))
-(create-irc-message-classes '(:privmsg :notice :kick :topic :error
- :mode :ping :nick :join :part :quit :kill
- :pong :invite))
+(create-irc-message-classes #.(remove-duplicates (mapcar #'second *reply-names*)))
+(create-irc-message-classes (:privmsg :notice :kick :topic :error :mode :ping
+ :nick :join :part :quit :kill :pong :invite))
(defmethod find-irc-message-class (type)
(declare (ignore type))
@@ -654,20 +652,20 @@
(defgeneric find-ctcp-message-class (type))
-(defmacro define-ctcp-message (ctcp-command)
- (let ((name (intern-message-symbol :ctcp ctcp-command)))
- `(progn
- (defmethod find-ctcp-message-class ((type (eql ,ctcp-command)))
- (find-class ',name))
- (export ',name)
- (defclass ,name (ctcp-mixin irc-message) ()))))
-
-(defun create-ctcp-message-classes (class-list)
- (dolist (class class-list)
- (eval (list 'define-ctcp-message class)))) ; argh. eval. must go away.
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defun define-ctcp-message (ctcp-command)
+ (let ((name (intern-message-symbol :ctcp ctcp-command)))
+ `(progn
+ (defmethod find-ctcp-message-class ((type (eql ,ctcp-command)))
+ (find-class ',name))
+ (export ',name)
+ (defclass ,name (ctcp-mixin irc-message) ())))))
+
+(defmacro create-ctcp-message-classes (class-list)
+ `(progn ,@(mapcar #'define-ctcp-message class-list)))
;; should perhaps wrap this in an eval-when?
-(create-ctcp-message-classes '(:action :source :finger :ping
+(create-ctcp-message-classes (:action :source :finger :ping
:version :userinfo :time :dcc-chat-request
:dcc-send-request))