1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
25 * dtopen() with handle placed in specific vm region
38 eventf(Dt_t
* dt
, int op
, void* data
, Dtdisc_t
* disc
)
40 Dc_t
* dc
= (Dc_t
*)disc
;
43 if (dc
->odisc
->eventf
&& (r
= (*dc
->odisc
->eventf
)(dt
, op
, data
, dc
->odisc
)))
45 return op
== DT_ENDOPEN
? 1 : 0;
49 memoryf(Dt_t
* dt
, void* addr
, size_t size
, Dtdisc_t
* disc
)
51 return vmresize(((Dc_t
*)disc
)->vm
, addr
, size
, VM_RSMOVE
);
55 * open a dictionary using disc->memoryf if set or vm otherwise
59 dtnew(Vmalloc_t
* vm
, Dtdisc_t
* disc
, Dtmethod_t
* meth
)
66 dc
.ndisc
.eventf
= eventf
;
67 if (!dc
.ndisc
.memoryf
)
68 dc
.ndisc
.memoryf
= memoryf
;
70 if (dt
= dtopen(&dc
.ndisc
, meth
))
71 dtdisc(dt
, disc
, DT_SAMECMP
|DT_SAMEHASH
);