~ubuntu-branches/ubuntu/lucid/graphviz/lucid-security

« back to all changes in this revision

Viewing changes to incr/engine.c

  • Committer: Bazaar Package Importer
  • Author(s): Stephen M Moraco
  • Date: 2002-02-05 18:52:12 UTC
  • Revision ID: james.westby@ubuntu.com-20020205185212-8i04c70te00rc40y
Tags: upstream-1.7.16
ImportĀ upstreamĀ versionĀ 1.7.16

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <engine.h>
 
2
 
 
3
#ifdef DMALLOC
 
4
#include "dmalloc.h"
 
5
#endif
 
6
 
 
7
        /* view operations and stubs to invoke the engine */
 
8
 
 
9
#define ENG(view)       (((engview_t*)(view->pvt))->engine)
 
10
 
 
11
ilbool          ilopen(ILengine_t *engine, ILview_t *view)
 
12
{
 
13
        return engine->open(view);
 
14
}
 
15
 
 
16
void            ilclose(ILview_t *view)
 
17
{
 
18
        ENG(view)->close(view);
 
19
}
 
20
 
 
21
ilbool          ilinsert(ILview_t *view, ILobj_t *spec)
 
22
{
 
23
        return ENG(view)->ins(view,spec);
 
24
}
 
25
 
 
26
ilbool          iloptimize(ILview_t *view, ILobj_t *spec)
 
27
{
 
28
        return ENG(view)->mod(view,spec);
 
29
}
 
30
 
 
31
ilbool          ilmodify(ILview_t *view, ILobj_t *spec)
 
32
{
 
33
        return ENG(view)->mod(view,spec);
 
34
}
 
35
 
 
36
ilbool          ildelete(ILview_t *view, ILobj_t *spec)
 
37
{
 
38
        return ENG(view)->del(view,spec);
 
39
}
 
40
 
 
41
Agraph_t        *ilmodel(ILview_t *view)
 
42
{
 
43
        return (Agraph_t*) (ENG(view)->spec_to_mdlobj(view,(ILobj_t*)view));
 
44
}
 
45
 
 
46
Agobj_t *ilspec_to_mdlobj(ILview_t *view, ILobj_t *spec)
 
47
{
 
48
        switch (spec->tag) {
 
49
                case ILNODE:
 
50
                        return (Agobj_t*)il_find_node((engview_t*)(view->pvt),(ILnode_t*)spec);
 
51
                case ILEDGE:
 
52
                        return (Agobj_t*)il_find_edge((engview_t*)(view->pvt),(ILedge_t*)spec);
 
53
                case ILVIEW:
 
54
                        return (Agobj_t*)(((engview_t*)(view->pvt))->model.main);
 
55
                default:
 
56
                        return NIL(Agobj_t*);
 
57
        }
 
58
}
 
59
 
 
60
ILobj_t *ilmdlobj_to_spec(ILview_t *view, Agobj_t *mdlobj)
 
61
{
 
62
        switch (AGTYPE(mdlobj)) {
 
63
        case AGNODE: 
 
64
                return (ILobj_t*)il_node((Agnode_t*)mdlobj);
 
65
        case AGEDGE:
 
66
                return (ILobj_t*)il_edge((Agedge_t*)mdlobj);
 
67
        case AGRAPH:
 
68
        default:
 
69
                return (ILobj_t*)0;     /* UNIMPLEMENTED */
 
70
        }
 
71
}
 
72
 
 
73
void il_register_node_callback(engview_t *view, ILnode_t *spec, int kind)
 
74
{
 
75
        Agnode_t        *n;
 
76
 
 
77
        if ((n = il_find_node(view,spec))) {
 
78
                if (kind == IL_MOD) {
 
79
                        if (agsubnode(view->model.v[IL_INS],n,FALSE)) return;
 
80
                        if (agsubnode(view->model.v[IL_DEL],n,FALSE)) return;
 
81
                }
 
82
                (void) agsubnode(view->model.v[kind], n, TRUE);
 
83
        }
 
84
        else abort();
 
85
}
 
86
 
 
87
void il_register_edge_callback(engview_t *view, ILedge_t *spec, int kind)
 
88
{
 
89
        Agedge_t        *e;
 
90
 
 
91
        if ((e = il_find_edge(view,spec))) {
 
92
                if (kind == IL_MOD) {
 
93
                        if (agsubedge(view->model.e[IL_INS],e,FALSE)) return;
 
94
                        if (agsubedge(view->model.e[IL_DEL],e,FALSE)) return;
 
95
                }
 
96
                (void) agsubedge(view->model.e[kind], e, TRUE);
 
97
        }
 
98
        else abort();
 
99
}
 
100
 
 
101
ilbool ilcallback(ILview_t *view)
 
102
{
 
103
        return ENG(view)->callback(view);
 
104
}