~ubuntu-branches/ubuntu/precise/grass/precise

« back to all changes in this revision

Viewing changes to vector/v.voronoi/sw_edgelist.c

  • Committer: Bazaar Package Importer
  • Author(s): Francesco Paolo Lovergine
  • Date: 2011-04-13 17:08:41 UTC
  • mfrom: (8.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20110413170841-ss1t9bic0d0uq0gz
Tags: 6.4.1-1
* New upstream version.
* Now build-dep on libjpeg-dev and current libreadline6-dev.
* Removed patch swig: obsolete.
* Policy bumped to 3.9.2, without changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include <stdlib.h>
 
2
#include <grass/gis.h>
2
3
#include "sw_defs.h"
3
4
 
4
5
int ntry, totalsearch;
7
8
{
8
9
    int i;
9
10
 
10
 
    freeinit(&hfl, sizeof **ELhash);
 
11
    freeinit(&hfl, sizeof(struct Halfedge));
11
12
    ELhashsize = 2 * sqrt_nsites;
12
 
    ELhash = (struct Halfedge **)myalloc(sizeof *ELhash * ELhashsize);
13
 
    for (i = 0; i < ELhashsize; i += 1)
 
13
    ELhash = (struct Halfedge **)G_malloc(ELhashsize * sizeof(struct Halfedge *));
 
14
    for (i = 0; i < ELhashsize; i++)
14
15
        ELhash[i] = (struct Halfedge *)NULL;
15
16
    ELleftend = HEcreate((struct Edge *)NULL, 0);
16
17
    ELrightend = HEcreate((struct Edge *)NULL, 0);
62
63
 
63
64
    /* Hash table points to deleted half edge.  Patch as necessary. */
64
65
    ELhash[b] = (struct Halfedge *)NULL;
65
 
    if ((he->ELrefcnt -= 1) == 0)
 
66
    if ((--(he->ELrefcnt)) == 0)
66
67
        makefree((struct Freenode *)he, &hfl);
67
68
    return ((struct Halfedge *)NULL);
68
69
}
80
81
        bucket = ELhashsize - 1;
81
82
    he = ELgethash(bucket);
82
83
    if (he == (struct Halfedge *)NULL) {
83
 
        for (i = 1; 1; i += 1) {
 
84
        for (i = 1; 1; i++) {
84
85
            if ((he = ELgethash(bucket - i)) != (struct Halfedge *)NULL)
85
86
                break;
86
87
            if ((he = ELgethash(bucket + i)) != (struct Halfedge *)NULL)
87
88
                break;
88
 
        };
 
89
        }
89
90
        totalsearch += i;
90
 
    };
91
 
    ntry += 1;
 
91
    }
 
92
    ntry++;
92
93
    /* Now search linear list of halfedges for the corect one */
93
94
    if (he == ELleftend || (he != ELrightend && right_of(he, p))) {
94
95
        do {
104
105
    /* Update hash table and reference counts */
105
106
    if (bucket > 0 && bucket < ELhashsize - 1) {
106
107
        if (ELhash[bucket] != (struct Halfedge *)NULL)
107
 
            ELhash[bucket]->ELrefcnt -= 1;
 
108
            ELhash[bucket]->ELrefcnt--;
108
109
        ELhash[bucket] = he;
109
 
        ELhash[bucket]->ELrefcnt += 1;
110
 
    };
 
110
        ELhash[bucket]->ELrefcnt++;
 
111
    }
111
112
    return (he);
112
113
}
113
114