Files
gf-core/src/runtime/c/pgf/data.cxx
2021-11-09 02:10:17 +01:00

66 lines
1.5 KiB
C++

#include "data.h"
void PgfFlag::release(ref<PgfFlag> flag)
{
pgf_literal_free(flag->value);
}
void PgfAbsFun::release(ref<PgfAbsFun> absfun)
{
pgf_type_free(absfun->type);
if (absfun->defns != 0) {
for (size_t i = 0; i < absfun->defns->len; i++) {
ref<PgfEquation> eq = *vector_elem(absfun->defns, i);
pgf_expr_free(eq->body);
for (size_t j = 0; j < eq->patts.len; j++) {
PgfPatt patt = *vector_elem(ref<Vector<PgfPatt>>::from_ptr(&eq->patts), j);
pgf_patt_free(patt);
}
}
PgfDB::free(absfun->defns);
}
}
void PgfAbsCat::release(ref<PgfAbsCat> abscat)
{
pgf_context_free(abscat->context);
}
void PgfPGF::release(ref<PgfPGF> pgf)
{
namespace_release(pgf->gflags);
PgfDB::free(pgf->abstract.name);
namespace_release(pgf->abstract.aflags);
namespace_release(pgf->abstract.funs);
namespace_release(pgf->abstract.cats);
namespace_release(pgf->concretes);
}
void PgfConcr::release(ref<PgfConcr> concr)
{
namespace_release(concr->cflags);
namespace_release(concr->lins);
namespace_release(concr->lincats);
namespace_release(concr->printnames);
}
void PgfConcrLin::release(ref<PgfConcrLin> lin)
{
PgfDB::free(lin->args);
PgfDB::free(lin->res);
PgfDB::free(lin->seqs);
}
void PgfConcrLincat::release(ref<PgfConcrLincat> lincat)
{
PgfDB::free(lincat->fields);
}
void PgfConcrPrintname::release(ref<PgfConcrPrintname> printname)
{
PgfDB::free(printname->printname);
}