# cspublic.h

    00001 /* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    00002  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004  Brian Bruns
    00003  *
    00004  * This library is free software; you can redistribute it and/or
    00005  * modify it under the terms of the GNU Library General Public
    00006  * License as published by the Free Software Foundation; either
    00007  * version 2 of the License, or (at your option) any later version.
    00008  *
    00009  * This library is distributed in the hope that it will be useful,
    00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00012  * Library General Public License for more details.
    00013  *
    00014  * You should have received a copy of the GNU Library General Public
    00015  * License along with this library; if not, write to the
    00016  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    00017  * Boston, MA 02111-1307, USA.
    00018  */
    00019
    00020 #ifndef _cspublic_h_
    00021 #define _cspublic_h_
    00022
    00023 #include <cstypes.h>
    00024
    00025 #undef TDS_STATIC_CAST
    00026 #ifdef __cplusplus
    00027 #define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    00028 extern "C"
    00029 {
    00030 #if 0
    00031 }
    00032 #endif
    00033 #else
    00034 #define TDS_STATIC_CAST(type, a) ((type)(a))
    00035 #endif
    00036
    00037 static const char rcsid_cspublic_h[] = "$Id: cspublic.h,v 1.58 2007/06/25 09:48:20 freddy77 Exp $";
    00038 static const void *const no_unused_cspublic_h_warn[] = { rcsid_cspublic_h, no_unused_cspublic_h_warn };
    00039
    00040 #define CS_PUBLIC
    00041 #define CS_STATIC static
    00042
    00043 #define CS_SUCCEED              1
    00044 #define CS_FAIL                 0
    00045 #define CS_MEM_ERROR            -1
    00046 #define CS_PENDING              -2
    00047 #define CS_QUIET                -3
    00048 #define CS_BUSY                 -4
    00049 #define CS_INTERRUPT            -5
    00050 #define CS_BLK_HAS_TEXT         -6
    00051 #define CS_CONTINUE             -7
    00052 #define CS_FATAL                -8
    00053 #define CS_RET_HAFAILOVER       -9
    00054 #define CS_UNSUPPORTED          -10
    00055
    00056 #define CS_CANCELED     -202
    00057 #define CS_ROW_FAIL     -203
    00058 #define CS_END_DATA     -204
    00059 #define CS_END_RESULTS  -205
    00060 #define CS_END_ITEM     -206
    00061 #define CS_NOMSG        -207
    00062 #define CS_TIMED_OUT    -208
    00063
    00064 #define CS_SIZEOF(x) sizeof(x)
    00065
    00066 #define CS_LAYER(x)    (((x) >> 24) & 0xFF)
    00067 #define CS_ORIGIN(x)   (((x) >> 16) & 0xFF)
    00068 #define CS_SEVERITY(x) (((x) >>  8) & 0xFF)
    00069 #define CS_NUMBER(x)   ((x) & 0xFF)
    00070
    00071 /* forward declarations */
    00072 typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
    00073 typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
    00074 typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
    00075
    00076
    00077 #define CS_IODATA          TDS_STATIC_CAST(CS_INT, 1600)
    00078 #define CS_SRC_VALUE   -2562
    00079
    00080
    00081
    00082 /* status bits for CS_SERVERMSG */
    00083 #define CS_HASEED 0x01
    00084
    00085 typedef struct _cs_blkdesc CS_BLKDESC;
    00086
    00087 /* CS_CAP_REQUEST values */
    00088 #define CS_REQ_LANG     1
    00089 #define CS_REQ_RPC      2
    00090 #define CS_REQ_NOTIF    3
    00091 #define CS_REQ_MSTMT    4
    00092 #define CS_REQ_BCP      5
    00093 #define CS_REQ_CURSOR   6
    00094 #define CS_REQ_DYN      7
    00095 #define CS_REQ_MSG      8
    00096 #define CS_REQ_PARAM    9
    00097 #define CS_DATA_INT1    10
    00098 #define CS_DATA_INT2    11
    00099 #define CS_DATA_INT4    12
    00100 #define CS_DATA_BIT     13
    00101 #define CS_DATA_CHAR    14
    00102 #define CS_DATA_VCHAR   15
    00103 #define CS_DATA_BIN     16
    00104 #define CS_DATA_VBIN    17
    00105 #define CS_DATA_MNY8    18
    00106 #define CS_DATA_MNY4    19
    00107 #define CS_DATA_DATE8   20
    00108 #define CS_DATA_DATE4   21
    00109 #define CS_DATA_FLT4    22
    00110 #define CS_DATA_FLT8    23
    00111 #define CS_DATA_NUM     24
    00112 #define CS_DATA_TEXT    25
    00113 #define CS_DATA_IMAGE   26
    00114 #define CS_DATA_DEC     27
    00115 #define CS_DATA_LCHAR   28
    00116 #define CS_DATA_LBIN    29
    00117 #define CS_DATA_INTN    30
    00118 #define CS_DATA_DATETIMEN       31
    00119 #define CS_DATA_MONEYN  32
    00120 #define CS_CSR_PREV     33
    00121 #define CS_CSR_FIRST    34
    00122 #define CS_CSR_LAST     35
    00123 #define CS_CSR_ABS      36
    00124 #define CS_CSR_REL      37
    00125 #define CS_CSR_MULTI    38
    00126 #define CS_CON_OOB      39
    00127 #define CS_CON_INBAND   40
    00128 #define CS_CON_LOGICAL  41
    00129 #define CS_PROTO_TEXT   42
    00130 #define CS_PROTO_BULK   43
    00131 #define CS_REQ_URGNOTIF 44
    00132 #define CS_DATA_SENSITIVITY     45
    00133 #define CS_DATA_BOUNDARY        46
    00134 #define CS_PROTO_DYNAMIC        47
    00135 #define CS_PROTO_DYNPROC        48
    00136 #define CS_DATA_FLTN    49
    00137 #define CS_DATA_BITN    50
    00138 #define CS_OPTION_GET   51
    00139 #define CS_DATA_INT8    52
    00140 #define CS_DATA_VOID    53
    00141
    00142 /* CS_CAP_RESPONSE values */
    00143 #define CS_RES_NOMSG    1
    00144 #define CS_RES_NOEED    2
    00145 #define CS_RES_NOPARAM  3
    00146 #define CS_DATA_NOINT1  4
    00147 #define CS_DATA_NOINT2  5
    00148 #define CS_DATA_NOINT4  6
    00149 #define CS_DATA_NOBIT   7
    00150 #define CS_DATA_NOCHAR  8
    00151 #define CS_DATA_NOVCHAR 9
    00152 #define CS_DATA_NOBIN   10
    00153 #define CS_DATA_NOVBIN  11
    00154 #define CS_DATA_NOMNY8  12
    00155 #define CS_DATA_NOMNY4  13
    00156 #define CS_DATA_NODATE8 14
    00157 #define CS_DATA_NODATE4 15
    00158 #define CS_DATA_NOFLT4  16
    00159 #define CS_DATA_NOFLT8  17
    00160 #define CS_DATA_NONUM   18
    00161 #define CS_DATA_NOTEXT  19
    00162 #define CS_DATA_NOIMAGE 20
    00163 #define CS_DATA_NODEC   21
    00164 #define CS_DATA_NOLCHAR 22
    00165 #define CS_DATA_NOLBIN  23
    00166 #define CS_DATA_NOINTN  24
    00167 #define CS_DATA_NODATETIMEN     25
    00168 #define CS_DATA_NOMONEYN        26
    00169 #define CS_CON_NOOOB    27
    00170 #define CS_CON_NOINBAND 28
    00171 #define CS_PROTO_NOTEXT 29
    00172 #define CS_PROTO_NOBULK 30
    00173 #define CS_DATA_NOSENSITIVITY   31
    00174 #define CS_DATA_NOBOUNDARY      32
    00175 #define CS_RES_NOTDSDEBUG       33
    00176 #define CS_RES_NOSTRIPBLANKS    34
    00177 #define CS_DATA_NOINT8  35
    00178
    00179 /* Properties */
    00180 enum
    00181 {
    00182 /*
    00183  * These defines looks weird but programs can test support for defines,
    00184  * compiler can check enum and there are no define side effecs
    00185  */
    00186         CS_USERNAME = 9100,
    00187 #define CS_USERNAME CS_USERNAME
    00188         CS_PASSWORD = 9101,
    00189 #define CS_PASSWORD CS_PASSWORD
    00190         CS_APPNAME = 9102,
    00191 #define CS_APPNAME CS_APPNAME
    00192         CS_HOSTNAME = 9103,
    00193 #define CS_HOSTNAME CS_HOSTNAME
    00194         CS_LOGIN_STATUS = 9104,
    00195 #define CS_LOGIN_STATUS CS_LOGIN_STATUS
    00196         CS_TDS_VERSION = 9105,
    00197 #define CS_TDS_VERSION CS_TDS_VERSION
    00198         CS_CHARSETCNV = 9106,
    00199 #define CS_CHARSETCNV CS_CHARSETCNV
    00200         CS_PACKETSIZE = 9107,
    00201 #define CS_PACKETSIZE CS_PACKETSIZE
    00202         CS_USERDATA = 9108,
    00203 #define CS_USERDATA CS_USERDATA
    00204         CS_NETIO = 9110,
    00205 #define CS_NETIO CS_NETIO
    00206         CS_TEXTLIMIT = 9112,
    00207 #define CS_TEXTLIMIT CS_TEXTLIMIT
    00208         CS_HIDDEN_KEYS = 9113,
    00209 #define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
    00210         CS_VERSION = 9114,
    00211 #define CS_VERSION CS_VERSION
    00212         CS_IFILE = 9115,
    00213 #define CS_IFILE CS_IFILE
    00214         CS_LOGIN_TIMEOUT = 9116,
    00215 #define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
    00216         CS_TIMEOUT = 9117,
    00217 #define CS_TIMEOUT CS_TIMEOUT
    00218         CS_MAX_CONNECT = 9118,
    00219 #define CS_MAX_CONNECT CS_MAX_CONNECT
    00220         CS_EXPOSE_FMTS = 9120,
    00221 #define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
    00222         CS_EXTRA_INF = 9121,
    00223 #define CS_EXTRA_INF CS_EXTRA_INF
    00224         CS_ANSI_BINDS = 9123,
    00225 #define CS_ANSI_BINDS CS_ANSI_BINDS
    00226         CS_BULK_LOGIN = 9124,
    00227 #define CS_BULK_LOGIN CS_BULK_LOGIN
    00228         CS_LOC_PROP = 9125,
    00229 #define CS_LOC_PROP CS_LOC_PROP
    00230         CS_PARENT_HANDLE = 9130,
    00231 #define CS_PARENT_HANDLE CS_PARENT_HANDLE
    00232         CS_EED_CMD = 9131,
    00233 #define CS_EED_CMD CS_EED_CMD
    00234         CS_DIAG_TIMEOUT = 9132,
    00235 #define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
    00236         CS_DISABLE_POLL = 9133,
    00237 #define CS_DISABLE_POLL CS_DISABLE_POLL
    00238         CS_SEC_ENCRYPTION = 9135,
    00239 #define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
    00240         CS_SEC_CHALLENGE = 9136,
    00241 #define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
    00242         CS_SEC_NEGOTIATE = 9137,
    00243 #define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
    00244         CS_CON_STATUS = 9143,
    00245 #define CS_CON_STATUS CS_CON_STATUS
    00246         CS_VER_STRING = 9144,
    00247 #define CS_VER_STRING CS_VER_STRING
    00248         CS_SERVERNAME = 9146,
    00249 #define CS_SERVERNAME CS_SERVERNAME
    00250         CS_SEC_APPDEFINED = 9149,
    00251 #define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
    00252         CS_STICKY_BINDS = 9151,
    00253 #define CS_STICKY_BINDS CS_STICKY_BINDS
    00254         CS_SERVERADDR = 9206,
    00255 #define CS_SERVERADDR CS_SERVERADDR
    00256         CS_PORT = 9300
    00257 #define CS_PORT CS_PORT
    00258 };
    00259
    00260 /* Arbitrary precision math operators */
    00261 enum
    00262 {
    00263         CS_ADD = 1,
    00264         CS_SUB,
    00265         CS_MULT,
    00266         CS_DIV
    00267 };
    00268
    00269 enum
    00270 {
    00271         CS_TDS_40 = 7360,
    00272         CS_TDS_42,
    00273         CS_TDS_46,
    00274         CS_TDS_495,
    00275         CS_TDS_50,
    00276         CS_TDS_70,
    00277         CS_TDS_80
    00278 };
    00279
    00280 /* bit mask values used by CS_DATAFMT.status */
    00281 #define CS_HIDDEN      (1 <<  0)
    00282 #define CS_KEY         (1 <<  1)
    00283 #define CS_VERSION_KEY (1 <<  2)
    00284 #define CS_NODATA      (1 <<  3)
    00285 #define CS_UPDATABLE   (1 <<  4)
    00286 #define CS_CANBENULL   (1 <<  5)
    00287 #define CS_DESCIN      (1 <<  6)
    00288 #define CS_DESCOUT     (1 <<  7)
    00289 #define CS_INPUTVALUE  (1 <<  8)
    00290 #define CS_UPDATECOL   (1 <<  9)
    00291 #define CS_RETURN      (1 << 10)
    00292 #define CS_TIMESTAMP   (1 << 13)
    00293 #define CS_NODEFAULT   (1 << 14)
    00294 #define CS_IDENTITY    (1 << 15)
    00295
    00296 /*
    00297  * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
    00298  * (the documentation states -1)
    00299  */
    00300 #define CS_GOODDATA     0
    00301 #define CS_NULLDATA     (-1)
    00302
    00303 /* CS_CON_STATUS read-only property bit mask values */
    00304 #define CS_CONSTAT_CONNECTED    0x01
    00305 #define CS_CONSTAT_DEAD         0x02
    00306
    00307 /*
    00308  * Code added for CURSOR support
    00309  * types accepted by ct_cursor
    00310  */
    00311 #define CS_CURSOR_DECLARE  700
    00312 #define CS_CURSOR_OPEN     701
    00313 #define CS_CURSOR_ROWS     703
    00314 #define CS_CURSOR_UPDATE   704
    00315 #define CS_CURSOR_DELETE   705
    00316 #define CS_CURSOR_CLOSE    706
    00317 #define CS_CURSOR_DEALLOC  707
    00318 #define CS_CURSOR_OPTION   725
    00319
    00320 #define CS_FOR_UPDATE      TDS_STATIC_CAST(CS_INT, 0x1)
    00321 #define CS_READ_ONLY       TDS_STATIC_CAST(CS_INT, 0x2)
    00322 #define CS_RESTORE_OPEN    TDS_STATIC_CAST(CS_INT, 0x8)
    00323 #define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
    00324
    00325
    00326 #define CS_CURSTAT_NONE      TDS_STATIC_CAST(CS_INT, 0x0)
    00327 #define CS_CURSTAT_DECLARED  TDS_STATIC_CAST(CS_INT, 0x1)
    00328 #define CS_CURSTAT_OPEN      TDS_STATIC_CAST(CS_INT, 0x2)
    00329 #define CS_CURSTAT_CLOSED    TDS_STATIC_CAST(CS_INT, 0x4)
    00330 #define CS_CURSTAT_RDONLY    TDS_STATIC_CAST(CS_INT, 0x8)
    00331 #define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
    00332 #define CS_CURSTAT_ROWCOUNT  TDS_STATIC_CAST(CS_INT, 0x20)
    00333 #define CS_CURSTAT_DEALLOC   TDS_STATIC_CAST(CS_INT, 0x40)
    00334
    00335 #define CS_CUR_STATUS        TDS_STATIC_CAST(CS_INT, 9126)
    00336 #define CS_CUR_ID            TDS_STATIC_CAST(CS_INT, 9127)
    00337 #define CS_CUR_NAME          TDS_STATIC_CAST(CS_INT, 9128)
    00338 #define CS_CUR_ROWCOUNT      TDS_STATIC_CAST(CS_INT, 9129)
    00339
    00340 /* options accepted by ct_options() */
    00341 #define CS_OPT_DATEFIRST        5001
    00342 #define CS_OPT_TEXTSIZE         5002
    00343 #define CS_OPT_STATS_TIME       5003
    00344 #define CS_OPT_STATS_IO         5004
    00345 #define CS_OPT_ROWCOUNT         5005
    00346 #define CS_OPT_DATEFORMAT       5007
    00347 #define CS_OPT_ISOLATION        5008
    00348 #define CS_OPT_AUTHON           5009
    00349 #define CS_OPT_SHOWPLAN         5013
    00350 #define CS_OPT_NOEXEC           5014
    00351 #define CS_OPT_ARITHIGNORE      5015
    00352 #define CS_OPT_TRUNCIGNORE      5016
    00353 #define CS_OPT_ARITHABORT       5017
    00354 #define CS_OPT_PARSEONLY        5018
    00355 #define CS_OPT_GETDATA          5020
    00356 #define CS_OPT_NOCOUNT          5021
    00357 #define CS_OPT_FORCEPLAN        5023
    00358 #define CS_OPT_FORMATONLY       5024
    00359 #define CS_OPT_CHAINXACTS       5025
    00360 #define CS_OPT_CURCLOSEONXACT   5026
    00361 #define CS_OPT_FIPSFLAG         5027
    00362 #define CS_OPT_RESTREES         5028
    00363 #define CS_OPT_IDENTITYON       5029
    00364 #define CS_OPT_CURREAD          5030
    00365 #define CS_OPT_CURWRITE         5031
    00366 #define CS_OPT_IDENTITYOFF      5032
    00367 #define CS_OPT_AUTHOFF          5033
    00368 #define CS_OPT_ANSINULL         5034
    00369 #define CS_OPT_QUOTED_IDENT     5035
    00370 #define CS_OPT_ANSIPERM         5036
    00371 #define CS_OPT_STR_RTRUNC       5037
    00372
    00373 /* options accepted by ct_command() */
    00374 enum ct_command_options
    00375 {
    00376         CS_MORE = 16,
    00377         CS_END = 32,
    00378         CS_RECOMPILE = 188,
    00379         CS_NO_RECOMPILE,
    00380         CS_BULK_INIT,
    00381         CS_BULK_CONT,
    00382         CS_BULK_DATA,
    00383         CS_COLUMN_DATA
    00384 };
    00385
    00386
    00387 /*
    00388  * bind formats, should be mapped to TDS types
    00389  * can be a combination of bit
    00390  */
    00391 enum
    00392 {
    00393         CS_FMT_UNUSED = 0,
    00394 #define CS_FMT_UNUSED CS_FMT_UNUSED
    00395         CS_FMT_NULLTERM = 1,
    00396 #define CS_FMT_NULLTERM CS_FMT_NULLTERM
    00397         CS_FMT_PADNULL = 2,
    00398 #define CS_FMT_PADBLANK CS_FMT_PADBLANK
    00399         CS_FMT_PADBLANK = 4,
    00400 #define CS_FMT_PADNULL CS_FMT_PADNULL
    00401         CS_FMT_JUSTIFY_RT = 8
    00402 #define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT
    00403 };
    00404
    00405 /* callbacks */
    00406 #define CS_COMPLETION_CB        1
    00407 #define CS_SERVERMSG_CB         2
    00408 #define CS_CLIENTMSG_CB         3
    00409 #define CS_NOTIF_CB             4
    00410 #define CS_ENCRYPT_CB           5
    00411 #define CS_CHALLENGE_CB         6
    00412 #define CS_DS_LOOKUP_CB         7
    00413 #define CS_SECSESSION_CB        8
    00414 #define CS_SIGNAL_CB            100
    00415 #define CS_MESSAGE_CB           9119
    00416
    00417 /* string types */
    00418 #define CS_NULLTERM     -9
    00419 #define CS_WILDCARD     -99
    00420 #define CS_NO_LIMIT     -9999
    00421 #define CS_UNUSED       -99999
    00422
    00423 /* other */
    00424 #define CS_GET          33
    00425 #define CS_SET          34
    00426 #define CS_CLEAR        35
    00427 #define CS_INIT         36
    00428 #define CS_STATUS       37
    00429 #define CS_MSGLIMIT     38
    00430 #define CS_SUPPORTED    40
    00431
    00432 #define CS_CMD_DONE     4046
    00433 #define CS_CMD_SUCCEED  4047
    00434 #define CS_CMD_FAIL     4048
    00435
    00436 /* commands */
    00437 #define CS_LANG_CMD      148
    00438 #define CS_RPC_CMD       149
    00439 #define CS_SEND_DATA_CMD 151
    00440 #define CS_SEND_BULK_CMD 153
    00441
    00442 #define CS_VERSION_100  112
    00443 #define CS_VERSION_110  1100
    00444 #define CS_VERSION_120  1100
    00445 #define CS_VERSION_125  12500
    00446 #define CS_VERSION_150  15000
    00447
    00448 #define BLK_VERSION_100 CS_VERSION_100
    00449 #define BLK_VERSION_110 CS_VERSION_100
    00450
    00451 #define CS_FORCE_EXIT   300
    00452 #define CS_FORCE_CLOSE  301
    00453
    00454 #define CS_SYNC_IO      8111
    00455 #define CS_ASYNC_IO     8112
    00456 #define CS_DEFER_IO     8113
    00457
    00458 #define CS_CANCEL_CURRENT 6000
    00459 #define CS_CANCEL_ALL     6001
    00460 #define CS_CANCEL_ATTN    6002
    00461
    00462 #define CS_ROW_COUNT    800
    00463 #define CS_CMD_NUMBER   801
    00464 #define CS_NUM_COMPUTES 802
    00465 #define CS_NUMDATA      803
    00466 #define CS_NUMORDERCOLS 805
    00467 #define CS_MSGTYPE      806
    00468 #define CS_BROWSE_INFO  807
    00469 #define CS_TRANS_STATE  808
    00470
    00471 #define CS_TRAN_UNDEFINED   0
    00472 #define CS_TRAN_IN_PROGRESS 1
    00473 #define CS_TRAN_COMPLETED   2
    00474 #define CS_TRAN_FAIL        3
    00475 #define CS_TRAN_STMT_FAIL   4
    00476
    00477 #define CS_COMP_OP      5350
    00478 #define CS_COMP_ID      5351
    00479 #define CS_COMP_COLID   5352
    00480 #define CS_COMP_BYLIST  5353
    00481 #define CS_BYLIST_LEN   5354
    00482
    00483 #define CS_NO_COUNT     -1
    00484
    00485 #define CS_OP_SUM       5370
    00486 #define CS_OP_AVG       5371
    00487 #define CS_OP_COUNT     5372
    00488 #define CS_OP_MIN       5373
    00489 #define CS_OP_MAX       5374
    00490
    00491 #define CS_CAP_REQUEST  1
    00492 #define CS_CAP_RESPONSE 2
    00493
    00494 #define CS_PREPARE      717
    00495 #define CS_EXECUTE      718
    00496 #define CS_DESCRIBE_INPUT       720
    00497 #define CS_DESCRIBE_OUTPUT      721
    00498
    00499 #define CS_DEALLOC      711
    00500
    00501 #define CS_LC_ALL            7
    00502 #define CS_SYB_LANG          8
    00503 #define CS_SYB_CHARSET       9
    00504 #define CS_SYB_SORTORDER     10
    00505 #define CS_SYB_COLLATE CS_SYB_SORTORDER
    00506 #define CS_SYB_LANG_CHARSET  11
    00507
    00508 #define CS_BLK_IN       1
    00509 #define CS_BLK_OUT      2
    00510
    00511 #define CS_BLK_BATCH    1
    00512 #define CS_BLK_ALL      2
    00513 #define CS_BLK_CANCEL   3
    00514
    00515 /* to do support these */
    00516
    00517 #define CS_BLK_ARRAY_MAXLEN 0x1000
    00518 #define CS_DEF_PREC     18
    00519
    00520 /* Error Severities  */
    00521 #define CS_SV_INFORM        TDS_STATIC_CAST(CS_INT, 0)
    00522 #define CS_SV_API_FAIL      TDS_STATIC_CAST(CS_INT, 1)
    00523 #define CS_SV_RETRY_FAIL    TDS_STATIC_CAST(CS_INT, 2)
    00524 #define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
    00525 #define CS_SV_CONFIG_FAIL   TDS_STATIC_CAST(CS_INT, 4)
    00526 #define CS_SV_COMM_FAIL     TDS_STATIC_CAST(CS_INT, 5)
    00527 #define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
    00528 #define CS_SV_FATAL         TDS_STATIC_CAST(CS_INT, 7)
    00529
    00530 /* result_types */
    00531 #define CS_COMPUTE_RESULT       4045
    00532 #define CS_CURSOR_RESULT        4041
    00533 #define CS_PARAM_RESULT         4042
    00534 #define CS_ROW_RESULT           4040
    00535 #define CS_STATUS_RESULT        4043
    00536 #define CS_COMPUTEFMT_RESULT    4050
    00537 #define CS_ROWFMT_RESULT        4049
    00538 #define CS_MSG_RESULT           4044
    00539 #define CS_DESCRIBE_RESULT      4051
    00540
    00541 /* bind types */
    00542 #define CS_ILLEGAL_TYPE     TDS_STATIC_CAST(CS_INT, -1)
    00543 #define CS_CHAR_TYPE        TDS_STATIC_CAST(CS_INT, 0)
    00544 #define CS_BINARY_TYPE      TDS_STATIC_CAST(CS_INT, 1)
    00545 #define CS_LONGCHAR_TYPE    TDS_STATIC_CAST(CS_INT, 2)
    00546 #define CS_LONGBINARY_TYPE  TDS_STATIC_CAST(CS_INT, 3)
    00547 #define CS_TEXT_TYPE        TDS_STATIC_CAST(CS_INT, 4)
    00548 #define CS_IMAGE_TYPE       TDS_STATIC_CAST(CS_INT, 5)
    00549 #define CS_TINYINT_TYPE     TDS_STATIC_CAST(CS_INT, 6)
    00550 #define CS_SMALLINT_TYPE    TDS_STATIC_CAST(CS_INT, 7)
    00551 #define CS_INT_TYPE         TDS_STATIC_CAST(CS_INT, 8)
    00552 #define CS_REAL_TYPE        TDS_STATIC_CAST(CS_INT, 9)
    00553 #define CS_FLOAT_TYPE       TDS_STATIC_CAST(CS_INT, 10)
    00554 #define CS_BIT_TYPE         TDS_STATIC_CAST(CS_INT, 11)
    00555 #define CS_DATETIME_TYPE    TDS_STATIC_CAST(CS_INT, 12)
    00556 #define CS_DATETIME4_TYPE   TDS_STATIC_CAST(CS_INT, 13)
    00557 #define CS_MONEY_TYPE       TDS_STATIC_CAST(CS_INT, 14)
    00558 #define CS_MONEY4_TYPE      TDS_STATIC_CAST(CS_INT, 15)
    00559 #define CS_NUMERIC_TYPE     TDS_STATIC_CAST(CS_INT, 16)
    00560 #define CS_DECIMAL_TYPE     TDS_STATIC_CAST(CS_INT, 17)
    00561 #define CS_VARCHAR_TYPE     TDS_STATIC_CAST(CS_INT, 18)
    00562 #define CS_VARBINARY_TYPE   TDS_STATIC_CAST(CS_INT, 19)
    00563 #define CS_LONG_TYPE        TDS_STATIC_CAST(CS_INT, 20)
    00564 #define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
    00565 #define CS_BOUNDARY_TYPE    TDS_STATIC_CAST(CS_INT, 22)
    00566 #define CS_VOID_TYPE        TDS_STATIC_CAST(CS_INT, 23)
    00567 #define CS_USHORT_TYPE      TDS_STATIC_CAST(CS_INT, 24)
    00568 #define CS_UNICHAR_TYPE     TDS_STATIC_CAST(CS_INT, 25)
    00569 #define CS_BLOB_TYPE        TDS_STATIC_CAST(CS_INT, 26)
    00570 #define CS_DATE_TYPE        TDS_STATIC_CAST(CS_INT, 27)
    00571 #define CS_TIME_TYPE        TDS_STATIC_CAST(CS_INT, 28)
    00572 #define CS_UNITEXT_TYPE     TDS_STATIC_CAST(CS_INT, 29)
    00573 #define CS_BIGINT_TYPE      TDS_STATIC_CAST(CS_INT, 30)
    00574 #define CS_USMALLINT_TYPE   TDS_STATIC_CAST(CS_INT, 31)
    00575 #define CS_UINT_TYPE        TDS_STATIC_CAST(CS_INT, 32)
    00576 #define CS_UBIGINT_TYPE     TDS_STATIC_CAST(CS_INT, 33)
    00577 #define CS_XML_TYPE         TDS_STATIC_CAST(CS_INT, 34)
    00578 #define CS_UNIQUE_TYPE      TDS_STATIC_CAST(CS_INT, 40)
    00579
    00580 #define CS_USER_TYPE        TDS_STATIC_CAST(CS_INT, 100)
    00581 /* cs_dt_info type values */
    00582 enum
    00583 {
    00584         CS_MONTH = 7340,
    00585 #define CS_MONTH CS_MONTH
    00586         CS_SHORTMONTH,
    00587 #define CS_SHORTMONTH CS_SHORTMONTH
    00588         CS_DAYNAME,
    00589 #define CS_DAYNAME CS_DAYNAME
    00590         CS_DATEORDER,
    00591 #define CS_DATEORDER CS_DATEORDER
    00592         CS_12HOUR,
    00593 #define CS_12HOUR CS_12HOUR
    00594         CS_DT_CONVFMT
    00595 #define CS_DT_CONVFMT CS_DT_CONVFMT
    00596 };
    00597
    00598 /* DT_CONVFMT types */
    00599 enum
    00600 {
    00601         CS_DATES_SHORT = 0,
    00602 #define CS_DATES_SHORT CS_DATES_SHORT
    00603         CS_DATES_MDY1,
    00604 #define CS_DATES_MDY1 CS_DATES_MDY1
    00605         CS_DATES_YMD1,
    00606 #define CS_DATES_YMD1 CS_DATES_YMD1
    00607         CS_DATES_DMY1,
    00608 #define CS_DATES_DMY1 CS_DATES_DMY1
    00609         CS_DATES_DMY2,
    00610 #define CS_DATES_DMY2 CS_DATES_DMY2
    00611         CS_DATES_DMY3,
    00612 #define CS_DATES_DMY3 CS_DATES_DMY3
    00613         CS_DATES_DMY4,
    00614 #define CS_DATES_DMY4 CS_DATES_DMY4
    00615         CS_DATES_MDY2,
    00616 #define CS_DATES_MDY2 CS_DATES_MDY2
    00617         CS_DATES_HMS,
    00618 #define CS_DATES_HMS CS_DATES_HMS
    00619         CS_DATES_LONG,
    00620 #define CS_DATES_LONG CS_DATES_LONG
    00621         CS_DATES_MDY3,
    00622 #define CS_DATES_MDY3 CS_DATES_MDY3
    00623         CS_DATES_YMD2,
    00624 #define CS_DATES_YMD2 CS_DATES_YMD2
    00625         CS_DATES_YMD3,
    00626 #define CS_DATES_YMD3 CS_DATES_YMD3
    00627         CS_DATES_YDM1,
    00628 #define CS_DATES_YDM1 CS_DATES_YDM1
    00629         CS_DATES_MYD1,
    00630 #define CS_DATES_MYD1 CS_DATES_MYD1
    00631         CS_DATES_DYM1,
    00632 #define CS_DATES_DYM1 CS_DATES_DYM1
    00633         CS_DATES_MDY1_YYYY = 101,
    00634 #define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
    00635         CS_DATES_YMD1_YYYY,
    00636 #define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
    00637         CS_DATES_DMY1_YYYY,
    00638 #define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
    00639         CS_DATES_DMY2_YYYY,
    00640 #define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
    00641         CS_DATES_DMY3_YYYY,
    00642 #define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
    00643         CS_DATES_DMY4_YYYY,
    00644 #define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
    00645         CS_DATES_MDY2_YYYY,
    00646 #define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
    00647         CS_DATES_MDY3_YYYY = 110,
    00648 #define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
    00649         CS_DATES_YMD2_YYYY,
    00650 #define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
    00651         CS_DATES_YMD3_YYYY
    00652 #define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
    00653 };
    00654
    00655 typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
    00656                                    CS_INT * destlen);
    00657
    00658 typedef struct _cs_objname
    00659 {
    00660         CS_BOOL thinkexists;
    00661         CS_INT object_type;
    00662         CS_CHAR last_name[CS_MAX_NAME];
    00663         CS_INT lnlen;
    00664         CS_CHAR first_name[CS_MAX_NAME];
    00665         CS_INT fnlen;
    00666         CS_VOID *scope;
    00667         CS_INT scopelen;
    00668         CS_VOID *thread;
    00669         CS_INT threadlen;
    00670 } CS_OBJNAME;
    00671
    00672 typedef struct _cs_objdata
    00673 {
    00674         CS_BOOL actuallyexists;
    00675         CS_CONNECTION *connection;
    00676         CS_COMMAND *command;
    00677         CS_VOID *buffer;
    00678         CS_INT buflen;
    00679 } CS_OBJDATA;
    00680
    00681 /* Eventually, these should be in terms of TDS values */
    00682 enum
    00683 {
    00684         CS_OPT_MONDAY = 1,
    00685         CS_OPT_TUESDAY,
    00686         CS_OPT_WEDNESDAY,
    00687         CS_OPT_THURSDAY,
    00688         CS_OPT_FRIDAY,
    00689         CS_OPT_SATURDAY,
    00690         CS_OPT_SUNDAY
    00691 };
    00692 enum
    00693 {
    00694         CS_OPT_FMTMDY = 1,
    00695         CS_OPT_FMTDMY,
    00696         CS_OPT_FMTYMD,
    00697         CS_OPT_FMTYDM,
    00698         CS_OPT_FMTMYD,
    00699         CS_OPT_FMTDYM
    00700 };
    00701 enum
    00702 {
    00703         CS_OPT_LEVEL0 = 0,
    00704         CS_OPT_LEVEL1,
    00705         CS_OPT_LEVEL2,
    00706         CS_OPT_LEVEL3
    00707 };
    00708
    00709 #define CS_FALSE        0
    00710 #define CS_TRUE 1
    00711
    00712 #define SRV_PROC        CS_VOID
    00713
    00714 /* constants required for ct_diag (not jet implemented) */
    00715 #define CS_CLIENTMSG_TYPE 4700
    00716 #define CS_SERVERMSG_TYPE 4701
    00717 #define CS_ALLMSG_TYPE 4702
    00718
    00719 CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
    00720                       CS_INT * resultlen);
    00721 CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
    00722 CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
    00723 CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
    00724 CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    00725 CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
    00726                        CS_CHAR * formats, CS_INT formatlen, ...);
    00727 CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
    00728 CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
    00729 CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
    00730 CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
    00731                      CS_INT * outlen);
    00732 CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
    00733                       CS_INT buflen, CS_INT * outlen);
    00734
    00735 CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
    00736 CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
    00737 CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
    00738 CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
    00739 CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
    00740                              CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
    00741 CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
    00742 CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
    00743 CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
    00744 CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
    00745                      CS_INT * result);
    00746 CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
    00747 CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
    00748
    00749 #ifdef __cplusplus
    00750 #if 0
    00751 {
    00752 #endif
    00753 }
    00754 #endif
    00755
    00756 #endif