7
/* view operations and stubs to invoke the engine */
9
#define ENG(view) (((engview_t*)(view->pvt))->engine)
11
ilbool ilopen(ILengine_t *engine, ILview_t *view)
13
return engine->open(view);
16
void ilclose(ILview_t *view)
18
ENG(view)->close(view);
21
ilbool ilinsert(ILview_t *view, ILobj_t *spec)
23
return ENG(view)->ins(view,spec);
26
ilbool iloptimize(ILview_t *view, ILobj_t *spec)
28
return ENG(view)->mod(view,spec);
31
ilbool ilmodify(ILview_t *view, ILobj_t *spec)
33
return ENG(view)->mod(view,spec);
36
ilbool ildelete(ILview_t *view, ILobj_t *spec)
38
return ENG(view)->del(view,spec);
41
Agraph_t *ilmodel(ILview_t *view)
43
return (Agraph_t*) (ENG(view)->spec_to_mdlobj(view,(ILobj_t*)view));
46
Agobj_t *ilspec_to_mdlobj(ILview_t *view, ILobj_t *spec)
50
return (Agobj_t*)il_find_node((engview_t*)(view->pvt),(ILnode_t*)spec);
52
return (Agobj_t*)il_find_edge((engview_t*)(view->pvt),(ILedge_t*)spec);
54
return (Agobj_t*)(((engview_t*)(view->pvt))->model.main);
60
ILobj_t *ilmdlobj_to_spec(ILview_t *view, Agobj_t *mdlobj)
62
switch (AGTYPE(mdlobj)) {
64
return (ILobj_t*)il_node((Agnode_t*)mdlobj);
66
return (ILobj_t*)il_edge((Agedge_t*)mdlobj);
69
return (ILobj_t*)0; /* UNIMPLEMENTED */
73
void il_register_node_callback(engview_t *view, ILnode_t *spec, int kind)
77
if ((n = il_find_node(view,spec))) {
79
if (agsubnode(view->model.v[IL_INS],n,FALSE)) return;
80
if (agsubnode(view->model.v[IL_DEL],n,FALSE)) return;
82
(void) agsubnode(view->model.v[kind], n, TRUE);
87
void il_register_edge_callback(engview_t *view, ILedge_t *spec, int kind)
91
if ((e = il_find_edge(view,spec))) {
93
if (agsubedge(view->model.e[IL_INS],e,FALSE)) return;
94
if (agsubedge(view->model.e[IL_DEL],e,FALSE)) return;
96
(void) agsubedge(view->model.e[kind], e, TRUE);
101
ilbool ilcallback(ILview_t *view)
103
return ENG(view)->callback(view);