GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
linkm/init.c
Go to the documentation of this file.
1/*
2 ** Written by David Gerdes US Army Construction Engineering Research Lab
3 ** April 1992
4 ** Copyright 1992 USA-CERL All rights reserved.
5 **
6 ****************************************************************************
7 *
8 * MODULE: LINKED LIST MEMORY MANAGER
9 *
10 * AUTHOR(S): David Gerdes 1992, US Army Construction Engineering Research
11 * Lab
12 *
13 * PURPOSE: Outputs a raster map layer showing the cumulative cost
14 * of moving between different geographic locations on an
15 * input raster map layer whose cell category values
16 * represent cost.
17 *
18 * COPYRIGHT: (C) 1999, 2006 by the GRASS Development Team
19 *
20 * This program is free software under the GNU General Public
21 * License (>=v2). Read the file COPYING that comes with GRASS
22 * for details.
23 *
24 ***************************************************************************/
25
26#include <stdlib.h>
27#include <grass/linkm.h>
28
29static int link_chunk_size = 100;
30static int link_exit_flag = 0;
31
32void link_set_chunk_size(int size)
33{
34 link_chunk_size = size;
35}
36
37void link_exit_on_error(int flag)
38{
39 link_exit_flag = flag;
40}
41
42struct link_head *link_init(int size)
43{
44
45 struct link_head *Head;
46
47 if (NULL == (Head = (struct link_head *)malloc(sizeof(struct link_head))))
48 return NULL;
49
50 if (NULL ==
51 (Head->ptr_array = (VOID_T **)malloc(sizeof(VOID_T *) * PTR_CNT))) {
52 free(Head);
53 return NULL;
54 }
55
56 Head->max_ptr = 0;
57 Head->Unused = NULL;
58 Head->alloced = PTR_CNT;
59 Head->unit_size =
60 size < (int)sizeof(VOID_T *) ? (int)sizeof(VOID_T *) : size;
61 Head->chunk_size = link_chunk_size;
62 Head->exit_flag = link_exit_flag;
63
64 return Head;
65}
66
67void link_cleanup(struct link_head *Head)
68{
69 register int i;
70
71 if (Head == NULL)
72 return;
73
74 if (Head->ptr_array) {
75 for (i = 0; i < Head->max_ptr; i++)
76 if (Head->ptr_array[i] != NULL)
77 free(Head->ptr_array[i]);
78 free(Head->ptr_array);
79 free(Head);
80 }
81}
#define NULL
Definition ccmath.h:32
void link_exit_on_error(int flag)
Definition linkm/init.c:37
void link_cleanup(struct link_head *Head)
Definition linkm/init.c:67
void link_set_chunk_size(int size)
Definition linkm/init.c:32
struct link_head * link_init(int size)
Definition linkm/init.c:42
#define VOID_T
Definition qtree.h:28