Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Related Pages

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.55 2005/05/28 10:48:26 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 
00044 #define CS_FAIL    0
00045 #define CS_SUCCEED 1
00046 #define CS_CANCELED -1  
00047 #define CS_PENDING      -2
00048 #define CS_INTERRUPT    -5
00049 #define CS_QUIET        -6
00050 #define CS_TIMED_OUT    -7
00051 
00052 #define CS_SIZEOF(x) sizeof(x)
00053 #define CS_NOMSG   -99
00054 
00055 #define CS_LAYER(x)    (((x) >> 24) & 0xFF)
00056 #define CS_ORIGIN(x)   (((x) >> 16) & 0xFF)
00057 #define CS_SEVERITY(x) (((x) >>  8) & 0xFF)
00058 #define CS_NUMBER(x)   ((x) & 0xFF)
00059 
00060 /* forward declarations */
00061 typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
00062 typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
00063 typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
00064 
00065 
00066 #define CS_IODATA          TDS_STATIC_CAST(CS_INT, 1600)
00067 #define CS_SRC_VALUE   -2562
00068 
00069 
00070 
00071 /* status bits for CS_SERVERMSG */
00072 #define CS_HASEED 0x01
00073 
00074 typedef struct _cs_blkdesc CS_BLKDESC;
00075 
00076 /* CS_CAP_REQUEST values */
00077 #define CS_REQ_LANG     1
00078 #define CS_REQ_RPC      2
00079 #define CS_REQ_NOTIF    3
00080 #define CS_REQ_MSTMT    4
00081 #define CS_REQ_BCP      5
00082 #define CS_REQ_CURSOR   6
00083 #define CS_REQ_DYN      7
00084 #define CS_REQ_MSG      8
00085 #define CS_REQ_PARAM    9
00086 #define CS_DATA_INT1    10
00087 #define CS_DATA_INT2    11
00088 #define CS_DATA_INT4    12
00089 #define CS_DATA_BIT     13
00090 #define CS_DATA_CHAR    14
00091 #define CS_DATA_VCHAR   15
00092 #define CS_DATA_BIN     16
00093 #define CS_DATA_VBIN    17
00094 #define CS_DATA_MNY8    18
00095 #define CS_DATA_MNY4    19
00096 #define CS_DATA_DATE8   20
00097 #define CS_DATA_DATE4   21
00098 #define CS_DATA_FLT4    22
00099 #define CS_DATA_FLT8    23
00100 #define CS_DATA_NUM     24
00101 #define CS_DATA_TEXT    25
00102 #define CS_DATA_IMAGE   26
00103 #define CS_DATA_DEC     27
00104 #define CS_DATA_LCHAR   28
00105 #define CS_DATA_LBIN    29
00106 #define CS_DATA_INTN    30
00107 #define CS_DATA_DATETIMEN       31
00108 #define CS_DATA_MONEYN  32
00109 #define CS_CSR_PREV     33
00110 #define CS_CSR_FIRST    34
00111 #define CS_CSR_LAST     35
00112 #define CS_CSR_ABS      36
00113 #define CS_CSR_REL      37
00114 #define CS_CSR_MULTI    38
00115 #define CS_CON_OOB      39
00116 #define CS_CON_INBAND   40
00117 #define CS_CON_LOGICAL  41
00118 #define CS_PROTO_TEXT   42
00119 #define CS_PROTO_BULK   43
00120 #define CS_REQ_URGNOTIF 44
00121 #define CS_DATA_SENSITIVITY     45
00122 #define CS_DATA_BOUNDARY        46
00123 #define CS_PROTO_DYNAMIC        47
00124 #define CS_PROTO_DYNPROC        48
00125 #define CS_DATA_FLTN    49
00126 #define CS_DATA_BITN    50
00127 #define CS_DATA_INT8    51
00128 #define CS_DATA_VOID    52
00129 #define CS_OPTION_GET   53
00130 
00131 /* CS_CAP_RESPONSE values */
00132 #define CS_RES_NOMSG    1
00133 #define CS_RES_NOEED    2
00134 #define CS_RES_NOPARAM  3
00135 #define CS_DATA_NOINT1  4
00136 #define CS_DATA_NOINT2  5
00137 #define CS_DATA_NOINT4  6
00138 #define CS_DATA_NOBIT   7
00139 #define CS_DATA_NOCHAR  8
00140 #define CS_DATA_NOVCHAR 9
00141 #define CS_DATA_NOBIN   10
00142 #define CS_DATA_NOVBIN  11
00143 #define CS_DATA_NOMNY8  12
00144 #define CS_DATA_NOMNY4  13
00145 #define CS_DATA_NODATE8 14
00146 #define CS_DATA_NODATE4 15
00147 #define CS_DATA_NOFLT4  16
00148 #define CS_DATA_NOFLT8  17
00149 #define CS_DATA_NONUM   18
00150 #define CS_DATA_NOTEXT  19
00151 #define CS_DATA_NOIMAGE 20
00152 #define CS_DATA_NODEC   21
00153 #define CS_DATA_NOLCHAR 22
00154 #define CS_DATA_NOLBIN  23
00155 #define CS_DATA_NOINTN  24
00156 #define CS_DATA_NODATETIMEN     25
00157 #define CS_DATA_NOMONEYN        26
00158 #define CS_CON_NOOOB    27
00159 #define CS_CON_NOINBAND 28
00160 #define CS_PROTO_NOTEXT 29
00161 #define CS_PROTO_NOBULK 30
00162 #define CS_DATA_NOSENSITIVITY   31
00163 #define CS_DATA_NOBOUNDARY      32
00164 #define CS_DATA_NOTDSDEBUG      33
00165 #define CS_RES_NOSTRIPBLANKS    34
00166 #define CS_DATA_NOINT8  35
00167 
00168 /* Properties */
00169 enum
00170 {
00171         CS_USERNAME = 1,
00172 /*
00173  * These defines looks weird but programs can test support for defines,
00174  * compiler can check enum and there are no define side effecs
00175  */
00176 #define CS_USERNAME CS_USERNAME
00177         CS_PASSWORD,
00178 #define CS_PASSWORD CS_PASSWORD
00179         CS_APPNAME,
00180 #define CS_APPNAME CS_APPNAME
00181         CS_HOSTNAME,
00182 #define CS_HOSTNAME CS_HOSTNAME
00183         CS_PACKETSIZE,
00184 #define CS_PACKETSIZE CS_PACKETSIZE
00185         CS_SEC_ENCRYPTION,
00186 #define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
00187         CS_LOC_PROP,
00188 #define CS_LOC_PROP CS_LOC_PROP
00189         CS_SEC_CHALLENGE,
00190 #define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
00191         CS_SEC_NEGOTIATE,
00192 #define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
00193         CS_TDS_VERSION,
00194 #define CS_TDS_VERSION CS_TDS_VERSION
00195         CS_NETIO,
00196 #define CS_NETIO CS_NETIO
00197         CS_IFILE,
00198 #define CS_IFILE CS_IFILE
00199         CS_USERDATA,
00200 #define CS_USERDATA CS_USERDATA
00201         CS_SEC_APPDEFINED,
00202 #define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
00203         CS_CHARSETCNV,
00204 #define CS_CHARSETCNV CS_CHARSETCNV
00205         CS_ANSI_BINDS,
00206 #define CS_ANSI_BINDS CS_ANSI_BINDS
00207         CS_VER_STRING,
00208 #define CS_VER_STRING CS_VER_STRING
00209         CS_SERVERNAME,
00210 #define CS_SERVERNAME CS_SERVERNAME
00211         CS_PORT,
00212 #define CS_PORT CS_PORT
00213         CS_SERVERADDR
00214 #define CS_SERVERADDR CS_SERVERADDR
00215 };
00216 
00217 /* Arbitrary precision math operators */
00218 enum
00219 {
00220         CS_ADD = 1,
00221         CS_SUB,
00222         CS_MULT,
00223         CS_DIV
00224 };
00225 
00226 enum
00227 {
00228         CS_TDS_40 = 1,
00229         CS_TDS_42,
00230         CS_TDS_46,
00231         CS_TDS_495,
00232         CS_TDS_50,
00233         CS_TDS_70,
00234         CS_TDS_80
00235 };
00236 
00237 /* bit mask values used by CS_DATAFMT.status */
00238 #define CS_CANBENULL   (1)
00239 #define CS_HIDDEN      (1 << 1)
00240 #define CS_IDENTITY    (1 << 2)
00241 #define CS_KEY         (1 << 3)
00242 #define CS_VERSION_KEY (1 << 4)
00243 #define CS_TIMESTAMP   (1 << 5)
00244 #define CS_UPDATABLE   (1 << 6)
00245 #define CS_UPDATECOL   (1 << 7)
00246 #define CS_RETURN      (1 << 8)
00247 
00248 /*
00249  * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
00250  * (the documentation states -1)
00251  */
00252 #define CS_NULLDATA     (-1)
00253 
00254 /* CS_CON_STATUS read-only property bit mask values */
00255 #define CS_CONSTAT_CONNECTED    0x01
00256 #define CS_CONSTAT_DEAD         0x02
00257 
00258 /*
00259  * Code added for CURSOR support
00260  * types accepted by ct_cursor 
00261  */
00262 #define CS_CURSOR_DECLARE  1
00263 #define CS_CURSOR_OPEN     2
00264 #define CS_CURSOR_ROWS     3
00265 #define CS_CURSOR_OPTION   4
00266 #define CS_CURSOR_UPDATE   5
00267 #define CS_CURSOR_DELETE   6
00268 #define CS_CURSOR_DEALLOC  7
00269 #define CS_IMPLICIT_CURSOR 8
00270 #define CS_CURSOR_CLOSE    9
00271 
00272 #define CS_FOR_UPDATE   TDS_STATIC_CAST(CS_INT, 0x1)
00273 #define CS_READ_ONLY    TDS_STATIC_CAST(CS_INT, 0x2)
00274 #define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
00275 
00276 
00277 #define CS_CURSTAT_NONE      TDS_STATIC_CAST(CS_INT, 0x0)
00278 #define CS_CURSTAT_DECLARED  TDS_STATIC_CAST(CS_INT, 0x1)
00279 #define CS_CURSTAT_OPEN      TDS_STATIC_CAST(CS_INT, 0x2)
00280 #define CS_CURSTAT_CLOSED    TDS_STATIC_CAST(CS_INT, 0x4)
00281 #define CS_CURSTAT_RDONLY    TDS_STATIC_CAST(CS_INT, 0x8)
00282 #define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
00283 #define CS_CURSTAT_ROWCOUNT  TDS_STATIC_CAST(CS_INT, 0x20)
00284 #define CS_CURSTAT_DEALLOC   TDS_STATIC_CAST(CS_INT, 0x40)
00285 
00286 #define CS_CUR_STATUS        TDS_STATIC_CAST(CS_INT, 9126)
00287 #define CS_CUR_ID            TDS_STATIC_CAST(CS_INT, 9127)
00288 #define CS_CUR_NAME          TDS_STATIC_CAST(CS_INT, 9128)
00289 #define CS_CUR_ROWCOUNT      TDS_STATIC_CAST(CS_INT, 9129)
00290 
00291 /* options accepted by ct_options() */
00292 #define CS_OPT_ANSINULL         1
00293 #define CS_OPT_ANSIPERM         2
00294 #define CS_OPT_ARITHABORT       3
00295 #define CS_OPT_ARITHIGNORE      4
00296 #define CS_OPT_AUTHOFF          5
00297 #define CS_OPT_AUTHON           6
00298 #define CS_OPT_CHAINXACTS       7
00299 #define CS_OPT_CURCLOSEONXACT   8
00300 #define CS_OPT_CURREAD          9
00301 #define CS_OPT_CURWRITE         10
00302 #define CS_OPT_DATEFIRST        11
00303 #define CS_OPT_DATEFORMAT       12
00304 #define CS_OPT_FIPSFLAG         13
00305 #define CS_OPT_FORCEPLAN        14
00306 #define CS_OPT_FORMATONLY       15
00307 #define CS_OPT_GETDATA          16
00308 #define CS_OPT_IDENTITYOFF      17
00309 #define CS_OPT_IDENTITYON       18
00310 #define CS_OPT_ISOLATION        19
00311 #define CS_OPT_NOCOUNT          20
00312 #define CS_OPT_NOEXEC           21
00313 #define CS_OPT_PARSEONLY        22
00314 #define CS_OPT_QUOTED_IDENT     23
00315 #define CS_OPT_RESTREES         24
00316 #define CS_OPT_ROWCOUNT         25
00317 #define CS_OPT_SHOWPLAN         26
00318 #define CS_OPT_STATS_IO         27
00319 #define CS_OPT_STATS_TIME       28
00320 #define CS_OPT_STR_RTRUNC       29
00321 #define CS_OPT_TEXTSIZE         30
00322 #define CS_OPT_TRUNCIGNORE      31
00323 
00324 /* options accepted by ct_command() */
00325 enum ct_command_options
00326 {
00327         CS_MORE,
00328         CS_END,
00329         CS_UNUSED,
00330         CS_RECOMPILE,
00331         CS_NO_RECOMPILE,
00332         CS_COLUMN_DATA,
00333         CS_BULK_DATA,
00334         CS_BULK_INIT,
00335         CS_BULK_CONT
00336 };
00337 
00338 
00339 /*
00340  * bind formats, should be mapped to TDS types
00341  * can be a combination of bit
00342  */
00343 enum
00344 {
00345         CS_FMT_UNUSED = 0,
00346 #define CS_FMT_UNUSED CS_FMT_UNUSED
00347         CS_FMT_NULLTERM = 1,
00348 #define CS_FMT_NULLTERM CS_FMT_NULLTERM
00349         CS_FMT_PADNULL = 2,
00350 #define CS_FMT_PADBLANK CS_FMT_PADBLANK
00351         CS_FMT_PADBLANK = 4
00352 #define CS_FMT_PADNULL CS_FMT_PADNULL
00353 };
00354 
00355 /* callbacks */
00356 #define CS_COMPLETION_CB        1
00357 #define CS_SERVERMSG_CB         2
00358 #define CS_CLIENTMSG_CB         3
00359 #define CS_NOTIF_CB             4
00360 #define CS_ENCRYPT_CB           5
00361 #define CS_CHALLENGE_CB         6
00362 #define CS_DS_LOOKUP_CB         7
00363 #define CS_SECSESSION_CB        8
00364 #define CS_SIGNAL_CB            100
00365 #define CS_MESSAGE_CB           9119
00366 
00367 /* string types */
00368 #define CS_NULLTERM     -9
00369 #define CS_WILDCARD     -99
00370 #define CS_NO_LIMIT     -9999
00371 #define CS_UNUSED       -99999
00372 
00373 /* other */
00374 #define CS_CLEAR        3
00375 #define CS_SET          4
00376 #define CS_LANG_CMD     7
00377 #define CS_ROW_FAIL     9
00378 #define CS_END_DATA     10
00379 #define CS_END_ITEM 11
00380 #define CS_CMD_SUCCEED  4047
00381 #define CS_CMD_FAIL     4048
00382 #define CS_CMD_DONE     4046
00383 #define CS_END_RESULTS  15
00384 #define CS_VERSION_100  16
00385 #define CS_FORCE_EXIT   17
00386 #define CS_VERSION_110  18
00387 #define CS_GET          25
00388 #define CS_CON_STATUS 26
00389 #define CS_FORCE_CLOSE 27
00390 #define CS_SYNC_IO      29
00391 #define CS_ASYNC_IO     30
00392 #define CS_DEFER_IO     31
00393 #define CS_LC_ALL       37
00394 #define CS_SYB_LANG     38
00395 #define CS_SYB_CHARSET  39
00396 #define CS_BULK_LOGIN   42
00397 #define BLK_VERSION_100 CS_VERSION_100
00398 #define BLK_VERSION_110 CS_VERSION_100
00399 #define CS_BLK_IN       43
00400 #define CS_BLK_OUT      44
00401 #define CS_BLK_BATCH    45
00402 #define CS_BLK_ALL      46
00403 #define CS_BLK_CANCEL   47
00404 #define CS_CANCEL_ALL   48
00405 #define CS_NUMDATA      49
00406 #define CS_CANCEL_ATTN  50
00407 #define CS_PARENT_HANDLE        51
00408 #define CS_COMP_ID      52
00409 #define CS_BYLIST_LEN   53
00410 #define CS_COMP_BYLIST  54
00411 #define CS_COMP_OP      55
00412 #define CS_COMP_COLID   56
00413 #define CS_NO_COUNT     -1
00414 #define CS_ROW_COUNT    59
00415 #define CS_OP_SUM       60
00416 #define CS_OP_AVG       61
00417 #define CS_OP_MIN       62
00418 #define CS_OP_MAX       63
00419 #define CS_OP_COUNT     64
00420 #define CS_CANCEL_CURRENT       67
00421 #define CS_CAPREQUEST   73
00422 #define CS_EED_CMD      77
00423 #define CS_LOGIN_TIMEOUT        78
00424 #define CS_CAP_REQUEST  79
00425 #define CS_DESCRIBE_INPUT       80
00426 #define CS_DESCRIBE_OUTPUT      134
00427 #define CS_PREPARE      81
00428 #define CS_EXECUTE      82
00429 #define CS_DEALLOC      83
00430 #define CS_CAP_RESPONSE 84
00431 #define CS_RPC_CMD      85
00432 /* need correct value for CS_SEND_BULK_CMD  */
00433 #define CS_SEND_BULK_CMD 0xFFFF
00434 #define CS_INPUTVALUE   86
00435 #define CS_GOODDATA     87
00436 /* define CS_RETURN     88 */
00437 #define CS_CMD_NUMBER   89
00438 #define CS_BROWSE_INFO  90
00439 #define CS_NUMORDERCOLS 91
00440 #define CS_NUM_COMPUTES 92
00441 #define CS_NODATA       96
00442 #define CS_DESCIN       98
00443 #define CS_DESCOUT      99
00444 /* define CS_UPDATECOL  100 */
00445 #define CS_NODEFAULT    102
00446 #define CS_FMT_JUSTIFY_RT       106
00447 #define CS_TRANS_STATE  107
00448 #define CS_TRAN_IN_PROGRESS     108
00449 #define CS_TRAN_COMPLETED       109
00450 #define CS_TRAN_STMT_FAIL       110
00451 #define CS_TRAN_FAIL    111
00452 #define CS_TRAN_UNDEFINED       112
00453 #define CS_TIMEOUT      115
00454 #define CS_NO_RECOMPILE 117
00455 #define CS_COLUMN_DATA  118
00456 #define CS_SEND_DATA_CMD        119
00457 #define CS_SUPPORTED 120
00458 #define CS_EXPOSE_FMTS 121
00459 #define CS_DYNAMIC_CMD 122
00460 #define CS_MSGTYPE 123
00461 #define CS_VERSION      9114
00462 #define CS_EXTRA_INF    9121
00463 #define CS_CUR_CMD 133
00464 
00465 /* to do support these */
00466 
00467 #define CS_DISABLE_POLL 9133
00468 #define CS_MAX_CONNECT  9118
00469 #define CS_TEXTLIMIT    9112
00470 #define CS_HIDDEN_KEYS  9113
00471 #define CS_STICKY_BINDS 9151
00472 #define CS_DIAG_TIMEOUT 9132
00473 #define CS_LOGIN_STATUS 9104
00474 #define CS_BLK_ARRAY_MAXLEN 0x1000
00475 #define CS_DEF_PREC     18
00476 
00477 /* Error Severities  */
00478 #define CS_SV_INFORM        TDS_STATIC_CAST(CS_INT, 0)
00479 #define CS_SV_API_FAIL      TDS_STATIC_CAST(CS_INT, 1)
00480 #define CS_SV_RETRY_FAIL    TDS_STATIC_CAST(CS_INT, 2)
00481 #define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
00482 #define CS_SV_CONFIG_FAIL   TDS_STATIC_CAST(CS_INT, 4)
00483 #define CS_SV_COMM_FAIL     TDS_STATIC_CAST(CS_INT, 5)
00484 #define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
00485 #define CS_SV_FATAL         TDS_STATIC_CAST(CS_INT, 7)
00486 
00487 /* result_types */
00488 #define CS_COMPUTE_RESULT       4045
00489 #define CS_CURSOR_RESULT        4041
00490 #define CS_PARAM_RESULT         4042
00491 #define CS_ROW_RESULT           4040
00492 #define CS_STATUS_RESULT        4043
00493 #define CS_COMPUTEFMT_RESULT    4050
00494 #define CS_ROWFMT_RESULT        4049
00495 #define CS_MSG_RESULT           4044
00496 #define CS_DESCRIBE_RESULT      4051
00497 
00498 /* bind types */
00499 #define CS_ILLEGAL_TYPE     TDS_STATIC_CAST(CS_INT, -1)
00500 #define CS_CHAR_TYPE        TDS_STATIC_CAST(CS_INT, 0)
00501 #define CS_BINARY_TYPE      TDS_STATIC_CAST(CS_INT, 1)
00502 #define CS_LONGCHAR_TYPE    TDS_STATIC_CAST(CS_INT, 2)
00503 #define CS_LONGBINARY_TYPE  TDS_STATIC_CAST(CS_INT, 3)
00504 #define CS_TEXT_TYPE        TDS_STATIC_CAST(CS_INT, 4)
00505 #define CS_IMAGE_TYPE       TDS_STATIC_CAST(CS_INT, 5)
00506 #define CS_TINYINT_TYPE     TDS_STATIC_CAST(CS_INT, 6)
00507 #define CS_SMALLINT_TYPE    TDS_STATIC_CAST(CS_INT, 7)
00508 #define CS_INT_TYPE         TDS_STATIC_CAST(CS_INT, 8)
00509 #define CS_REAL_TYPE        TDS_STATIC_CAST(CS_INT, 9)
00510 #define CS_FLOAT_TYPE       TDS_STATIC_CAST(CS_INT, 10)
00511 #define CS_BIT_TYPE         TDS_STATIC_CAST(CS_INT, 11)
00512 #define CS_DATETIME_TYPE    TDS_STATIC_CAST(CS_INT, 12)
00513 #define CS_DATETIME4_TYPE   TDS_STATIC_CAST(CS_INT, 13)
00514 #define CS_MONEY_TYPE       TDS_STATIC_CAST(CS_INT, 14)
00515 #define CS_MONEY4_TYPE      TDS_STATIC_CAST(CS_INT, 15)
00516 #define CS_NUMERIC_TYPE     TDS_STATIC_CAST(CS_INT, 16)
00517 #define CS_DECIMAL_TYPE     TDS_STATIC_CAST(CS_INT, 17)
00518 #define CS_VARCHAR_TYPE     TDS_STATIC_CAST(CS_INT, 18)
00519 #define CS_VARBINARY_TYPE   TDS_STATIC_CAST(CS_INT, 19)
00520 #define CS_LONG_TYPE        TDS_STATIC_CAST(CS_INT, 20)
00521 #define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
00522 #define CS_BOUNDARY_TYPE    TDS_STATIC_CAST(CS_INT, 22)
00523 #define CS_VOID_TYPE        TDS_STATIC_CAST(CS_INT, 23)
00524 #define CS_USHORT_TYPE      TDS_STATIC_CAST(CS_INT, 24)
00525 #define CS_UNIQUE_TYPE      TDS_STATIC_CAST(CS_INT, 25)
00526 #define CS_UNICHAR_TYPE     TDS_STATIC_CAST(CS_INT, 26)
00527 
00528 #define CS_USER_TYPE        TDS_STATIC_CAST(CS_INT, 100)
00529 /* cs_dt_info type values */
00530 enum
00531 {
00532         CS_MONTH = 1,
00533 #define CS_MONTH CS_MONTH
00534         CS_SHORTMONTH,
00535 #define CS_SHORTMONTH CS_SHORTMONTH
00536         CS_DAYNAME,
00537 #define CS_DAYNAME CS_DAYNAME
00538         CS_DATEORDER,
00539 #define CS_DATEORDER CS_DATEORDER
00540         CS_12HOUR,
00541 #define CS_12HOUR CS_12HOUR
00542         CS_DT_CONVFMT
00543 #define CS_DT_CONVFMT CS_DT_CONVFMT
00544 };
00545 
00546 /* DT_CONVFMT types */
00547 enum
00548 {
00549         CS_DATES_HMS = 1,
00550 #define CS_DATES_HMS CS_DATES_HMS
00551         CS_DATES_SHORT,
00552 #define CS_DATES_SHORT CS_DATES_SHORT
00553         CS_DATES_LONG,
00554 #define CS_DATES_LONG CS_DATES_LONG
00555         CS_DATES_MDY1,
00556 #define CS_DATES_MDY1 CS_DATES_MDY1
00557         CS_DATES_MYD1,
00558 #define CS_DATES_MYD1 CS_DATES_MYD1
00559         CS_DATES_DMY1,
00560 #define CS_DATES_DMY1 CS_DATES_DMY1
00561         CS_DATES_DYM1,
00562 #define CS_DATES_DYM1 CS_DATES_DYM1
00563         CS_DATES_YDM1,
00564 #define CS_DATES_YDM1 CS_DATES_YDM1
00565         CS_DATES_YMD2,
00566 #define CS_DATES_YMD2 CS_DATES_YMD2
00567         CS_DATES_MDY1_YYYY,
00568 #define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
00569         CS_DATES_DMY1_YYYY,
00570 #define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
00571         CS_DATES_YMD2_YYYY,
00572 #define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
00573         CS_DATES_DMY2,
00574 #define CS_DATES_DMY2 CS_DATES_DMY2
00575         CS_DATES_YMD1,
00576 #define CS_DATES_YMD1 CS_DATES_YMD1
00577         CS_DATES_DMY2_YYYY,
00578 #define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
00579         CS_DATES_YMD1_YYYY,
00580 #define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
00581         CS_DATES_DMY4,
00582 #define CS_DATES_DMY4 CS_DATES_DMY4
00583         CS_DATES_DMY4_YYYY,
00584 #define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
00585         CS_DATES_MDY2,
00586 #define CS_DATES_MDY2 CS_DATES_MDY2
00587         CS_DATES_MDY2_YYYY,
00588 #define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
00589         CS_DATES_DMY3,
00590 #define CS_DATES_DMY3 CS_DATES_DMY3
00591         CS_DATES_MDY3,
00592 #define CS_DATES_MDY3 CS_DATES_MDY3
00593         CS_DATES_DMY3_YYYY,
00594 #define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
00595         CS_DATES_MDY3_YYYY,
00596 #define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
00597         CS_DATES_YMD3,
00598 #define CS_DATES_YMD3 CS_DATES_YMD3
00599         CS_DATES_YMD3_YYYY
00600 #define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
00601 };
00602 
00603 typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
00604                                    CS_INT * destlen);
00605 
00606 typedef struct _cs_objname
00607 {
00608         CS_BOOL thinkexists;
00609         CS_INT object_type;
00610         CS_CHAR last_name[CS_MAX_NAME];
00611         CS_INT lnlen;
00612         CS_CHAR first_name[CS_MAX_NAME];
00613         CS_INT fnlen;
00614         CS_VOID *scope;
00615         CS_INT scopelen;
00616         CS_VOID *thread;
00617         CS_INT threadlen;
00618 } CS_OBJNAME;
00619 
00620 typedef struct _cs_objdata
00621 {
00622         CS_BOOL actuallyexists;
00623         CS_CONNECTION *connection;
00624         CS_COMMAND *command;
00625         CS_VOID *buffer;
00626         CS_INT buflen;
00627 } CS_OBJDATA;
00628 
00629 /* Eventually, these should be in terms of TDS values */
00630 enum
00631 {
00632         CS_OPT_SUNDAY,
00633         CS_OPT_MONDAY,
00634         CS_OPT_TUESDAY,
00635         CS_OPT_WEDNESDAY,
00636         CS_OPT_THURSDAY,
00637         CS_OPT_FRIDAY,
00638         CS_OPT_SATURDAY
00639 };
00640 enum
00641 {
00642         CS_OPT_FMTMDY,
00643         CS_OPT_FMTDMY,
00644         CS_OPT_FMTYMD,
00645         CS_OPT_FMTYDM,
00646         CS_OPT_FMTMYD,
00647         CS_OPT_FMTDYM
00648 };
00649 enum
00650 {
00651         CS_OPT_LEVEL0,
00652         CS_OPT_LEVEL1,
00653         CS_OPT_LEVEL3
00654 };
00655 
00656 #define CS_FALSE        0
00657 #define CS_TRUE 1
00658 
00659 #define SRV_PROC        CS_VOID
00660 
00661 /* constants required for ct_diag (not jet implemented) */
00662 #define CS_INIT 36
00663 #define CS_STATUS 37
00664 #define CS_MSGLIMIT 38
00665 #define CS_CLIENTMSG_TYPE 4700
00666 #define CS_SERVERMSG_TYPE 4701
00667 #define CS_ALLMSG_TYPE 4702
00668 
00669 CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
00670                       CS_INT * resultlen);
00671 CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
00672 CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
00673 CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
00674 CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
00675 CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
00676                        CS_CHAR * formats, CS_INT formatlen, ...);
00677 CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
00678 CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
00679 CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
00680 CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
00681                      CS_INT * outlen);
00682 CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
00683                       CS_INT buflen, CS_INT * outlen);
00684 
00685 CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
00686 CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
00687 CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
00688 CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
00689 CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
00690                              CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
00691 CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
00692 CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
00693 CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
00694 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,
00695                      CS_INT * result);
00696 CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
00697 CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
00698 
00699 #ifdef __cplusplus
00700 #if 0
00701 {
00702 #endif
00703 }
00704 #endif
00705 
00706 #endif

Generated on Thu Sep 1 00:36:10 2005 for FreeTDS API by  doxygen 1.4.4