; Dynamic lists ; ============== ;;File: dlists.gwm -- manage dynamic lists ;;Author: colas@mirsa.inria.fr (Colas NAHABOO) -- Bull Research FRANCE ;;Revision: 2 -- Dec 20 1989 ;;State: Exp ;;GWM Version: 1.4 (setq Dlists t) ;package is loaded ; making a new list: ; (Dlists.make) ; of name foo: (Dlists.make 'foo) ; with pre-set size n: (Dlists.make n) (defunq Dlists.make args (with (list.name ()) (if (not args) (set (setq list.name (Dlists.name.new)) ()) (= (type (# 0 args)) 'number) (set (setq list.name (Dlists.name.new)) (list-make (# 0 args))) t (set (setq list.name (# 0 args)) ())) list.name)) (setq Dlists.name.count 0) ;gensyms for Dlists: Dlist#78 (defun Dlists.name.new () (atom (+ "Dlist#" (itoa (setq Dlists.name.count (+ Dlists.name.count 1)))))) ; appending one element (defun Dlists.append (l obj) (## (length (eval l)) l obj)) ; removing an element (returns pos) (defun Dlists.remove (l obj) (if (setq Dlists.remove.pos (member obj (eval l))) (progn (delete-nth Dlists.remove.pos (eval l)) Dlists.remove.pos ) 0 ) ) ; getting the list of a Dlist (defun Dlists.list (dlist) (eval dlist)) ; getting the length of a Dlist (defun Dlists.length (dlist) (length (Dlists.list dlist))) ; setting the list of a dlist to some list (which is copied into it) (defun Dlists.set (dlist l) (set dlist l))