GRASS GIS 7 Programmer's Manual  7.9.dev(2021)-e5379bbd7
c_fetch.c
Go to the documentation of this file.
1 /*!
2  * \file db/dbmi_client/c_fetch.c
3  *
4  * \brief DBMI Library (client) - fetch data
5  *
6  * (C) 1999-2008 by the GRASS Development Team
7  *
8  * This program is free software under the GNU General Public
9  * License (>=v2). Read the file COPYING that comes with GRASS
10  * for details.
11  *
12  * \author Joel Jones (CERL/UIUC), Radim Blazek
13  */
14 
15 #include <grass/dbmi.h>
16 #include "macros.h"
17 
18 /*!
19  \brief Fetch data from open cursor
20 
21  \param cursor pointer to dbCursor
22  \param position cursor position
23  \param[out] more get more (0 for no data to be fetched)
24 
25  \return DB_OK on success
26  \return DB_FAILED on failure
27  */
28 int db_fetch(dbCursor * cursor, int position, int *more)
29 {
30  int ret_code;
31 
32  /* start the procedure call */
33  db__set_protocol_fds(cursor->driver->send, cursor->driver->recv);
35 
36  /* send the argument(s) to the procedure */
37  DB_SEND_TOKEN(&cursor->token);
38  DB_SEND_INT(position);
39 
40  /* get the return code for the procedure call */
41  DB_RECV_RETURN_CODE(&ret_code);
42 
43  if (ret_code != DB_OK)
44  return ret_code; /* ret_code SHOULD == DB_FAILED */
45 
46  /* get the results */
47  DB_RECV_INT(more);
48  if (*more) {
49  DB_RECV_TABLE_DATA(cursor->table);
50  }
51  return DB_OK;
52 }
#define DB_SEND_INT(x)
Definition: macros.h:37
#define DB_RECV_INT(x)
Definition: macros.h:39
dbDriver * driver
Definition: dbmi.h:233
int db_fetch(dbCursor *cursor, int position, int *more)
Fetch data from open cursor.
Definition: c_fetch.c:28
#define DB_PROC_FETCH
Definition: dbmi.h:39
#define DB_START_PROCEDURE_CALL(x)
Definition: macros.h:2
#define DB_RECV_RETURN_CODE(x)
Definition: macros.h:4
dbToken token
Definition: dbmi.h:232
FILE * recv
Definition: dbmi.h:171
#define DB_SEND_TOKEN(x)
Definition: macros.h:97
#define DB_RECV_TABLE_DATA(x)
Definition: macros.h:69
void db__set_protocol_fds(FILE *, FILE *)
?
FILE * send
Definition: dbmi.h:171
dbTable * table
Definition: dbmi.h:234
#define DB_OK
Definition: dbmi.h:71