Function: hierarchy--add-relation
hierarchy--add-relation is a byte-compiled function defined in
hierarchy.el.gz.
Signature
(hierarchy--add-relation HIERARCHY ITEM PARENT ACCEPTFN)
Documentation
In HIERARCHY, add ITEM as child of PARENT.
ACCEPTFN is a function returning non-nil if its parameter (any object) should be an item of the hierarchy.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/hierarchy.el.gz
(defun hierarchy--add-relation (hierarchy item parent acceptfn)
"In HIERARCHY, add ITEM as child of PARENT.
ACCEPTFN is a function returning non-nil if its parameter (any object)
should be an item of the hierarchy."
(let* ((existing-parent (hierarchy-parent hierarchy item))
(has-parent-p (funcall acceptfn existing-parent)))
(cond
((and has-parent-p (not (equal existing-parent parent)))
(error "An item (%s) can only have one parent: '%s' vs '%s'"
item existing-parent parent))
((not has-parent-p)
(let ((existing-children (map-elt (hierarchy--children hierarchy)
parent (list))))
(map-put! (hierarchy--children hierarchy)
parent (append existing-children (list item))))
(map-put! (hierarchy--parents hierarchy) item parent)))))