;ELC ;;; compiled by cthomp@willow on Thu Aug 12 00:45:08 1993 ;;; from file /era/era-0.80/editor/lisp/pcl-cvs/dll-debug.el ;;; emacs version 19.8 (beta8) Lucid. ;;; bytecomp version 2.15; 14-jul-93. ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "This file was compiled for Emacs 19.")) (byte-code "!MMMMM" [provide dll dll-get-dummy-node (lambda (dll) dll) dll-list-nodes #[(dll) "A" [dll] 1] dll-set-from-node-list #[(dll list) " " [dll list] 2] dll-get-node-before #[(dll node) "A =At!" [dll node error "Node not on list"] 3] dll-insert-after (macro . #[(node element) "!! D DD DEEE*" [make-symbol "node" "element" element-v node-v let node element setcdr cons cdr] 8])] 2) (fset 'dll-element '(macro . #[(dll node) " D" [car node] 2 "\ Get the element of a NODE in a doubly linked list DLL. Args: DLL NODE."])) (fset 'dll-create #[nil "B" [DL-LIST nil] 2 "\ Create an empty doubly linked list."]) (fset 'dll-p #[(object) "=" [object DL-LIST] 2 "\ Return t if OBJECT is a doubly linked list, otherwise return nil."]) (fset 'dll-enter-first #[(dll element) " AB" [dll element] 3 "\ Add an element first on a doubly linked list. Args: DLL ELEMENT."]) (fset 'dll-enter-last #[(dll element) " \"  AB*" [dll-get-node-before dll nil element element node] 4 "\ Add an element last on a doubly linked list. Args: DLL ELEMENT."]) (fset 'dll-enter-after #[(dll node element) " \n\"\n  AB*" [dll-get-node-before dll node element element node] 4 "\ In the doubly linked list DLL, insert a node containing ELEMENT after NODE. Args: DLL NODE ELEMENT."]) (fset 'dll-enter-before #[(dll node element) " \n\"  AB*" [dll-get-node-before dll node element element node] 4 "\ In the doubly linked list DLL, insert a node containing ELEMENT before NODE. Args: DLL NODE ELEMENT."]) (fset 'dll-next #[(dll node) " \n\"\nA" [dll-get-node-before dll node] 3 "\ Return the node after NODE, or nil if NODE is the last node. Args: DLL NODE."]) (fset 'dll-previous #[(dll node) " \n\" =? )" [dll-get-node-before dll node prev] 3 "\ Return the node before NODE, or nil if NODE is the first node. Args: DLL NODE."]) (fset 'dll-delete #[(dll node) " \n\"\nA\n@" [dll-get-node-before dll node] 3 "\ Delete NODE from the doubly linked list DLL. Args: DLL NODE. Return the element of node."]) (fset 'dll-delete-first #[(dll) "A@AA" [dll] 3 "\ Delete the first NODE from the doubly linked list DLL. Return the element. Args: DLL. Returns nil if the DLL was empty."]) (fset 'dll-delete-last #[(dll) " \" \" =? ¡ @*" [dll-get-node-before dll nil last semilast] 3 "\ Delete the last NODE from the doubly linked list DLL. Return the element. Args: DLL. Returns nil if the DLL was empty."]) (fset 'dll-first #[(dll) "A@" [dll] 1 "\ Return the first element on the doubly linked list DLL. Return nil if the list is empty. The element is not removed."]) (fset 'dll-last #[(dll) " \" =? @)" [dll-get-node-before dll nil last] 4 "\ Return the last element on the doubly linked list DLL. Return nil if the list is empty. The element is not removed."]) (fset 'dll-nth #[(dll n) "Y\nAÎ\nA[\n)" [n 0 dll ((byte-code "A" [dll] 2))] 2 "\ Return the Nth node from the doubly linked list DLL. Args: DLL N N counts from zero. If DLL is not that long, nil is returned. If N is negative, return the -(N+1)th last element. Thus, (dll-nth dll 0) returns the first node, and (dll-nth dll -1) returns the last node."]) (fset 'dll-empty #[(dll) "A?" [dll] 1 "\ Return t if the doubly linked list DLL is empty, nil otherwise"]) (fset 'dll-length #[(dll) "AG" [dll] 1 "\ Returns the number of elements in the doubly linked list DLL."]) (fset 'dll-copy #[(dll &optional element-copy-fnc) " A\"B !" [element-copy-fnc DL-LIST mapcar dll copy-sequence] 4 "\ Return a copy of the doubly linked list DLL. If optional second argument ELEMENT-COPY-FNC is non-nil it should be a function that takes one argument, an element, and returns a copy of it. If ELEMENT-COPY-FNC is not given the elements are not copied."]) (fset 'dll-all #[(dll) "A" [dll] 1 "\ Return all elements on the double linked list DLL as an ordinary list."]) (fset 'dll-clear #[(dll) "" [dll nil] 2 "\ Clear the doubly linked list DLL, i.e. make it completely empty."]) (fset 'dll-map #[(map-function dll) " \nA\"" [mapcar map-function dll] 3 "\ Apply MAP-FUNCTION to all elements in the doubly linked list DLL. The function is applied to the first element first."]) (fset 'dll-map-reverse #[(map-function dll) " A)" [((byte-code " \nA\"\nA" [mapcar map-function dll] 3)) dll] 2 "\ Apply MAP-FUNCTION to all elements in the doubly linked list DLL. The function is applied to the last element first."]) (fset 'dll-create-from-list #[(list) " B" [DL-LIST list] 2 "\ Given an elisp LIST create a doubly linked list with the same elements."]) (fset 'dll-sort #[(dll predicate) "A\n\"" [dll sort predicate] 4 "\ Sort the doubly linked list DLL, stably, comparing elements using PREDICATE. Returns the sorted list. DLL is modified by side effects. PREDICATE is called with two elements of DLL, and should return T if the first element is \"less\" than the second."]) (fset 'dll-filter #[(dll predicate) "A \n@!\n \nA\nAk*" [dll prev node predicate nil] 3 "\ Remove all elements in the doubly linked list DLL for which PREDICATE return nil."])