1/* $Id$ $Revision$ */
2/* vim:set shiftwidth=4 ts=8: */
3
4/*************************************************************************
5 * Copyright (c) 2011 AT&T Intellectual Property
6 * All rights reserved. This program and the accompanying materials
7 * are made available under the terms of the Eclipse Public License v1.0
8 * which accompanies this distribution, and is available at
9 * http://www.eclipse.org/legal/epl-v10.html
10 *
11 * Contributors: See CVS logs. Details at http://www.graphviz.org/
12 *************************************************************************/
13
14#include "mem.h"
15#include "site.h"
16#include <math.h>
17
18
19int siteidx;
20Site *bottomsite;
21
22static Freelist sfl;
23static int nvertices;
24
25void siteinit()
26{
27 /* double sn; */
28
29 freeinit(&sfl, sizeof(Site));
30 nvertices = 0;
31 /* sn = nsites+4; */
32 /* sqrt_nsites = sqrt(sn); */
33}
34
35
36Site *getsite()
37{
38 return ((Site *) getfree(&sfl));
39}
40
41double dist(Site * s, Site * t)
42{
43 double ans;
44 double dx, dy;
45
46 dx = s->coord.x - t->coord.x;
47 dy = s->coord.y - t->coord.y;
48 ans = sqrt(dx * dx + dy * dy);
49 return ans;
50}
51
52
53void makevertex(Site * v)
54{
55 v->sitenbr = nvertices;
56 nvertices += 1;
57#ifdef STANDALONE
58 out_vertex(v);
59#endif
60}
61
62
63void deref(Site * v)
64{
65 v->refcnt -= 1;
66 if (v->refcnt == 0)
67 makefree(v, &sfl);
68}
69
70void ref(Site * v)
71{
72 v->refcnt += 1;
73}
74