/* * Copyright (c) Camden Dixie O'Brien * SPDX-License-Identifier: AGPL-3.0-only */ #include "regex.h" #include static void sequence_free(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_class_free(&s->contents[i].class); break; case REGEX_TERM_SUBEXPR: regex_free(&s->contents[i].subexpr); break; default: break; } } free(s->contents); } } void regex_free(const regex_t *t) { if (NULL != t->contents) { for (int i = 0; i < t->count; ++i) sequence_free(&t->contents[i]); free(t->contents); } } void regex_class_free(const regex_class_t *c) { if (NULL != c->contents) free(c->contents); }