-
-void *dlg_get_privdata(union control *ctrl, void *dlg)
-{
- struct dlgparam *dp = (struct dlgparam *)dlg;
- struct perctrl_privdata tmp, *p;
- tmp.ctrl = ctrl;
- p = find234(dp->privdata, &tmp, NULL);
- if (p)
- return p->data;
- else
- return NULL;
-}
-
-void dlg_set_privdata(union control *ctrl, void *dlg, void *ptr)
-{
- struct dlgparam *dp = (struct dlgparam *)dlg;
- struct perctrl_privdata tmp, *p;
- tmp.ctrl = ctrl;
- p = find234(dp->privdata, &tmp, NULL);
- if (!p) {
- p = snew(struct perctrl_privdata);
- p->ctrl = ctrl;
- p->needs_free = FALSE;
- add234(dp->privdata, p);
- }
- p->data = ptr;
-}
-
-void *dlg_alloc_privdata(union control *ctrl, void *dlg, size_t size)
-{
- struct dlgparam *dp = (struct dlgparam *)dlg;
- struct perctrl_privdata tmp, *p;
- tmp.ctrl = ctrl;
- p = find234(dp->privdata, &tmp, NULL);
- if (!p) {
- p = snew(struct perctrl_privdata);
- p->ctrl = ctrl;
- p->needs_free = FALSE;
- add234(dp->privdata, p);
- }
- assert(!p->needs_free);
- p->needs_free = TRUE;
- /*
- * This is an internal allocation routine, so it's allowed to
- * use smalloc directly.
- */
- p->data = smalloc(size);
- return p->data;
-}