Diff for /parser3/src/sql/pa_sql_driver.h between versions 1.2 and 1.21

version 1.2, 2001/04/05 11:01:58 version 1.21, 2001/11/11 10:52:50
Line 1 Line 1
 /** @file  /** @file
         Parser: sql driver interface.          Parser: sql driver interface.
   
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
           Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)  
           $Id$
         $Id$  
   
           driver dynamic library must look like this:
         driver dynamic library must look like this:          @code
         @code                  class X_SQL_Driver : public SQL_Driver {
                 class X_SQL_Driver : public SQL_Driver {                  public:
                 public:  
                           X_SQL_Driver() : SQL_driver() {}
                         X_SQL_Driver() : SQL_driver() {}  
                           int api_version() { return SQL_DRIVER_API_VERSION; }
                         int api_version() { return SQL_DRIVER_API_VERSION; }                         
                                                   //...
                         //...                  };
                 };  
                   extern "C" SQL_Driver *create() {
                 extern "C" SQL_Driver *create() {                          return new X_SQL_Driver();
                         return new X_SQL_Driver();                  }      
                 }                 @endcode
         @endcode  */
 */  
   #ifndef PA_SQL_DRIVER_H
 #ifndef PA_SQL_DRIVER_H  #define PA_SQL_DRIVER_H
 #define PA_SQL_DRIVER_H  
   #include <sys/types.h>
 #include <sys/types.h>  
   /// service functions for SQL driver to use
 /// service functions for SQL driver to use  class SQL_Driver_services {
 class Services_for_SQL_driver {  public:
 public:          /// allocates some bytes on pool
         /// allocates some bytes on pool          virtual void *malloc(size_t size) =0;
         virtual void *malloc(size_t size) =0;          /// allocates some bytes clearing them with zeros
         /// allocates some bytes clearing them with zeros          virtual void *calloc(size_t size) =0;
         virtual void *calloc(size_t size) =0;          /// prepare throw exception
         /// throw exception          virtual void _throw(const char *comment) =0;
         virtual void _throw(const char *comment) =0;          /// throw C++ exception from prepared
 };          virtual void propagate_exception() =0;
   public:
 #define SQL_DRIVER_API_VERSION 0x0300          /// regretrully public, because can't make stack frames: "nowhere to return to"
           jmp_buf mark;
 /// SQL driver API  };
 class SQL_Driver {  
 public:  #define SQL_DRIVER_API_VERSION 0x0002
   #define SQL_DRIVER_CREATE create
         struct Cell {  #define SQL_DRIVER_CREATE_NAME "create" /* could not figure out how to # it :( */
                 void *ptr;  
                 size_t size;  /// events, occuring when SQL_Driver::query()-ing
         };  class SQL_Driver_query_event_handlers {
   public:
 public:          virtual void add_column(void *ptr, size_t size) =0;
           virtual void before_rows() =0;
         /// assignes services to driver. you can not use driver until this          virtual void add_row() =0;
         void set_services(Services_for_SQL_driver *aservices) { fservices=aservices; }          virtual void add_row_cell(void *ptr, size_t size) =0;
   };
         SQL_Driver() :  
                 fservices(0) {  /// SQL driver API
         }  class SQL_Driver {
         /// get api version  public:
         virtual int api_version() =0;  
         /// connect. @returns true+'connection' on success. 'error' on failure          SQL_Driver() {}
         virtual void connect(char *url, void **connection) =0;          /// get api version
         virtual void disconnect(void *connection) =0;          virtual int api_version() =0;
         virtual void commit(void *connection) =0;          /// initialize driver by loading sql dynamic link library
         virtual void rollback(void *connection) =0;          virtual const char *initialize(char *dlopen_file_spec) =0;
         virtual void query(void *connection,          /**     connect to sql database using
                 const char *statement,                   @param used_only_to_connect_url
                 unsigned int *column_count, Cell **columns,                          format is driver specific
                 unsigned long *row_count, Cell ***rows) =0;                          WARNING: must be used only to connect, for buffer doesn't live long enough
         /// log error message  
         //static void log(Pool& pool, const char *fmt, ...);                  @returns true+'connection' on success. 'error' on failure
           */
 protected:          virtual void connect(char *used_only_in_connect_url_cstr,
                   SQL_Driver_services& services, void **connection) =0;
         Services_for_SQL_driver *fservices;          virtual void disconnect(void *connection) =0;
 };          virtual void commit(
                   SQL_Driver_services& services, void *connection) =0;
 typedef SQL_Driver *(*SQL_Driver_create_func)();          virtual void rollback(
                   SQL_Driver_services& services, void *connection) =0;
 #endif          /// @returns true to indicate that connection still alive
           virtual bool ping(
                   SQL_Driver_services& services, void *connection) =0;
           /// encodes the string in 'from' to an escaped SQL string
           virtual unsigned int quote(
                   SQL_Driver_services& services, void *connection,
                   char *to, const char *from, unsigned int length) =0;
           virtual void query(
                   SQL_Driver_services& services, void *connection,
                   const char *statement, unsigned long offset, unsigned long limit,
                   SQL_Driver_query_event_handlers& handlers) =0;
   };
   
   typedef SQL_Driver *(*SQL_Driver_create_func)();
   
   #endif

Removed from v.1.2  
changed lines
  Added in v.1.21


E-mail: