Replace recursive implementation with an iterative one

* org-taskjuggler.el (org-taskjuggler-assign-resource-ids): Replace
recursive implementation with an iterative one.

That way we can avoid to have ask users to increase
`max-lisp-eval-depth'.
This commit is contained in:
Christian Egli 2011-03-21 20:11:06 +00:00 committed by Bastien Guerry
parent 38c6b17822
commit 70b8d8397f
1 changed files with 7 additions and 9 deletions

View File

@ -418,15 +418,13 @@ deeper), then it's not a leaf."
(defun org-taskjuggler-assign-resource-ids (resources)
"Given a list of resources return the same list, assigning a
unique id to each resource."
(cond
((null resources) nil)
(t
(let* ((resource (car resources))
(unique-id (org-taskjuggler-get-unique-id resource unique-ids)))
(push (cons "unique-id" unique-id) resource)
(cons resource
(org-taskjuggler-assign-resource-ids (cdr resources)
(cons unique-id unique-ids)))))))
(let (unique-ids new-list)
(dolist (resource resources new-list)
(let ((unique-id (org-taskjuggler-get-unique-id resource unique-ids)))
(push (cons "unique-id" unique-id) resource)
(push unique-id unique-ids)
(push resource new-list)))
(nreverse new-list)))
(defun org-taskjuggler-resolve-dependencies (tasks)
(let ((previous-level 0)