From 135cc1ef50930b86189be2303f68ab387ebf7f27 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 17 Feb 2019 23:04:20 +0100 Subject: WIP on parser --- libstorycode/presentation.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'libstorycode/presentation.c') diff --git a/libstorycode/presentation.c b/libstorycode/presentation.c index 2ac751f..e393020 100644 --- a/libstorycode/presentation.c +++ b/libstorycode/presentation.c @@ -27,6 +27,8 @@ #include #include +#include +#include #include "presentation.h" #include "stylesheet.h" @@ -39,6 +41,7 @@ struct _presentation Narrative *narrative; int n_slides; Slide **slides; + int max_slides; }; @@ -51,10 +54,44 @@ Presentation *presentation_new() p->narrative = NULL; p->slides = NULL; p->n_slides = 0; + p->max_slides = 0; return p; } + void presentation_free(Presentation *p) { free(p); } + + +void presentation_add_stylesheet(Presentation *p, Stylesheet *ss) +{ + assert(p->stylesheet == NULL); + p->stylesheet = ss; +} + + +void presentation_add_narrative(Presentation *p, Narrative *n) +{ + assert(p->narrative == NULL); + p->narrative = n; +} + + +void presentation_add_slide(Presentation *p, Slide *s) +{ + assert(p->n_slides <= p->max_slides); + if ( p->n_slides == p->max_slides ) { + Slide **nslides = realloc(p->slides, + (p->max_slides+8)*sizeof(Slide *)); + if ( nslides == NULL ) { + fprintf(stderr, "Failed to allocate memory for slide\n"); + return; + } + p->slides = nslides; + p->max_slides += 8; + } + + p->slides[p->n_slides++] = s; +} -- cgit v1.2.3