/* * Copyright (c) Camden Dixie O'Brien * SPDX-License-Identifier: AGPL-3.0-only */ #include "regex.h" #include void regex_free_children(const regex_t *t) { if (NULL != t->contents) { for (int i = 0; i < t->count; ++i) regex_free_sequence_children(&t->contents[i]); free(t->contents); } } void regex_free_sequence_children(const regex_sequence_t *s) { if (NULL != s->contents) { for (int i = 0; i < s->count; ++i) { switch (s->contents[i].type) { case REGEX_TERM_CLASS: regex_free_class_children(&s->contents[i].class); break; case REGEX_TERM_SUBEXPR: regex_free_children(&s->contents[i].subexpr); break; default: break; } } free(s->contents); } } void regex_free_class_children(const regex_class_t *c) { if (NULL != c->contents) free(c->contents); }