summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2012-05-04 11:41:03 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2012-05-04 11:41:03 +0200
commit9ae5c9eaaf8f2fe815f4cbda9fb8487e694aa1ee (patch)
tree145c262376fb58170014d1fc159371b07f80585f
parent1e766529818c36dd49827745649f7893fc45884e (diff)
Added subTasks method.
-rw-r--r--src/taskmanager.cc28
-rw-r--r--src/taskmanager.h4
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();