source: trunk/src2/voronoi/memory.c @ 666

Last change on this file since 666 was 666, checked in by mmc, 17 years ago

Added voronoi code, which is currently used by the nanovis server
to generate triangular meshes for point clouds.

File size: 1.1 KB
Line 
1
2/*** MEMORY.C ***/
3
4#include <stdio.h>
5#include <stdlib.h>  /* malloc(), exit() */
6
7#include "vdefs.h"
8
9extern int sqrt_nsites, siteidx ;
10
11void
12freeinit(Freelist * fl, int size)
13    {
14    fl->head = (Freenode *)NULL ;
15    fl->nodesize = size ;
16    }
17
18char *
19getfree(Freelist * fl)
20    {
21    int i ;
22    Freenode * t ;
23    if (fl->head == (Freenode *)NULL)
24        {
25        t =  (Freenode *) myalloc(sqrt_nsites * fl->nodesize) ;
26        for(i = 0 ; i < sqrt_nsites ; i++)
27            {
28            makefree((Freenode *)((char *)t+i*fl->nodesize), fl) ;
29            }
30        }
31    t = fl->head ;
32    fl->head = (fl->head)->nextfree ;
33    return ((char *)t) ;
34    }
35
36void
37makefree(Freenode * curr, Freelist * fl)
38    {
39    curr->nextfree = fl->head ;
40    fl->head = curr ;
41    }
42
43int total_alloc ;
44
45char *
46myalloc(unsigned n)
47    {
48    char * t ;
49    if ((t=malloc(n)) == (char *) 0)
50        {
51        fprintf(stderr,"Insufficient memory processing site %d (%d bytes in use)\n",
52        siteidx, total_alloc) ;
53        exit(0) ;
54        }
55    total_alloc += n ;
56    return (t) ;
57    }
Note: See TracBrowser for help on using the repository browser.