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

« back to all changes in this revision

Viewing changes to tools/gpr/queue.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 <queue.h>
 
2
 
 
3
typedef struct {
 
4
  Dtlink_t  link;
 
5
  void*     np;
 
6
} nsitem;
 
7
 
 
8
static Void_t*
 
9
makef(Dt_t* d, nsitem* obj, Dtdisc_t* disc)
 
10
{
 
11
  nsitem*   p;
 
12
 
 
13
  p = (nsitem*)malloc (sizeof(nsitem));
 
14
  p->np = obj->np;
 
15
  return p;
 
16
}
 
17
 
 
18
static void
 
19
freef(Dt_t* d, nsitem* obj, Dtdisc_t* disc)
 
20
{
 
21
  free (obj);
 
22
}
 
23
 
 
24
static Dtdisc_t ndisc = {
 
25
  offsetof(nsitem,np),
 
26
  sizeof(void*),
 
27
  offsetof(nsitem,link),
 
28
  (Dtmake_f)makef,
 
29
  (Dtfree_f)freef,
 
30
  0,
 
31
  0,
 
32
  0,
 
33
  0
 
34
};
 
35
 
 
36
queue* 
 
37
mkQ(Dtmethod_t* meth)
 
38
{
 
39
  queue*  nq;
 
40
 
 
41
  nq = dtopen (&ndisc, meth);
 
42
  return nq;
 
43
}
 
44
 
 
45
void
 
46
push(queue* nq, void* n)
 
47
{
 
48
  nsitem   obj;
 
49
 
 
50
  obj.np = n;
 
51
  dtinsert (nq, &obj);
 
52
}
 
53
 
 
54
void* 
 
55
pop(queue* nq, int delete)
 
56
{
 
57
  nsitem*   obj;
 
58
  void* n;
 
59
 
 
60
  obj = dtfirst (nq);
 
61
  if (obj) {
 
62
    n = obj->np;
 
63
    if (delete) dtdelete (nq,0);    
 
64
    return n;
 
65
  }
 
66
  else return 0;
 
67
}
 
68
 
 
69
void 
 
70
freeQ(queue* nq)
 
71
{
 
72
  dtclose(nq);
 
73
}
 
74