--- parser3/src/sql/pa_sql_driver.h 2003/01/31 12:34:39 1.34.2.2 +++ parser3/src/sql/pa_sql_driver.h 2003/07/24 11:31:24 1.35 @@ -7,7 +7,7 @@ driver dynamic library must look like this: @code - class X_SQL_Driver : public SQL_Driver { + class X_SQL_Driver: public SQL_Driver { public: X_SQL_Driver() : SQL_driver() {} @@ -26,11 +26,13 @@ #ifndef PA_SQL_DRIVER_H #define PA_SQL_DRIVER_H -static const char* IDENT_SQL_DRIVER_H="$Date: 2003/01/31 12:34:39 $"; +static const char* IDENT_SQL_DRIVER_H="$Date: 2003/07/24 11:31:24 $"; #include +#include +#include -#define SQL_DRIVER_API_VERSION 0x0006 +#define SQL_DRIVER_API_VERSION 0x0007 #define SQL_DRIVER_CREATE create /* used in driver implementation */ #define SQL_DRIVER_CREATE_NAME "create" /* could not figure out how to # it :( */ @@ -69,8 +71,8 @@ class SQL_Driver_services { public: /// allocates some bytes virtual void *malloc(size_t size) =0; - /// allocates some bytes clearing them with zeros - virtual void *calloc(size_t size) =0; + /// allocates some bytes, user promises: no pointers inside + virtual void *malloc_atomic(size_t size) =0; /// reallocates bytes virtual void *realloc(void *ptr, size_t size) =0; /// prepare throw exception @@ -91,16 +93,26 @@ public: */ class SQL_Driver_query_event_handlers { public: - virtual bool add_column(SQL_Error& error, void *ptr, size_t size) =0; + virtual bool add_column(SQL_Error& error, const char* str, size_t length) =0; virtual bool before_rows(SQL_Error& error) =0; virtual bool add_row(SQL_Error& error) =0; - virtual bool add_row_cell(SQL_Error& error, void *ptr, size_t size) =0; + virtual bool add_row_cell(SQL_Error& error, const char* str, size_t length) =0; }; /// SQL driver API class SQL_Driver { public: + /** allocated using our allocator, + @todo never freed + */ + static void *operator new(size_t size) { + void *result=::malloc(size); + if(!result) + abort(); + + return result; + } /// get api version virtual int api_version() =0; /// initialize driver by loading sql dynamic link library @@ -123,9 +135,9 @@ public: virtual bool ping( SQL_Driver_services& services, void *connection) =0; /// encodes the string in 'from' to an escaped SQL string - virtual unsigned int quote( + virtual const char* quote( SQL_Driver_services& services, void *connection, - char *to, const char* from, unsigned int length) =0; + const char* str, unsigned int length) =0; virtual void query( SQL_Driver_services& services, void *connection, const char* statement, unsigned long offset, unsigned long limit,