GRASS 8 Programmer's Manual 8.6.0dev(2026)-4bb960b182
Loading...
Searching...
No Matches
d_openselect.c
Go to the documentation of this file.
1/*!
2 * \file db/dbmi_driver/d_openselect.c
3 *
4 * \brief DBMI Library (driver) - open select cursor
5 *
6 * SPDX-FileCopyrightText: 1999-2008 GRASS Development Team
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 *
9 * \author Joel Jones (CERL/UIUC), Radim Blazek
10 */
11
12#include <stdlib.h>
13#include <grass/dbmi.h>
14#include "macros.h"
15#include "dbstubs.h"
16
17/*!
18 \brief Open select cursor
19
20 \return DB_OK on success
21 \return DB_FAILED on failure
22 */
24{
26 int stat;
27 dbToken token;
28 dbString select;
29 int mode;
30
31 /* get the arg(s) */
32 db_init_string(&select);
33 DB_RECV_STRING(&select);
34 DB_RECV_INT(&mode);
35
36 /* create a cursor */
37 cursor = (dbCursor *)db_malloc(sizeof(dbCursor));
38 if (cursor == NULL)
39 return db_get_error_code();
41 if (token < 0)
42 return db_get_error_code();
44
45 /* call the procedure */
47 db_free_string(&select);
48
49 /* send the return code */
50 if (stat != DB_OK) {
52 return DB_OK;
53 }
55
56 /* mark this as a readonly cursor */
58
59 /* add this cursor to the cursors managed by the driver state */
61
62 /* results */
63 DB_SEND_TOKEN(&token);
64 DB_SEND_INT(cursor->type);
65 DB_SEND_INT(cursor->mode);
67 return DB_OK;
68}
#define NULL
Definition ccmath.h:32
int db_d_open_select_cursor(void)
Open select cursor.
Main header of GRASS DataBase Management Interface.
int dbToken
Definition dbmi.h:143
#define DB_OK
Definition dbmi.h:69
void * dbAddress
Definition dbmi.h:142
int(* db_driver_open_select_cursor)(dbString *, dbCursor *, int)
dbToken db_new_token(dbAddress)
Add new token.
void db_init_cursor(dbCursor *)
Initialize dbCursor.
Definition cursor.c:20
void db_set_cursor_type_readonly(dbCursor *)
Set cursor to be read-only (select)
Definition cursor.c:108
void db_free_string(dbString *)
Free allocated space for dbString.
Definition string.c:148
int db_get_error_code(void)
Get error code.
void db_init_string(dbString *)
Initialize dbString.
Definition string.c:23
void db__add_cursor_to_driver_state(dbCursor *)
Add cursor do driver state.
void * db_malloc(int)
Allocate memory.
#define DB_SEND_TABLE_DEFINITION(x)
Definition macros.h:137
#define DB_SEND_INT(x)
Definition macros.h:82
#define DB_RECV_INT(x)
Definition macros.h:87
#define DB_SEND_SUCCESS()
Definition macros.h:13
#define DB_RECV_STRING(x)
Definition macros.h:39
#define DB_SEND_TOKEN(x)
Definition macros.h:214
#define DB_SEND_FAILURE()
Definition macros.h:18