16 static char DRName[] =
"_AG_pending";
43 for (s = pcb->
symlist; s; s = t) {
79 dict_ref = &(ds->
ins.
g);
82 dict_ref = &(ds->
mod.
g);
85 dict_ref = &(ds->
del.
g);
94 dict_ref = &(ds->
ins.
n);
97 dict_ref = &(ds->
mod.
n);
100 dict_ref = &(ds->
del.
n);
109 dict_ref = &(ds->
ins.
e);
112 dict_ref = &(ds->
mod.
e);
115 dict_ref = &(ds->
del.
e);
141 key.
key = genkey(obj);
152 for (sym = handle->
symlist; sym; psym = sym, sym = sym->
link) {
153 if (sym->
sym == optsym)
173 handle->
key = genkey(obj);
188 if ((handle = lookup(dict, obj))) {
208 handle = lookup(dict, obj);
210 handle = insert(dict, g, obj, optsym);
215 if (lookup(dictof(pending, obj,
CB_DELETION), obj))
218 handle = lookup(dict, obj);
220 handle = insert(dict, g, obj, optsym);
221 record_sym(obj, handle, optsym);
225 purge(dictof(pending, obj,
CB_UPDATE), obj);
227 handle = lookup(dict, obj);
229 handle = insert(dict, g, obj, optsym);
232 agerr(
AGERR,
"agrecord_callback of a bad object");
236 static void cb(
Dict_t * dict,
int callback_kind)
247 switch (callback_kind) {
263 static void agrelease_callbacks(
Agraph_t * g)
289 agrelease_callbacks(g);
int(* Dtcompar_f)(Dt_t *, void *, void *, Dtdisc_t *)
unsigned int(* Dthash_f)(Dt_t *, void *, Dtdisc_t *)
void agdelcb(Agraph_t *g, void *obj, Agcbstack_t *disc)
void *(* Dtmake_f)(Dt_t *, void *, Dtdisc_t *)
struct symlist_s symlist_t
int agerr(agerrlevel_t level, const char *fmt,...)
unsigned char callbacks_enabled
CGRAPH_API int agcallbacks(Agraph_t *g, int flag)
CGRAPH_API void agfree(Agraph_t *g, void *ptr)
void agrecord_callback(Agraph_t *g, Agobj_t *obj, int kind, Agsym_t *optsym)
void aginitcb(Agraph_t *g, void *obj, Agcbstack_t *disc)
CGRAPH_API Agraph_t * agraphof(void *obj)
void agupdcb(Agraph_t *g, void *obj, Agsym_t *sym, Agcbstack_t *disc)
struct pendingset_t::@4 del
struct pendingset_t::@4 mod
Dict_t * agdtopen(Agraph_t *g, Dtdisc_t *disc, Dtmethod_t *method)
CDT_API Dtmethod_t * Dttree
CGRAPH_API void * agalloc(Agraph_t *g, size_t size)
CGRAPH_API void * agbindrec(void *obj, char *name, unsigned int size, int move_to_front)
struct pendingset_t::@4 ins