1 /*
2 +----------------------------------------------------------------------+
3 | PHP Version 5 |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 1997-2016 The PHP Group |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
15 | Authors: Scott MacVicar <scottmac@php.net> |
16 +----------------------------------------------------------------------+
17 */
18
19 /* $Id$ */
20
21 #ifndef PHP_SQLITE_STRUCTS_H
22 #define PHP_SQLITE_STRUCTS_H
23
24 #include <sqlite3.h>
25
26 /* for backwards compatibility reasons */
27 #ifndef SQLITE_OPEN_READONLY
28 #define SQLITE_OPEN_READONLY 0x00000001
29 #endif
30
31 #ifndef SQLITE_OPEN_READWRITE
32 #define SQLITE_OPEN_READWRITE 0x00000002
33 #endif
34
35 #ifndef SQLITE_OPEN_CREATE
36 #define SQLITE_OPEN_CREATE 0x00000004
37 #endif
38
39 /* Structure for SQLite Statement Parameter. */
40 struct php_sqlite3_bound_param {
41 long param_number;
42 char *name;
43 int name_len;
44 long type;
45
46 zval *parameter;
47 };
48
49 struct php_sqlite3_fci {
50 zend_fcall_info fci;
51 zend_fcall_info_cache fcc;
52 };
53
54 /* Structure for SQLite function. */
55 typedef struct _php_sqlite3_func {
56 struct _php_sqlite3_func *next;
57
58 const char *func_name;
59 int argc;
60
61 zval *func, *step, *fini;
62 struct php_sqlite3_fci afunc, astep, afini;
63 } php_sqlite3_func;
64
65 /* Structure for SQLite collation function */
66 typedef struct _php_sqlite3_collation {
67 struct _php_sqlite3_collation *next;
68
69 const char *collation_name;
70 zval *cmp_func;
71 struct php_sqlite3_fci fci;
72 } php_sqlite3_collation;
73
74 /* Structure for SQLite Database object. */
75 typedef struct _php_sqlite3_db_object {
76 zend_object zo;
77 int initialised;
78 sqlite3 *db;
79 php_sqlite3_func *funcs;
80 php_sqlite3_collation *collations;
81
82 zend_bool exception;
83
84 zend_llist free_list;
85 } php_sqlite3_db_object;
86
87 /* Structure for SQLite Database object. */
88 typedef struct _php_sqlite3_agg_context {
89 zval *zval_context;
90 long row_count;
91 } php_sqlite3_agg_context;
92
93 typedef struct _php_sqlite3_stmt_object php_sqlite3_stmt;
94 typedef struct _php_sqlite3_result_object php_sqlite3_result;
95
96 /* sqlite3 objects to be destroyed */
97 typedef struct _php_sqlite3_free_list {
98 zval *stmt_obj_zval;
99 php_sqlite3_stmt *stmt_obj;
100 } php_sqlite3_free_list;
101
102 /* Structure for SQLite Result object. */
103 struct _php_sqlite3_result_object {
104 zend_object zo;
105 php_sqlite3_db_object *db_obj;
106 php_sqlite3_stmt *stmt_obj;
107 zval *stmt_obj_zval;
108
109 int is_prepared_statement;
110 int complete;
111 };
112
113 /* Structure for SQLite Statement object. */
114 struct _php_sqlite3_stmt_object {
115 zend_object zo;
116 sqlite3_stmt *stmt;
117 php_sqlite3_db_object *db_obj;
118 zval *db_obj_zval;
119
120 int initialised;
121
122 /* Keep track of the zvals for bound parameters */
123 HashTable *bound_params;
124 };
125
126 #endif
127
128
129 /*
130 * Local variables:
131 * tab-width: 4
132 * c-basic-offset: 4
133 * indent-tabs-mode: t
134 * End:
135 */