diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-02 23:13:47 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-02 23:13:47 +0100 |
commit | 6f6feddf9a07214e133438c4af4d32064d671a31 (patch) | |
tree | 3f8fa044d8a1e2fccf87a01d758c6207bb4ec8ac | |
parent | Start work on a scheme interface. (diff) | |
download | calp-6f6feddf9a07214e133438c4af4d32064d671a31.tar.gz calp-6f6feddf9a07214e133438c4af4d32064d671a31.tar.xz |
Made code.scm do same stuff as main.
-rwxr-xr-x[-rw-r--r--] | code.scm | 18 | ||||
-rw-r--r-- | scheme.c | 7 | ||||
-rw-r--r-- | scheme.h | 2 |
3 files changed, 23 insertions, 4 deletions
@@ -1,6 +1,16 @@ +#!/usr/bin/guile \ +-s +!# + (begin - (setenv "LD_LIBRARY_PATH" (getcwd)) - (load-extension "libguile-calendar" "init_calendar") - (define v (make-calendar "cal"))) + ;; Supurflous begin block here to make sourcing into geiser easier. + (setenv "LD_LIBRARY_PATH" (getcwd)) + (load-extension "libguile-calendar" "init_calendar") + (define v (make-calendar "cal"))) + +(do ((i 0 (1+ i))) + ((>= i (calendar-size v))) + (format #t "~3d | ~a~%" + i (get-attr v i "summary"))) + -(get-attr v 0 "description") @@ -47,9 +47,16 @@ SCM calendar_get_attr(SCM calendar, SCM id, SCM attr) { return scm_from_strbuf(&c->val); } +SCM number_events(SCM calendar) { + scm_assert_foreign_object_type (calendar_type, calendar); + vcalendar* cal = scm_foreign_object_ref (calendar, 0); + return scm_from_size_t (cal->n_events); +} + void init_calendar () { init_calendar_type(); scm_c_define_gsubr ("make-calendar", 1, 0, 0, make_calendar); scm_c_define_gsubr ("get-attr", 3, 0, 0, calendar_get_attr); + scm_c_define_gsubr ("calendar-size", 1, 0, 0, number_events); } @@ -7,6 +7,8 @@ SCM make_calendar(SCM path); SCM calendar_get_attr(SCM calendar, SCM id, SCM attr); +SCM number_events(SCM calendar); + void init_calendar (); #endif /* SCHEME_H */ |