Annotation of parser3/src/sql/pa_sql_driver.h, revision 1.18
1.1 paf 1: /** @file
2: Parser: sql driver interface.
3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
5: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
6:
1.18 ! parser 7: $Id: pa_sql_driver.h,v 1.17 2001/09/26 10:32:26 parser Exp $
1.1 paf 8:
9:
10: driver dynamic library must look like this:
11: @code
12: class X_SQL_Driver : public SQL_Driver {
13: public:
14:
15: X_SQL_Driver() : SQL_driver() {}
16:
17: int api_version() { return SQL_DRIVER_API_VERSION; }
18:
19: //...
20: };
21:
22: extern "C" SQL_Driver *create() {
23: return new X_SQL_Driver();
24: }
25: @endcode
26: */
27:
28: #ifndef PA_SQL_DRIVER_H
29: #define PA_SQL_DRIVER_H
30:
1.2 paf 31: #include <sys/types.h>
1.1 paf 32:
33: /// service functions for SQL driver to use
1.7 paf 34: class SQL_Driver_services {
1.1 paf 35: public:
36: /// allocates some bytes on pool
37: virtual void *malloc(size_t size) =0;
38: /// allocates some bytes clearing them with zeros
39: virtual void *calloc(size_t size) =0;
40: /// throw exception
41: virtual void _throw(const char *comment) =0;
42: };
43:
1.18 ! parser 44: #define SQL_DRIVER_API_VERSION 0x0305
1.15 parser 45: #define SQL_DRIVER_CREATE create
1.16 parser 46: #define SQL_DRIVER_CREATE_NAME "create" /* could not figure out how to # it :( */
1.11 parser 47:
48: /// events, occuring when SQL_Driver::query()-ing
49: class SQL_Driver_query_event_handlers {
50: public:
51: virtual void add_column(void *ptr, size_t size) =0;
52: virtual void before_rows() =0;
53: virtual void add_row() =0;
54: virtual void add_row_cell(void *ptr, size_t size) =0;
55: };
1.1 paf 56:
57: /// SQL driver API
58: class SQL_Driver {
59: public:
60:
1.10 parser 61: SQL_Driver() {}
1.1 paf 62: /// get api version
63: virtual int api_version() =0;
1.6 paf 64: /// initialize driver by loading sql dynamic link library
65: virtual const char *initialize(const char *dlopen_file_spec) =0;
1.9 parser 66: /** connect to sql database using
67: @param used_only_to_connect_url
68: format is driver specific
69: WARNING: must be used only to connect, for buffer doesn't live long enough
70:
71: @returns true+'connection' on success. 'error' on failure
72: */
1.10 parser 73: virtual void connect(char *used_only_in_connect_url_cstr,
74: SQL_Driver_services& services, void **connection) =0;
1.13 parser 75: virtual void disconnect(void *connection) =0;
1.10 parser 76: virtual void commit(
77: SQL_Driver_services& services, void *connection) =0;
78: virtual void rollback(
79: SQL_Driver_services& services, void *connection) =0;
1.3 paf 80: /// @returns true to indicate that connection still alive
1.10 parser 81: virtual bool ping(
82: SQL_Driver_services& services, void *connection) =0;
1.4 paf 83: /// encodes the string in 'from' to an escaped SQL string
1.10 parser 84: virtual unsigned int quote(
85: SQL_Driver_services& services, void *connection,
1.4 paf 86: char *to, const char *from, unsigned int length) =0;
1.10 parser 87: virtual void query(
88: SQL_Driver_services& services, void *connection,
1.3 paf 89: const char *statement, unsigned long offset, unsigned long limit,
1.11 parser 90: SQL_Driver_query_event_handlers& handlers) =0;
1.1 paf 91: };
92:
93: typedef SQL_Driver *(*SQL_Driver_create_func)();
94:
95: #endif
E-mail: