Main Page   Modules   Compound List   File List   Compound Members   File Members   Related Pages  

cspublic.h

00001 /* FreeTDS - Library of routines accessing Sybase and Microsoft databases
00002  * Copyright (C) 1998-1999  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 <tds.h>
00024 
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif 
00028 
00029 static char  rcsid_cspublic_h [ ] =
00030          "$Id: cspublic.h,v 1.38 2003/04/03 10:37:09 freddy77 Exp $";
00031 static void *no_unused_cspublic_h_warn[]={rcsid_cspublic_h, no_unused_cspublic_h_warn};
00032 
00033 typedef int CS_RETCODE ;
00034 
00035 #define CS_PUBLIC 
00036 #define CS_STATIC static
00037 
00038 typedef TDS_INT CS_INT;
00039 typedef TDS_SMALLINT CS_SMALLINT;
00040 typedef TDS_TINYINT CS_TINYINT;
00041 typedef TDS_CHAR CS_CHAR;
00042 typedef TDS_UCHAR CS_BYTE;
00043 typedef TDS_NUMERIC CS_NUMERIC;
00044 typedef float CS_REAL;
00045 typedef double CS_FLOAT;
00046 typedef char CS_BOOL;
00047 typedef void CS_VOID;
00048 typedef TDS_VARBINARY CS_VARBINARY;
00049 typedef TDS_NUMERIC CS_DECIMAL;
00050 typedef TDS_UCHAR CS_IMAGE;
00051 typedef TDS_UCHAR CS_TEXT;
00052 typedef TDS_UCHAR CS_LONGBINARY;
00053 typedef TDS_UCHAR CS_LONGCHAR;
00054 typedef TDS_INT CS_LONG;
00055 typedef TDS_UCHAR CS_BINARY;
00056 typedef TDS_USMALLINT CS_USHORT;
00057 typedef TDS_UCHAR CS_BIT;
00058 
00059 #define CS_FAIL    TDS_FAIL
00060 #define CS_SUCCEED TDS_SUCCEED
00061 #define CS_SIZEOF(x) sizeof(x)
00062 #define CS_NOMSG   -99
00063 
00064 #define CS_LAYER(x)    (((x) >> 24) & 0xFF)
00065 #define CS_ORIGIN(x)   (((x) >> 16) & 0xFF)
00066 #define CS_SEVERITY(x) (((x) >>  8) & 0xFF)
00067 #define CS_NUMBER(x)   ((x) & 0xFF)
00068 
00069 #define CS_OBJ_NAME 132 /* ? */
00070 #define CS_TP_SIZE  16  /* text pointer */
00071 #define CS_TS_SIZE  8   /* length of timestamp */
00072 
00073 typedef struct cs_config
00074 {
00075     short cs_expose_formats;
00076 } CS_CONFIG;
00077 
00078 /* forward declarations */
00079 typedef struct cs_context CS_CONTEXT;
00080 typedef struct cs_clientmsg CS_CLIENTMSG;
00081 typedef struct cs_connection CS_CONNECTION;
00082 typedef struct cs_servermsg CS_SERVERMSG;
00083 typedef CS_RETCODE (*CS_CSLIBMSG_FUNC)(CS_CONTEXT *, CS_CLIENTMSG *);
00084 typedef CS_RETCODE (*CS_CLIENTMSG_FUNC)(CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
00085 typedef CS_RETCODE (*CS_SERVERMSG_FUNC)(CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
00086 
00087 /*      Formerly CSREMOTE_PROC_PARAM, this structure can be used in other
00088         places, too. */
00089 
00090 typedef struct _CS_PARAM
00091 {
00092         struct _CS_PARAM *next;
00093         char    *name;
00094         int      status;
00095         int      type;
00096         CS_INT   maxlen;
00097         CS_INT  *datalen;
00098         CS_SMALLINT  *ind;
00099         CS_BYTE *value;
00100         int      param_by_value;
00101 } CS_PARAM;
00102 
00103 
00104  /* Code added for RPC functionality - SUHA */
00105  /* RPC Code changes starts here */
00106 
00107 typedef CS_PARAM CSREMOTE_PROC_PARAM;
00108 
00109 typedef struct _CSREMOTE_PROC
00110 {
00111         char *name;
00112         CS_SMALLINT options;
00113         CSREMOTE_PROC_PARAM *param_list;
00114 } CSREMOTE_PROC;
00115 
00116 /* RPC Code changes ends here */
00117 
00118 #define _CS_ERRHAND_INLINE 1
00119 #define _CS_ERRHAND_CB     2
00120 
00121 /* Code changed for error handling */
00122 /* Code changes starts here - CT_DIAG - 01 */
00123 
00124 /* This structure is used in CT_DIAG */
00125 
00126 struct cs_diag_msg_client {
00127         CS_CLIENTMSG *clientmsg;
00128         struct cs_diag_msg_client *next;
00129 };
00130 
00131 struct cs_diag_msg_svr {
00132         CS_SERVERMSG *servermsg;
00133         struct cs_diag_msg_svr *next;
00134 };
00135 
00136 /* Code changes ends here - CT_DIAG - 01 */
00137 
00138 struct cs_diag_msg {
00139 CS_CLIENTMSG *msg;
00140 struct cs_diag_msg *next;
00141 };
00142 
00143 struct cs_context
00144 {
00145         CS_INT date_convert_fmt;
00146         CS_INT cs_errhandletype;
00147         CS_INT cs_diag_msglimit;
00148 
00149         /* added for storing the maximum messages limit CT_DIAG */
00150         /* code changes starts here - CT_DIAG - 02*/
00151 
00152         CS_INT cs_diag_msglimit_client;
00153         CS_INT cs_diag_msglimit_server;
00154         CS_INT cs_diag_msglimit_total;
00155         struct cs_diag_msg_client *clientstore;
00156         struct cs_diag_msg_svr *svrstore;
00157 
00158         /* code changes ends here - CT_DIAG - 02*/
00159 
00160         struct cs_diag_msg *msgstore;
00161         CS_CSLIBMSG_FUNC _cslibmsg_cb;
00162         CS_CLIENTMSG_FUNC _clientmsg_cb;
00163         CS_SERVERMSG_FUNC _servermsg_cb;
00164         TDSCONTEXT *tds_ctx;
00165     CS_CONFIG config;
00166 };
00167 
00168 typedef struct cs_locale {
00169         char *language;
00170         char *charset;
00171         char *time;
00172         char *collate;
00173 } CS_LOCALE;
00174 
00175 struct cs_connection
00176 {
00177         CS_CONTEXT *ctx;
00178         TDSLOGIN *tds_login;
00179         TDSSOCKET *tds_socket;
00180         CS_CLIENTMSG_FUNC _clientmsg_cb;
00181         CS_SERVERMSG_FUNC _servermsg_cb;
00182         void *userdata;
00183         int userdata_len;
00184         CS_LOCALE *locale;
00185 };
00186 
00187 
00188 #define CS_IODATA          (CS_INT)1600
00189 
00190 typedef struct cs_iodesc {
00191         CS_INT  iotype;
00192         CS_INT  datatype;
00193         CS_LOCALE       *locale;
00194         CS_INT  usertype;
00195         CS_INT  total_txtlen;
00196         CS_INT  offset;
00197         CS_BOOL log_on_update;
00198         CS_CHAR name[CS_OBJ_NAME];
00199         CS_INT  namelen;
00200         CS_BYTE textptr[CS_TP_SIZE];
00201         CS_INT  textptrlen;
00202         CS_BYTE timestamp[CS_TS_SIZE];
00203         CS_INT  timestamplen;
00204 } CS_IODESC;
00205 
00206 
00207 /* Structure CS_COMMAND changed for RPC functionality -SUHA */
00208 /* Added CSREMOTE_PROC *rpc to CS_COMMAND structure */
00209 
00210 typedef struct cs_command
00211 {
00212         CS_CHAR *query;
00213         CS_INT   command_type;
00214         CS_CONNECTION *con;
00215         short dynamic_cmd;
00216         char  *dyn_id; 
00217         int   row_prefetched;
00218         int   empty_result;
00219         int   curr_result_type;
00220         /* Array Binding Code changes start here */
00221         int   bind_count; 
00222         /* Array Binding Code changes end here */  
00223         int   get_data_item;
00224         int   get_data_bytes_returned;
00225         CS_IODESC *iodesc;
00226         CS_INT send_data_started;
00227         CSREMOTE_PROC *rpc;
00228         CS_PARAM        *input_params;
00229 } CS_COMMAND;
00230 
00231 #define CS_MAX_MSG 1024
00232 #define CS_MAX_NAME 132
00233 #define CS_MAX_SCALE 77
00234 #define CS_MAX_PREC 77  /* used by php */
00235 #define CS_SQLSTATE_SIZE 8
00236 
00237 
00238 #define CS_SRC_VALUE   -2562
00239 
00240 typedef struct cs_datafmt {
00241         int datatype;
00242         int format;
00243         int maxlength;
00244         int count;
00245         CS_LOCALE *locale;
00246         int precision;
00247         int scale;
00248         int namelen;
00249         char name[CS_MAX_NAME];
00250         int status;
00251         int usertype;
00252 } CS_DATAFMT;
00253 
00254 typedef TDS_MONEY  CS_MONEY;
00255 typedef TDS_MONEY4 CS_MONEY4;
00256 
00257 typedef TDS_DATETIME CS_DATETIME;
00258 
00259 typedef TDS_DATETIME4 CS_DATETIME4;
00260 
00261 typedef struct cs_daterec {
00262         CS_INT datesecond;
00263         CS_INT dateminute;
00264         CS_INT datehour;
00265         CS_INT datedmonth;
00266         CS_INT datedyear;
00267         CS_INT datemonth;
00268         CS_INT dateyear;
00269         CS_INT dateweek;
00270         CS_INT datedweek;
00271         CS_INT datemsecond;
00272         CS_INT datetzone;
00273 } CS_DATEREC;
00274 
00275 typedef TDS_INT CS_MSGNUM;
00276 
00277 struct cs_clientmsg {
00278         CS_INT severity;
00279         CS_MSGNUM msgnumber;
00280         CS_CHAR msgstring[CS_MAX_MSG];
00281         CS_INT msgstringlen;
00282         CS_INT osnumber;
00283         CS_CHAR osstring[CS_MAX_MSG]; 
00284         CS_INT osstringlen;
00285         CS_INT status;
00286         CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
00287         CS_INT sqlstatelen;
00288 };
00289 
00290 struct cs_servermsg {
00291         int severity;
00292         int msgnumber;
00293         int state;
00294         int line;
00295         int svrnlen;
00296         char svrname[CS_MAX_NAME];
00297         int proclen;
00298         char proc[CS_MAX_NAME];
00299         char text[CS_MAX_MSG];
00300         int status;
00301 };
00302 
00303 /* status bits for CS_SERVERMSG */
00304 #define CS_HASEED 0x01
00305 
00306 typedef struct cs_blkdesc {
00307         int dummy;      
00308 } CS_BLKDESC;
00309 
00310 /* CS_CAP_REQUEST values */
00311 #define CS_REQ_LANG     1
00312 #define CS_REQ_RPC      2
00313 #define CS_REQ_NOTIF    3
00314 #define CS_REQ_MSTMT    4
00315 #define CS_REQ_BCP      5
00316 #define CS_REQ_CURSOR   6
00317 #define CS_REQ_DYN      7
00318 #define CS_REQ_MSG      8
00319 #define CS_REQ_PARAM    9
00320 #define CS_DATA_INT1    10
00321 #define CS_DATA_INT2    11
00322 #define CS_DATA_INT4    12
00323 #define CS_DATA_BIT     13
00324 #define CS_DATA_CHAR    14
00325 #define CS_DATA_VCHAR   15
00326 #define CS_DATA_BIN     16
00327 #define CS_DATA_VBIN    17
00328 #define CS_DATA_MNY8    18
00329 #define CS_DATA_MNY4    19
00330 #define CS_DATA_DATE8   20
00331 #define CS_DATA_DATE4   21
00332 #define CS_DATA_FLT4    22
00333 #define CS_DATA_FLT8    23
00334 #define CS_DATA_NUM     24
00335 #define CS_DATA_TEXT    25
00336 #define CS_DATA_IMAGE   26
00337 #define CS_DATA_DEC     27
00338 #define CS_DATA_LCHAR   28
00339 #define CS_DATA_LBIN    29
00340 #define CS_DATA_INTN    30
00341 #define CS_DATA_DATETIMEN       31
00342 #define CS_DATA_MONEYN  32
00343 #define CS_CSR_PREV     33
00344 #define CS_CSR_FIRST    34
00345 #define CS_CSR_LAST     35
00346 #define CS_CSR_ABS      36
00347 #define CS_CSR_REL      37
00348 #define CS_CSR_MULTI    38
00349 #define CS_CON_OOB      39
00350 #define CS_CON_INBAND   40
00351 #define CS_CON_LOGICAL  41
00352 #define CS_PROTO_TEXT   42
00353 #define CS_PROTO_BULK   43
00354 #define CS_REQ_URGNOTIF 44
00355 #define CS_DATA_SENSITIVITY     45
00356 #define CS_DATA_BOUNDARY        46
00357 #define CS_PROTO_DYNAMIC        47
00358 #define CS_PROTO_DYNPROC        48
00359 #define CS_DATA_FLTN    49
00360 #define CS_DATA_BITN    50
00361 #define CS_DATA_INT8    51
00362 #define CS_DATA_VOID    52
00363 #define CS_OPTION_GET   53
00364 
00365 /* CS_CAP_RESPONSE values */
00366 #define CS_RES_NOMSG    1
00367 #define CS_RES_NOEED    2
00368 #define CS_RES_NOPARAM  3
00369 #define CS_DATA_NOINT1  4
00370 #define CS_DATA_NOINT2  5
00371 #define CS_DATA_NOINT4  6
00372 #define CS_DATA_NOBIT   7
00373 #define CS_DATA_NOCHAR  8
00374 #define CS_DATA_NOVCHAR 9
00375 #define CS_DATA_NOBIN   10
00376 #define CS_DATA_NOVBIN  11
00377 #define CS_DATA_NOMNY8  12
00378 #define CS_DATA_NOMNY4  13
00379 #define CS_DATA_NODATE8 14
00380 #define CS_DATA_NODATE4 15
00381 #define CS_DATA_NOFLT4  16
00382 #define CS_DATA_NOFLT8  17
00383 #define CS_DATA_NONUM   18
00384 #define CS_DATA_NOTEXT  19
00385 #define CS_DATA_NOIMAGE 20
00386 #define CS_DATA_NODEC   21
00387 #define CS_DATA_NOLCHAR 22
00388 #define CS_DATA_NOLBIN  23
00389 #define CS_DATA_NOINTN  24
00390 #define CS_DATA_NODATETIMEN     25
00391 #define CS_DATA_NOMONEYN        26
00392 #define CS_CON_NOOOB    27
00393 #define CS_CON_NOINBAND 28
00394 #define CS_PROTO_NOTEXT 29
00395 #define CS_PROTO_NOBULK 30
00396 #define CS_DATA_NOSENSITIVITY   31
00397 #define CS_DATA_NOBOUNDARY      32
00398 #define CS_DATA_NOTDSDEBUG      33
00399 #define CS_RES_NOSTRIPBLANKS    34
00400 #define CS_DATA_NOINT8  35
00401 
00402 /* Properties */
00403 enum {
00404         CS_USERNAME = 1,
00405 /* These defines looks weird but programs can test support for defines, 
00406    compiler can check enum and there are no define side effecs */
00407 #define CS_USERNAME CS_USERNAME
00408         CS_PASSWORD,
00409 #define CS_PASSWORD CS_PASSWORD
00410         CS_APPNAME,
00411 #define CS_APPNAME CS_APPNAME
00412         CS_HOSTNAME,
00413 #define CS_HOSTNAME CS_HOSTNAME
00414         CS_PACKETSIZE,
00415 #define CS_PACKETSIZE CS_PACKETSIZE
00416         CS_SEC_ENCRYPTION,
00417 #define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
00418         CS_LOC_PROP,
00419 #define CS_LOC_PROP CS_LOC_PROP
00420         CS_SEC_CHALLENGE,
00421 #define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
00422         CS_SEC_NEGOTIATE,
00423 #define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
00424         CS_TDS_VERSION,
00425 #define CS_TDS_VERSION CS_TDS_VERSION
00426         CS_NETIO,
00427 #define CS_NETIO CS_NETIO
00428         CS_IFILE,
00429 #define CS_IFILE CS_IFILE
00430         CS_USERDATA,
00431 #define CS_USERDATA CS_USERDATA
00432         CS_SEC_APPDEFINED,
00433 #define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
00434         CS_CHARSETCNV,
00435 #define CS_CHARSETCNV CS_CHARSETCNV
00436         CS_ANSI_BINDS,
00437 #define CS_ANSI_BINDS CS_ANSI_BINDS
00438         CS_VER_STRING,
00439 #define CS_VER_STRING CS_VER_STRING
00440         CS_PORT
00441 #define CS_PORT CS_PORT
00442 };
00443 
00444 /* Arbitrary precision math operators */
00445 enum {
00446         CS_ADD = 1,
00447         CS_SUB,
00448         CS_MULT,
00449         CS_DIV
00450 };
00451 
00452 enum {
00453         CS_TDS_40 = 1,
00454         CS_TDS_42,
00455         CS_TDS_46,
00456         CS_TDS_495,
00457         CS_TDS_50,
00458         CS_TDS_70,
00459         CS_TDS_80
00460 };
00461 
00462 /* bit mask values used by CS_DATAFMT.status */
00463 #define CS_CANBENULL   (1)
00464 #define CS_HIDDEN      (1 << 1)
00465 #define CS_IDENTITY    (1 << 2)
00466 #define CS_KEY         (1 << 3)
00467 #define CS_VERSION_KEY (1 << 4)
00468 #define CS_TIMESTAMP   (1 << 5)
00469 #define CS_UPDATABLE   (1 << 6)
00470 #define CS_UPDATECOL   (1 << 7)
00471 #define CS_RETURN      (1 << 8)
00472 
00473 /* DBD::Sybase compares indicator to CS_NULLDATA so this is -1
00474 ** (the documentation states -1) */
00475 #define CS_NULLDATA     (-1)
00476 
00477 /* CS_CON_STATUS read-only property bit mask values */
00478 #define CS_CONSTAT_CONNECTED    0x01
00479 #define CS_CONSTAT_DEAD         0x02
00480 
00481 /* options accepted by ct_options() */
00482 #define CS_OPT_ANSINULL         1
00483 #define CS_OPT_ANSIPERM         2
00484 #define CS_OPT_ARITHABORT       3
00485 #define CS_OPT_ARITHIGNORE      4
00486 #define CS_OPT_AUTHOFF          5
00487 #define CS_OPT_AUTHON           6
00488 #define CS_OPT_CHAINXACTS       7
00489 #define CS_OPT_CURCLOSEONXACT   8
00490 #define CS_OPT_CURREAD          9
00491 #define CS_OPT_CURWRITE         10
00492 #define CS_OPT_DATEFIRST        11
00493 #define CS_OPT_DATEFORMAT       12
00494 #define CS_OPT_FIPSFLAG         13
00495 #define CS_OPT_FORCEPLAN        14
00496 #define CS_OPT_FORMATONLY       15
00497 #define CS_OPT_GETDATA          16
00498 #define CS_OPT_IDENTITYOFF      17
00499 #define CS_OPT_IDENTITYON       18
00500 #define CS_OPT_ISOLATION        19
00501 #define CS_OPT_NOCOUNT          20
00502 #define CS_OPT_NOEXEC           21
00503 #define CS_OPT_PARSEONLY        22
00504 #define CS_OPT_QUOTED_IDENT     23
00505 #define CS_OPT_RESTREES         24
00506 #define CS_OPT_ROWCOUNT         25
00507 #define CS_OPT_SHOWPLAN         26
00508 #define CS_OPT_STATS_IO         27
00509 #define CS_OPT_STATS_TIME       28
00510 #define CS_OPT_STR_RTRUNC       29
00511 #define CS_OPT_TEXTSIZE         30
00512 #define CS_OPT_TRUNCIGNORE      31
00513 
00514 /* options accepted by ct_command() */
00515 enum ct_command_options {
00516         CS_MORE, 
00517         CS_END, 
00518         CS_UNUSED, 
00519         CS_RECOMPILE, 
00520         CS_NO_RECOMPILE, 
00521         CS_COLUMN_DATA, 
00522         CS_BULK_DATA, 
00523         CS_BULK_INIT, 
00524         CS_BULK_CONT
00525 };
00526 
00527 
00528 /* bind formats, should be mapped to TDS types 
00529  * can be a combination of bit */
00530 enum {
00531         CS_FMT_UNUSED = 0,
00532 #define CS_FMT_UNUSED CS_FMT_UNUSED
00533         CS_FMT_NULLTERM = 1,
00534 #define CS_FMT_NULLTERM CS_FMT_NULLTERM
00535         CS_FMT_PADNULL = 2,
00536 #define CS_FMT_PADBLANK CS_FMT_PADBLANK
00537         CS_FMT_PADBLANK = 4
00538 #define CS_FMT_PADNULL CS_FMT_PADNULL
00539 };
00540 
00541 /* callbacks */
00542 #define CS_COMPLETION_CB        1
00543 #define CS_SERVERMSG_CB         2
00544 #define CS_CLIENTMSG_CB         3
00545 #define CS_NOTIF_CB             4
00546 #define CS_ENCRYPT_CB           5
00547 #define CS_CHALLENGE_CB         6
00548 #define CS_DS_LOOKUP_CB         7
00549 #define CS_SECSESSION_CB        8
00550 #define CS_SIGNAL_CB            100
00551 #define CS_MESSAGE_CB           9119
00552 
00553 /* string types */
00554 #define CS_NULLTERM     TDS_NULLTERM
00555 #define CS_WILDCARD     -99
00556 #define CS_NO_LIMIT     -9999
00557 #define CS_UNUSED       -99999
00558 
00559 /* other */
00560 #define CS_CLEAR        3
00561 #define CS_SET          4
00562 #define CS_LANG_CMD     7
00563 #define CS_ROW_FAIL     9
00564 #define CS_END_DATA     10
00565 #define CS_END_ITEM 11
00566 #define CS_CMD_SUCCEED  TDS_CMD_SUCCEED
00567 #define CS_CMD_FAIL     TDS_CMD_FAIL
00568 #define CS_CMD_DONE     TDS_CMD_DONE
00569 #define CS_END_RESULTS  15
00570 #define CS_VERSION_100  16
00571 #define CS_FORCE_EXIT   17
00572 #define CS_GET          25
00573 #define CS_CON_STATUS 26
00574 #define CS_FORCE_CLOSE 27
00575 #define CS_SYNC_IO      29
00576 #define CS_LC_ALL       37
00577 #define CS_SYB_LANG     38
00578 #define CS_SYB_CHARSET  39
00579 #define CS_SV_COMM_FAIL 41
00580 #define CS_BULK_LOGIN   42
00581 #define BLK_VERSION_100 CS_VERSION_100
00582 #define CS_BLK_IN       43
00583 #define CS_BLK_OUT      44
00584 #define CS_BLK_BATCH    45
00585 #define CS_BLK_ALL      46
00586 #define CS_BLK_CANCEL   47
00587 #define CS_CANCEL_ALL   48
00588 #define CS_NUMDATA      49
00589 #define CS_CANCEL_ATTN  50
00590 #define CS_PARENT_HANDLE        51
00591 #define CS_COMP_ID      52
00592 #define CS_BYLIST_LEN   53
00593 #define CS_COMP_BYLIST  54
00594 #define CS_COMP_OP      55
00595 #define CS_COMP_COLID   56
00596 #define CS_NO_COUNT     TDS_NO_COUNT
00597 #define CS_ROW_COUNT    59
00598 #define CS_OP_SUM       60
00599 #define CS_OP_AVG       61
00600 #define CS_OP_MIN       62
00601 #define CS_OP_MAX       63
00602 #define CS_OP_COUNT     64
00603 #define CS_CANCEL_CURRENT       67
00604 #define CS_CAPREQUEST   73
00605 #define CS_EED_CMD      77
00606 #define CS_LOGIN_TIMEOUT        78
00607 #define CS_CAP_REQUEST  79
00608 #define CS_DESCRIBE_INPUT       80
00609 #define CS_PREPARE      81
00610 #define CS_EXECUTE      82
00611 #define CS_DEALLOC      83
00612 #define CS_CAP_RESPONSE 84
00613 #define CS_RPC_CMD      85
00614 /* need correct value for CS_SEND_BULK_CMD  */
00615 #define CS_SEND_BULK_CMD 0xFFFF
00616 #define CS_INPUTVALUE   86
00617 #define CS_GOODDATA     87
00618 /* define CS_RETURN     88 */
00619 #define CS_CMD_NUMBER   89
00620 #define CS_BROWSE_INFO  90
00621 #define CS_NUMORDERCOLS 91
00622 #define CS_NUM_COMPUTES 92
00623 #define CS_NODATA       96
00624 #define CS_DESCIN       98
00625 #define CS_DESCOUT      99
00626 /* define CS_UPDATECOL  100 */
00627 #define CS_NODEFAULT    102
00628 #define CS_FMT_JUSTIFY_RT       106
00629 #define CS_TRANS_STATE  107
00630 #define CS_TRAN_IN_PROGRESS     108
00631 #define CS_TRAN_COMPLETED       109
00632 #define CS_TRAN_STMT_FAIL       110
00633 #define CS_TRAN_FAIL    111
00634 #define CS_TRAN_UNDEFINED       112
00635 #define CS_SV_RETRY_FAIL        114
00636 #define CS_TIMEOUT      115
00637 #define CS_CANCELED     116
00638 #define CS_NO_RECOMPILE 117
00639 #define CS_COLUMN_DATA  118
00640 #define CS_SEND_DATA_CMD        119
00641 #define CS_SUPPORTED 120
00642 #define CS_EXPOSE_FMTS 121
00643 #define CS_DYNAMIC_CMD 122
00644 #define CS_MSGTYPE 123
00645 #define CS_VERSION      9114
00646 #define CS_EXTRA_INF    9121
00647 
00648 /* result_types */
00649 #define CS_COMPUTE_RESULT       TDS_COMPUTE_RESULT
00650 #define CS_CURSOR_RESULT        4041
00651 #define CS_PARAM_RESULT         TDS_PARAM_RESULT
00652 #define CS_ROW_RESULT           TDS_ROW_RESULT
00653 #define CS_STATUS_RESULT        TDS_STATUS_RESULT
00654 #define CS_COMPUTEFMT_RESULT    TDS_COMPUTEFMT_RESULT
00655 #define CS_ROWFMT_RESULT        TDS_ROWFMT_RESULT
00656 #define CS_MSG_RESULT           TDS_MSG_RESULT
00657 #define CS_DESCRIBE_RESULT      TDS_DESCRIBE_RESULT
00658 
00659 /* bind types */
00660 #define CS_CHAR_TYPE    1
00661 #define CS_INT_TYPE     2
00662 #define CS_SMALLINT_TYPE        3
00663 #define CS_TINYINT_TYPE 4
00664 #define CS_MONEY_TYPE   5
00665 #define CS_DATETIME_TYPE        6
00666 #define CS_NUMERIC_TYPE 7
00667 #define CS_DECIMAL_TYPE 8
00668 #define CS_DATETIME4_TYPE       9
00669 #define CS_MONEY4_TYPE  10
00670 #define CS_IMAGE_TYPE   11
00671 #define CS_BINARY_TYPE  12
00672 #define CS_BIT_TYPE     13
00673 #define CS_REAL_TYPE    14
00674 #define CS_FLOAT_TYPE   15
00675 #define CS_TEXT_TYPE    16
00676 #define CS_VARCHAR_TYPE 17
00677 #define CS_VARBINARY_TYPE       18
00678 #define CS_LONGCHAR_TYPE        19
00679 #define CS_LONGBINARY_TYPE      20
00680 #define CS_LONG_TYPE    21
00681 #define CS_ILLEGAL_TYPE 22
00682 #define CS_SENSITIVITY_TYPE     23
00683 #define CS_BOUNDARY_TYPE        24
00684 #define CS_VOID_TYPE    25
00685 #define CS_USHORT_TYPE  26
00686 #define CS_UNIQUE_TYPE  27
00687 
00688 /* cs_dt_info type values */
00689 enum {
00690         CS_MONTH = 1,
00691 #define CS_MONTH CS_MONTH
00692         CS_SHORTMONTH,
00693 #define CS_SHORTMONTH CS_SHORTMONTH
00694         CS_DAYNAME,
00695 #define CS_DAYNAME CS_DAYNAME
00696         CS_DATEORDER,
00697 #define CS_DATEORDER CS_DATEORDER
00698         CS_12HOUR,
00699 #define CS_12HOUR CS_12HOUR
00700         CS_DT_CONVFMT
00701 #define CS_DT_CONVFMT CS_DT_CONVFMT
00702 };
00703 
00704 /* DT_CONVFMT types */
00705 enum {
00706         CS_DATES_HMS = 1,
00707 #define CS_DATES_HMS CS_DATES_HMS
00708         CS_DATES_SHORT,
00709 #define CS_DATES_SHORT CS_DATES_SHORT
00710         CS_DATES_LONG,
00711 #define CS_DATES_LONG CS_DATES_LONG
00712         CS_DATES_MDY1,
00713 #define CS_DATES_MDY1 CS_DATES_MDY1
00714         CS_DATES_MYD1,
00715 #define CS_DATES_MYD1 CS_DATES_MYD1
00716         CS_DATES_DMY1,
00717 #define CS_DATES_DMY1 CS_DATES_DMY1
00718         CS_DATES_DYM1,
00719 #define CS_DATES_DYM1 CS_DATES_DYM1
00720         CS_DATES_YDM1,
00721 #define CS_DATES_YDM1 CS_DATES_YDM1
00722         CS_DATES_YMD2,
00723 #define CS_DATES_YMD2 CS_DATES_YMD2
00724         CS_DATES_MDY1_YYYY,
00725 #define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
00726         CS_DATES_DMY1_YYYY,
00727 #define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
00728         CS_DATES_YMD2_YYYY,
00729 #define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
00730         CS_DATES_DMY2,
00731 #define CS_DATES_DMY2 CS_DATES_DMY2
00732         CS_DATES_YMD1,
00733 #define CS_DATES_YMD1 CS_DATES_YMD1
00734         CS_DATES_DMY2_YYYY,
00735 #define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
00736         CS_DATES_YMD1_YYYY,
00737 #define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
00738         CS_DATES_DMY4,
00739 #define CS_DATES_DMY4 CS_DATES_DMY4
00740         CS_DATES_DMY4_YYYY,
00741 #define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
00742         CS_DATES_MDY2,
00743 #define CS_DATES_MDY2 CS_DATES_MDY2
00744         CS_DATES_MDY2_YYYY,
00745 #define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
00746         CS_DATES_DMY3,
00747 #define CS_DATES_DMY3 CS_DATES_DMY3
00748         CS_DATES_MDY3,
00749 #define CS_DATES_MDY3 CS_DATES_MDY3
00750         CS_DATES_DMY3_YYYY,
00751 #define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
00752         CS_DATES_MDY3_YYYY,
00753 #define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
00754         CS_DATES_YMD3,
00755 #define CS_DATES_YMD3 CS_DATES_YMD3
00756         CS_DATES_YMD3_YYYY
00757 #define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
00758 };
00759 
00760 typedef CS_RETCODE (*CS_CONV_FUNC)(CS_CONTEXT *context, CS_DATAFMT *srcfmt, CS_VOID *src, CS_DATAFMT *detsfmt, CS_VOID *dest, CS_INT *destlen);
00761 
00762 typedef struct _cs_objname {
00763         CS_BOOL thinkexists;
00764         CS_INT object_type;
00765         CS_CHAR last_name[CS_MAX_NAME];
00766         CS_INT lnlen;
00767         CS_CHAR first_name[CS_MAX_NAME];
00768         CS_INT fnlen;
00769         CS_VOID *scope;
00770         CS_INT scopelen;
00771         CS_VOID *thread;
00772         CS_INT threadlen;
00773 } CS_OBJNAME;
00774 
00775 typedef struct _cs_objdata {
00776         CS_BOOL actuallyexists;
00777         CS_CONNECTION *connection;
00778         CS_COMMAND *command;
00779         CS_VOID *buffer;
00780         CS_INT buflen;
00781 } CS_OBJDATA;
00782 
00783 /* Eventually, these should be in terms of TDS values */
00784 enum {
00785         CS_OPT_SUNDAY,
00786         CS_OPT_MONDAY,
00787         CS_OPT_TUESDAY,
00788         CS_OPT_WEDNESDAY,
00789         CS_OPT_THURSDAY,
00790         CS_OPT_FRIDAY,
00791         CS_OPT_SATURDAY
00792 };
00793 enum {
00794         CS_OPT_FMTMDY,
00795         CS_OPT_FMTDMY,
00796         CS_OPT_FMTYMD,
00797         CS_OPT_FMTYDM,
00798         CS_OPT_FMTMYD,
00799         CS_OPT_FMTDYM
00800 };
00801 enum {
00802         CS_OPT_LEVEL0,
00803         CS_OPT_LEVEL1,
00804         CS_OPT_LEVEL3
00805 };
00806 
00807 /* */
00808 #define CS_FALSE        0
00809 #define CS_TRUE 1
00810 
00811 #define SRV_PROC        CS_VOID
00812 #define CS_BLK_ROW      CS_VOID
00813 
00814 /* constants required for ct_diag (not jet implemented) */
00815 #define CS_INIT 36
00816 #define CS_STATUS 37
00817 #define CS_MSGLIMIT 38
00818 #define CS_CLIENTMSG_TYPE 4700
00819 #define CS_SERVERMSG_TYPE 4701
00820 #define CS_ALLMSG_TYPE 4702
00821 
00822 CS_RETCODE cs_convert(CS_CONTEXT *ctx, CS_DATAFMT *srcfmt, CS_VOID *srcdata, CS_DATAFMT *destfmt, CS_VOID *destdata, CS_INT *resultlen);
00823 CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT **ctx);
00824 CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT **ctx);
00825 CS_RETCODE cs_ctx_drop(CS_CONTEXT *ctx);
00826 CS_RETCODE cs_config(CS_CONTEXT *ctx, CS_INT action, CS_INT property, CS_VOID *buffer, CS_INT buflen, CS_INT *outlen);
00827 CS_RETCODE cs_strbuild(CS_CONTEXT *ctx, CS_CHAR *buffer, CS_INT buflen, CS_INT *resultlen, CS_CHAR *text, CS_INT textlen, CS_CHAR *formats, CS_INT formatlen, ...);
00828 CS_RETCODE cs_dt_crack(CS_CONTEXT *ctx, CS_INT datetype, CS_VOID *dateval, CS_DATEREC *daterec);
00829 CS_RETCODE cs_loc_alloc(CS_CONTEXT *ctx, CS_LOCALE **locptr);
00830 CS_RETCODE cs_loc_drop(CS_CONTEXT *ctx, CS_LOCALE *locale);
00831 CS_RETCODE cs_locale(CS_CONTEXT *ctx, CS_INT action, CS_LOCALE *locale, CS_INT type, CS_VOID *buffer, CS_INT buflen, CS_INT *outlen);
00832 CS_RETCODE cs_dt_info(CS_CONTEXT *ctx, CS_INT action, CS_LOCALE *locale, CS_INT type, CS_INT item, CS_VOID *buffer, CS_INT buflen, CS_INT *outlen);
00833 
00834 CS_RETCODE cs_calc(CS_CONTEXT *ctx, CS_INT op, CS_INT datatype, CS_VOID *var1, CS_VOID *var2, CS_VOID *dest);
00835 CS_RETCODE cs_cmp(CS_CONTEXT *ctx, CS_INT datatype, CS_VOID *var1, CS_VOID *var2, CS_INT *result);
00836 CS_RETCODE cs_conv_mult(CS_CONTEXT *ctx, CS_LOCALE *srcloc, CS_LOCALE *destloc, CS_INT *conv_multiplier);
00837 CS_RETCODE cs_diag(CS_CONTEXT *ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID *buffer);
00838 CS_RETCODE cs_manage_convert(CS_CONTEXT *ctx, CS_INT action, CS_INT srctype, CS_CHAR *srcname, CS_INT srcnamelen, CS_INT desttype, CS_CHAR *destname, CS_INT destnamelen, CS_INT *conv_multiplier, CS_CONV_FUNC *func);
00839 CS_RETCODE cs_objects(CS_CONTEXT *ctx, CS_INT action, CS_OBJNAME *objname, CS_OBJDATA *objdata);
00840 CS_RETCODE cs_set_convert(CS_CONTEXT *ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC *func);
00841 CS_RETCODE cs_setnull(CS_CONTEXT *ctx, CS_DATAFMT *datafmt, CS_VOID *buffer, CS_INT buflen);
00842 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, CS_INT *result);
00843 CS_RETCODE cs_time(CS_CONTEXT *ctx, CS_LOCALE *locale, CS_VOID *buffer, CS_INT buflen, CS_INT *outlen, CS_DATEREC *daterec);
00844 CS_RETCODE cs_will_convert(CS_CONTEXT *ctx, CS_INT srctype, CS_INT desttype, CS_BOOL *result);
00845 
00846 #ifdef __cplusplus
00847 }
00848 #endif 
00849 
00850 #endif
00851 

Generated on Sat Apr 5 23:17:39 2003 for FreeTDS API by doxygen1.2.18