Mercurial > repo
view src/ploki/text.c @ 7352:c20b5590455a
<hppavilion[1]> le/rn lisp/(eq "lisp" (proglang-with (use-lots ["(" ")"]) (paradigm functional) (notation-type prefix)))
author | HackBot |
---|---|
date | Sun, 03 Apr 2016 20:15:05 +0000 |
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]; }