GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
d_openselect.c
Go to the documentation of this file.
1 
15 #include <stdlib.h>
16 #include <grass/dbmi.h>
17 #include "macros.h"
18 #include "dbstubs.h"
19 
27 {
28  dbCursor *cursor;
29  int stat;
30  dbToken token;
31  dbString select;
32  int mode;
33 
34  /* get the arg(s) */
35  db_init_string(&select);
36  DB_RECV_STRING(&select);
37  DB_RECV_INT(&mode);
38 
39  /* create a cursor */
40  cursor = (dbCursor *) db_malloc(sizeof(dbCursor));
41  if (cursor == NULL)
42  return db_get_error_code();
43  token = db_new_token((dbAddress) cursor);
44  if (token < 0)
45  return db_get_error_code();
46  db_init_cursor(cursor);
47 
48  /* call the procedure */
49  stat = db_driver_open_select_cursor(&select, cursor, mode);
50  db_free_string(&select);
51 
52  /* send the return code */
53  if (stat != DB_OK) {
55  return DB_OK;
56  }
58 
59  /* mark this as a readonly cursor */
61 
62  /* add this cursor to the cursors managed by the driver state */
64 
65  /* results */
66  DB_SEND_TOKEN(&token);
67  DB_SEND_INT(cursor->type);
68  DB_SEND_INT(cursor->mode);
69  DB_SEND_TABLE_DEFINITION(cursor->table);
70  return DB_OK;
71 }
int(* db_driver_open_select_cursor)()
void db__add_cursor_to_driver_state(dbCursor *cursor)
Add cursor do driver state.
Definition: driver_state.c:79
#define DB_SEND_INT(x)
Definition: macros.h:37
#define DB_RECV_INT(x)
Definition: macros.h:39
void db_set_cursor_type_readonly(dbCursor *cursor)
Definition: cursor.c:99
void db_init_cursor(dbCursor *cursor)
Definition: cursor.c:10
int stat
Definition: g3dcolor.c:369
int db_get_error_code(void)
dbToken db_new_token(dbAddress address)
#define DB_SEND_FAILURE()
Definition: macros.h:9
void * db_malloc(int n)
#define DB_SEND_TABLE_DEFINITION(x)
Definition: macros.h:62
return NULL
Definition: dbfopen.c:1394
#define DB_SEND_TOKEN(x)
Definition: macros.h:97
#define DB_SEND_SUCCESS()
Definition: macros.h:7
void db_free_string(dbString *x)
Definition: string.c:142
int db_d_open_select_cursor(void)
Open select cursor.
Definition: d_openselect.c:26
void db_init_string(dbString *x)
Definition: string.c:11
#define DB_RECV_STRING(x)
Definition: macros.h:18
tuple mode
Definition: tools.py:1481