diff lisp/tl/tl-atype.el @ 155:43dd3413c7c7 r20-3b4

Import from CVS: tag r20-3b4
author cvs
date Mon, 13 Aug 2007 09:39:39 +0200
parents c0c698873ce1
children
line wrap: on
line diff
--- a/lisp/tl/tl-atype.el	Mon Aug 13 09:38:27 2007 +0200
+++ b/lisp/tl/tl-atype.el	Mon Aug 13 09:39:39 2007 +0200
@@ -1,12 +1,13 @@
 ;;; tl-atype.el --- atype functions
 
 ;; Copyright (C) 1994,1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1997 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: tl-atype.el,v 1.2 1996/12/28 21:03:09 steve Exp $
+;; Version: $Id: tl-atype.el,v 1.3 1997/06/06 00:57:42 steve Exp $
 ;; Keywords: atype
 
-;; This file is part of tl (Tiny Library).
+;; This file is part of XEmacs.
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
@@ -25,9 +26,8 @@
 
 ;;; Code:
 
-(require 'emu)
-(require 'tl-str)
 (require 'tl-list)
+(require 'atype)
 
 
 ;;; @ field
@@ -53,150 +53,6 @@
     c))
 
 
-;;; @ field unifier
-;;;
-
-(defun field-unifier-for-default (a b)
-  (let ((ret
-	 (cond ((equal a b)    a)
-	       ((null (cdr b)) a)
-	       ((null (cdr a)) b)
-	       )))
-    (if ret
-	(list nil ret nil)
-      )))
-
-(defun field-unify (a b)
-  (let ((sym (symbol-concat "field-unifier-for-" (car a))))
-    (if (not (fboundp sym))
-	(setq sym (function field-unifier-for-default))
-      )
-    (funcall sym a b)
-    ))
-
-
-;;; @ type unifier
-;;;
-
-(defun assoc-unify (class instance)
-  (catch 'tag
-    (let ((cla (copy-alist class))
-	  (ins (copy-alist instance))
-	  (r class)
-	  cell aret ret prev rest)
-      (while r
-	(setq cell (car r))
-	(setq aret (fetch-field (car cell) ins))
-	(if aret
-	    (if (setq ret (field-unify cell aret))
-		(progn
-		  (if (car ret)
-		      (setq prev (put-field (car (car ret))
-					    (cdr (car ret))
-					    prev))
-		    )
-		  (if (nth 2 ret)
-		      (setq rest (put-field (car (nth 2 ret))
-					    (cdr (nth 2 ret))
-					    rest))
-		    )
-		  (setq cla (put-field (car cell)(cdr (nth 1 ret)) cla))
-		  (setq ins (delete-field (car cell) ins))
-		  )
-	      (throw 'tag nil)
-	      ))
-	(setq r (cdr r))
-	)
-      (setq r (copy-alist ins))
-      (while r
-	(setq cell (car r))
-	(setq aret (fetch-field (car cell) cla))
-	(if aret
-	    (if (setq ret (field-unify cell aret))
-		(progn
-		  (if (car ret)
-		      (setq prev (put-field (car (car ret))
-					    (cdr (car ret))
-					    prev))
-		    )
-		  (if (nth 2 ret)
-		      (setq rest (put-field (car (nth 2 ret))
-					    (cdr (nth 2 ret))
-					    rest))
-		    )
-		  (setq cla (delete-field (car cell) cla))
-		  (setq ins (put-field (car cell)(cdr (nth 1 ret)) ins))
-		  )
-	      (throw 'tag nil)
-	      ))
-	(setq r (cdr r))
-	)
-      (list prev (append cla ins) rest)
-      )))
-
-(defun get-unified-alist (db al)
-  (let ((r db) ret)
-    (catch 'tag
-      (while r
-	(if (setq ret (nth 1 (assoc-unify (car r) al)))
-	    (throw 'tag ret)
-	  )
-	(setq r (cdr r))
-	))))
-
-(defun delete-atype (atl al)
-  (let* ((r atl) ret oal)
-    (setq oal
-	  (catch 'tag
-	    (while r
-	      (if (setq ret (nth 1 (assoc-unify (car r) al)))
-		  (throw 'tag (car r))
-		)
-	      (setq r (cdr r))
-	      )))
-    (delete oal atl)
-    ))
-
-(defun remove-atype (sym al)
-  (and (boundp sym)
-       (set sym (delete-atype (eval sym) al))
-       ))
-
-(defun replace-atype (atl old-al new-al)
-  (let* ((r atl) ret oal)
-    (if (catch 'tag
-	  (while r
-	    (if (setq ret (nth 1 (assoc-unify (car r) old-al)))
-		(throw 'tag (rplaca r new-al))
-	      )
-	    (setq r (cdr r))
-	    ))
-	atl)))
-
-(defun set-atype (sym al &rest options)
-  (if (null (boundp sym))
-      (set sym al)
-    (let* ((replacement (memq 'replacement options))
-	   (ignore-fields (car (cdr (memq 'ignore options))))
-	   (remove (or (car (cdr (memq 'remove options)))
-		       (let ((ral (copy-alist al)))
-			 (mapcar (function
-				  (lambda (type)
-				    (setq ral (del-alist type ral))
-				    ))
-				 ignore-fields)
-			 ral)))
-	   )
-      (set sym
-	   (or (if replacement
-		   (replace-atype (eval sym) remove al)
-		 )
-	       (cons al
-		     (delete-atype (eval sym) remove)
-		     )
-	       )))))
-
-
 ;;; @ end
 ;;;