diff options
Diffstat (limited to 'src/meta.c')
-rw-r--r-- | src/meta.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -144,3 +144,22 @@ meta_free(struct metadef *def) } } } + +struct metadef * +metadef_join(struct metadef *a, struct metadef *b) +{ + struct metadef *np; + size_t i, j; + + for (i = 0; a[i].kw; i++); + if (b) + for (j = 0; b[j].kw; j++); + else + j = 0; + np = grecs_malloc((i + j + 1) * sizeof(a[0])); + memcpy(np, a, i * sizeof(a[0])); + if (j > 0) + memcpy(np + i, b, j * sizeof(b[0])); + np[i + j].kw = NULL; + return np; +} |