From b9ddcf85e302568c93f8a28fd4d025310a972e89 Mon Sep 17 00:00:00 2001 From: Mike Dvorkin Date: Mon, 26 Jul 2010 19:31:51 -0700 Subject: [PATCH] Added for_each... macros --- src/pit.h | 10 ++++++++-- src/project.c | 9 +++------ src/task.c | 3 +-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/pit.h b/src/pit.h index 66ff43b..36c7a18 100644 --- a/src/pit.h +++ b/src/pit.h @@ -10,12 +10,18 @@ typedef unsigned char uchar; #include "table.h" /* Externals. */ +extern PTable activities; +extern PTable notes; extern PTable projects; extern PTable tasks; -extern PTable notes; -extern PTable activities; extern PTable users; +#define for_each_activity(ptr) for (ptr = (PActivity)tasks->slots; (ptr - (PActivity)tasks->slots) / sizeof(PActivity) < tasks->number_of_records; ptr++) +#define for_each_note(ptr) for (ptr = (PNote)tasks->slots; (ptr - (PNote)tasks->slots) / sizeof(PNote) < tasks->number_of_records; ptr++) +#define for_each_project(ptr) for (ptr = (PProject)tasks->slots; (ptr - (PProject)tasks->slots) / sizeof(PProject) < tasks->number_of_records; ptr++) +#define for_each_task(ptr) for (ptr = (PTask)tasks->slots; (ptr - (PTask)tasks->slots) / sizeof(PTask) < tasks->number_of_records; ptr++) +#define for_each_user(ptr) for (ptr = (PUser)users->slots; (ptr - (PUser)users->slots) / sizeof(PUser) < users->number_of_records; ptr++) + /* Command line parsing. */ int pit_arg_is_option(char **arg); int pit_arg_option(char **arg); diff --git a/src/project.c b/src/project.c index afb51cf..a8ecec5 100644 --- a/src/project.c +++ b/src/project.c @@ -5,11 +5,10 @@ static int already_exist(char *name) { - ulong i; PProject pp; pit_db_load(); - for(i = 0, pp = (PProject)projects->slots; i < projects->number_of_records; i++, pp++) { + for_each_project(pp) { if (!strcmp(pp->name, name)) { return 1; } @@ -19,11 +18,10 @@ static int already_exist(char *name) static void list_projects() { - ulong i; PProject pp; pit_db_load(); - for(i = 0, pp = (PProject)projects->slots; i < projects->number_of_records; i++, pp++) { + for_each_project(pp) { printf("%c %lu: %s (%s, %lu open task%s)\n", (pp->id == projects->current ? '*' : ' '), pp->id, pp->name, pp->status, pp->number_of_open_tasks, (pp->number_of_open_tasks != 1 ? "s" : "")); @@ -72,11 +70,10 @@ static int show_project(ulong number) pp->number_of_open_tasks, (pp->number_of_open_tasks != 1 ? "s" : ""), pp->number_of_closed_tasks, (pp->number_of_closed_tasks != 1 ? "s" : "")); if (pp->number_of_open_tasks > 0) { - ulong i; PTask pt = (PTask)tasks->slots; puts("Open tasks:"); - for(i = 0; i < tasks->number_of_records; i++, pt++) { + for_each_task(pt) { if (pt->closed_at) { continue; } diff --git a/src/task.c b/src/task.c index 4129344..1893aa3 100644 --- a/src/task.c +++ b/src/task.c @@ -23,11 +23,10 @@ static void list_tasks(char *mode, char *status, char *deadline, ulong priority) { pit_db_load(); - ulong i = 0; PTask pt = (PTask)tasks->slots; PProject pp = (PProject)pit_table_current(projects); - for(; i < tasks->number_of_records; i++, pt++) { + for_each_task(pt) { if (pp && pt->project_id != pp->id) { continue; }