From 4fe953de7b5994a896094cf0d62192559a08967d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 2 May 2019 17:58:07 +0200 Subject: work on porting most internal datastructures to scheme equivalents. --- src/vcal.h | 74 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'src/vcal.h') diff --git a/src/vcal.h b/src/vcal.h index 2a3ad294..ed811084 100644 --- a/src/vcal.h +++ b/src/vcal.h @@ -5,12 +5,10 @@ #include -#include "strbuf.h" +#define SCM_PUSH_X(parent, child) parent = scm_cons(child, parent) +#define SCM_POP_X(lst) lst = SCM_CDR(lst) -#define TYPE strbuf -#include "linked_list.h" -// #include "trie.h" -#undef TYPE +#include "strbuf.h" /* * content_line: @@ -22,25 +20,25 @@ * A parameter key, along with a list of all its values. */ -#define param_set LLIST(strbuf) - -#define TYPE param_set -#include "trie.h" -#undef TYPE - -#define T strbuf - #define V TRIE(param_set) - #include "pair.h" - /* left := content | right := params */ - #define content_set PAIR(strbuf, TRIE(param_set)) - #undef V -#undef T - -#define TYPE content_set -#include "linked_list.h" -#undef TYPE - -#define content_line LLIST(content_set) +// #define param_set LLIST(strbuf) +// +// #define TYPE param_set +// #include "trie.h" +// #undef TYPE +// +// #define T strbuf +// #define V TRIE(param_set) +// #include "pair.h" +// /* left := content | right := params */ +// #define content_set PAIR(strbuf, TRIE(param_set)) +// #undef V +// #undef T +// +// #define TYPE content_set +// #include "linked_list.h" +// #undef TYPE +// +// #define content_line LLIST(content_set) /* * Helper macros for accessing fields in @@ -56,23 +54,25 @@ /* TRIE(param_set) */ #define CLINE_CUR_PARAMS(c) (& CLINE_CUR(c)->val) -#define TYPE content_line -#include "trie.h" -#undef TYPE +// #define TYPE content_line +// #include "trie.h" +// #undef TYPE typedef struct s_vcomponent vcomponent; -#define TYPE vcomponent -// #include "vector.h" -#include "linked_list.h" -#undef TYPE +// #define TYPE vcomponent +// // #include "vector.h" +// #include "linked_list.h" +// #undef TYPE struct s_vcomponent { /* VCALENDAR, VEVENT, ... */ char* type; vcomponent* parent; - TRIE(content_line) clines; - LLIST(vcomponent) components; + // TRIE(content_line) clines; + // LLIST(vcomponent) components; + SCM clines; + SCM components; /* * Holds a Guile representation of this object. Used to always @@ -90,12 +90,12 @@ INIT_F(vcomponent, const char* type); INIT_F(vcomponent, const char* type, const char* filename); FREE_F(vcomponent); -content_line* get_attributes (vcomponent* ev, const char* key); +// content_line* get_attributes (vcomponent* ev, const char* key); -int add_content_line (vcomponent* ev, content_line* c); +// int add_content_line (vcomponent* ev, SCM c); -int vcomponent_push_val (vcomponent*, const char* key, const char* val); -char* vcomponent_get_val (vcomponent*, const char* key); +int vcomponent_push_val (vcomponent* comp, strbuf* key, SCM val); +// char* vcomponent_get_val (vcomponent*, const char* key); /* * Appends ev to cal. Doesn't copy ev. So make sure that it wont go -- cgit v1.2.3