GRASS GIS 8 Programmer's Manual
8.3.2(2024)-exported
Loading...
Searching...
No Matches
rowio/setup.c
Go to the documentation of this file.
1
/*!
2
\file rowio/setup.c
3
4
\brief RowIO library - Setup
5
6
(C) 2001-2009 by the GRASS Development Team
7
8
This program is free software under the GNU General Public License
9
(>=v2). Read the file COPYING that comes with GRASS for details.
10
11
\author Original author CERL
12
*/
13
14
#include <stdio.h>
15
#include <stdlib.h>
16
#include <grass/gis.h>
17
#include <grass/glocale.h>
18
#include <grass/rowio.h>
19
20
/*!
21
* \brief Configure rowio structure
22
*
23
* Rowio_setup() initializes the ROWIO structure <i>r</i> and
24
* allocates the required memory buffers. The file descriptor
25
* <i>fd</i> must be open for reading. The number of rows to be held
26
* in memory is <i>nrows</i>. The length in bytes of each row is
27
* <i>len</i>. The routine which will be called to read data from the
28
* file is getrow() and must be provided by the programmer. If the
29
* application requires that the rows be written back into the file if
30
* changed, the file descriptor <i>fd</i> must be open for write as
31
* well, and the programmer must provide a putrow() routine to write
32
* the data into the file. If no writing of the file is to occur,
33
* specify NULL for putrow().
34
*
35
* \param R pointer to ROWIO structure
36
* \param fd file descriptor
37
* \param nrows number of rows
38
* \param getrow get row function
39
*
40
* \return 1 on success
41
* \return -1 no memory
42
*/
43
44
int
Rowio_setup
(ROWIO *R,
int
fd,
int
nrows,
int
len,
45
int
(*getrow)(
int
,
void
*,
int
,
int
),
46
int
(*putrow)(
int
,
const
void
*,
int
,
int
))
47
{
48
int
i;
49
50
R->getrow = getrow;
51
R->putrow = putrow;
52
R->nrows = nrows;
53
R->len = len;
54
R->cur = -1;
55
R->buf =
NULL
;
56
R->fd = fd;
57
58
R->rcb = (
struct
ROWIO_RCB *)G_malloc(nrows *
sizeof
(
struct
ROWIO_RCB));
59
if
(R->rcb ==
NULL
) {
60
G_warning
(_(
"Out of memory"
));
61
return
-1;
62
}
63
for
(i = 0; i < nrows; i++) {
64
R->rcb[i].buf = G_malloc(len);
65
if
(R->rcb[i].buf ==
NULL
) {
66
G_warning
(_(
"Out of memory"
));
67
return
-1;
68
}
69
R->rcb[i].row = -1;
/* mark not used */
70
}
71
return
1;
72
}
NULL
#define NULL
Definition
ccmath.h:32
G_warning
void G_warning(const char *msg,...)
Print a warning message to stderr.
Definition
gis/error.c:203
Rowio_setup
int Rowio_setup(ROWIO *R, int fd, int nrows, int len, int(*getrow)(int, void *, int, int), int(*putrow)(int, const void *, int, int))
Configure rowio structure.
Definition
rowio/setup.c:44
rowio
setup.c
Generated on Sat Nov 9 2024 17:44:25 for GRASS GIS 8 Programmer's Manual by
1.12.0