aboutsummaryrefslogtreecommitdiff
path: root/vcal.c
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-01-22 11:42:58 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-01-22 11:42:58 +0100
commitebe5c7e428b57dca758b1b3a1d8b7d4b423b19a9 (patch)
treebf97a4ba3a05c24ae1ec176f42656ce1608ee8d1 /vcal.c
parentAdd very simple err header. (diff)
downloadcalp-ebe5c7e428b57dca758b1b3a1d8b7d4b423b19a9.tar.gz
calp-ebe5c7e428b57dca758b1b3a1d8b7d4b423b19a9.tar.xz
Start using trie's instead of hash-maps.
Diffstat (limited to 'vcal.c')
-rw-r--r--vcal.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/vcal.c b/vcal.c
index e1dd3d63..ceb5980b 100644
--- a/vcal.c
+++ b/vcal.c
@@ -3,20 +3,25 @@
#include <string.h>
#define TYPE content_line
-#include "hash_help.inc"
+// #include "hash_help.inc"
+#include "trie.inc"
#undef TYPE
int CONSTRUCTOR_DECL(vevent, int init_size) {
- HASH_INIT(content_line)(&this->clines, init_size);
+ // HASH_INIT(content_line)(&this->clines, init_size);
+ CONSTRUCT(TRIE(content_line), &this->clines);
return 0;
}
content_line* get_property (vevent* ev, char* key) {
- return HASH_GET(content_line)(&ev->clines, key);
+ // return HASH_GET(content_line)(&ev->clines, key);
+ return TRIE_GET(content_line)(&ev->clines, key);
}
int add_content_line (vevent* ev, content_line* c) {
- return HASH_PUT(content_line)(&ev->clines, c);
+ // return HASH_PUT(content_line)(&ev->clines, c);
+ // TODO memmory safety on strbuf?
+ return TRIE_PUT(content_line)(&ev->clines, c->key.mem, c);
}
int CONSTRUCTOR_DECL(content_line) {
@@ -70,12 +75,13 @@ int vevent_init_copy(vevent* dest, vevent* src) {
return 0;
}
-/* TODO reimplement this */
int free_vevent (vevent* ev) {
// strbuf_free(&ev->dtstart);
// strbuf_free(&ev->dtend);
// strbuf_free(&ev->summary);
// strbuf_free(&ev->description);
+ // HASH_FREE(content_line)(&ev->clines);
+ TRIE_FREE(content_line)(&ev->clines);
return 0;
}
@@ -88,7 +94,7 @@ int push_event(vcalendar* cal, vevent* ev) {
}
// vevent_init_copy(&cal->events[cal->n_events], ev);
- cal->events[cal->n_events] = *ev;
+ cal->events[cal->n_events] = ev;
cal->n_events++;
return 0;
@@ -103,7 +109,7 @@ int CONSTRUCTOR_DECL(vcalendar) {
int free_vcalendar (vcalendar* cal) {
for (size_t i = 0; i < cal->n_events; i++) {
- free_vevent(& cal->events[i]);
+ free_vevent(cal->events[i]);
}
free (cal->events);
return 0;