void SelectionTreeElement::mempoolRelease() { if (!mempool) { return; } switch (v.type) { case INT_VALUE: case REAL_VALUE: _gmx_sel_mempool_free(mempool, v.u.ptr); _gmx_selvalue_setstore(&v, NULL); break; case GROUP_VALUE: if (v.u.g) { _gmx_sel_mempool_free_group(mempool, v.u.g); } break; default: GMX_THROW(gmx::InternalError("Memory pooling not implemented for requested type")); } }
/*! * \param[in,out] sel Selection element to release. * * Releases the memory allocated for the values of \p sel from the * \p sel->mempool memory pool. If no memory pool is set, nothing is done. */ void _gmx_selelem_mempool_release(t_selelem *sel) { if (!sel->mempool) { return; } switch (sel->v.type) { case INT_VALUE: case REAL_VALUE: _gmx_sel_mempool_free(sel->mempool, sel->v.u.ptr); _gmx_selvalue_setstore(&sel->v, NULL); break; case GROUP_VALUE: if (sel->v.u.g) { _gmx_sel_mempool_free_group(sel->mempool, sel->v.u.g); } break; default: GMX_THROW(gmx::InternalError("Memory pooling not implemented for requested type")); } }
void _gmx_sel_mempool_free_group(gmx_sel_mempool_t *mp, gmx_ana_index_t *g) { _gmx_sel_mempool_free(mp, g->index); g->index = NULL; }