libdrizzle Developer Documentation

libdrizzle/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  * Use and distribution licensed under the BSD license.  See
00008  * the COPYING file in this directory for full text.
00009  */
00010 
00016 #ifndef __DRIZZLE_CONSTANTS_H
00017 #define __DRIZZLE_CONSTANTS_H
00018 
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022 
00033 #define DRIZZLE_RETURN_SERVER_GONE DRIZZLE_RETURN_LOST_CONNECTION
00034 #define DRIZZLE_RETURN_EOF DRIZZLE_RETURN_LOST_CONNECTION
00035 #define DRIZZLE_COLUMN_TYPE_VIRTUAL 17
00036 
00037 /* Defines. */
00038 #define DRIZZLE_DEFAULT_TCP_HOST         "127.0.0.1"
00039 #define DRIZZLE_DEFAULT_TCP_PORT         4427
00040 #define DRIZZLE_DEFAULT_TCP_PORT_MYSQL   3306
00041 #define DRIZZLE_DEFAULT_UDS              "/tmp/drizzle.sock"
00042 #define DRIZZLE_DEFAULT_UDS_MYSQL        "/tmp/mysql.sock"
00043 #define DRIZZLE_DEFAULT_BACKLOG          64
00044 #define DRIZZLE_MAX_ERROR_SIZE           2048
00045 #define DRIZZLE_MAX_USER_SIZE            64
00046 #define DRIZZLE_MAX_PASSWORD_SIZE        32
00047 #define DRIZZLE_MAX_DB_SIZE              64
00048 #define DRIZZLE_MAX_INFO_SIZE            2048
00049 #define DRIZZLE_MAX_SQLSTATE_SIZE        5
00050 #define DRIZZLE_MAX_CATALOG_SIZE         128
00051 #define DRIZZLE_MAX_TABLE_SIZE           128
00052 #define DRIZZLE_MAX_COLUMN_NAME_SIZE     2048
00053 #define DRIZZLE_MAX_DEFAULT_VALUE_SIZE   2048
00054 #define DRIZZLE_MAX_PACKET_SIZE          UINT32_MAX
00055 #define DRIZZLE_MAX_BUFFER_SIZE          32768
00056 #define DRIZZLE_BUFFER_COPY_THRESHOLD    8192
00057 #define DRIZZLE_MAX_SERVER_VERSION_SIZE  32
00058 #define DRIZZLE_MAX_SCRAMBLE_SIZE        20
00059 #define DRIZZLE_STATE_STACK_SIZE         8
00060 #define DRIZZLE_ROW_GROW_SIZE            8192
00061 #define DRIZZLE_DEFAULT_SOCKET_TIMEOUT   10
00062 #define DRIZZLE_DEFAULT_SOCKET_SEND_SIZE 32768
00063 #define DRIZZLE_DEFAULT_SOCKET_RECV_SIZE 32768
00064 
00068 typedef enum
00069 {
00070   DRIZZLE_RETURN_OK,
00071   DRIZZLE_RETURN_IO_WAIT,
00072   DRIZZLE_RETURN_PAUSE,
00073   DRIZZLE_RETURN_ROW_BREAK,
00074   DRIZZLE_RETURN_MEMORY,
00075   DRIZZLE_RETURN_ERRNO,
00076   DRIZZLE_RETURN_INTERNAL_ERROR,
00077   DRIZZLE_RETURN_GETADDRINFO,
00078   DRIZZLE_RETURN_NOT_READY,
00079   DRIZZLE_RETURN_BAD_PACKET_NUMBER,
00080   DRIZZLE_RETURN_BAD_HANDSHAKE_PACKET,
00081   DRIZZLE_RETURN_BAD_PACKET,
00082   DRIZZLE_RETURN_PROTOCOL_NOT_SUPPORTED,
00083   DRIZZLE_RETURN_UNEXPECTED_DATA,
00084   DRIZZLE_RETURN_NO_SCRAMBLE,
00085   DRIZZLE_RETURN_AUTH_FAILED,
00086   DRIZZLE_RETURN_NULL_SIZE,
00087   DRIZZLE_RETURN_ERROR_CODE,
00088   DRIZZLE_RETURN_TOO_MANY_COLUMNS,
00089   DRIZZLE_RETURN_ROW_END,
00090   DRIZZLE_RETURN_LOST_CONNECTION,
00091   DRIZZLE_RETURN_COULD_NOT_CONNECT,
00092   DRIZZLE_RETURN_NO_ACTIVE_CONNECTIONS,
00093   DRIZZLE_RETURN_HANDSHAKE_FAILED,
00094   DRIZZLE_RETURN_TIMEOUT,
00095   DRIZZLE_RETURN_MAX /* Always add new codes to the end before this one. */
00096 } drizzle_return_t;
00097 
00101 typedef enum
00102 {
00103   DRIZZLE_VERBOSE_NEVER,
00104   DRIZZLE_VERBOSE_FATAL,
00105   DRIZZLE_VERBOSE_ERROR,
00106   DRIZZLE_VERBOSE_INFO,
00107   DRIZZLE_VERBOSE_DEBUG,
00108   DRIZZLE_VERBOSE_CRAZY,
00109   DRIZZLE_VERBOSE_MAX
00110 } drizzle_verbose_t;
00111 
00118 typedef enum
00119 {
00120   DRIZZLE_NONE=            0,
00121   DRIZZLE_ALLOCATED=       (1 << 0),
00122   DRIZZLE_NON_BLOCKING=    (1 << 1),
00123   DRIZZLE_FREE_OBJECTS=    (1 << 2),
00124   DRIZZLE_ASSERT_DANGLING= (1 << 3)
00125 } drizzle_options_t;
00126 
00131 typedef enum
00132 {
00133   DRIZZLE_CON_NONE=           0,
00134   DRIZZLE_CON_ALLOCATED=      (1 << 0),
00135   DRIZZLE_CON_MYSQL=          (1 << 1),
00136   DRIZZLE_CON_RAW_PACKET=     (1 << 2),
00137   DRIZZLE_CON_RAW_SCRAMBLE=   (1 << 3),
00138   DRIZZLE_CON_READY=          (1 << 4),
00139   DRIZZLE_CON_NO_RESULT_READ= (1 << 5),
00140   DRIZZLE_CON_IO_READY=       (1 << 6),
00141   DRIZZLE_CON_LISTEN=         (1 << 7),
00142   DRIZZLE_CON_EXPERIMENTAL=   (1 << 8)
00143 } drizzle_con_options_t;
00144 
00149 typedef enum
00150 {
00151   DRIZZLE_CON_SOCKET_TCP= 0,
00152   DRIZZLE_CON_SOCKET_UDS= (1 << 0)
00153 } drizzle_con_socket_t;
00154 
00159 typedef enum
00160 {
00161   DRIZZLE_CON_STATUS_NONE=                     0,
00162   DRIZZLE_CON_STATUS_IN_TRANS=                 (1 << 0),
00163   DRIZZLE_CON_STATUS_AUTOCOMMIT=               (1 << 1),
00164   DRIZZLE_CON_STATUS_MORE_RESULTS_EXISTS=      (1 << 3),
00165   DRIZZLE_CON_STATUS_QUERY_NO_GOOD_INDEX_USED= (1 << 4),
00166   DRIZZLE_CON_STATUS_QUERY_NO_INDEX_USED=      (1 << 5),
00167   DRIZZLE_CON_STATUS_CURSOR_EXISTS=            (1 << 6),
00168   DRIZZLE_CON_STATUS_LAST_ROW_SENT=            (1 << 7),
00169   DRIZZLE_CON_STATUS_DB_DROPPED=               (1 << 8),
00170   DRIZZLE_CON_STATUS_NO_BACKSLASH_ESCAPES=     (1 << 9),
00171   DRIZZLE_CON_STATUS_QUERY_WAS_SLOW=           (1 << 10)
00172 } drizzle_con_status_t;
00173 
00178 typedef enum
00179 {
00180   DRIZZLE_CAPABILITIES_NONE=                   0,
00181   DRIZZLE_CAPABILITIES_LONG_PASSWORD=          (1 << 0),
00182   DRIZZLE_CAPABILITIES_FOUND_ROWS=             (1 << 1),
00183   DRIZZLE_CAPABILITIES_LONG_FLAG=              (1 << 2),
00184   DRIZZLE_CAPABILITIES_CONNECT_WITH_DB=        (1 << 3),
00185   DRIZZLE_CAPABILITIES_NO_SCHEMA=              (1 << 4),
00186   DRIZZLE_CAPABILITIES_COMPRESS=               (1 << 5),
00187   DRIZZLE_CAPABILITIES_ODBC=                   (1 << 6),
00188   DRIZZLE_CAPABILITIES_LOCAL_FILES=            (1 << 7),
00189   DRIZZLE_CAPABILITIES_IGNORE_SPACE=           (1 << 8),
00190   DRIZZLE_CAPABILITIES_PROTOCOL_41=            (1 << 9),
00191   DRIZZLE_CAPABILITIES_INTERACTIVE=            (1 << 10),
00192   DRIZZLE_CAPABILITIES_SSL=                    (1 << 11),
00193   DRIZZLE_CAPABILITIES_IGNORE_SIGPIPE=         (1 << 12),
00194   DRIZZLE_CAPABILITIES_TRANSACTIONS=           (1 << 13),
00195   DRIZZLE_CAPABILITIES_RESERVED=               (1 << 14),
00196   DRIZZLE_CAPABILITIES_SECURE_CONNECTION=      (1 << 15),
00197   DRIZZLE_CAPABILITIES_MULTI_STATEMENTS=       (1 << 16),
00198   DRIZZLE_CAPABILITIES_MULTI_RESULTS=          (1 << 17),
00199   DRIZZLE_CAPABILITIES_SSL_VERIFY_SERVER_CERT= (1 << 30),
00200   DRIZZLE_CAPABILITIES_REMEMBER_OPTIONS=       (1 << 31),
00201   DRIZZLE_CAPABILITIES_CLIENT= (DRIZZLE_CAPABILITIES_LONG_PASSWORD |
00202                                 DRIZZLE_CAPABILITIES_LONG_FLAG |
00203                                 DRIZZLE_CAPABILITIES_CONNECT_WITH_DB |
00204                                 DRIZZLE_CAPABILITIES_TRANSACTIONS |
00205                                 DRIZZLE_CAPABILITIES_PROTOCOL_41 |
00206                                 DRIZZLE_CAPABILITIES_SECURE_CONNECTION)
00207 } drizzle_capabilities_t;
00208 
00213 typedef enum
00214 {
00215   DRIZZLE_COMMAND_SLEEP,               /* Not used currently. */
00216   DRIZZLE_COMMAND_QUIT,
00217   DRIZZLE_COMMAND_INIT_DB,
00218   DRIZZLE_COMMAND_QUERY,
00219   DRIZZLE_COMMAND_FIELD_LIST,          /* Deprecated. */
00220   DRIZZLE_COMMAND_CREATE_DB,           /* Deprecated. */
00221   DRIZZLE_COMMAND_DROP_DB,             /* Deprecated. */
00222   DRIZZLE_COMMAND_REFRESH,
00223   DRIZZLE_COMMAND_SHUTDOWN,
00224   DRIZZLE_COMMAND_STATISTICS,
00225   DRIZZLE_COMMAND_PROCESS_INFO,        /* Deprecated. */
00226   DRIZZLE_COMMAND_CONNECT,             /* Not used currently. */
00227   DRIZZLE_COMMAND_PROCESS_KILL,        /* Deprecated. */
00228   DRIZZLE_COMMAND_DEBUG,
00229   DRIZZLE_COMMAND_PING,
00230   DRIZZLE_COMMAND_TIME,                /* Not used currently. */
00231   DRIZZLE_COMMAND_DELAYED_INSERT,      /* Not used currently. */
00232   DRIZZLE_COMMAND_CHANGE_USER,
00233   DRIZZLE_COMMAND_BINLOG_DUMP,         /* Not used currently. */
00234   DRIZZLE_COMMAND_TABLE_DUMP,          /* Not used currently. */
00235   DRIZZLE_COMMAND_CONNECT_OUT,         /* Not used currently. */
00236   DRIZZLE_COMMAND_REGISTER_SLAVE,      /* Not used currently. */
00237   DRIZZLE_COMMAND_STMT_PREPARE,        /* Not used currently. */
00238   DRIZZLE_COMMAND_STMT_EXECUTE,        /* Not used currently. */
00239   DRIZZLE_COMMAND_STMT_SEND_LONG_DATA, /* Not used currently. */
00240   DRIZZLE_COMMAND_STMT_CLOSE,          /* Not used currently. */
00241   DRIZZLE_COMMAND_STMT_RESET,          /* Not used currently. */
00242   DRIZZLE_COMMAND_SET_OPTION,          /* Not used currently. */
00243   DRIZZLE_COMMAND_STMT_FETCH,          /* Not used currently. */
00244   DRIZZLE_COMMAND_DAEMON,              /* Not used currently. */
00245   DRIZZLE_COMMAND_END                  /* Not used currently. */
00246 } drizzle_command_t;
00247 
00252 typedef enum
00253 {
00254   DRIZZLE_COMMAND_DRIZZLE_SLEEP,
00255   DRIZZLE_COMMAND_DRIZZLE_QUIT,
00256   DRIZZLE_COMMAND_DRIZZLE_INIT_DB,
00257   DRIZZLE_COMMAND_DRIZZLE_QUERY,
00258   DRIZZLE_COMMAND_DRIZZLE_SHUTDOWN,
00259   DRIZZLE_COMMAND_DRIZZLE_CONNECT,
00260   DRIZZLE_COMMAND_DRIZZLE_PING,
00261   DRIZZLE_COMMAND_DRIZZLE_END
00262 } drizzle_command_drizzle_t;
00263 
00268 typedef enum
00269 {
00270   DRIZZLE_QUERY_ALLOCATED= (1 << 0)
00271 } drizzle_query_options_t;
00272 
00277 typedef enum
00278 {
00279   DRIZZLE_QUERY_STATE_INIT,
00280   DRIZZLE_QUERY_STATE_QUERY,
00281   DRIZZLE_QUERY_STATE_RESULT,
00282   DRIZZLE_QUERY_STATE_DONE
00283 } drizzle_query_state_t;
00284 
00289 typedef enum
00290 {
00291   DRIZZLE_RESULT_NONE=          0,
00292   DRIZZLE_RESULT_ALLOCATED=     (1 << 0),
00293   DRIZZLE_RESULT_SKIP_COLUMN=   (1 << 1),
00294   DRIZZLE_RESULT_BUFFER_COLUMN= (1 << 2),
00295   DRIZZLE_RESULT_BUFFER_ROW=    (1 << 3),
00296   DRIZZLE_RESULT_EOF_PACKET=    (1 << 4),
00297   DRIZZLE_RESULT_ROW_BREAK=     (1 << 5)
00298 } drizzle_result_options_t;
00299 
00304 typedef enum
00305 {
00306   DRIZZLE_COLUMN_ALLOCATED= (1 << 0)
00307 } drizzle_column_options_t;
00308 
00313 typedef enum
00314 {
00315   DRIZZLE_COLUMN_TYPE_DECIMAL,
00316   DRIZZLE_COLUMN_TYPE_TINY,
00317   DRIZZLE_COLUMN_TYPE_SHORT,
00318   DRIZZLE_COLUMN_TYPE_LONG,
00319   DRIZZLE_COLUMN_TYPE_FLOAT,
00320   DRIZZLE_COLUMN_TYPE_DOUBLE,
00321   DRIZZLE_COLUMN_TYPE_NULL,
00322   DRIZZLE_COLUMN_TYPE_TIMESTAMP,
00323   DRIZZLE_COLUMN_TYPE_LONGLONG,
00324   DRIZZLE_COLUMN_TYPE_INT24,
00325   DRIZZLE_COLUMN_TYPE_DATE,
00326   DRIZZLE_COLUMN_TYPE_TIME,
00327   DRIZZLE_COLUMN_TYPE_DATETIME,
00328   DRIZZLE_COLUMN_TYPE_YEAR,
00329   DRIZZLE_COLUMN_TYPE_NEWDATE,
00330   DRIZZLE_COLUMN_TYPE_VARCHAR,
00331   DRIZZLE_COLUMN_TYPE_BIT,
00332   DRIZZLE_COLUMN_TYPE_NEWDECIMAL=  246,
00333   DRIZZLE_COLUMN_TYPE_ENUM=        247,
00334   DRIZZLE_COLUMN_TYPE_SET=         248,
00335   DRIZZLE_COLUMN_TYPE_TINY_BLOB=   249,
00336   DRIZZLE_COLUMN_TYPE_MEDIUM_BLOB= 250,
00337   DRIZZLE_COLUMN_TYPE_LONG_BLOB=   251,
00338   DRIZZLE_COLUMN_TYPE_BLOB=        252,
00339   DRIZZLE_COLUMN_TYPE_VAR_STRING=  253,
00340   DRIZZLE_COLUMN_TYPE_STRING=      254,
00341   DRIZZLE_COLUMN_TYPE_GEOMETRY=    255
00342 } drizzle_column_type_t;
00343 
00348 typedef enum
00349 {
00350   DRIZZLE_COLUMN_TYPE_DRIZZLE_TINY,
00351   DRIZZLE_COLUMN_TYPE_DRIZZLE_LONG,
00352   DRIZZLE_COLUMN_TYPE_DRIZZLE_DOUBLE,
00353   DRIZZLE_COLUMN_TYPE_DRIZZLE_NULL,
00354   DRIZZLE_COLUMN_TYPE_DRIZZLE_TIMESTAMP,
00355   DRIZZLE_COLUMN_TYPE_DRIZZLE_LONGLONG,
00356   DRIZZLE_COLUMN_TYPE_DRIZZLE_DATETIME,
00357   DRIZZLE_COLUMN_TYPE_DRIZZLE_DATE,
00358   DRIZZLE_COLUMN_TYPE_DRIZZLE_VARCHAR,
00359   DRIZZLE_COLUMN_TYPE_DRIZZLE_NEWDECIMAL,
00360   DRIZZLE_COLUMN_TYPE_DRIZZLE_ENUM,
00361   DRIZZLE_COLUMN_TYPE_DRIZZLE_BLOB,
00362   DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX=DRIZZLE_COLUMN_TYPE_DRIZZLE_BLOB
00363 } drizzle_column_type_drizzle_t;
00364 
00369 typedef enum
00370 {
00371   DRIZZLE_COLUMN_FLAGS_NONE=             0,
00372   DRIZZLE_COLUMN_FLAGS_NOT_NULL=         (1 << 0),
00373   DRIZZLE_COLUMN_FLAGS_PRI_KEY=          (1 << 1),
00374   DRIZZLE_COLUMN_FLAGS_UNIQUE_KEY=       (1 << 2),
00375   DRIZZLE_COLUMN_FLAGS_MULTIPLE_KEY=     (1 << 3),
00376   DRIZZLE_COLUMN_FLAGS_BLOB=             (1 << 4),
00377   DRIZZLE_COLUMN_FLAGS_UNSIGNED=         (1 << 5),
00378   DRIZZLE_COLUMN_FLAGS_ZEROFILL=         (1 << 6),
00379   DRIZZLE_COLUMN_FLAGS_BINARY=           (1 << 7),
00380   DRIZZLE_COLUMN_FLAGS_ENUM=             (1 << 8),
00381   DRIZZLE_COLUMN_FLAGS_AUTO_INCREMENT=   (1 << 9),
00382   DRIZZLE_COLUMN_FLAGS_TIMESTAMP=        (1 << 10),
00383   DRIZZLE_COLUMN_FLAGS_SET=              (1 << 11),
00384   DRIZZLE_COLUMN_FLAGS_NO_DEFAULT_VALUE= (1 << 12),
00385   DRIZZLE_COLUMN_FLAGS_ON_UPDATE_NOW=    (1 << 13),
00386   DRIZZLE_COLUMN_FLAGS_PART_KEY=         (1 << 14),
00387   DRIZZLE_COLUMN_FLAGS_NUM=              (1 << 15),
00388   DRIZZLE_COLUMN_FLAGS_GROUP=            (1 << 15), /* NUM & GROUP the same. */
00389   DRIZZLE_COLUMN_FLAGS_UNIQUE=           (1 << 16),
00390   DRIZZLE_COLUMN_FLAGS_BINCMP=           (1 << 17),
00391   DRIZZLE_COLUMN_FLAGS_GET_FIXED_FIELDS= (1 << 18),
00392   DRIZZLE_COLUMN_FLAGS_IN_PART_FUNC=     (1 << 19),
00393   DRIZZLE_COLUMN_FLAGS_IN_ADD_INDEX=     (1 << 20),
00394   DRIZZLE_COLUMN_FLAGS_RENAMED=          (1 << 21)
00395 } drizzle_column_flags_t;
00396 
00404 /* Types. */
00405 typedef struct drizzle_st drizzle_st;
00406 typedef struct drizzle_con_tcp_st drizzle_con_tcp_st;
00407 typedef struct drizzle_con_uds_st drizzle_con_uds_st;
00408 typedef struct drizzle_con_st drizzle_con_st;
00409 typedef struct drizzle_query_st drizzle_query_st;
00410 typedef struct drizzle_result_st drizzle_result_st;
00411 typedef struct drizzle_column_st drizzle_column_st;
00412 typedef char *drizzle_field_t;
00413 typedef drizzle_field_t *drizzle_row_t;
00414 typedef uint8_t drizzle_charset_t;
00415 
00416 /* Function types. */
00417 typedef void (drizzle_context_free_fn)(drizzle_st *drizzle,
00418                                        void *context);
00419 typedef void (drizzle_log_fn)(const char *line, drizzle_verbose_t verbose,
00420                               void *context);
00421 typedef drizzle_return_t (drizzle_state_fn)(drizzle_con_st *con);
00422 typedef void (drizzle_con_context_free_fn)(drizzle_con_st *con,
00423                                            void *context);
00424 typedef void (drizzle_query_context_free_fn)(drizzle_query_st *query,
00425                                              void *context);
00438 typedef drizzle_return_t (drizzle_event_watch_fn)(drizzle_con_st *con,
00439                                                   short events,
00440                                                   void *context);
00441 
00451 /* Protocol unpacking macros. */
00452 #define drizzle_get_byte2(__buffer) \
00453   (uint16_t)((__buffer)[0] | \
00454             ((__buffer)[1] << 8))
00455 #define drizzle_get_byte3(__buffer) \
00456   (uint32_t)((__buffer)[0] | \
00457             ((__buffer)[1] << 8) | \
00458             ((__buffer)[2] << 16))
00459 #define drizzle_get_byte4(__buffer) \
00460   (uint32_t)((__buffer)[0] | \
00461             ((__buffer)[1] << 8) | \
00462             ((__buffer)[2] << 16) | \
00463             ((__buffer)[3] << 24))
00464 #define drizzle_get_byte8(__buffer) \
00465   ((uint64_t)(__buffer)[0] | \
00466   ((uint64_t)(__buffer)[1] << 8) | \
00467   ((uint64_t)(__buffer)[2] << 16) | \
00468   ((uint64_t)(__buffer)[3] << 24) | \
00469   ((uint64_t)(__buffer)[4] << 32) | \
00470   ((uint64_t)(__buffer)[5] << 40) | \
00471   ((uint64_t)(__buffer)[6] << 48) | \
00472   ((uint64_t)(__buffer)[7] << 56))
00473 
00474 /* Protocol packing macros. */
00475 #define drizzle_set_byte2(__buffer, __int) do { \
00476   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00477   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); } while (0)
00478 #define drizzle_set_byte3(__buffer, __int) do { \
00479   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00480   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
00481   (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); } while (0)
00482 #define drizzle_set_byte4(__buffer, __int) do { \
00483   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00484   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
00485   (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); \
00486   (__buffer)[3]= (uint8_t)(((__int) >> 24) & 0xFF); } while (0)
00487 #define drizzle_set_byte8(__buffer, __int) do { \
00488   (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
00489   (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
00490   (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); \
00491   (__buffer)[3]= (uint8_t)(((__int) >> 24) & 0xFF); \
00492   (__buffer)[4]= (uint8_t)(((__int) >> 32) & 0xFF); \
00493   (__buffer)[5]= (uint8_t)(((__int) >> 40) & 0xFF); \
00494   (__buffer)[6]= (uint8_t)(((__int) >> 48) & 0xFF); \
00495   (__buffer)[7]= (uint8_t)(((__int) >> 56) & 0xFF); } while (0)
00496 
00497 /* Multi-byte character macros. */
00498 #define drizzle_mb_char(__c) (((__c) & 0x80) != 0)
00499 #define drizzle_mb_length(__c) \
00500   ((uint32_t)(__c) <= 0x7f ? 1 : \
00501   ((uint32_t)(__c) <= 0x7ff ? 2 : \
00502   ((uint32_t)(__c) <= 0xd7ff ? 3 : \
00503   ((uint32_t)(__c) <= 0xdfff || (uint32_t)(__c) > 0x10ffff ? 0 : \
00504   ((uint32_t)(__c) <= 0xffff ? 3 : 4)))))
00505 
00508 #ifdef __cplusplus
00509 }
00510 #endif
00511 
00512 #endif /* __DRIZZLE_CONSTANTS_H */