Drizzled Public API Documentation

constants.h
Go to the documentation of this file.
00001 /*
00002  * Drizzle Client & Protocol Library
00003  *
00004  * Copyright (C) 2008 Eric Day (eday@oddments.org)
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions are
00009  * met:
00010  *
00011  *     * Redistributions of source code must retain the above copyright
00012  * notice, this list of conditions and the following disclaimer.
00013  *
00014  *     * Redistributions in binary form must reproduce the above
00015  * copyright notice, this list of conditions and the following disclaimer
00016  * in the documentation and/or other materials provided with the
00017  * distribution.
00018  *
00019  *     * The names of its contributors may not be used to endorse or
00020  * promote products derived from this software without specific prior
00021  * written permission.
00022  *
00023  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00024  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00025  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00026  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00027  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00028  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00029  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00030  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00031  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00032  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00033  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00034  *
00035  */
00036 
00042 #ifndef __DRIZZLE_CONSTANTS_H
00043 #define __DRIZZLE_CONSTANTS_H
00044 
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048 
00059 #define DRIZZLE_RETURN_SERVER_GONE DRIZZLE_RETURN_LOST_CONNECTION
00060 #define DRIZZLE_RETURN_EOF DRIZZLE_RETURN_LOST_CONNECTION
00061 #define DRIZZLE_COLUMN_TYPE_VIRTUAL 17
00062 
00063 /* Defines. */
00064 #define DRIZZLE_DEFAULT_TCP_HOST         "127.0.0.1"
00065 #define DRIZZLE_DEFAULT_TCP_PORT         4427
00066 #define DRIZZLE_DEFAULT_TCP_PORT_MYSQL   4427
00067 #define DRIZZLE_DEFAULT_UDS              "/tmp/drizzle.sock"
00068 #define DRIZZLE_DEFAULT_UDS_MYSQL        "/tmp/mysql.sock"
00069 #define DRIZZLE_DEFAULT_BACKLOG          64
00070 #define DRIZZLE_MAX_ERROR_SIZE           2048
00071 #define DRIZZLE_MAX_USER_SIZE            64
00072 #define DRIZZLE_MAX_PASSWORD_SIZE        32
00073 #define DRIZZLE_MAX_DB_SIZE              64
00074 #define DRIZZLE_MAX_INFO_SIZE            2048
00075 #define DRIZZLE_MAX_SQLSTATE_SIZE        5
00076 #define DRIZZLE_MAX_CATALOG_SIZE         128
00077 #define DRIZZLE_MAX_TABLE_SIZE           128
00078 #define DRIZZLE_MAX_COLUMN_NAME_SIZE     2048
00079 #define DRIZZLE_MAX_DEFAULT_VALUE_SIZE   2048
00080 #define DRIZZLE_MAX_PACKET_SIZE          UINT32_MAX
00081 #define DRIZZLE_MAX_BUFFER_SIZE          32768
00082 #define DRIZZLE_BUFFER_COPY_THRESHOLD    8192
00083 #define DRIZZLE_MAX_SERVER_VERSION_SIZE  32
00084 #define DRIZZLE_MAX_SERVER_EXTRA_SIZE    32
00085 #define DRIZZLE_MAX_SCRAMBLE_SIZE        20
00086 #define DRIZZLE_STATE_STACK_SIZE         8
00087 #define DRIZZLE_ROW_GROW_SIZE            8192
00088 #define DRIZZLE_DEFAULT_SOCKET_TIMEOUT   10
00089 #define DRIZZLE_DEFAULT_SOCKET_SEND_SIZE 32768
00090 #define DRIZZLE_DEFAULT_SOCKET_RECV_SIZE 32768
00091 #define DRIZZLE_MYSQL_PASSWORD_HASH      41
00092 
00096 typedef enum
00097 {
00098   DRIZZLE_RETURN_OK,
00099   DRIZZLE_RETURN_IO_WAIT,
00100   DRIZZLE_RETURN_PAUSE,
00101   DRIZZLE_RETURN_ROW_BREAK,
00102   DRIZZLE_RETURN_MEMORY,
00103   DRIZZLE_RETURN_ERRNO,
00104   DRIZZLE_RETURN_INTERNAL_ERROR,
00105   DRIZZLE_RETURN_GETADDRINFO,
00106   DRIZZLE_RETURN_NOT_READY,
00107   DRIZZLE_RETURN_BAD_PACKET_NUMBER,
00108   DRIZZLE_RETURN_BAD_HANDSHAKE_PACKET,
00109   DRIZZLE_RETURN_BAD_PACKET,
00110   DRIZZLE_RETURN_PROTOCOL_NOT_SUPPORTED,
00111   DRIZZLE_RETURN_UNEXPECTED_DATA,
00112   DRIZZLE_RETURN_NO_SCRAMBLE,
00113   DRIZZLE_RETURN_AUTH_FAILED,
00114   DRIZZLE_RETURN_NULL_SIZE,
00115   DRIZZLE_RETURN_ERROR_CODE,
00116   DRIZZLE_RETURN_TOO_MANY_COLUMNS,
00117   DRIZZLE_RETURN_ROW_END,
00118   DRIZZLE_RETURN_LOST_CONNECTION,
00119   DRIZZLE_RETURN_COULD_NOT_CONNECT,
00120   DRIZZLE_RETURN_NO_ACTIVE_CONNECTIONS,
00121   DRIZZLE_RETURN_HANDSHAKE_FAILED,
00122   DRIZZLE_RETURN_TIMEOUT,
00123   DRIZZLE_RETURN_MAX /* Always add new codes to the end before this one. */
00124 } drizzle_return_t;
00125 
00129 typedef enum
00130 {
00131   DRIZZLE_VERBOSE_NEVER,
00132   DRIZZLE_VERBOSE_FATAL,
00133   DRIZZLE_VERBOSE_ERROR,
00134   DRIZZLE_VERBOSE_INFO,
00135   DRIZZLE_VERBOSE_DEBUG,
00136   DRIZZLE_VERBOSE_CRAZY,
00137   DRIZZLE_VERBOSE_MAX
00138 } drizzle_verbose_t;
00139 
00146 typedef enum
00147 {
00148   DRIZZLE_NONE=            0,
00149   DRIZZLE_ALLOCATED=       (1 << 0),
00150   DRIZZLE_NON_BLOCKING=    (1 << 1),
00151   DRIZZLE_FREE_OBJECTS=    (1 << 2),
00152   DRIZZLE_ASSERT_DANGLING= (1 << 3)
00153 } drizzle_options_t;
00154 
00159 typedef enum
00160 {
00161   DRIZZLE_CON_NONE=             0,
00162   DRIZZLE_CON_ALLOCATED=        (1 << 0),
00163   DRIZZLE_CON_MYSQL=            (1 << 1),
00164   DRIZZLE_CON_RAW_PACKET=       (1 << 2),
00165   DRIZZLE_CON_RAW_SCRAMBLE=     (1 << 3),
00166   DRIZZLE_CON_READY=            (1 << 4),
00167   DRIZZLE_CON_NO_RESULT_READ=   (1 << 5),
00168   DRIZZLE_CON_IO_READY=         (1 << 6),
00169   DRIZZLE_CON_LISTEN=           (1 << 7),
00170   DRIZZLE_CON_EXPERIMENTAL=     (1 << 8),
00171   DRIZZLE_CON_FOUND_ROWS=       (1 << 9),
00172   DRIZZLE_CON_ADMIN=            (1 << 10),
00173   DRIZZLE_CON_INTERACTIVE=      (1 << 11),
00174   DRIZZLE_CON_MULTI_STATEMENTS= (1 << 12),
00175   DRIZZLE_CON_AUTH_PLUGIN=      (1 << 13)
00176 } drizzle_con_options_t;
00177 
00182 typedef enum
00183 {
00184   DRIZZLE_CON_SOCKET_TCP= 0,
00185   DRIZZLE_CON_SOCKET_UDS= (1 << 0)
00186 } drizzle_con_socket_t;
00187 
00192 typedef enum
00193 {
00194   DRIZZLE_CON_STATUS_NONE=                     0,
00195   DRIZZLE_CON_STATUS_IN_TRANS=                 (1 << 0),
00196   DRIZZLE_CON_STATUS_AUTOCOMMIT=               (1 << 1),
00197   DRIZZLE_CON_STATUS_MORE_RESULTS_EXISTS=      (1 << 3),
00198   DRIZZLE_CON_STATUS_QUERY_NO_GOOD_INDEX_USED= (1 << 4),
00199   DRIZZLE_CON_STATUS_QUERY_NO_INDEX_USED=      (1 << 5),
00200   DRIZZLE_CON_STATUS_CURSOR_EXISTS=            (1 << 6),
00201   DRIZZLE_CON_STATUS_LAST_ROW_SENT=            (1 << 7),
00202   DRIZZLE_CON_STATUS_DB_DROPPED=               (1 << 8),
00203   DRIZZLE_CON_STATUS_NO_BACKSLASH_ESCAPES=     (1 << 9),
00204   DRIZZLE_CON_STATUS_QUERY_WAS_SLOW=           (1 << 10)
00205 } drizzle_con_status_t;
00206 
00211 typedef enum
00212 {
00213   DRIZZLE_CAPABILITIES_NONE=                   0,
00214   DRIZZLE_CAPABILITIES_LONG_PASSWORD=          (1 << 0),
00215   DRIZZLE_CAPABILITIES_FOUND_ROWS=             (1 << 1),
00216   DRIZZLE_CAPABILITIES_LONG_FLAG=              (1 << 2),
00217   DRIZZLE_CAPABILITIES_CONNECT_WITH_DB=        (1 << 3),
00218   DRIZZLE_CAPABILITIES_NO_SCHEMA=              (1 << 4),
00219   DRIZZLE_CAPABILITIES_COMPRESS=               (1 << 5),
00220   DRIZZLE_CAPABILITIES_ODBC=                   (1 << 6),
00221   DRIZZLE_CAPABILITIES_LOCAL_FILES=            (1 << 7),
00222   DRIZZLE_CAPABILITIES_IGNORE_SPACE=           (1 << 8),
00223   DRIZZLE_CAPABILITIES_PROTOCOL_41=            (1 << 9),
00224   DRIZZLE_CAPABILITIES_INTERACTIVE=            (1 << 10),
00225   DRIZZLE_CAPABILITIES_SSL=                    (1 << 11),
00226   DRIZZLE_CAPABILITIES_IGNORE_SIGPIPE=         (1 << 12),
00227   DRIZZLE_CAPABILITIES_TRANSACTIONS=           (1 << 13),
00228   DRIZZLE_CAPABILITIES_RESERVED=               (1 << 14),
00229   DRIZZLE_CAPABILITIES_SECURE_CONNECTION=      (1 << 15),
00230   DRIZZLE_CAPABILITIES_MULTI_STATEMENTS=       (1 << 16),
00231   DRIZZLE_CAPABILITIES_MULTI_RESULTS=          (1 << 17),
00232   DRIZZLE_CAPABILITIES_PS_MULTI_RESULTS=       (1 << 18),
00233   DRIZZLE_CAPABILITIES_PLUGIN_AUTH=            (1 << 19),
00234   DRIZZLE_CAPABILITIES_ADMIN=                  (1 << 25),
00235   DRIZZLE_CAPABILITIES_SSL_VERIFY_SERVER_CERT= (1 << 30),
00236   DRIZZLE_CAPABILITIES_REMEMBER_OPTIONS=       (1 << 31),
00237   DRIZZLE_CAPABILITIES_CLIENT= (DRIZZLE_CAPABILITIES_LONG_PASSWORD |
00238                                 DRIZZLE_CAPABILITIES_FOUND_ROWS |
00239                                 DRIZZLE_CAPABILITIES_LONG_FLAG |
00240                                 DRIZZLE_CAPABILITIES_CONNECT_WITH_DB |
00241                                 DRIZZLE_CAPABILITIES_PLUGIN_AUTH |
00242                                 DRIZZLE_CAPABILITIES_TRANSACTIONS |
00243                                 DRIZZLE_CAPABILITIES_PROTOCOL_41 |
00244                                 DRIZZLE_CAPABILITIES_SECURE_CONNECTION |
00245                                 DRIZZLE_CAPABILITIES_ADMIN)
00246 } drizzle_capabilities_t;
00247 
00252 typedef enum
00253 {
00254   DRIZZLE_COMMAND_SLEEP,               /* Not used currently. */
00255   DRIZZLE_COMMAND_QUIT,
00256   DRIZZLE_COMMAND_INIT_DB,
00257   DRIZZLE_COMMAND_QUERY,
00258   DRIZZLE_COMMAND_FIELD_LIST,          /* Deprecated. */
00259   DRIZZLE_COMMAND_CREATE_DB,           /* Deprecated. */
00260   DRIZZLE_COMMAND_DROP_DB,             /* Deprecated. */
00261   DRIZZLE_COMMAND_REFRESH,
00262   DRIZZLE_COMMAND_SHUTDOWN,
00263   DRIZZLE_COMMAND_STATISTICS,
00264   DRIZZLE_COMMAND_PROCESS_INFO,        /* Deprecated. */
00265   DRIZZLE_COMMAND_CONNECT,             /* Not used currently. */
00266   DRIZZLE_COMMAND_PROCESS_KILL,        /* Deprecated. */
00267   DRIZZLE_COMMAND_DEBUG,
00268   DRIZZLE_COMMAND_PING,
00269   DRIZZLE_COMMAND_TIME,                /* Not used currently. */
00270   DRIZZLE_COMMAND_DELAYED_INSERT,      /* Not used currently. */
00271   DRIZZLE_COMMAND_CHANGE_USER,
00272   DRIZZLE_COMMAND_BINLOG_DUMP,         /* Not used currently. */
00273   DRIZZLE_COMMAND_TABLE_DUMP,          /* Not used currently. */
00274   DRIZZLE_COMMAND_CONNECT_OUT,         /* Not used currently. */
00275   DRIZZLE_COMMAND_REGISTER_SLAVE,      /* Not used currently. */
00276   DRIZZLE_COMMAND_STMT_PREPARE,        /* Not used currently. */
00277   DRIZZLE_COMMAND_STMT_EXECUTE,        /* Not used currently. */
00278   DRIZZLE_COMMAND_STMT_SEND_LONG_DATA, /* Not used currently. */
00279   DRIZZLE_COMMAND_STMT_CLOSE,          /* Not used currently. */
00280   DRIZZLE_COMMAND_STMT_RESET,          /* Not used currently. */
00281   DRIZZLE_COMMAND_SET_OPTION,          /* Not used currently. */
00282   DRIZZLE_COMMAND_STMT_FETCH,          /* Not used currently. */
00283   DRIZZLE_COMMAND_DAEMON,              /* Not used currently. */
00284   DRIZZLE_COMMAND_END                  /* Not used currently. */
00285 } drizzle_command_t;
00286 
00291 typedef enum
00292 {
00293   DRIZZLE_COMMAND_DRIZZLE_SLEEP,
00294   DRIZZLE_COMMAND_DRIZZLE_QUIT,
00295   DRIZZLE_COMMAND_DRIZZLE_INIT_DB,
00296   DRIZZLE_COMMAND_DRIZZLE_QUERY,
00297   DRIZZLE_COMMAND_DRIZZLE_SHUTDOWN,
00298   DRIZZLE_COMMAND_DRIZZLE_CONNECT,
00299   DRIZZLE_COMMAND_DRIZZLE_PING,
00300   DRIZZLE_COMMAND_DRIZZLE_KILL,
00301   DRIZZLE_COMMAND_DRIZZLE_END
00302 } drizzle_command_drizzle_t;
00303 
00308 typedef enum
00309 {
00310   DRIZZLE_QUERY_NONE,
00311   DRIZZLE_QUERY_ALLOCATED= (1 << 0)
00312 } drizzle_query_options_t;
00313 
00318 typedef enum
00319 {
00320   DRIZZLE_QUERY_STATE_INIT,
00321   DRIZZLE_QUERY_STATE_QUERY,
00322   DRIZZLE_QUERY_STATE_RESULT,
00323   DRIZZLE_QUERY_STATE_DONE
00324 } drizzle_query_state_t;
00325 
00330 typedef enum
00331 {
00332   DRIZZLE_RESULT_NONE=          0,
00333   DRIZZLE_RESULT_ALLOCATED=     (1 << 0),
00334   DRIZZLE_RESULT_SKIP_COLUMN=   (1 << 1),
00335   DRIZZLE_RESULT_BUFFER_COLUMN= (1 << 2),
00336   DRIZZLE_RESULT_BUFFER_ROW=    (1 << 3),
00337   DRIZZLE_RESULT_EOF_PACKET=    (1 << 4),
00338   DRIZZLE_RESULT_ROW_BREAK=     (1 << 5)
00339 } drizzle_result_options_t;
00340 
00345 typedef enum
00346 {
00347   DRIZZLE_COLUMN_ALLOCATED= (1 << 0)
00348 } drizzle_column_options_t;
00349 
00354 typedef enum
00355 {
00356   DRIZZLE_COLUMN_TYPE_DECIMAL,
00357   DRIZZLE_COLUMN_TYPE_TINY,
00358   DRIZZLE_COLUMN_TYPE_SHORT,
00359   DRIZZLE_COLUMN_TYPE_LONG,
00360   DRIZZLE_COLUMN_TYPE_FLOAT,
00361   DRIZZLE_COLUMN_TYPE_DOUBLE,
00362   DRIZZLE_COLUMN_TYPE_NULL,
00363   DRIZZLE_COLUMN_TYPE_TIMESTAMP,
00364   DRIZZLE_COLUMN_TYPE_LONGLONG,
00365   DRIZZLE_COLUMN_TYPE_INT24,
00366   DRIZZLE_COLUMN_TYPE_DATE,
00367   DRIZZLE_COLUMN_TYPE_TIME,
00368   DRIZZLE_COLUMN_TYPE_DATETIME,
00369   DRIZZLE_COLUMN_TYPE_YEAR,
00370   DRIZZLE_COLUMN_TYPE_NEWDATE,
00371   DRIZZLE_COLUMN_TYPE_VARCHAR,
00372   DRIZZLE_COLUMN_TYPE_BIT,
00373   DRIZZLE_COLUMN_TYPE_NEWDECIMAL=  246,
00374   DRIZZLE_COLUMN_TYPE_ENUM=        247,
00375   DRIZZLE_COLUMN_TYPE_SET=         248,
00376   DRIZZLE_COLUMN_TYPE_TINY_BLOB=   249,
00377   DRIZZLE_COLUMN_TYPE_MEDIUM_BLOB= 250,
00378   DRIZZLE_COLUMN_TYPE_LONG_BLOB=   251,
00379   DRIZZLE_COLUMN_TYPE_BLOB=        252,
00380   DRIZZLE_COLUMN_TYPE_VAR_STRING=  253,
00381   DRIZZLE_COLUMN_TYPE_STRING=      254,
00382   DRIZZLE_COLUMN_TYPE_GEOMETRY=    255
00383 } drizzle_column_type_t;
00384 
00389 typedef enum
00390 {
00391   DRIZZLE_COLUMN_TYPE_DRIZZLE_TINY,
00392   DRIZZLE_COLUMN_TYPE_DRIZZLE_LONG,
00393   DRIZZLE_COLUMN_TYPE_DRIZZLE_DOUBLE,
00394   DRIZZLE_COLUMN_TYPE_DRIZZLE_NULL,
00395   DRIZZLE_COLUMN_TYPE_DRIZZLE_TIMESTAMP,
00396   DRIZZLE_COLUMN_TYPE_DRIZZLE_LONGLONG,
00397   DRIZZLE_COLUMN_TYPE_DRIZZLE_DATETIME,
00398   DRIZZLE_COLUMN_TYPE_DRIZZLE_DATE,
00399   DRIZZLE_COLUMN_TYPE_DRIZZLE_VARCHAR,
00400   DRIZZLE_COLUMN_TYPE_DRIZZLE_NEWDECIMAL,
00401   DRIZZLE_COLUMN_TYPE_DRIZZLE_ENUM,
00402   DRIZZLE_COLUMN_TYPE_DRIZZLE_BLOB,
00403   DRIZZLE_COLUMN_TYPE_DRIZZLE_TIME,
00404   DRIZZLE_COLUMN_TYPE_DRIZZLE_BOOLEAN,
00405   DRIZZLE_COLUMN_TYPE_DRIZZLE_UUID,
00406   DRIZZLE_COLUMN_TYPE_DRIZZLE_MICROTIME,
00407   DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX=DRIZZLE_COLUMN_TYPE_DRIZZLE_MICROTIME
00408 } drizzle_column_type_drizzle_t;
00409 
00414 typedef enum
00415 {
00416   DRIZZLE_COLUMN_FLAGS_NONE=             0,
00417   DRIZZLE_COLUMN_FLAGS_NOT_NULL=         (1 << 0),
00418   DRIZZLE_COLUMN_FLAGS_PRI_KEY=          (1 << 1),
00419   DRIZZLE_COLUMN_FLAGS_UNIQUE_KEY=       (1 << 2),
00420   DRIZZLE_COLUMN_FLAGS_MULTIPLE_KEY=     (1 << 3),
00421   DRIZZLE_COLUMN_FLAGS_BLOB=             (1 << 4),
00422   DRIZZLE_COLUMN_FLAGS_UNSIGNED=         (1 << 5),
00423   DRIZZLE_COLUMN_FLAGS_ZEROFILL=         (1 << 6),
00424   DRIZZLE_COLUMN_FLAGS_BINARY=           (1 << 7),
00425   DRIZZLE_COLUMN_FLAGS_ENUM=             (1 << 8),
00426   DRIZZLE_COLUMN_FLAGS_AUTO_INCREMENT=   (1 << 9),
00427   DRIZZLE_COLUMN_FLAGS_TIMESTAMP=        (1 << 10),
00428   DRIZZLE_COLUMN_FLAGS_SET=              (1 << 11),
00429   DRIZZLE_COLUMN_FLAGS_NO_DEFAULT_VALUE= (1 << 12),
00430   DRIZZLE_COLUMN_FLAGS_ON_UPDATE_NOW=    (1 << 13),
00431   DRIZZLE_COLUMN_FLAGS_PART_KEY=         (1 << 14),
00432   DRIZZLE_COLUMN_FLAGS_NUM=              (1 << 15),
00433   DRIZZLE_COLUMN_FLAGS_GROUP=            (1 << 15), /* NUM & GROUP the same. */
00434   DRIZZLE_COLUMN_FLAGS_UNIQUE=           (1 << 16),
00435   DRIZZLE_COLUMN_FLAGS_BINCMP=           (1 << 17),
00436   DRIZZLE_COLUMN_FLAGS_GET_FIXED_FIELDS= (1 << 18),
00437   DRIZZLE_COLUMN_FLAGS_IN_PART_FUNC=     (1 << 19),
00438   DRIZZLE_COLUMN_FLAGS_IN_ADD_INDEX=     (1 << 20),
00439   DRIZZLE_COLUMN_FLAGS_RENAMED=          (1 << 21)
00440 } drizzle_column_flags_t;
00441 
00449 /* Types. */
00450 typedef struct drizzle_st drizzle_st;
00451 typedef struct drizzle_con_tcp_st drizzle_con_tcp_st;
00452 typedef struct drizzle_con_uds_st drizzle_con_uds_st;
00453 typedef struct drizzle_con_st drizzle_con_st;
00454 typedef struct drizzle_query_st drizzle_query_st;
00455 typedef struct drizzle_result_st drizzle_result_st;
00456 typedef struct drizzle_column_st drizzle_column_st;
00457 typedef char *drizzle_field_t;
00458 typedef drizzle_field_t *drizzle_row_t;
00459 typedef uint8_t drizzle_charset_t;
00460 
00461 /* Function types. */
00462 typedef void (drizzle_context_free_fn)(drizzle_st *drizzle,
00463                                        void *context);
00464 typedef void (drizzle_log_fn)(const char *line, drizzle_verbose_t verbose,
00465                               void *context);
00466 typedef drizzle_return_t (drizzle_state_fn)(drizzle_con_st *con);
00467 typedef void (drizzle_con_context_free_fn)(drizzle_con_st *con,
00468                                            void *context);
00469 typedef void (drizzle_query_context_free_fn)(drizzle_query_st *query,
00470                                              void *context);
00483 typedef drizzle_return_t (drizzle_event_watch_fn)(drizzle_con_st *con,
00484                                                   short events,
00485                                                   void *context);
00486 
00496 /* Protocol unpacking macros. */
00497 #define drizzle_get_byte2(__buffer) \
00498   (uint16_t)((__buffer)[0] | \
00499             ((__buffer)[1] << 8))
00500 #define drizzle_get_byte3(__buffer) \
00501   (uint32_t)((__buffer)[0] | \
00502             ((__buffer)[1] << 8) | \
00503             ((__buffer)[2] << 16))
00504 #define drizzle_get_byte4(__buffer) \
00505   (uint32_t)((__buffer)[0] | \
00506             ((__buffer)[1] << 8) | \
00507             ((__buffer)[2] << 16) | \
00508             ((__buffer)[3] << 24))
00509 #define drizzle_get_byte8(__buffer) \
00510   ((uint64_t)(__buffer)[0] | \
00511   ((uint64_t)(__buffer)[1] << 8) | \
00512   ((uint64_t)(__buffer)[2] << 16) | \
00513   ((uint64_t)(__buffer)[3] << 24) | \
00514   ((uint64_t)(__buffer)[4] << 32) | \
00515   ((uint64_t)(__buffer)[5] << 40) | \
00516   ((uint64_t)(__buffer)[6] << 48) | \
00517   ((uint64_t)(__buffer)[7] << 56))
00518 
00519 /* Protocol packing macros. */
00520 #define drizzle_set_byte2(__buffer, __int) do { \
00521   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00522   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); } while (0)
00523 #define drizzle_set_byte3(__buffer, __int) do { \
00524   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00525   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
00526   (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); } while (0)
00527 #define drizzle_set_byte4(__buffer, __int) do { \
00528   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00529   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
00530   (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); \
00531   (__buffer)[3]= (uint8_t)(((__int) >> 24) & 0xFF); } while (0)
00532 #define drizzle_set_byte8(__buffer, __int) do { \
00533   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00534   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
00535   (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); \
00536   (__buffer)[3]= (uint8_t)(((__int) >> 24) & 0xFF); \
00537   (__buffer)[4]= (uint8_t)(((__int) >> 32) & 0xFF); \
00538   (__buffer)[5]= (uint8_t)(((__int) >> 40) & 0xFF); \
00539   (__buffer)[6]= (uint8_t)(((__int) >> 48) & 0xFF); \
00540   (__buffer)[7]= (uint8_t)(((__int) >> 56) & 0xFF); } while (0)
00541 
00542 /* Multi-byte character macros. */
00543 #define drizzle_mb_char(__c) (((__c) & 0x80) != 0)
00544 #define drizzle_mb_length(__c) \
00545   ((uint32_t)(__c) <= 0x7f ? 1 : \
00546   ((uint32_t)(__c) <= 0x7ff ? 2 : \
00547   ((uint32_t)(__c) <= 0xd7ff ? 3 : \
00548   ((uint32_t)(__c) <= 0xdfff || (uint32_t)(__c) > 0x10ffff ? 0 : \
00549   ((uint32_t)(__c) <= 0xffff ? 3 : 4)))))
00550 
00553 #ifdef __cplusplus
00554 }
00555 #endif
00556 
00557 #endif /* __DRIZZLE_CONSTANTS_H */