From f8424a70cae7a8ddf9a36732a258140922606166 Mon Sep 17 00:00:00 2001 From: Masahiko AMANO Date: Fri, 23 Dec 2022 16:22:48 +0300 Subject: [PATCH] feat(lib): add sasa/tanzaku get functions --- include/tanabata.h | 13 +++++++++++-- src/tanabata/sasa.c | 21 +++++++++++++++++++++ src/tanabata/tanzaku.c | 21 +++++++++++++++++++-- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/include/tanabata.h b/include/tanabata.h index 8a65144..314bba8 100644 --- a/include/tanabata.h +++ b/include/tanabata.h @@ -56,6 +56,12 @@ int tanabata_sasa_rem_by_id(Tanabata *tanabata, uint64_t sasa_id); // Remove sasa by file path int tanabata_sasa_rem_by_path(Tanabata *tanabata, const char *path); +// Get sasa by ID +Sasa tanabata_sasa_get_by_id(Tanabata *tanabata, uint64_t sasa_id); + +// Get sasa by file path +Sasa tanabata_sasa_get_by_path(Tanabata *tanabata, const char *path); + // ==================== TANZAKU SECTION ==================== // // Add tanzaku @@ -67,8 +73,11 @@ int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id); // Remove tanzaku by name int tanabata_tanzaku_rem_by_name(Tanabata *tanabata, const char *name); -// Remove tanzaku by alias -int tanabata_tanzaku_rem_by_alias(Tanabata *tanabata, const char *alias); +// Get tanzaku by ID +Tanzaku tanabata_tanzaku_get_by_id(Tanabata *tanabata, uint64_t tanzaku_id); + +// Get tanzaku by name +Tanzaku tanabata_tanzaku_get_by_name(Tanabata *tanabata, const char *name); // ==================== KAZARI SECTION ==================== // diff --git a/src/tanabata/sasa.c b/src/tanabata/sasa.c index cbb9f7c..7291a5a 100644 --- a/src/tanabata/sasa.c +++ b/src/tanabata/sasa.c @@ -27,3 +27,24 @@ int tanabata_sasa_rem_by_path(Tanabata *tanabata, const char *path) { fprintf(stderr, "Failed to remove sasa: target sasa does not exist\n"); return 1; } + +Sasa tanabata_sasa_get_by_id(Tanabata *tanabata, uint64_t sasa_id) { + if (sasa_id == HOLE_ID) { + fprintf(stderr, "Failed to get sasa: got hole ID\n"); + return HOLE_SASA; + } + if (sasa_id >= tanabata->sasahyou.size) { + fprintf(stderr, "Failed to get sasa: too big ID\n"); + return HOLE_SASA; + } + return tanabata->sasahyou.database[sasa_id]; +} + +Sasa tanabata_sasa_get_by_path(Tanabata *tanabata, const char *path) { + for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) { + if (strcmp(tanabata->sasahyou.database[i].path, path) == 0) { + return tanabata->sasahyou.database[i]; + } + } + return HOLE_SASA; +} diff --git a/src/tanabata/tanzaku.c b/src/tanabata/tanzaku.c index 1d97d6b..42ca369 100644 --- a/src/tanabata/tanzaku.c +++ b/src/tanabata/tanzaku.c @@ -27,6 +27,23 @@ int tanabata_tanzaku_rem_by_name(Tanabata *tanabata, const char *name) { return 1; } -int tanabata_tanzaku_rem_by_alias(Tanabata *tanabata, const char *alias) { - return tanzaku_rem_by_alias(&tanabata->sappyou, alias); +Tanzaku tanabata_tanzaku_get_by_id(Tanabata *tanabata, uint64_t tanzaku_id) { + if (tanzaku_id == HOLE_ID) { + fprintf(stderr, "Failed to get tanzaku: got hole ID\n"); + return HOLE_TANZAKU; + } + if (tanzaku_id >= tanabata->sappyou.size) { + fprintf(stderr, "Failed to get tanzaku: too big ID\n"); + return HOLE_TANZAKU; + } + return tanabata->sappyou.database[tanzaku_id]; +} + +Tanzaku tanabata_tanzaku_get_by_name(Tanabata *tanabata, const char *name) { + for (uint64_t i = 0; i < tanabata->sappyou.size; i++) { + if (strcmp(tanabata->sappyou.database[i].name, name) == 0) { + return tanabata->sappyou.database[i]; + } + } + return HOLE_TANZAKU; }