Mercurial > repo
view src/ploki/text.c @ 12514:500486b20e41 draft default tip
<int-e> slwd fungot//s/ds/d s/
author | HackEso <hackeso@esolangs.org> |
---|---|
date | Fri, 27 Sep 2024 20:43:06 +0100 |
parents | ac0403686959 |
children |
line wrap: on
line source
#include "text.h" #include "xmalloc.h" #include <stddef.h> enum {MAGIC = 42}; void text_on(struct text *p) { p->start = xmalloc(p->size = MAGIC, sizeof *p->start); p->start[p->length = 0] = NULL; } void text_off(struct text *p) { while (p->length) { --p->length; op_end(p->start[p->length]); xfree(p->start[p->length]); } xfree(p->start); } void text_1(struct text *p) { while (p->length >= p->size - 1) { p->start = xrealloc(p->start, p->size *= 2); } } struct op *text_push(struct text *p, const struct op *src) { text_1(p); p->start[p->length] = xmalloc(1, sizeof *p->start[p->length]); *p->start[p->length++] = *src; p->start[p->length] = NULL; return p->start[p->length - 1]; }