line_t *new_line() {
line_t *x = malloc(sizeof(line_t));
- x->text = (void*)0;
- x->prev = x->next = (void*)0;
+ x->text = NULL;
+ x->prev = x->next = NULL;
x->bits = x->length = x->offset = 0;
return x;
}
slide_t *new_slide() {
slide_t *x = malloc(sizeof(slide_t));
- x->line = (void*)0;
- x->prev = x->next = (void*)0;
+ x->line = NULL;
+ x->prev = x->next = NULL;
x->lines = 0;
return x;
}
deck_t *new_deck() {
deck_t *x = malloc(sizeof(deck_t));
- x->header = (void*)0;
- x->slide = (void*)0;
+ x->header = NULL;
+ x->slide = new_slide();
x->slides = x->headers = 0;
return x;
}
+void free_line(line_t *line) {
+ line_t *next;
+ while (line) {
+ next = line->next;
+ if(line->text)
+ (line->text->delete)(line->text);
+ free(line);
+ line = next;
+ }
+}
+
+void free_deck(deck_t *deck) {
+ slide_t *slide, *next;
+ if (deck == NULL)
+ return;
+ slide = deck->slide;
+ while (slide) {
+ free_line(slide->line);
+ next = slide->next;
+ free(slide);
+ slide = next;
+ }
+ free_line(deck->header);
+ free(deck);
+}