r5156: *** empty log message ***
authorKevin M. Rosenberg <kevin@rosenberg.net>
Wed, 18 Jun 2003 17:12:29 +0000 (17:12 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Wed, 18 Jun 2003 17:12:29 +0000 (17:12 +0000)
kmrcl.asd
lists.lisp
package.lisp

index 8fafc8aee70875f029aeec051425a69a772acd5b..40ab8118ef6b00336922c0ea1a8aef217aa22c32 100644 (file)
--- a/kmrcl.asd
+++ b/kmrcl.asd
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: kmrcl.asd,v 1.33 2003/06/18 01:00:52 kevin Exp $
+;;;; $Id: kmrcl.asd,v 1.34 2003/06/18 17:12:29 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
@@ -45,7 +45,6 @@
      (:file "symbols" :depends-on ("macros"))
      (:file "datetime" :depends-on ("macros"))
      (:file "math" :depends-on ("macros"))
-     (:file "assoc" :depends-on ("macros"))
      #+kmr-mop (:file "mop" :depends-on ("macros"))
      #+kmr-mop (:file "attrib-class" :depends-on ("seqs" "mop"))
      (:file "equal" :depends-on ("macros" #+kmr-mop "mop"))
index a1fd55cf1498367cec2e52f84520620770eda60f..ed2148ee347cba703e88b21cd44a1f400df42288 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: lists.lisp,v 1.5 2003/06/06 21:59:29 kevin Exp $
+;;;; $Id: lists.lisp,v 1.6 2003/06/18 17:12:29 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
   (let ((results (car list)))
     (dolist (elem (cdr list) results)
       (setq results (append results elem)))))
+
+
+;; alists and plists
+
+(defun alist-elem-p (elem)
+  (and (consp elem) (atom (car elem)) (atom (cdr elem))))
+
+(defun alistp (alist)
+  (when (listp alist)
+    (dolist (elem alist)
+      (unless (alist-elem-p elem)
+        (return-from alistp nil)))
+    t))
+
+(defmacro update-alist (akey value alist &key (test '#'eql) (key '#'identity))
+  "Macro to support below (setf get-alist)"
+  (let ((elem (gensym)))
+    `(let ((,elem (assoc ,akey ,alist :test ,test :key ,key)))
+       (if ,elem
+          (progn
+            (setf (cdr ,elem) ,value)
+            ,alist)
+       (setf ,alist (acons ,akey ,value ,alist))))))
+
+(defun get-alist (key alist &key (test #'eql))
+  (cdr (assoc key alist :test test)))
+
+(defun (setf get-alist) (value key alist &key (test #'eql))
+  (update-alist key value alist :test test)
+  value)
+
+(defun alist-plist (alist)
+  (apply #'append (mapcar #'(lambda (x) (list (car x) (cdr x))) alist)))
+
+(defun plist-alist (plist)
+  (do ((alist '())
+       (pl plist (cddr plist)))
+      ((null pl) alist)
+    (setq alist (acons (car pl) (cadr pl) alist))))
+
+(defun get-plist (key plist &key (test 'eql) (missing nil))
+  (let-if (pos (member key plist :test test))
+         (cadr pos)
+         missing))
index d35299880993a55f7852b1f7ea220634f826ed61..50fafd73f74e4867a0ec01d9558b88f7f3db7777 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: package.lisp,v 1.42 2003/06/18 01:00:52 kevin Exp $
+;;;; $Id: package.lisp,v 1.43 2003/06/18 17:12:29 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
    #:remove-keyword
    #:remove-keywords
    #:append-sublists
+   #:alist-elem-p
+   #:alistp
+   #:get-alist
+   #:update-alist
+   #:alist-plist
+   #:plist-alist
+   #:get-plist
 
+   ;; seq.lisp
    #:nsubseq
+   
    ;; math.lisp
    #:ensure-integer
    
    #:write-xml-cdata
    
    ;; From console
-   *console-msgs*
-   cmsg
-   cmsg-c
-   cmsg-add
-   cmsg-remove
-   fixme
-   
-   ;; assoc
-   #:alist-elem-p
-   #:alistp
-   #:get-alist
-   #:update-alist
-   #:alist-plist
-   #:plist-alist
-   #:get-plist
+   #:*console-msgs*
+   #:cmsg
+   #:cmsg-c
+   #:cmsg-add
+   #:cmsg-remove
+   #:fixme
+  
    ))