From 9ae5c9eaaf8f2fe815f4cbda9fb8487e694aa1ee Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 4 May 2012 11:41:03 +0200 Subject: Added subTasks method. --- src/taskmanager.cc | 28 +++++++++++++++++++--------- src/taskmanager.h | 4 ++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/taskmanager.cc b/src/taskmanager.cc index f757694..b1fa34e 100644 --- a/src/taskmanager.cc +++ b/src/taskmanager.cc @@ -64,6 +64,10 @@ TaskManager::TaskManager() { TaskManager::~TaskManager() { } +task_t TaskManager::task(taskid_t t) { + return tree.getData(t); +} + taskid_t TaskManager::createId() { return idCount++; } @@ -82,13 +86,11 @@ TaskIdList TaskManager::moveTask(taskid_t id, taskid_t to) try { affectedTasks = tree.move(id, to); - goto finish; } catch (std::exception& e) { throw e; } - finish: return affectedTasks; } @@ -98,13 +100,11 @@ TaskIdList TaskManager::deleteTask(taskid_t id) try { affectedTasks = tree.remove(id); - goto finish; } catch(std::exception& e) { throw e; } - finish: return affectedTasks; } @@ -115,13 +115,11 @@ TaskIdList TaskManager::updateTask(taskid_t id, task_t t) try { affectedTasks = tree.updateData(id, t); - goto finish; } catch (std::exception& e) { throw e; } - finish: return affectedTasks; } @@ -133,14 +131,26 @@ TaskIdList TaskManager::addTask(task_t t, taskid_t parentid) try { affectedTasks = tree.insertAsChild(parentid, id, t); - goto finish; } catch (std::exception& e) { throw e; } - finish: - printf("Returning %d nodes\n", affectedTasks.size()); + return affectedTasks; +} + +TaskIdList TaskManager::subTasks(taskid_t t) + throw (std::exception) { + + TaskIdList affectedTasks; + + try { + affectedTasks = tree.bfs(t); + } + catch (std::exception& e) { + throw e; + } + return affectedTasks; } diff --git a/src/taskmanager.h b/src/taskmanager.h index 47c6c10..d8fd751 100644 --- a/src/taskmanager.h +++ b/src/taskmanager.h @@ -47,8 +47,12 @@ public: TaskIdList deleteTask(taskid_t id) throw (std::exception); TaskIdList moveTask(taskid_t id, taskid_t newParent) throw (std::exception); + TaskIdList subTasks(taskid_t) throw (std::exception); + TaskTree tree; + task_t task(taskid_t t); + private: // TaskIdList ancestorList(taskid_t task); taskid_t createId(); -- cgit v1.2.3